2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки


Правила форума


В этом разделе нельзя создавать новые темы.

Если Вы хотите задать новый вопрос, то не дописывайте его в существующую тему, а создайте новую в корневом разделе "Помогите решить/разобраться (М)".

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

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

Обязательно просмотрите тему Правила данного раздела, иначе Ваша тема может быть удалена или перемещена в Карантин, а Вы так и не узнаете, почему.



Начать новую тему Ответить на тему
 
 как правильно применить метод кодирования Шеннона-Фано
Сообщение08.04.2011, 00:39 


15/04/10
985
г.Москва
Пусть задан алфавит с частотами
\begin{pmatrix} a & b & c & d & e\\ 37 & 22 & 16  & 14  & 11  \end{pmatrix},
Какое правильное 1-е разбиение на группы по методу Шеннона-Фано ?
\begin{pmatrix} a & b \\ 37 & 22  \end{pmatrix},\begin{pmatrix}  c & d & e\\ 16  & 14  & 11  \end{pmatrix},
или
\begin{pmatrix} a & d \\ 37 & 14 \end{pmatrix},\begin{pmatrix}  b & c & e\\ 22  & 16  & 11  \end{pmatrix},
другими словами, разбиения на подмножества делаем только 1 сечением или произвольным выбором (с сохранением упорядоченности) с целью мах близости к 0.5 ?

 Профиль  
                  
 
 Re: как правильно применить метод кодирования Шеннона-Фано
Сообщение08.04.2011, 19:01 


27/01/10
260
Россия
Первое разбиение обычно выбирается так, чтобы суммарная частота встречаемости была примерно одинаковой. Тем самым второй вариант гораздно лучше. Но вообще разбивать можно как угодно, так как все равно получится префиксный код. Выбор разбиения с минимальным отличием в вероятности обусловлен стремлением сделать код оптимальнее. Но в любом случае минимальность не гарантируется. Среди всех кодов, построенных для всех разбиений, оптимальный будет. Но не всегда он получится сразу. Ну а если формально, то правильно (именно по Шеннону-Фано) выбрать второй вариант.

 Профиль  
                  
 
 Re: как правильно применить метод кодирования Шеннона-Фано
Сообщение09.04.2011, 10:00 


15/04/10
985
г.Москва
т.е другими словами перебор всех подмножеств данного с целью мах приближения к 0.5 в 1 случае или к $0.5p_i_-_1$
в общем случае ??

 Профиль  
                  
 
 Re: как правильно применить метод кодирования Шеннона-Фано
Сообщение09.04.2011, 10:40 
Заслуженный участник


22/11/10
1184
Так можно и на задачу о рюкзаке напороться. Судя по всему, сначала все частоты сортируем по убыванию (ну или возрастанию) а потом массив "разрезаем" на две части. Никакого перебора. Да оно и по логике так. Нет особого смысла добиваться идеального деления пополам. Поскольку в дальнейшем из за этого могут возникнуть большие перекосы. Чтобы таких перекосов избежать, в группы объединяются "близкие" частоты ... примерно одного порядка. Для примера, пусть частоты 13,8,4,2,1. "Простой" разрез приводит к двум группам (13) и (8,4,2,1). Перекос (13 -- 15) небольшой. Это в конце концов дает
13- 1бит, 8- 2бит, 4- 3бит, 2- 4бит, 1- 4бит. Результат 13+2*8+3*4+4*(2+1)=53.
Если же использовать на первом шаге идеальное разбиение (13,1) и (8,4,2), то получим
13- 2бит, 1- 2бит, 8- 2бит, 4- 3бит, 2- 3бит. Результат 2*(13+8+1) +3*(4+2)=62.
Это случилось потому, что в одну группу попали "очень разные" частоты 13 и 1.
А вообще, лучше всего использовать коды Хаффмана. Время их построения такое же, но они зато гарантируют оптимальность.

 Профиль  
                  
 
 Re: как правильно применить метод кодирования Шеннона-Фано
Сообщение09.04.2011, 11:54 


15/04/10
985
г.Москва
парадокс. Добивались оптимальности за счет более точного деления пополам по частотам - получили хуже,чем если упорядоченный по сечениям.
Что же тогда считать стандартным вариантом алг Шеннона?

 Профиль  
                  
 
 Re: как правильно применить метод кодирования Шеннона-Фано
Сообщение09.04.2011, 12:48 
Заслуженный участник


22/11/10
1184
Судя по википедии - простой разрез. В общем то ... это достаточно логично. А кроме того, поиск наилучшего разбиения - это еще та головная боль. Причем результат не гарантирован. С другой стороны, все это имело какой-то смысл лишь до того, как Хаффман предъявил эффективный алгоритм построения оптимальных кодов. Поэтому сейчас, данный метод присутствует лишь в справочниках.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 6 ] 

Модераторы: Модераторы Математики, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group