Адміністрація вирішила продати даний сайт. За детальною інформацією звертайтесь за адресою: rozrahu@gmail.com

Експериментальне визначення ентропії повідомлення

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
О
Факультет:
КН
Кафедра:
Кафедра ЕОМ

Інформація про роботу

Рік:
2024
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Теорія інформації та кодування

Частина тексту файла

Міністерство освіти і науки Національний університет „Львівська політехніка” Кафедра ЕОМ Звіт з лабораторної роботи №1 з дисципліни: “Теорія інформації та кодування” на тему: Експериментальне визначення ентропії повідомлення 2018 Мета: вивчення властивостей ентропії як кількісної міри інформації. Завдання: Для студентів, номер у списку групи яких є парним послідовності повідомлень джерела є текст, вірш, твір і т.д. (де повідомлення – кожен окремий символ). Варіант 8. Розробити програму для визначення ентропії повідомлення. В програмі передбачити наступні функції: - читання файлу; - сформувати список повідомлень і ймовірність їх появи; - підрахунок кількості інформації у кожному повідомленні; - підрахувати ентропію джерела повідомлень; - виконати кодування повідомлень алгоритмом Шеннона-Фано (для парних номерів у списку групи) або Алгоритмом Гаффмана (для непарних номерів у списку групи). (Для студентів які претендують на кращі оцінки виконати Арифметичне кодування!); - для виконаного кодування підрахувати середню к-ть символів на повідомлення (L) – ефективність кодування; - підрахувати за теоремою Шеннона-Фано нижню оцінку (межу) (L m ) для середньої кількості символів на повідомлення (L); Код програми: using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; namespace TIK_lab1 { class Program { static void Main(string[] args) { string text = string.Empty; double AmountInformation = 0.0; double AverageOfSymbolsPerMessage = 0.0; string Code = string.Empty; string Decoded = string.Empty; using (StreamReader streamReader = new StreamReader("Text.txt", Encoding.Default)) { while (true) { string tmp = streamReader.ReadLine(); if (tmp == null) break; text += tmp; } } Console.WriteLine(text.Length); Console.WriteLine(text); Dictionary<char, int> CharacterCount = new Dictionary<char, int>(); foreach (char item in text) { if (!CharacterCount.ContainsKey(item)) CharacterCount.Add(item, 1); else CharacterCount[item] += 1; } int Characters = text.Count(); var Messages = CharacterCount.OrderBy(x => x.Value).Reverse(); Dictionary<char, double> Probability = new Dictionary<char, double>(); foreach (var item in Messages) Probability.Add(item.Key, (double)item.Value / Characters); foreach (var item in Probability.Zip(Messages, Tuple.Create)) { Console.WriteLine($"Message: {item.Item1.Key} \tFrenquence:{item.Item2.Value} " + $"\tProbability:{item.Item1.Value:f5}"); } AmountInformation = text.Distinct().Count() * Entropy(Probability); Console.WriteLine($"Entropy:{Entropy(Probability)}"); Console.WriteLine($"Information amount: {AmountInformation}"); List<KeyValuePair<double, char>> List = new List<KeyValuePair<double, char>>(); Dictionary<char, string> Codes = new Dictionary<char, string>(); ...
Антиботан аватар за замовчуванням

14.10.2018 20:10

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Завантаження файлу

Якщо Ви маєте на своєму комп'ютері файли, пов'язані з навчанням( розрахункові, лабораторні, практичні, контрольні роботи та інше...), і Вам не шкода ними поділитись - то скористайтесь формою для завантаження файлу, попередньо заархівувавши все в архів .rar або .zip розміром до 100мб, і до нього невдовзі отримають доступ студенти всієї України! Ви отримаєте грошову винагороду в кінці місяця, якщо станете одним з трьох переможців!
Стань активним учасником руху antibotan!
Поділись актуальною інформацією,
і отримай привілеї у користуванні архівом! Детальніше

Оголошення від адміністратора

Антиботан аватар за замовчуванням

пропонує роботу

Admin

26.02.2019 12:38

Привіт усім учасникам нашого порталу! Хороші новини - з‘явилась можливість кожному заробити на своїх знаннях та вміннях. Тепер Ви можете продавати свої роботи на сайті заробляючи кошти, рейтинг і довіру користувачів. Потрібно завантажити роботу, вказати ціну і додати один інформативний скріншот з деякими частинами виконаних завдань. Навіть одна якісна і всім необхідна робота може продатися сотні разів. «Головою заробляти» продуктивніше ніж руками! :-)

Новини