отчет лаба 3 Дианов
.docx
ФЕДЕРАЛЬНОЕ
АГЕНСТВО ВОЗДУШНОГО ТРАНСПОРТА
(РОСАВИАЦИЯ)
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
«МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ ГРАЖДАНСКОЙ АВИАЦИИ» (МГТУ ГА)
Кафедра вычислительных машин, комплексов, сетей и систем.
Лабораторная работа защищена с оценкой ____________________
____________________
(подпись преподавателя, дата)
ЛАБОРАТОРНАЯ РАБОТА №3
по дисциплине «Теория информации и кодирования».
Тема: «Расчет количества информации в подмножестве по Шеннону».
Выполнила студентка группы ИС3-1
Магальник Екатерина Борисовна
Руководитель: Дианов Сергей Вячеславович
МОСКВА – 2024
Цель работы
Целью лабораторной работы является закрепление навыков по расчету количества информации в подмножестве по формуле Шеннона.
Задание
Придумать самостоятельно множество, состоящее из подмножеств по Шеннону. Просчитать количество информации выбора 1 элемента из каждого подмножества. Достаточно 3 подмножества.
Выполнение
Количество информации в подмножестве по Шеннону рассчитывается по формуле:
где:
p(xi) — вероятность выбора i-го элемента,
n — количество элементов в подмножестве.
Энтропия показывает, сколько бит информации содержится в выборе элемента из множества с заданным распределением вероятностей.
Пусть задано множество пирожных в кондитерском магазине.
Подмножества:
Эклеры 5 штук;
Картошка 7 штук;
Заварные пирожные 4 штуки;
Макаруны 10 штук;
Корзиночки 8 штук.
Листинг программы
import math from prettytable import PrettyTable mytable = PrettyTable() mytable.field_names = ["Продукт", "Вероятность"] data = [0.04, 0.029, 0.05, 0.02, 0.025] mytable.add_row(["Эклеры", 0.04]) mytable.add_row(["Эклеры", 0.04]) mytable.add_row(["Эклеры", 0.04]) mytable.add_row(["Эклеры", 0.04]) mytable.add_row(["Эклеры", 0.04]) mytable.add_row(["Картошка", 0.029]) mytable.add_row(["Картошка", 0.029]) mytable.add_row(["Картошка", 0.029]) mytable.add_row(["Картошка", 0.029]) mytable.add_row(["Картошка", 0.029]) mytable.add_row(["Картошка", 0.029]) mytable.add_row(["Картошка", 0.029]) mytable.add_row(["Заварные пирожные", 0.05]) mytable.add_row(["Заварные пирожные", 0.05]) mytable.add_row(["Заварные пирожные", 0.05]) mytable.add_row(["Заварные пирожные", 0.05]) mytable.add_row(["Макаруны", 0.02]) mytable.add_row(["Макаруны", 0.02]) mytable.add_row(["Макаруны", 0.02]) mytable.add_row(["Макаруны", 0.02]) mytable.add_row(["Макаруны", 0.02]) mytable.add_row(["Макаруны", 0.02]) mytable.add_row(["Макаруны", 0.02]) mytable.add_row(["Макаруны", 0.02]) mytable.add_row(["Макаруны", 0.02]) mytable.add_row(["Макаруны", 0.02]) mytable.add_row(["Корзиночки", 0.025]) mytable.add_row(["Корзиночки", 0.025]) mytable.add_row(["Корзиночки", 0.025]) mytable.add_row(["Корзиночки", 0.025]) mytable.add_row(["Корзиночки", 0.025]) mytable.add_row(["Корзиночки", 0.025]) mytable.add_row(["Корзиночки", 0.025]) mytable.add_row(["Корзиночки", 0.025]) print(mytable) print("Количество информации в эклерах: ", -math.log(data[0], 2)) print("Количество информации в картошках: ", -math.log(data[1], 2)) print("Количество информации в заварных пирожных: ", -math.log(data[2], 2)) print("Количество информации в макарунах: ", -math.log(data[3], 2)) print("Количество информации в корзиночках: ", -math.log(data[4], 2))
Результат работы программы
+-------------------+-------------+
| Продукт | Вероятность |
+-------------------+-------------+
| Эклеры | 0.04 |
| Эклеры | 0.04 |
| Эклеры | 0.04 |
| Эклеры | 0.04 |
| Эклеры | 0.04 |
| Картошка | 0.029 |
| Картошка | 0.029 |
| Картошка | 0.029 |
| Картошка | 0.029 |
| Картошка | 0.029 |
| Картошка | 0.029 |
| Картошка | 0.029 |
| Заварные пирожные | 0.05 |
| Заварные пирожные | 0.05 |
| Заварные пирожные | 0.05 |
| Заварные пирожные | 0.05 |
| Макаруны | 0.02 |
| Макаруны | 0.02 |
| Макаруны | 0.02 |
| Макаруны | 0.02 |
| Макаруны | 0.02 |
| Макаруны | 0.02 |
| Макаруны | 0.02 |
| Макаруны | 0.02 |
| Макаруны | 0.02 |
| Макаруны | 0.02 |
| Корзиночки | 0.025 |
| Корзиночки | 0.025 |
| Корзиночки | 0.025 |
| Корзиночки | 0.025 |
| Корзиночки | 0.025 |
| Корзиночки | 0.025 |
| Корзиночки | 0.025 |
| Корзиночки | 0.025 |
+-------------------+-------------+
Количество информации в эклерах: 4.643856189774724
Количество информации в картошках: 5.107803289534515
Количество информации в заварных пирожных: 4.321928094887363
Количество информации в макарунах: 5.643856189774724
Количество информации в корзиночках: 5.321928094887363
Вывод
В ходе работы были рассчитаны значения энтропии по формуле Шеннона для заданного множества, состоящего из трёх подмножеств.
Увеличение числа элементов в подмножестве приводит к росту энтропии, так как выбор становится менее однозначным.
Подсчёт энтропии является полезным инструментом для количественной оценки неопределённости при выборе из множества.
Программа корректно реализует расчёт метрик и может быть использована для анализа множеств с различным количеством подмножеств и элементов.
