У вас вопросы?
У нас ответы:) SamZan.net

Для практики важно чтобы коды сообщений имели по возможности наименьшую длину.html

Работа добавлена на сайт samzan.net: 2016-01-17

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 2.2.2025

Кодирование.

Для практики важно, чтобы коды сообщений имели по возможности наименьшую длину. Алфавитное кодирование пригодно для любых сообщений, то есть S=A*. Если больше про множество S ничего не известно, то точно сформулировать задачу оптимизации затруднительно. Однако на практике часто доступна дополнительная информация. Например, для текстов естественных языках известно распределение вероятности появления буквы в сообщении. Использование такой информации позволяет строго поставить и решить задачу построения оптимального алфавитного кодирования.

Минимальная длина кода сообщения.

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

Пусть в сообщение S, а   - длины элементарных кодов   соответственно. Тогда, если  и , то  . Действительно, пусть  и , , где a,b. Тогда

(

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

Замечание

Это простой метод решает задачу минимизации длины кода только для фиксированного сообщения Sи фиксированной схемы

Цена кодирования.

Пусть задан алфавит A={} и вероятности появления  букв в сообщении P= (- вероятность появления буквы . Не ограничивая общности, можно считать, что  и  (то есть можно сразу исключить буквы, которые не могут появится в сообщении, и упорядочить буквы по убыванию вероятности их появления).

Для каждой (разделимой) схемы  алфавитного кодирования математическое ожидание коэффициента увеличения длины сообщения при кодировании (обозначается  определяется следующим образом:

, где

И называется средней ценой (или длиной) кодирования σ  при распределении вероятностей P.

Пример

Для разделимой схемы A={a,b}, B={0,1}, δ={ при распределении вероятностей     <0.5, 0.5> цена кодирования составляет 0.5*1+0.5*2=1.5, а при распределении вероятностей <0,9, 0,1> она равна 0.9*1+0.1*2=1.1

Обозначим

             

Очевидно, что всегда существует разделимая схема , такая что  Такая схема называется схемой равномерного кодирования. Следовательно, 1 и достаточно учитывать только такие схемы, для которых  , где  – целое и . Таким образом, имеется лишь конечное число схем σ, для которых . Следовательно, существует схема , на котором  инфимум достигается:

Алфавитное (разделимое) кодирование , для которого :  называется кодированием с минимальной избыточностью, или оптимальным кодированием, для распределения вероятностей P.

Алгоритм Фано

Следующий рекурсивный алгоритм строит разделимую префиксную схему алфавитного кодирования, близкого к оптимальному.

Алгоритм 

Вход: Р : array[1..n] of real –массив вероятностей появления букв в сообщении, упорядоченный по невозрастанию;  1

Выход: С : array[1..n, 1..L] of 0..1 –массив элементарных кодов.

Fano(1,n,0) {вызов рекурсивной процедуры Fano}

Основная работа по построению элементарных кодов выполняется следующей рекурсивной процедурой Fano.

Вход: b-индекс начала обрабатываемой части массива P, e – индекс конца обрабатываемой части массива P, k-длина уже построенных кодов в обрабатываемой части массива С.

Выход: заполненный массив С.

If e>b then 

K:=k+1 {место для очередного разряда в коде}

 m:=Med(b,e) {деление массива на две части}

 for I from b to e do

 C[i,k]:=i>m {в первой части добавляем 0, во второй -1}

 end for

 Fano(b,m,k) {обработка первой части}

 Fano(m+1,e,k) {обработка второй части}

end if

Функция Med находи медиану указанной части массива P[b..e], то есть определяет такой индекс m(bm<e), что сумма элементов P[b..m] Наиболее близка к сумме элементов P[m+1..e].

Вход:  b- индекс начала обрабатываемой части массива P, е –индекс конца обрабатываемой части массива Р.

Выход: m- индекс медианы, то есть  

 {сумма элементов первой части}

for I from b to e-1 do

 {вначале все, кроме последнего}

end for

{сумма элементов второй части}

m:=e {начинаем искать медиану с конца}

repeat

 d:={разность сумм первой и второй части}

 m:=m-1 {сдвигаем границу медианы вниз}

 

 

until |d

return m

 




1. План ликвидации аварий далее ПЛА документ определяющий меры и действия необходимые для спасения людей
2. тема що дозволяє проводити обмін інформацією між пристроями підключеними до системи
3. Б классе Подготовка к сочинению по картине А
4. тема 3 вопрос Первые коллективные хозяйства возникли в 1918 г
5. были в одном провинциальном городке два юных существа
6. Развитие системы снабжения промышленного предприятия на примере ОАО Минский завод Калибр
7. на тему- Редевелопмент недвижимости Выполнил- магистрант кафедры
8. Тема 15 ОБЛІК ЗОВНІШНЬОЕКОНОМІЧНОЇ ДІЯЛЬНОСТІ Основи організації зовнішньоекономічної діяльності
9.  Познакомить детей с цифрами 1 2; развести понятие числа и цифры уточнить понятие пары и уметь ориентироватьс
10.  Особливості розвитку основних галузей народного господарства Франції