Указания по выполнению контрольной работы по дисциплине «Теория информации». Учебно-методическое пособие
.pdf
каналу максимально передается N сигналов в единицу времени, тогда пропуск-
ная способность канала равна |
|
С = N max I ( X ,Y ) , |
(11) |
p ( x ) |
|
где
I (X ,Y ) =
H(Y ) − H(Y /
X )
есть среднее количество информации, передавае-
мое по каналу связи одним сигналом. В формуле (11) максимум берется по всем возможным вероятностным распределениям источника сообщений p(x) , H(Y / X ) – условная энтропия, определяемая помехами в данном канале (9).
При отсутствии помех в канале связи
H(Y
/ X )
=
0
, тогда формула (11)
принимает вид
C |
0 |
|
=
max{H (Y P( X )
)}
. Принимая во
внимание свойства энтропии
Шеннона, максимальное значение функции энтропии Шеннона для источника с
алфавитом |
из |
m |
элементов |
равно |
log m. |
Таким |
образом, |
C0 = max{H (Y )} = log
P( X )
Пример. |
Определить |
редаются |
сигналы xi |
m.
пропускную способность канала связи, по которому пе-
. Помехи в канале определяются канальной матрицей
|
|
|
|
|
0,8 |
|
|
|
|
||
P( y |
j |
/ x |
) |
= |
|
|
i |
|
|
0,2 |
|
|
|
|
|
|
0,2 |
|
|
|
0,8 |
|
|
, т.е. набором вероятностей искажения сигнала
x |
i |
|
на
сигнал |
y j |
. За секунду по каналу связи может быть передано L = 10 сигналов. |
Решение. Сначала определим частные условные энтропии в силу симметрии
канальной матрицы H (Y / x1 ) = H (Y / x2 ) = −0,8log0,8 − 0,2log0,2 0,72 |
бит. Да- |
|||||||
лее |
по |
формуле |
(9) |
найдем |
потери |
в |
канале |
связи |
H (Y / X ) = p(x1 )H (Y / x1 ) + p(x2 )H (Y / x2 ) = H (Y / x1 )( p(x1 ) + p(x2 )) . Поскольку |
||||||||
p(x1 ) + p(x2 ) =1, то H(Y / X ) 0,72 бит. Таким образом, информационные по- |
||||||||
тери сообщения в канале связи не зависят от вероятностного распределения |
|
символов сообщения на входе. |
|
Используя формулу (11) и max H (Y )= log 2 =1, имеем |
|
p (x ) |
2 |
C0 = L max{H (Y ) − 0,72} =10 (1− 0,72) = 2,8 бит/сек
P( X )
Ответ 2,8 бит/сек.
Важнейшими результатами теории информации являются теоремы Шеннона о передаче сообщений по каналу связи (с помехами и без). Теоремы связывают пропускную способность канала передачи информации и существование кода, который возможно использовать для передачи информации по каналу с ошибкой, стремящейся к нулю (при увеличении длины блока). Ниже приведены теоремы Шеннона о пропускной способности каналов без шума и с помехами.
31
Теорема Шеннона для дискретных каналов без помех. Пусть k – количество символов, порожденных источником А в единицу времени, С0 – пропускная способность дискретного канала без помех.
Если С0>kH(А), то всегда можно осуществить кодирование сообщений достаточно длинными блоками так, чтобы сообщения передавались каналом связи без задержек.
Если С0<kH(А), то передача без задержек невозможна.
Теорема Шеннона для дискретного канала с шумом. Пусть дискретный ка-
нал обладает пропускной способностью С, дискретный источник – энтропией Н(А) в единицу времени.
Если H(A)<C, то существует такая система кодирования, при котором сообщения источника могут быть переданы по каналу с произвольно малой ненадежностью.
Если Н(А)>C, то не существует способа кодирования, обеспечивающего ненадежность, меньшую чем Н(А)-С.
32
Практическое задание 1
Вычисление энтропии Шеннона
Цель работы: экспериментальное вычисление оценок энтропии Шеннона текстов. Изучение свойств энтропии Шеннона.
Язык программирования: С, С++, С#, Python.
Результат: программа, тестовые примеры, отчет.
Задание:
1. Для выполнения работы потребуются три текстовых файла с различными свойствами. Объем файлов больше 10 Кб, формат txt.
В первом файле содержится последовательность символов, количество различных символов больше 2 (3, 4 или 5). Символы последовательно и независимо с равными вероятностями генерируются с помощью датчика псевдослучайных чисел и записываются в файл.
Для генерации второго файла необходимо сначала задать набор вероятностей символов (количество символов такое же, как и в первом файле), а затем последовательно и независимо генерировать символы с соответствующей вероятностью и записывать их в файл, вероятности в процессе записи файла не меняются.
В качестве третьего файла необходимо выбрать художественный текст на русском (английском) языке. Для алфавита текста предполагается, что строчные и заглавные символы не отличаются, знаки препинания опущены, к алфавиту добавлен пробел, для русских текстов буквы «е» и «ё», «ь» и «ъ» совпадают.
2. Составить программу, определяющую несколько оценок энтропии созданных текстовых файлов. Вычисление значения по формуле Шеннона настоятельно рекомендуется оформить в виде отдельной функции, на вход которой подается массив (список) вероятностей символов, выходной параметр – значение, вычисленное по формуле Шеннона.
Вычислить три оценки энтропии Шеннона для каждого из файлов. Рекомендуется вычисление оценки оформить в виде отдельной функции с параметром имя файла:
Первая оценка H1 . Сначала определить частоты отдельных символов файла, т.е. отношения количества отдельного символа к общему количеству символов в файле. Далее, используя полученные частоты как оценки вероятностей, рассчитать оценку энтропии по формуле Шеннона.
33
Вторая оценка
в файле. Для
H 2 . Определить частоты всех последовательных пар символов |
||
правильной оценки энтропии |
H 2 |
пары символов нужно |
рассматривать с перехлестом.
Пример. Пусть имеется такая последовательность ФЫВАФПРО Под парами понимаются пары соседних символов, т.е.
ФЫ ЫВ ВА АФ ФП ПР РО
Для подсчета оценки энтропии
H |
2 |
|
необходимо подсчитать частоту каждой
пары символов и подставить в формулу Шеннона. Полученное значение оценки энтропии следует разделить на 2.
Третья оценка
H |
3 |
|
. Определить частоты всех последовательных троек
символов в файле. Для правильной оценки энтропии
H |
3 |
|
тройки символов
нужно рассматривать с перехлестом. Для подсчета оценки энтропии H 3
необходимо подсчитать частоту каждой
тройки символов и подставить в формулу Шеннона. Полученное значение оценки энтропии следует разделить на 3.
По желанию можно продолжить процесс вычисления оценок с использованием частот четверок, пятерок символов и т.д.
3. После тестирования программы необходимо заполнить таблицу для отчета и в отчете проанализировать полученные результаты, объяснить замеченные эффекты. Для получения теоретических значений энтропии использовать наборы вероятностей, которые использовались при генерации файлов, для файла с текстом на естественном языке не заполнять.
Название |
H |
1 |
H |
2 |
H |
3 |
Максимально возмож- |
Теоретическое значе- |
файла |
|
|
|
ное значение энтропии |
ние энтропии |
|||
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
файл 1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
файл 2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
файл 3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4.Оформить отчет, должен содержать заполненную таблицу и анализ полученных результатов, по желанию в отчет можно включить описание программной реализации. Загрузить отчет в электронную среду.
5.Анализ полученных результатов можно оформить в виде ответов на вопросы
1.Каким образом реализована генерация файлов?
34
2.Как соотносятся между собой полученные оценки для каждого файла? Равны? Не равны? Поясните, в каких случаях получаются примерно равные оценки, а в каких – нет.
3.Если продолжить процесс вычисления оценок энтропии, используя более длинные последовательности символов, то можно получить последовательность значений. Спрогнозируйте поведение такой последовательности – последовательность будет возрастать или убывать? Имеет ли предел такая последовательность оценок?
4.Какие значения энтропии Шеннона, по вашему мнению, имеют тексты из файлов? Обоснуйте свой ответ.
Необходимый теоретический материал к практическому заданию 1
С практической точки зрения оценка количества информации необходима для построения экономичных кодов, оценки свойств каналов связи и их пропускной способности, для определения избыточности кодов и повышения их помехоустойчивости. При анализе каналов связи нужно уметь определять максимальное количество информации, которое может быть передано за единицу времени. Максимальное количество информации на элемент сообщения может быть получено только в случае равновероятных и независимых сообщений. Сообщения, энтропия которых равна максимальному значению Hmax = logm , m
количество состояний элементов сообщения, являются оптимальными сообщениями в смысле наибольшего количества передаваемой информации. Реальные сообщения редко полностью удовлетворяют этому условию, поэтому информационная нагрузка на каждый элемент обычно меньше той, которую они могли бы передавать. Энтропия таких сообщений меньше максимальной, и сообщение обладает информационной избыточностью.
В теории информации избыточность показывает количество «лишней информации», которая определяется структурой множества состояний элементов и обычно заранее известна из статистических данных.
Мерой количественной оценки того, насколько данное реальное сообщение отличается от соответствующего ему оптимального сообщения, служит
коэффициент сжатия или относительная энтропия, которая равна отноше-
нию энтропии реального сообщения к энтропии соответствующего ему опти-
мального сообщения
= H Hmax
.
Коэффициент сжатия показывает, какая часть реальных сообщений может быть отброшена при переходе к оптимальному кодированию, т.е. какая доля сообщения является излишней или избыточной. Наряду с коэффициентом сжатия используется и величина избыточности r =1 − .
Для уменьшения избыточности сообщения необходимо увеличить энтропию сообщения, т.е. стремиться к тому, чтобы элементы сообщения были максимально информативны.
Пример. Для русского языка, состоящего из 32 букв (буквы «е» и «ё», «ь» и
35
«ъ» не различаются, добавлен символ пробела « » ), максимальное значение энтропии при условии равновероятности букв составляет
Hmax
= logm = log32 = 5
бит
Однако в русском языке появления разных букв алфавита происходит с неравными частотами. В таблице приведены частоты появления отдельных букв русского языка.
Таблица частот букв русского языка
пробел |
О |
Е, Ё |
а |
и |
т |
н |
с |
0.175 |
0.090 |
0.072 |
0.062 |
0.062 |
0.053 |
0.045 |
0.045 |
|
|
|
|
|
|
|
|
р |
в |
л |
к |
м |
д |
п |
у |
0.040 |
0.038 |
0.035 |
0.028 |
0.026 |
0.025 |
0.023 |
0.021 |
|
|
|
|
|
|
|
|
я |
ы |
з |
Ь, Ъ |
б |
г |
ч |
й |
0.018 |
0.016 |
0.016 |
0.014 |
0.014 |
0.013 |
0.012 |
0.010 |
х |
ж |
ю |
ш |
ц |
щ |
э |
ф |
0.009 |
0.007 |
0.006 |
0.006 |
0.004 |
0.003 |
0.003 |
0.002 |
|
|
|
|
|
|
|
|
Используя эти частоты в качестве вероятностей появления букв, можно
получить |
приближенное значение энтропии одной буквы русского языка |
H = 4.35 |
бит, что меньше максимального значения энтропии. Если учитывать |
статистику появления буквенных сочетаний и словесных сочетаний, то исследования показали, что энтропия на букву русского языка не превышает 2 бит.
Таким образом, коэффициент сжатия или относительная энтропия для
русского языка составляет |
= |
H |
|
2 |
|
H |
|
log32 |
|||
|
|
max |
|
||
|
|
|
|
|
|
r =1 − 1 − 0.4 = 0.6 . Коэффициент сжатия |
|||||
русском языке возможно сжать в 2.5 раза.
= 0.4 |
, а величина избыточности |
показывает, что объем текста на
36
Практическое задание 2
Побуквенное кодирование текстов
Цель работы: экспериментальное изучение избыточности сжатия текстового файла.
Язык программирования: С, С++, С#, Python.
Результат: программа, тестовые примеры, отчет.
1.Запрограммировать процедуру двоичного кодирования текстового файла побуквенным кодом. В качестве методов сжатия использовать метод Хаффмана и метод Шеннона (или метод Фано). Текстовые файлы использовать те же, что и в практической работе 1.
2.Вычислить среднюю длину кодовых слов и оценить избыточность кодирования для каждого построенного побуквенного кода.
3.После кодирования текстового файла вычислить оценки энтропии файла с
закодированным текстом |
H1 |
, |
H 2 |
, H 3 (после кодирования последовательность |
содержит 0 и 1) и заполнить таблицу.
Метод ко- |
Название |
Оценка |
дирования |
текста |
избыточности |
|
|
кодирования |
|
|
|
H |
1 |
|
H |
2 |
H |
3 |
|
|
||
|
|
|
|
Избыточность кодирования определяется как |
r = Lcp |
тропия текста, Lcp – средняя длина кодовых слов.
− H
, где H – предельная эн-
4. Оформить отчет, загрузить отчет в электронную среду. Отчет обязательно должен содержать заполненную таблицу и анализ полученных результатов.
По желанию в отчет можно включить описание программной реализации.
5. Анализ полученных результатов можно оформить в виде ответов на вопросы
1.Какой из реализованных методов побуквенного кодирования более оптимальный? Почему? Обоснуйте ответ, используя полученные результаты значений избыточности.
2.Как соотносятся между собой полученные оценки H1 , H 2 , H 3 для каждого
закодированного файла? Равны? Не равны? Чем объясняется такое поведение оценок?
37
3. Можно ли судить о качестве вательности (по оценкам H1 , H
побуквенного кода по закодированной последо- 2 , H 3 )? Обоснуйте свой ответ.
Необходимый теоретический материал к практическому заданию 2
Пусть имеется дискретный вероятностный источник без памяти, порождающий символы алфавита A = {a1 , a2 ,...an } с вероятностями pi = P(ai ) ,
n
pi = 1. Основной характеристикой источника информации является его эн-
i=1
тропия, которая представляет собой среднее значение количества информации одного символа сообщения источника и определяется выражением (для двоич-
n ного случая) H ( p1 , , pn ) = − pi log2 pi . Энтропия характеризует меру неопреде-
i=1 ленности выбора для данного источника. Например, если A = {a1 , a2 }, p1 = 0 ,
p2 =1, то неопределенности для данного источника нет, поскольку источник может породить только символ a2 , H(0,1) = 0 .
Для практических применений важно, чтобы коды сообщений имели по возможности наименьшую длину. Основной характеристикой неравномерного кода является среднее количество символов, затрачиваемых на кодирование одного сообщения. Пусть имеется однозначно декодируемый (разделимый) побуквенный код для источника с алфавитом A = {a1 , a2 ,...an } с вероятностями
p |
i |
|
=
P(a |
i |
|
)
,
n pi i=1
=
1
, состоящий из n кодовых слов с длинами L1,…,Ln в алфави-
n
те {0,1}. Средней длиной кодового слова называется величина Lcp = pi Li или
i =1
среднее число кодовых букв на одну букву источника.
Побуквенный разделимый код называется оптимальным, если средняя длина кодового слова минимальна для данного разделения вероятностей символов. Избыточностью кода называется разность между средней длиной кодового слова и энтропией источника сообщений r = Lcp − H ( p1,..., pn ) . Избыточ-
ность кода является показателем качества кода. Задача эффективного неискажающего сжатия заключается в построении кодов с наименьшей избыточностью, у которых средняя длина кодового слова близка к энтропии источника. К таким кодам относятся классические коды Хаффмана, Шеннона, Фано, Гиль- берта-Мура.
Связь между энтропией источника и средней длиной кодовых слов разделимого кода утверждается в фундаментальных теоремах Шеннона.
Прямая теорема Шеннона. Для источника без памяти |
с алфавитом |
|
n |
A ={a1, a2 ,...,an} и вероятностным распределением pi = P(ai ) , |
pi =1 можно |
|
i =1 |
38 |
|
построить разделимый побуквенный код |
C |
|
, у которого средняя длина кодово- |
|||
|
||||||
го слова превосходит энтропию источника не больше, чем на единицу |
||||||
L |
(C ) H ( p |
,..., p |
n |
) +1. |
||
cp |
1 |
|
|
|
|
|
Обратная теорема Шеннона. Для источника без памяти с алфавитом
A ={a |
, a |
2 |
,...,a |
n |
} |
1 |
|
|
|
и вероятностным распределением
pi
=
P(ai
)
n
,pi =1 и лю-
i=1
бого разделимого побуквенного кода меньше энтропии источника
L |
(C) |
cp |
|
C |
средняя длина кодового слова всегда не |
H ( p |
,..., p |
n |
) |
1 |
|
|
Пример построения кода Хаффмана. Метод Хаффмана позволяет построить оптимальный префиксный код, т.е. код с наименьшей средней длиной кодовых слов среди всех побуквенных кодов для данного источника.
Пусть источник имеет алфавит |
A и вероятностное распределение на символах |
|||||||||
алфавита A . Символы алфавита источника и их вероятности приведены в таб- |
||||||||||
лице 10. |
|
|
|
|
|
|
|
|
|
|
Таблица 10 – Символы алфавита источника и их вероятности |
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
Символ |
А |
В |
Д |
Е |
К |
Л |
Н |
О |
П |
Р |
Вероятность |
0,21 |
0,07 |
0,03 |
0,07 |
0,13 |
0,04 |
0,10 |
0,08 |
0,18 |
0,09 |
Для построения кода Хаффмана необходимо упорядочить символы источника в порядке убывания их вероятностей. Далее два символа с наименьшими вероятностями сливаются в один, причем вероятность нового символа – это сумма вероятностей слитых символов. Обновленный список символов упорядочивается по убыванию вероятностей, и процесс повторяется до тех пор, пока в списке не останется два символа. В этом заключается прямой ход метода Хаффмана, процесс построения приведен на рисунке 5. Наименьшие вероятности выделены желтым цветом, объединенная вероятность на каждом шаге – зеленым. Перемещения символов при упорядочивании указаны стрелками.
39
a |
i |
|
|
А |
|
П |
|
К |
|
Н |
|
Р |
|
О |
|
Е |
|
В |
|
Л |
|
Д |
|
p |
i |
|
0,21
0,18
0,13
0,10
0,09
0,08
0,07
0,07
0,04
0,03
1
0,21
0,18
0,13
0,10
0,09
0,08
0,07
0,07
0,07
2 |
|
3 |
|
|
4 |
|
0,21 |
|
0,21 |
|
|
0,21 |
|
|
|
|
|
|
|
|
0,18 |
|
0,18 |
|
|
0,19 |
|
|
|
|
|
|
|
|
0,14 |
|
|
0,15 |
|
|
0,18 |
0,13 |
|
0,14 |
|
|
0,15 |
|
|
|
|
|
|
|
|
0,10 |
|
0,13 |
|
|
0,14 |
|
|
|
|
|
|
|
|
0,09 |
|
|
0,10 |
|
|
0,13 |
|
|
|
|
|
|
|
0,08 |
|
|
0,09 |
|
|
|
|
|
|
|
|
|
|
0,07 |
|
|
|
|
|
|
|
|
|
|
|
|
|
5 |
|
6 |
|
7 |
|
8 |
|||
|
|
|
|
|
|
|
|
|
|
0,27 |
|
|
0,33 |
|
|
0,40 |
|
|
0,60 |
|
|
|
|
|
|
|
|||
0,21 |
|
0,27 |
|
|
0,33 |
|
0,40 |
||
|
|
|
|
|
|
|
|
||
0,19 |
|
|
0,21 |
|
|
0,27 |
|
|
|
|
|
|
|
|
|
|
|
|
|
0,18 |
|
|
0,19 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0,15 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Рисунок 5 – Прямой ход метода Хаффмана
Обратный ход метода Хаффмана заключается в построении кодовых слов для символов. Двухсимвольный источник кодируется 0 и 1. Далее если символ s
был получен слиянием двух символов s и |
s |
и имеет кодовое слово c , то сим- |
|||||||||||||||||||||||||||
волам s |
и |
s |
назначаются кодовые слова |
c0 |
и c1 |
. Процесс построения кодов |
|||||||||||||||||||||||
показан на рисунке 6 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ai |
код |
|
|
|
1 |
|
2 |
|
|
3 |
|
4 |
|
|
|
5 |
|
|
6 |
7 |
|
|
8 |
|
|
||||
А |
10 |
|
|
|
10 |
|
10 |
|
|
10 |
|
10 |
|
|
|
|
01 |
|
|
|
00 |
|
1 |
|
|
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
П |
000 |
|
|
|
000 |
|
000 |
|
|
000 |
|
11 |
|
|
|
10 |
|
|
01 |
|
00 |
|
1 |
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
К |
011 |
|
|
|
011 |
|
010 |
|
|
001 |
|
000 |
|
|
11 |
|
|
|
10 |
|
01 |
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
Н |
110 |
|
|
|
110 |
|
011 |
|
|
010 |
|
001 |
|
|
|
000 |
|
|
11 |
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
Р |
111 |
|
|
|
111 |
|
110 |
|
|
011 |
|
010 |
|
|
|
001 |
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
О |
0010 |
|
|
|
0010 |
|
111 |
|
|
110 |
|
011 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Е |
0100 |
|
|
|
0011 |
|
0010 |
|
111 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
В |
0101 |
|
|
|
0100 |
|
0011 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
Л |
|
00110 |
|
|
0101 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Д00111
Рисунок 6 – Обратный ход метода Хаффмана
Пример построения кода Шеннона. Пусть источник имеет алфавит |
A и веро- |
ятностное распределение на символах алфавита A . Символы алфавита источника и их вероятности приведены в таблице 10.
Метод кодирования, предложенный К. Шенноном, позволяет построить почти оптимальный двоичный префиксный код, который удовлетворяет теореме Шеннона. Пусть имеется дискретный вероятностный источник, порождаю-
n
щий символы алфавита A ={a1,a2 ,...,an} с вероятностями pi = P(ai ) , pi =1,
i =1
40
