русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Код Шеннона - Фано


Дата добавления: 2014-03-21; просмотров: 3898; Нарушение авторских прав


Метод двоичной системы счисления

 

Этот метод используется для построения наиболее экономного двоичного кода. В деся-тичной системе счисления каждое число представляется в виде суммы степеней числа 10: k = ak · 10k + ak1 · 10k1 + : : : + a0 · 100, где числа ak; : : : ; a1; a0 - цифры числа,



принимающие значения от 0 до 9. Число N при этом обозначается последовательностью своих цифр akak1 : : : a0. Аналогично этому число n можно представить в виде степе-ней числа 2: n = bl · 10l + : : : + b0 · 100, где числа bl; : : : ; b0 - цифры числа, принимаю-щие значения 0 и 1. Число n обозначается последовательностью соответствующих цифр (6 = 1 22 + 1 21 + 0 20). Аналогично можно представить число в виде суммы степеней числа m - т.н. m-ичная система счисления.

 

Число k цифр в десятичной системе для записи числа n удовлетворяет неравенству 10k1 6 n < 10k. В промежутке между 101 и 102 1 все цифры будут двузначными, а в промежутке 102::103 1 - трёхзначными и.т.д. В двоичной системе счисления число k удовлетворяет неравенству 2k1 6 n < 2k, значит, число 6 - трёхзначное, а число 9 - че-тырёхзначное. При добавлении к двоичной записи ведущих нулей, мы придём к равно-мерномудвоичному коду дляn-буквенного алфавита с минимальной длиной кодовогообозначения k.

 

 

 

Основной результат предыдущего параграфа : если число букв в алфавит равно n, а чис-ло используемых элементарных сигналов равно m, то при любом методе кодирования,

 

среднее число k элементарных сигналов, приходящихся на одну букву алфавита должно быть k > loglogmn . (из неравенства 2k1 6 n < 2k log n < k · log m).

На самом деле, результаты предыдущих параграфов могут быть значительно улучшены, если воспользоваться введённым понятием энтропии и учесть статистические свойства реальных сообщений. Рассмотрим далее простейший случай сообщений, записанных



при помощи некоторых n букв нашего алфавита, частоты появления которых на любом

месте сообщения характеризуются вероятностями p1; : : : ; pn, причём pn = 1. Вероят-

n

ность pi появления i-й буквы на любом месте сообщения принимается одной и той же вне зависимости от того, какие буквы стояли на всех предыдущих местах. Последовательные буквы сообщения предполагаются независимыми друг от друга.

 

Будем далее рассматривать только двоичные коды с элементарными сигналами 0 и 1. Среднее число k двоичных элементарных сигналов, приходящихся в закодированном сообщении на 1 букву исходного сообщения должно быть больше числа энтропии H : (k > H = −p1 log p1 − p2 log p2 − : : : − pn log pn), где H - энтропия опыта, состояще-го в распознавании одной буквы текста (энтропии одной буквы). Отсюда сразу следует, что при любом методе кодирования, для записи сообщения из M букв не меньше MH элементарных сигналов.

 

Если вероятности p1; : : : ; pn - не все равны между собой, тогда H < log n = H( 0), по-этому учёт статистических закономерностей сообщения может позволить построить код более экономный, чем наилучший равномерный код, требующий M ·log n двоичных зна-ков для записи текста из M букв.

 

Код Шеннона - Фано

 

Для получения наиболее экономного кода удобно начать с того, чтобы расположить все n букв алфавита в один столбец в порядке убывания вероятностей.Затем все эти буквыследует разбить на 2 группы: верхнюю и нижнюю, так, чтобы суммарные вероятности для буквы сообщения принадлежать каждой из этих групп были возможно более близки одна к другой. Для букв первой группы в качестве первой цифры кодового обозначения используется 1, для букв второй группы - 0.


 


Далее, каждую из 2 полученных групп снова надо разделить на 2 части с возможно бо-лее близкой суммарной вероятностью. В качестве второй цифры кодового обозначения используют 1 или 0 в зависимости, принадлежит ли наша буква к первой или ко второй подгруппе. Процесс повторяется до тех пор, пока мы не придём к группам, каждая из ко-торых не содержит по одной букве. Такой метод кодирования сообщений был впервые предложен в 1948-49 гг. независимо друг от друга Р.Фано, К.Шенноном.

 

 

ПримерПустьn= 6(алфавит из6букв),вероятности которых равны соответственно

 

0:4; 0:2; 0:2; 0:1; 0:05; 0:05:

 

На первом этапе деления на группы отщепим одну первую букву, оставив во второй груп-пе все остальные. Далее, вторая буква составит первую подгруппу второй группы …

 

N буквы Вероятность Разбиение на подгруппы Кодовое обозначение
0:4 I        
               
0:2 II I      
               
0:2 II II I    
               
0:1 II II II I  
               
0:05 II II II II I
               
0:05 II II II II II
               

 

Выводы: Основной принцип, положенный в основу кодирования по методу Шеннона - Фано заключается в том, что при выборе каждой цифры кодового обозначения мы ста-раемся, чтобы содержащееся в ней количество информации было наибольшим, т.е. что-бы независимо от значения всех предыдущих цифр эта цифра принимала оба возмож-ных для неё значений 0 и 1 о возможности с одинаковой вероятностью. Существенно, что буква, имеющая большую вероятность в коде Шеннона - Фано соответствуют бо-лее короткие кодовые обозначения (эти буквы быстрее оказываются выделенными в отдельную группу. В результате среднее значение k длины такого кодового обозначе-ния оказывается только немногим большим минимального значения H, допускаемого со-ображениями сохранения количества информации при кодировании. Так, для рассмот-ренного выше примера шестибуквенного алфавита наилучший равномерный код состо-ит из трёхзначных кодовых обозначений (т.к. 22 6 6 < 23), поэтому в нём на каж-дую букву приходится ровно 3 элементарных сигнала. При использовании кода Шенно-

на - Фано среднее число k элементарных сигналов, приходящихся на одну буку равно

 

M = L · принимаемые значения вероятности= 10:4 + 20:2 + 30:2 + 40:1 + 5(0:05 + 0:05) = 2:3. Это значение заметно меньше, чем 3, но не очень сильно отличается от энтропии H = 0:4 log 0:4 2 0:2 log 0:2 0:1 log 0:1 2 0:05 log 0:05 2:22:

 

 



<== предыдущая лекция | следующая лекция ==>
Экономность кода | Код Хаффмана


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.007 сек.