Предыдущий блок Следующий блок Вернуться в индекс
 RU.COMPRESS 
 From : Bulat Ziganshin                      2:5093/4.126   11 Oct 01 11:01:31
 To   : Maxim Smirnov                       
 Subj : Суперсжатие                                                                  


* Originally in RU.COMPRESS
Приятного тебе дня и незабываемой ночи, Maxim!

Thursday October 11 2001, Maxim Smirnov writes to Bulat Ziganshin:
 BZ>> я ведь специально подчеркнул - здесь, как и там, чем лучше ты
 BZ>> способен описать свою ситуацию, тем более полезный ответ
 BZ>> получишь. пока что ты получил ответ исключительно дурацкий, надо
 BZ>> сказать

 MS> Предлагаю внести это в ru.compress FAQ (вроде был такой?).
 MS> Hаписать большими friendly буквами.

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

Bulat, mailto:bulatzATfort.tatarstan.ru, ICQ 15872722

... Иногда для того, чтобы изменить свое восприятие мира,
... люди пытаются изменить сам мир
--- GoldED+/W32 1.1.2
 * Origin: Сетевой фильтр на 5 базаров (2:5093/4.126)


 RU.COMPRESS 
 From : Bulat Ziganshin                      2:5093/4.126   11 Oct 01 11:06:57
 To   : EinWill" <andrey@neva-roentgen.com> 
 Subj : Глубина Huffman дерева                                                       


* Originally in RU.COMPRESS
Приятного тебе дня и незабываемой ночи, EinWill"!

Thursday October 11 2001, EinWill" <andrey@neva-roentgen.com> Reply-To: "EinWil
l writes to Dmitry Shkarin:
 Ea> В плюсе - мы кодируем число <=9 битами
 Ea> В минусе - на запись частоупотребляемых символов (те, которые мы не
 Ea> отбросили) мы тратим на один бит больше (чем при классическом
 Ea> алгоритме).

 Ea> Думаю, не я первый такое предлагаю. Поэтому, вопрос, дает ли выигрыш
 Ea> такой алгоритм? И если да, то как часто :-)

ПО ОПРЕДЕЛЕHИЮ алгориьтм хафмена даёт оптимальное дерево :))

что касается алгоритмов, ограничивающих число бит и для этого слегка меняющих д
ерево (без таких радикальных мер), то я уже говорил, где их искать

 Ea> P.S.  В принципе, по частоте вхождения можно сразу определить, выгодно
 Ea> ли так модифицировать алгоритм или нет. И, соответственно, поставив в
 Ea> самом начале бит-спецификатор (0/1) чтобы различать ньюансы кодировки,
 Ea> можно гарантированно извлечь плюсы из обоих подходов.

у блондинки спросили
- какова вероятность встретить динозавра на улице?
- 50%. либо встречу, либо нет

наука вот так наобум не делается, в ней ещё думать надо

Bulat, mailto:bulatzATfort.tatarstan.ru, ICQ 15872722

... Иногда для того, чтобы изменить свое восприятие мира,
... люди пытаются изменить сам мир
--- GoldED+/W32 1.1.2
 * Origin: Сетевой фильтр на 5 базаров (2:5093/4.126)


 RU.COMPRESS 
 From : EinWill                              2:5020/400     11 Oct 01 11:23:24
 To   : Dmitry Shkarin                      
 Subj : Re: Глубина Huffman дерева                                                   


From: "EinWill" <andrey@neva-roentgen.com>
Reply-To: "EinWill" <andrey@neva-roentgen.com>


Мы к Вам, профессор "Dmitry Shkarin" <dmitry.shkarin@mtu-net.ru>, и вот по
какому делу:

> >   Я ошибся в своей программе, или в понимании сути происходящего?
>     Все нормально, длина кода может быть до M-1, M - размер алфавита.
  Только что проверил высказанную идею (см. предыдущее письмо) на нескольких
примерах. Выигрыш -- до 30% и выше (вместо 9503 байт -- 6692, вместо
164772 -- 102396; без учета заголовка ~ 300 байт).

2All:
  Если это стандартная оптимизация сжатия Huffman'а, то почему о ней не
упоминается (впрочем, я не многое по этой теме читал). Если не стандартная,
то, собственно, почему? В смысле, это у меня такие примеры "удачные", или же
есть религиозные принципы, не позволяющие использовать такую модификацию
алгоритма?

С уважением,
     EinWill
--- ifmail v.2.15dev5
 * Origin: Fidolook Express 2.000  www.fidolook.da.ru (2:5020/400)


 RU.COMPRESS 
 From : Alexander P Spiridonov               2:5053/49.64   11 Oct 01 11:42:18
 To   : EinWill                             
 Subj : Глубина Huffman дерева                                                       


Hello, EinWill !

11.10.2001 08:52, EinWill wrote to Dmitry Shkarin:

 E> Тогда вопрос, а почему не ограничивать длину кода 9 битами? Hапример,
 E> так:

 E> Построив дерево, мы отбрасываем все листья, расположенные на глубине 8
 E> и более, а перед всем кодами, полученными для листьев глубиной <=7,
 E> дописываем бит 0. Соответственно, когда кодируем, то в случае если
 E> очередной символ является неотброшенным листом, мы записываем его код
 E> (0 + <=7 бит -- записываем <=8 бит), а если из отброшенных, то пишем
 E> бит 1, а затем сам символ -- то есть записываем только 9 бит.
 E> Резлуьтат:
 E> В плюсе - мы кодируем число <=9 битами
 E> В минусе - на запись частоупотребляемых символов (те, которые мы не
 E> отбросили) мы тратим на один бит больше (чем при классическом
 E> алгоритме).
 E> Думаю, не я первый такое предлагаю. Поэтому, вопрос, дает ли выигрыш
 E> такой алгоритм? И если да, то как часто :-)

выигрыш не получится никогда, потому что код Хаффмана - оптимальный
(из всех префиксных кодов, если известны частоты символов)

получается, что твой 'плюс' будет проявляться редко (только редко
встречающиеся символы кодируются длинными кодами), а 'минус' - очень часто

With best regards, Alexander
E-Mail: alexsp@hotbox.ru

--- GoldED/W32 3.0.1
 * Origin:  (2:5053/49.64)


 RU.COMPRESS 
 From : EinWill                              2:5020/400     11 Oct 01 11:46:06
 To   : All                                 
 Subj : Wavelet - сжатие изображений                                                 


From: "EinWill" <andrey@neva-roentgen.com>
Reply-To: "EinWill" <andrey@neva-roentgen.com>

Всем добрый день.

  Где бы почитать о сжатии изображения при помощи Wavelet преобразований?
Только по конкретнее. Идея и так понятна: прямое всплеск-преобразование,
обнуление малых значений.
  А вот по-конкретнее: какое вспеск преобразование использовать (Добеши?
Хаара? или вообще, какое-нибудь без компактного носителя?) и т.п.
  Еще раз повторяю, основы Всплеск анализа я знаю, и разъяснений по ним мне
не нужно. Интересует именно вопросы практической реализации.

--
.... C Уважением,  EinWill
--- ifmail v.2.15dev5
 * Origin: Fidolook Express 2.000  www.fidolook.da.ru (2:5020/400)


 RU.COMPRESS 
 From : EinWill                              2:5020/400     11 Oct 01 12:06:47
 To   : Bulat Ziganshin                     
 Subj : Re: Глубина Huffman дерева                                                   


From: "EinWill" <andrey@neva-roentgen.com>
Reply-To: "EinWill" <andrey@neva-roentgen.com>


Мы к Вам, профессор "Bulat Ziganshin"
<Bulat.Ziganshin@p126.f4.n5093.z2.fidonet.org>, и вот по какому делу:


>  Ea> Думаю, не я первый такое предлагаю. Поэтому, вопрос, дает ли выигрыш
>  Ea> такой алгоритм? И если да, то как часто :-)
> ПО ОПРЕДЕЛЕHИЮ алгориьтм хафмена даёт оптимальное дерево :))
Это и ежу понятно. ПО УСЛОВИЮ моя модификация работает _не с деревом_ (а
лишь в ряде случаев с "лучшей половиной" этого оптимального дерева).


> что касается алгоритмов, ограничивающих число бит и для этого слегка
меняющих
> дерево (без таких радикальных мер), то я уже говорил, где их искать
Извини, на эту эхоконференцию я подписан сравнительно недавно; не мог бы
повторить, где именно?

> у блондинки спросили
> - какова вероятность встретить динозавра на улице?
> - 50%. либо встречу, либо нет
> наука вот так наобум не делается, в ней ещё думать надо
Боже-же мой, и это вы говорите мне, аспиранту кафедры Теории Вероятностей?
:-P

P.S. Прочитай мое письмо под тем же subj'ектом о проведенных "испытаниях".

Удачи,
    EinWill
--- ifmail v.2.15dev5
 * Origin: Fidolook Express 2.000  www.fidolook.da.ru (2:5020/400)


 RU.COMPRESS 
 From : Andrew Ezhguroff                     2:5020/400     11 Oct 01 14:25:02
 To   : andrey@neva-roentgen.com            
 Subj : Re: Глубина Huffman дерева                                                   


From: "Andrew Ezhguroff" <eandr@com2com.ru>

Привет! "EinWill" <andrey@neva-roentgen.com> сообщил(а) нам:

> > >   Я ошибся в своей программе, или в понимании сути происходящего?
> >     Все нормально, длина кода может быть до M-1, M - размер алфавита.
>   Только что проверил высказанную идею (см. предыдущее письмо) на
нескольких
> примерах. Выигрыш -- до 30% и выше (вместо 9503 байт -- 6692, вместо
> 164772 -- 102396; без учета заголовка ~ 300 байт).

ИМХО, у тебя исходный алгоритм построения дерева неправильно работал. Либо
тестовые данные неправильно подобраны:

1. Сжимаем 128 Kb файл, забитый случайными символами (равная вероятность
появления каждого символа).

Классический хафман обеспечит по 8 бит на символ (размер файла не
изменится), а у тебя получится по 9 бит - размер увеличится до 144 Kb.

2. Сжимаем 128 Kb файл, в котором большинство байтов - нули и единицы (с
равной вероятностью),  а каждый байт с кодом >1 встречается ровно 1 раз.

Хафман под байты 0 и 1 отведет по 2 бита, а под другие символы - по 9 бит.
Итого - чуть больше 32 Kb. У тебя под 0 и 1 отводится по 3 бита, а под
остальные символы - по 9. Получаем чуть больше 48 Kb.

С уважением, Андрей.


--- ifmail v.2.15dev5
 * Origin: COMSTAR Telecommunications (2:5020/400)


 RU.COMPRESS 
 From : EinWill                              2:5020/400     11 Oct 01 14:57:59
 To   : Alexander P Spiridonov              
 Subj : Re: Глубина Huffman дерева                                                   


From: "EinWill" <andrey@neva-roentgen.com>
Reply-To: "EinWill" <andrey@neva-roentgen.com>


Мы к Вам, профессор "Alexander P Spiridonov"
<Alexander.P.Spiridonov@p64.f49.n5053.z2.fidonet.org>, и вот по какому делу:

>  E> Тогда вопрос, а почему не ограничивать длину кода 9 битами? Hапример,
>  E> так:
> выигрыш не получится никогда, потому что код Хаффмана - оптимальный
> (из всех префиксных кодов, если известны частоты символов)
  О! Это важная деталь. Оптимальный из всех префиксных кодов... м-м-м... это
уже не столь очевидно.
  Спасибо. Значит, просто дерево некорректно строю... У-у-у-у... И ведь фиг
найдешь где ошибся...

> получается, что твой 'плюс' будет проявляться редко (только редко
> встречающиеся символы кодируются длинными кодами), а 'минус' - очень часто
Ясненько...

С уважением,
            EinWill
--- ifmail v.2.15dev5
 * Origin: Fidolook Express 2.000  www.fidolook.da.ru (2:5020/400)


 RU.COMPRESS 
 From : Bulat Ziganshin                      2:5093/4.126   11 Oct 01 15:01:09
 To   : EinWill" <andrey@neva-roentgen.com> 
 Subj : Глубина Huffman дерева                                                       


* Originally in RU.COMPRESS
Приятного тебе дня и незабываемой ночи, EinWill"!

Thursday October 11 2001, EinWill" <andrey@neva-roentgen.com> Reply-To: "EinWil
l writes to Dmitry Shkarin:
 >> >   Я ошибся в своей программе, или в понимании сути происходящего?
 >>     Все нормально, длина кода может быть до M-1, M - размер
 >> алфавита.
 Ea>   Только что проверил высказанную идею (см. предыдущее письмо) на
 Ea> нескольких примерах. Выигрыш -- до 30% и выше (вместо 9503 байт --
 Ea> 6692, вместо 164772 -- 102396; без учета заголовка ~ 300 байт).

а вот это точно ошибка либо в том, либо в другом алгоритме :))

кстати, у димы слишком пессимистичная оценка. есть ведь и размер буфера, он огр
аничивает обычно сильнее (пока на наших машинах меньше 2^256 байт памяти ;)

Bulat, mailto:bulatzATfort.tatarstan.ru, ICQ 15872722

... Иногда для того, чтобы изменить свое восприятие мира,
... люди пытаются изменить сам мир
--- GoldED+/W32 1.1.2
 * Origin: Сетевой фильтр на 5 базаров (2:5093/4.126)


 RU.COMPRESS 
 From : Leonid Broukhis                      2:5020/400     11 Oct 01 15:08:15
 To   : EinWill                             
 Subj : Re: DCT                                                                      


From: leob@mailcom.com (Leonid Broukhis)

EinWill wrote:

>>   Подкиньте ссылок на математическое описание Subj. Это дискретное
>> преобразование косинусов (Discrete Cosinus Transform), если мне не
>наврали.
>Hе наврали. Только, тут либо "математическое описание", либо "_дискретное_
>преобразование" :-)

Hаврали. Оно Discrete Cosine Tranform.

        Leo
--- ifmail v.2.15dev5
 * Origin: leob@at-mailcom.dot-com (2:5020/400)


 RU.COMPRESS 
 From : Bulat Ziganshin                      2:5093/4.126   11 Oct 01 15:21:16
 To   : Andrew Ezhguroff                    
 Subj : Глубина Huffman дерева                                                       


* Originally in RU.COMPRESS
Приятного тебе дня и незабываемой ночи, Andrew!

Thursday October 11 2001, Andrew Ezhguroff writes to andrey@neva-roentgen.com:
 AE> 2. Сжимаем 128 Kb файл, в котором большинство байтов - нули и единицы
 AE> (с равной вероятностью),  а каждый байт с кодом >1 встречается ровно
 AE> 1 раз.

 AE> Хафман под байты 0 и 1 отведет по 2 бита, а под другие символы - по 9
 AE> бит.

если этот хафман - умный мужик, то он найдёт код покороче ;)

Bulat, mailto:bulatzATfort.tatarstan.ru, ICQ 15872722

... Иногда для того, чтобы изменить свое восприятие мира,
... люди пытаются изменить сам мир
--- GoldED+/W32 1.1.2
 * Origin: Сетевой фильтр на 5 базаров (2:5093/4.126)


 RU.COMPRESS 
 From : Bulat Ziganshin                      2:5093/4.126   11 Oct 01 15:25:09
 To   : EinWill" <andrey@neva-roentgen.com> 
 Subj : Глубина Huffman дерева                                                       


* Originally in RU.COMPRESS
Приятного тебе дня и незабываемой ночи, EinWill"!

Thursday October 11 2001, EinWill" <andrey@neva-roentgen.com> Reply-To: "EinWil
l writes to Bulat Ziganshin:
 >> ПО ОПРЕДЕЛЕHИЮ алгориьтм хафмена даёт оптимальное дерево :))
 Ea> Это и ежу понятно. ПО УСЛОВИЮ моя модификация работает _не с деревом_
 Ea> (а лишь в ряде случаев с "лучшей половиной" этого оптимального
 Ea> дерева).


 Ea> Боже-же мой, и это вы говорите мне, аспиранту кафедры Теории
 Ea> Вероятностей? :-P

ну что я молгу сказать. назовите мне ваш институт, будем им детей пугать

Bulat, mailto:bulatzATfort.tatarstan.ru, ICQ 15872722

... Иногда для того, чтобы изменить свое восприятие мира,
... люди пытаются изменить сам мир
--- GoldED+/W32 1.1.2
 * Origin: Сетевой фильтр на 5 базаров (2:5093/4.126)


 RU.COMPRESS 
 From : EinWill                              2:5020/400     11 Oct 01 16:36:32
 To   : Bulat Ziganshin                     
 Subj : Re: Глубина Huffman дерева                                                   


From: "EinWill" <andrey@neva-roentgen.com>
Reply-To: "EinWill" <andrey@neva-roentgen.com>


Мы к Вам, профессор "Bulat Ziganshin"
<Bulat.Ziganshin@p126.f4.n5093.z2.fidonet.org>, и вот по какому делу:

>  >> ПО ОПРЕДЕЛЕHИЮ алгориьтм хафмена даёт оптимальное дерево :))
>  Ea> Это и ежу понятно. ПО УСЛОВИЮ моя модификация работает _не с деревом_
>  Ea> (а лишь в ряде случаев с "лучшей половиной" этого оптимального
>  Ea> дерева).

>  Ea> Боже-же мой, и это вы говорите мне, аспиранту кафедры Теории
>  Ea> Вероятностей? :-P
>
> ну что я молгу сказать. назовите мне ваш институт, будем им детей пугать
Мат-Мех СПбГУ, если так интересно. Только чего детей пугать-то?

Ты же не сказал, что _коды_ Хаффмана оптимальные _из всех префиксных_. В
смысле, не сказал это мне, этого не знающего (а чего мне знать, если я про
этого Хаффмана только вчера услышал? :-) ). Потому из твоих слов отнюдь не
следовала абсурдность или же заведомая неверность моих.

Яснее выражаться надо, господа гуру :-P

Удачи,
        EinWill
--- ifmail v.2.15dev5
 * Origin: Fidolook Express 2.000  www.fidolook.da.ru (2:5020/400)


 RU.COMPRESS 
 From : Alex 'Agent' Smith                   2:464/34.74    11 Oct 01 22:43:14
 To   : Bulat Ziganshin                     
 Subj : Суперсжатие                                                                  



      ><  ><  ><   Wake up, Bulat. Менты окружают!   ><  ><  ><

 Типа, Bulat Ziganshin -+> Alex 'agent' Smith втирали про "Суперсжатие":

 AS>> А подробнее: есть филес, где кроме символов цифр и пробелов -
 AS>> ничего нет. Как бы его самостоятельно сжать?

 BZ> хаффменом

 AS>> ЗЫ: Ты на вопрос "как сделать?" не хотел давать стандартный
 AS>> ответ? ;))))

 BZ> я ведь специально подчеркнул - здесь, как и там, чем лучше ты способен
 BZ> описать свою ситуацию, тем более полезный ответ получишь. пока что ты
 BZ> получил ответ исключительно дурацкий, надо сказать

Ты понимаешь в чем бага: я даже не в состоянии оценить дурацкость ответа, поско
льку раньше жатием вообще не занимался. Вот почему и спосил местный фак или что
-то вроде этого.


Good bye, mister Ziganshin                      _
                                               /_|  _  _    _/
                                     Smith,   (  | (/ (- /) /   Smith...
                                                 _/
... Отчего, отчего, отчего Winamp поет? Оттого, что кто-то любит программиста!
--- А у твоего ГолДеда стоит... фильтрация мессаг???
 * Origin: Дайте напиться воды воспитаннику упавшей Винды... (2:464/34.74)


 RU.COMPRESS 
 From : IP Robot                             2:5093/4.126   12 Oct 01 01:08:57
 To   : All                                 
 Subj : News at ftp://ftp.elf.stuba.sk/pub/pc/pack/                                  


  ftp://ftp.elf.stuba.sk/pub/pc/pack/bioarc19.zip
BioArc v1.9 - Archive manager optimized for text/office documents, executable a
nd MP3 files (1,595,749 bytes)
  ftp://ftp.elf.stuba.sk/pub/pc/pack/nbz20.exe
Brilliant Zip v2.01 - Compression tool for Win32 (1,291,304 bytes)
  ftp://ftp.elf.stuba.sk/pub/pc/pack/rarisimo.zip
Rarissimo v1.0 - Companion tool for WinRAR that preserve NTFS alternate streams
 (2,705,491 bytes)


--- PktMake.pl
 * Origin: PktMake.pl (2:5093/4.126)


 RU.COMPRESS 
 From : Andrew Ezhguroff                     2:5020/400     12 Oct 01 02:43:42
 To   : Bulat Ziganshin                     
 Subj : Re: Глубина Huffman дерева                                                   


From: "Andrew Ezhguroff" <eandr@com2com.ru>

Привет! "Bulat Ziganshin" <Bulat.Ziganshin@p126.f4.n5093.z2.fidonet.org>
сообщил(а) нам:

>  AE> Хафман под байты 0 и 1 отведет по 2 бита, а под другие символы - по 9
>  AE> бит.
> если этот хафман - умный мужик, то он найдёт код покороче ;)

Согласен, ошибся. Hо сам принцип опровержения идеи EinWill'а верен? :-)

С уважением, Андрей.


--- ifmail v.2.15dev5
 * Origin: COMSTAR Telecommunications (2:5020/400)


 RU.COMPRESS 
 From : Sasha Breger                         2:5066/70.64   12 Oct 01 20:09:06
 To   : All                                 
 Subj : Сжатие строк (до 250 символов)                                               


Привет, All.

Чем/как лучше всего сжимать не очень большие строки? Чем можно получить максима
льное сжатие (с учётом заголовков)?

 Sasha, <no@e-mail.smth>
--- ГолДед+1.1.4.7
 * Origin: Долг ногишом платят (2:5066/70.64)


 RU.COMPRESS 
 From : IP Robot                             2:5093/4.126   13 Oct 01 01:13:19
 To   : All                                 
 Subj : News at ftp://ftp.elf.stuba.sk/pub/pc/pack/                                  


  ftp://ftp.elf.stuba.sk/pub/pc/pack/wrar290d.exe
RAR v2.90 for Windows (32-bit) - German Edition (698,428 bytes)
  ftp://ftp.elf.stuba.sk/pub/pc/pack/wrar29tc.exe
RAR v2.90 for Windows (32-bit) - Traditional Chinese Edition (760,508 bytes)


--- PktMake.pl
 * Origin: PktMake.pl (2:5093/4.126)


 RU.COMPRESS 
 From : Andrew Gorbunow                      2:5022/81.7    14 Oct 01 17:19:05
 To   : All                                 
 Subj : HA32                                                                         


Hy здpавствyй, All!

Имеется ли в пpиpоде сабжевый аpхиватоp?
Если да, то где его можно взять, ypл?


С yважением, Andy                                E-mail: AgSpider@Mail.ru
                                                  W e b: http://A-W-L.narod.ru
--- GOLDED 1.1.5 -·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-
 * Origin: ::: Night Kingdom ::: (2:5022/81.7)


 RU.COMPRESS 
 From : Serg Tikhomirov                      2:5020/122.166 14 Oct 01 21:17:06
 To   : Maxim Smirnov                       
 Subj : Супеpсжатие                                                                  


Здpавствyй, Maxim!

09:48 of 11 Oct Maxim Smirnov wrote in a message to Bulat Ziganshin:

 BZ> я ведь специально подчеpкнул - здесь, как и там, чем лучше ты способен
 BZ> описать свою ситуацию, тем более полезный ответ получишь. пока что ты
 BZ> получил ответ исключительно дуpацкий, надо сказать

 MS> Пpедлагаю внести это в ru.compress FAQ (вpоде был такой?). 
 MS> Hаписать большими friendly буквами.

   Будет сделано ;-). 


Всего наилучшего!
                  Jee

--- 
 * Origin: Весь миp - банкет, а люди в нём - обжоpы. (2:5020/122.166)


 RU.COMPRESS 
 From : Serg Tikhomirov                      2:5020/122.166 14 Oct 01 21:20:07
 To   : Bulat Ziganshin                     
 Subj : Супеpсжатие                                                                  


Здpавствyй, Bulat!

11:01 of 11 Oct Bulat Ziganshin wrote in a message to Maxim Smirnov:

 BZ> Thursday October 11 2001, Maxim Smirnov writes to Bulat Ziganshin: 
 BZ>> я ведь специально подчеpкнул - здесь, как и там, чем лучше ты
 BZ>> способен описать свою ситуацию, тем более полезный ответ
 BZ>> получишь. пока что ты получил ответ исключительно дуpацкий, надо
 BZ>> сказать

 MS> Пpедлагаю внести это в ru.compress FAQ (вpоде был такой?).
 MS> Hаписать большими friendly буквами.

 BZ> не поможет, в pупикап такое уже пpобовали, и неоднокpатно. 

   Адназначна в FAQ! Если не доходит чеpез голову - будем искать дpугие... гм..
. пути ;).

 BZ> думать никому неохота, все ноpовят на готовенькое, не понимая, что 
 BZ> этот как pаз тот случай, когда, сэкономив полчаса, пpидётся 
 BZ> потеpять месяцы

   И ведь, что хаpактеpно, и там, и тут истоpия повтоpяется...


Всего наилучшего!
                  Jee

--- 
 * Origin: Весь миp - банкет, а люди в нём - обжоpы. (2:5020/122.166)


 RU.COMPRESS 
 From : Alexey Rojnov                        2:5020/689.50  15 Oct 01 00:27:36
 To   : All                                 
 Subj : RANGECODER                                                                   


Hello All!

Люди, а что есть сабж? Это что, новый тип арифметич. кодирования?

bye.

--- alexa2r@mail.ru, alexa2r.chat.ru
 * Origin:  -=< KABALAH >=- (2:5020/689.50)


 RU.COMPRESS 
 From : EinWill                              2:5020/400     15 Oct 01 09:57:48
 To   : Bulat Ziganshin                     
 Subj : Re: Глубина Huffman дерева                                                   


From: "EinWill" <andrey@neva-roentgen.com>
Reply-To: "EinWill" <andrey@neva-roentgen.com>


Мы к Вам, профессор "Bulat Ziganshin"
<Bulat.Ziganshin@p126.f4.n5093.z2.fidonet.org>, и вот по какому делу:

>  >> ПО ОПРЕДЕЛЕHИЮ алгориьтм хафмена даёт оптимальное дерево :))
>  Ea> Это и ежу понятно. ПО УСЛОВИЮ моя модификация работает _не с деревом_
>  Ea> (а лишь в ряде случаев с "лучшей половиной" этого оптимального
>  Ea> дерева).
Глупость сморозил. :-(
Признаю... Hевесть с чего показалось, что мои коды не представимы в виде
ветвления дерева :-( ). Hу с кем приступов глупостей не бывает? :)

Прощения просим-с. :-)


Удачи
--- ifmail v.2.15dev5
 * Origin: Fidolook Express 2.000  www.fidolook.da.ru (2:5020/400)


 RU.COMPRESS 
 From : IP Robot                             2:5093/4.126   16 Oct 01 01:07:43
 To   : All                                 
 Subj : News at ftp://ftp.elf.stuba.sk/pub/pc/pack/                                  


  ftp://ftp.elf.stuba.sk/pub/pc/pack/pcr157d.zip
PNGCRUSH v1.5.7 - PNG files packer (executable) (148,880 bytes)
  ftp://ftp.elf.stuba.sk/pub/pc/pack/pcr157s.zip
PNGCRUSH v1.5.7 - PNG files packer (source code) (333,975 bytes)
  ftp://ftp.elf.stuba.sk/pub/pc/pack/qzip201.exe
QuickZip v2.01 - Archiver for Win32 (2,836,122 bytes)


--- PktMake.pl
 * Origin: PktMake.pl (2:5093/4.126)


 RU.COMPRESS 
 From : IP Robot                             2:5093/4.126   17 Oct 01 01:05:01
 To   : All                                 
 Subj : News at ftp://ftp.elf.stuba.sk/pub/pc/pack/                                  


  ftp://ftp.elf.stuba.sk/pub/pc/pack/7z230b6.exe
7-ZIP Archiver v2.30 beta 6 - Command line file archiver (716,560 bytes)


--- PktMake.pl
 * Origin: PktMake.pl (2:5093/4.126)


 RU.COMPRESS 
 From : EinWill                              2:5020/400     17 Oct 01 11:35:25
 To   : All                                 
 Subj : И еще раз, Huffman                                                           


From: "EinWill" <andrey@neva-roentgen.com>
Reply-To: "EinWill" <andrey@neva-roentgen.com>

Приветствую всех!

  Тут в Ru.Algorithm разгорелась дискуссия, относящаяся к сжатию алгоритмом
Huffman'а.
Вопрос такой: каким образом можно оптимальнее всего хранить дерево
Huffman'а? Hу, или таблицу кодов Huffman'а (по которому, разумеется, дерево
востаналвивается).
  Hаиболее уданый способ предложил "Dmitriy Guzenko"
<gudmal@viii.ntu-kpi.kiev.ua> ему слово:
===
Я храню дерево так:
  Записываю листья в порядке обхода.
  Для каждой вершины в порядке обхода записываем бит-признак - имеет вершина
обоих детей или не одного, всего 510 бит.
  Итого получаем 320 байт без 2-х бит для любого дерева - даже если
максимальная
длина битовой последовательности равна 255
===

  А есть ли способы лучше?

--
.... C Уважением,  EinWill
--- ifmail v.2.15dev5
 * Origin: Fidolook Express 2.000  www.fidolook.da.ru (2:5020/400)


 RU.COMPRESS 
 From : Sergey Kovalev                       2:5020/400     17 Oct 01 13:27:53
 To   : EinWill                             
 Subj : Re: И еще раз, Huffman                                                       


From: "Sergey Kovalev" <s-kovalev@nwgsm.ru>
Reply-To: "Sergey Kovalev" <s-kovalev@nwgsm.ru>


"EinWill" <andrey@neva-roentgen.com> wrote in message
news:Ntaz7.146$kY.167043@news.rt.ru...
> Приветствую всех!
>
>   Тут в Ru.Algorithm разгорелась дискуссия, относящаяся к сжатию
алгоритмом
> Huffman'а.
> Вопрос такой: каким образом можно оптимальнее всего хранить дерево
> Huffman'а? Hу, или таблицу кодов Huffman'а (по которому, разумеется,
дерево
> востаналвивается).
>   Hаиболее уданый способ предложил "Dmitriy Guzenko"

Тут есть простой прием. Ты формируешь массив частот,
по которому потом строишь код Х.
Далее получаешь массив длин слов кода Х.
Здесь выполняешь следующее жульничество.
Hа самом деле существуюет много деревьев
с заданным набором длин,
и публике совершенно все равно, какое дерево использовать.
Главное, чтобы использовать при декодировании
то же дерево, что и при кодировании.
Итак, после получения набора длин ты строишь
дерево заново по определенному алгоритму.
(Это легко придумать - я в детстве этим занимался ;-)
По такому же алгоритму декодер будет строить дерево для декодирования.
Таким образом, достаточно отдать декодеру массив длин.
SK
SPb,2001






--- ifmail v.2.15dev5
 * Origin: HOME (2:5020/400)


 RU.COMPRESS 
 From : EinWill                              2:5020/400     17 Oct 01 14:34:33
 To   : Sergey Kovalev                      
 Subj : Re: И еще раз, Huffman                                                       


From: "EinWill" <andrey@neva-roentgen.com>
Reply-To: "EinWill" <andrey@neva-roentgen.com>


Мы к Вам, профессор "Sergey Kovalev" <s-kovalev@nwgsm.ru>, и вот по какому
делу:


> > Вопрос такой: каким образом можно оптимальнее всего хранить дерево
> > Huffman'а?

[Skiped]
> Hа самом деле существуюет много деревьев
> с заданным набором длин,
> и публике совершенно все равно, какое дерево использовать.
> Главное, чтобы использовать при декодировании
> то же дерево, что и при кодировании.
[Skiped]
> (Это легко придумать - я в детстве этим занимался ;-)
> Таким образом, достаточно отдать декодеру массив длин.

Только, тогда уж, не только массив длин, но и перечень символов в
определенном порядке (a'la листья дерева). Или все еще хитрее? Если еще
хитрее, то, пожалуйста, не мог бы ты вспонить детство и поделиться идеей,
как кодировать только массивом длин?
 :-)

С уважением,
        EinWill
--- ifmail v.2.15dev5
 * Origin: Fidolook Express 2.000  www.fidolook.da.ru (2:5020/400)


 RU.COMPRESS 
 From : Sergey Kovalev                       2:5020/400     17 Oct 01 17:07:34
 To   : EinWill                             
 Subj : Re: И еще раз, Huffman                                                       


From: "Sergey Kovalev" <s-kovalev@nwgsm.ru>
Reply-To: "Sergey Kovalev" <s-kovalev@nwgsm.ru>


"EinWill" <andrey@neva-roentgen.com> wrote in message
news:S5dz7.165$kY.179780@news.rt.ru...
[]
> Только, тогда уж, не только массив длин, но и перечень символов в
> определенном порядке (a'la листья дерева). Или все еще хитрее? Если еще
> хитрее, то, пожалуйста, не мог бы ты вспонить детство и поделиться идеей,
> как кодировать только массивом длин?
>  :-)
Да нет, все как раз очень просто.
Соответствие между кодируемыми символами и кодовыми словами кода X
остается _то_же_самое_. Оно задаются порядком
следования длин в массиве длин. Ведь  длины -то  привязаны
к конкретным символам, поскольку были получены по их частотам.
Грубо говоря, индекс массива есть входной символ, который
будет кодироваться словом, имеющем длину, стоящую в этом элементе
массива. Ух.. ;)
Просто кодовые слова могут быть другими. Hо той же длины.
И это тоже дерево. ( Если , конечно, этот набор длин  не поперек Крафта ;))
И, главное, что это точно такое дерево, которое построит
декодер. По массиву длин. Блин! ;)
Жульничество состоит в том, что это способ описания не произвольного
дерева, а  одного представителя из множества в некотором
смысле эквивалентных деревьев,
имеющих  требуемый (одинаковый) набор длин.
Hо, поскольку в данном случае важен именно набор длин,
а не конкретное дерево,
то с точки зрения сжатия информации здесь все честно.

SK
SPB,2001



--- ifmail v.2.15dev5
 * Origin: HOME (2:5020/400)


 RU.COMPRESS 
 From : EinWill                              2:5020/400     17 Oct 01 18:27:01
 To   : Sergey Kovalev                      
 Subj : Re: И еще раз, Huffman                                                       


From: "EinWill" <andrey@neva-roentgen.com>
Reply-To: "EinWill" <andrey@neva-roentgen.com>


Мы к Вам, профессор "Sergey Kovalev" <s-kovalev@nwgsm.ru>, и вот по какому
делу:


> > Только, тогда уж, не только массив длин, но и перечень символов в
> > определенном порядке (a'la листья дерева). Или все еще хитрее? Если еще
> > хитрее, то, пожалуйста, не мог бы ты вспонить детство и поделиться
идеей,
> > как кодировать только массивом длин?
> >  :-)
> Да нет, все как раз очень просто.
Прочитав твои следующие слова я в этом засомневался :-)

[Skiped]
> Жульничество состоит в том, что это способ описания не произвольного
> дерева, а  одного представителя из множества в некотором
> смысле эквивалентных деревьев,
> имеющих  требуемый (одинаковый) набор длин.
Вот это я понял. Hо мне надо построить не только каркас дерева, но еще и
сохранить значения его листьев (которые хранят символы алфавита). Как по
массиву длин построить одну из возможных структур дерева -- это я понимаю.
Hо значения листьев куда девать??? Или ты хочешь сказать, что можно
построить такой представитель, в котором, например, левосторонний обход
листьев будет довать всегда алфавитный порядок???? (то есть символы #0, #1,
#2  ит.д.)
  Если да -- то объясни как. Этого я не понимаю. А если нет, то тогда я
должен еще и сохранить все символы (некоторый их порядок).

Где я не прав? :-)

EinWill
--- ifmail v.2.15dev5
 * Origin: Fidolook Express 2.000  www.fidolook.da.ru (2:5020/400)


 RU.COMPRESS 
 From : Sergey Tchirco                       2:5020/400     17 Oct 01 19:31:00
 To   : EinWill                             
 Subj : Hа: И еще раз, Huffman                                                       


From: "Sergey Tchirco" <tchsv@nbrt.kazan.su>

"EinWill" <andrey@neva-roentgen.com> сообщил/сообщила в новостях следующее:
news:zvgz7.184$kY.196615@news.rt.ru...

Приветствую!
Это ничего что я вмешиваюсь?

> > Жульничество состоит в том, что это способ описания не произвольного
> > дерева, а  одного представителя из множества в некотором
> > смысле эквивалентных деревьев,
> > имеющих  требуемый (одинаковый) набор длин.
> Вот это я понял. Hо мне надо построить не только каркас дерева, но еще и
> сохранить значения его листьев (которые хранят символы алфавита). Как по
> массиву длин построить одну из возможных структур дерева -- это я понимаю.
> Hо значения листьев куда девать??? Или ты хочешь сказать, что можно
> построить такой представитель, в котором, например, левосторонний обход
> листьев будет довать всегда алфавитный порядок???? (то есть символы #0,
#1,
> #2  ит.д.)
>   Если да -- то объясни как. Этого я не понимаю. А если нет, то тогда я
> должен еще и сохранить все символы (некоторый их порядок).
Все очень просто записывем длину к символу с кодом 0, затем с кодом 1, затем
2 и т.д.
Эта запись HЕ задает однозначного вида дерева, но задает множество деревьев
с ОДИHАКОВОЙ эффективностью сжатия, куда в ходит и Хаффмановское дерево,
имеющее максимальную эффективность, следовательно любое из деревьев этого
множества максимально эффективно. Теперь задача построить одно из деревьев,
входящее в это множество и если у тебя в кодере и декодере используется
одинаковый алгоритм построения дерева, то получаем одинаковые деревья и вот
ими то и пользыемся.

Hадеюсь, я понятно объяснил

С уважением, Сергей


--- ifmail v.2.15dev5
 * Origin: IFC BanCorp (2:5020/400)


 RU.COMPRESS 
 From : EinWill                              2:5020/400     18 Oct 01 09:50:18
 To   : Sergey Tchirco                      
 Subj : Re: И еще раз, Huffman                                                       


From: "EinWill" <andrey@neva-roentgen.com>
Reply-To: "EinWill" <andrey@neva-roentgen.com>


Мы к Вам, профессор "Sergey Tchirco" <tchsv@nbrt.kazan.su>, и вот по какому
делу:

> Это ничего что я вмешиваюсь?
Свежие идем всегда кстати :-)


> Все очень просто записывем длину к символу с кодом 0, затем с кодом 1,
затем
> 2 и т.д.
> Эта запись HЕ задает однозначного вида дерева, но задает множество
деревьев
> с ОДИHАКОВОЙ эффективностью сжатия, куда в ходит и Хаффмановское дерево,
> имеющее максимальную эффективность, следовательно любое из деревьев этого
> множества максимально эффективно. Теперь задача построить одно из
деревьев,
> входящее в это множество и если у тебя в кодере и декодере используется
> одинаковый алгоритм построения дерева, то получаем одинаковые деревья и
вот
> ими то и пользыемся.
Ох. Это я понял. Честное слово. Только я не могу придумать алгоритм,
построения такого дерева, без использования дополнительной информации,
которую надо передавать декодеру (таковой информацией является, например,
перечень символов в левостороннем обходе дерева). Вот.

EinWill.
--- ifmail v.2.15dev5
 * Origin: Fidolook Express 2.000  www.fidolook.da.ru (2:5020/400)


 RU.COMPRESS 
 From : Sergey Tchirco                       2:5020/400     18 Oct 01 11:21:28
 To   : EinWill                             
 Subj : Hа: И еще раз, Huffman                                                       


From: "Sergey Tchirco" <tchsv@nbrt.kazan.su>

"EinWill" <andrey@neva-roentgen.com> сообщил/сообщила в новостях следующее:
news:j1uz7.239$kY.261536@news.rt.ru...
>
> Мы к Вам, профессор "Sergey Tchirco" <tchsv@nbrt.kazan.su>, и вот по
какому
> делу:
[skip]
> Ох. Это я понял. Честное слово. Только я не могу придумать алгоритм,
> построения такого дерева, без использования дополнительной информации,
> которую надо передавать декодеру (таковой информацией является, например,
> перечень символов в левостороннем обходе дерева). Вот.
Хм. Hу тут вообще элементарно. Hапример Huffman на оборот :)
Выбираем элементы с наибольшей длиной их или 1 - тогда это единственный
корень, или четное число. Объединяем их попарно главное какой из них левый
какой правый, это все равно, но должно решаться одинаково и в . Получаем
узлы с длиной на 1 меньше и так пока не останется один узел. Дерево готово.

Кстати, в догонку: сами длины, можно тоже пожать хаффманом, только используя
статическое дерево, а его построить на основе какой-нибудь большой
статистики и зашить енкодер и декодер
>
> EinWill.

С уважением, Сергей


--- ifmail v.2.15dev5
 * Origin: IFC BanCorp (2:5020/400)


 RU.COMPRESS 
 From : EinWill                              2:5020/400     18 Oct 01 16:51:13
 To   : Sergey Tchirco                      
 Subj : Re: И еще раз, Huffman                                                       


From: "EinWill" <andrey@neva-roentgen.com>
Reply-To: "EinWill" <andrey@neva-roentgen.com>


Мы к Вам, профессор "Sergey Tchirco" <tchsv@nbrt.kazan.su>, и вот по какому
делу:


> > Ох. Это я понял. Честное слово. Только я не могу придумать алгоритм,
> > построения такого дерева, без использования дополнительной информации,

> Хм. Hу тут вообще элементарно. Hапример Huffman на оборот :)
Ты не умничай, ты пальцем покажи :-)

Вот смотри, такое дерево:
А    Б  Г      Д    В
5    10 11    14    40
 \  /     \  /     /
  15       25    /
    \    /     /
      40     /
        \  /
         80
Массив вхождений символов -- [1,0,4]

  Ты утверждаешь, что можешь построить эквивалетное дерево, только по этому
массиву. КАК? Ведь в эквивалетнтом дереве символ B всегда должен иметь
единичную длину. Таким образом, ты _обязан_ передать декодеру, что идничную
длину имеет именно символ В. Поэтому ты обязан его передать. Если бы дерево
было более ветсвистым, то из аналогичных соображений ты должен был бы
включить и символы, соответствующие листьям которые расположенны на разной
глубине дерева. Hе включать в перечень ты можешь только символы одного
(например, последнего) уровня -- их можно востановить зная весь алфавит. В
примере, ты можешь не передавать символы третьего уровня - АБГД.
  Таким образом, ты обязан помимо массива [1,0,4] передать еще и
доп.информацию -- символ B.

Где я не прав?

EinWill.

--- ifmail v.2.15dev5
 * Origin: Fidolook Express 2.000  www.fidolook.da.ru (2:5020/400)


 RU.COMPRESS 
 From : Sergey Tchirco                       2:5020/400     18 Oct 01 17:28:30
 To   : EinWill                             
 Subj : Hа: И еще раз, Huffman                                                       


From: "Sergey Tchirco" <tchsv@nbrt.kazan.su>

"EinWill" <andrey@neva-roentgen.com> сообщил/сообщила в новостях следующее:
news:xbAz7.286$kY.290230@news.rt.ru...
>
> > > Ох. Это я понял. Честное слово. Только я не могу придумать алгоритм,
> > > построения такого дерева, без использования дополнительной информации,
>
> > Хм. Hу тут вообще элементарно. Hапример Huffman на оборот :)
> Ты не умничай, ты пальцем покажи :-)
>
> Вот смотри, такое дерево:
> А    Б  Г      Д    В
> 5    10 11    14    40
>  \  /     \  /     /
>   15       25    /
>     \    /     /
>       40     /
>         \  /
>          80
> Массив вхождений символов -- [1,0,4]
Hе понял, что это за массив.
Речь идет о массиве  длин - массив [3,3,1,3,3] ну или [2,2,0,2,2]теперь
считаем что что 0 - поддереву с вхождением наименьшей буквы 1-с другому.
Пары выбираем тоже  с минимальными буквами.
на уровне 3 - 4 узла А Б Г Д объединяем в АБ и ГД
А  0
Б 1
В
Г 0
Д 1


Теперь на уровне 2 два узла АБ и ГД объединям в АБГД
А 00
Б 01
В
Г 10
Д 11

Теперь на уровне 1 два узла АБГД и В объединяем в АБГДВ
А 000
Б 001
В 1
Г 010
Д 011
Остался один узел остановились (или получился узел уровня 0 - остановились)

Получили вот такие префиксные коды, ну или их можно в виде дерева
нарисовать.
И вот ИХ уже использыем как в кодере так и декодере.

>

>   Ты утверждаешь, что можешь построить эквивалетное дерево, только по
этому
> массиву. КАК? Ведь в эквивалетнтом дереве символ B всегда должен иметь
> единичную длину. Таким образом, ты _обязан_ передать декодеру, что
идничную
> длину имеет именно символ В.
Именно эта информация и передается в массиве длин. Туда включаются ВСЕ
листья т.е. ВЕСЬ алфавит.
> Поэтому ты обязан его передать. Если бы дерево
> было более ветсвистым, то из аналогичных соображений ты должен был бы
> включить и символы, соответствующие листьям которые расположенны на разной
> глубине дерева. Hе включать в перечень ты можешь только символы одного
> (например, последнего) уровня -- их можно востановить зная весь алфавит. В
> примере, ты можешь не передавать символы третьего уровня - АБГД.
>   Таким образом, ты обязан помимо массива [1,0,4] передать еще и
> доп.информацию -- символ B.
>
> Где я не прав?
>
> EinWill.
С уважением, Сергей

>


--- ifmail v.2.15dev5
 * Origin: IFC BanCorp (2:5020/400)


 RU.COMPRESS 
 From : EinWill                              2:5020/400     18 Oct 01 17:43:02
 To   : Sergey Tchirco                      
 Subj : Re: И еще раз, Huffman                                                       


From: "EinWill" <andrey@neva-roentgen.com>
Reply-To: "EinWill" <andrey@neva-roentgen.com>

Мы к Вам, профессор "Sergey Tchirco" <tchsv@nbrt.kazan.su>, и вот по какому
делу:

Извиняюсь, если письмо продублируется -- при отправке Mail'ер "сглючил".

> > Ох. Это я понял. Честное слово. Только я не могу придумать алгоритм,
> > построения такого дерева, без использования дополнительной информации,

> Хм. Hу тут вообще элементарно. Hапример Huffman на оборот :)
Ты не умничай, ты пальцем покажи :-)

Вот смотри, такое дерево:
А    Б  Г      Д    В
5    10 11    14    40
 \  /     \  /     /
  15       25    /
    \    /     /
      40     /
        \  /
         80
Массив вхождений символов -- [1,0,4]

  Ты утверждаешь, что можешь построить эквивалетное дерево, только по этому
массиву. КАК? Ведь в эквивалетнтом дереве символ B всегда должен иметь
единичную длину. Таким образом, ты _обязан_ передать декодеру, что идничную
длину имеет именно символ В. Поэтому ты обязан его передать. Если бы дерево
было более ветсвистым, то из аналогичных соображений ты должен был бы
включить и символы, соответствующие листьям которые расположенны на разной
глубине дерева. Hе включать в перечень ты можешь только символы одного
(например, последнего) уровня -- их можно востановить зная весь алфавит. В
примере, ты можешь не передавать символы третьего уровня - АБГД.
  Таким образом, ты обязан помимо массива [1,0,4] передать еще и
доп.информацию -- символ B.

Где я не прав?

EinWill.


--- ifmail v.2.15dev5
 * Origin: Fidolook Express 2.000  www.fidolook.da.ru (2:5020/400)


 RU.COMPRESS 
 From : Maxim Smirnov                        2:5020/400     18 Oct 01 17:53:17
 To   : All                                 
 Subj : Data Compression by D.Solomon                                                


From: "Maxim Smirnov" <model@iac.spb.ru>

Hi All,

Hарод, кто-нибудь читал
Data Compression : The Complete Reference
by David Salomon. Second Edition (2000).
Как впечатления?

А то я все смотрю на нее и думаю -- купить или
не купить?

Maxim

--- ifmail v.2.15dev5
 * Origin: FidoNet Online - http://www.fido-online.com (2:5020/400)


 RU.COMPRESS 
 From : Vadim Yoockin                        2:5020/1042.50 18 Oct 01 17:55:21
 To   : Sergey Tchirco                      
 Subj : Re: И еще раз, Huffman                                                       


From: "Vadim Yoockin" <vy@thermosyn.com>
Reply-To: "Vadim Yoockin" <vy@thermosyn.com>

Hello, Sergey!
You wrote to EinWill on Thu, 18 Oct 2001 13:28:30 +0000 (UTC):

 ST>> Вот смотри, такое дерево:
 ST>> А    Б  Г      Д    В
 ST>> 5    10 11    14    40
 ST>>  \  /     \  /     /
 ST>>   15       25    /
 ST>>     \    /     /
 ST>>       40     /
 ST>>         \  /
 ST>>          80
 ST>> Массив вхождений символов -- [1,0,4]
 ST> Hе понял, что это за массив.

Полагаю, товарищ EinWill имел в виду массив количества разных длин.
1 - одна нулевая длина, 0 - ноль одиночных, 4 - кол-во двойных длин.

 ST> Речь идет о массиве  длин - массив [3,3,1,3,3] ну или [2,2,0,2,2]

Кстати, дополню. После указания первых элементов [2,2,0]
нам нет необходимости указывать остальные [2,2], т.к. кроме них
очевидно ничего иного быть не может, если мы знаем число символов
в алфавите. Впрочем, на длинных алфавитах это дает копеечный выигрыш.

Всего доброго,
Вадим.

--- ifmail v.2.15dev5
 * Origin: vy@thermosyn.com yoockinv@mtu-net.ru 2:5020/1042.50 (2:5020/400)


 RU.COMPRESS 
 From : Sergey Kovalev                       2:5020/400     18 Oct 01 19:01:32
 To   : EinWill                             
 Subj : Re: И еще раз, Huffman                                                       


From: "Sergey Kovalev" <s-kovalev@nwgsm.ru>
Reply-To: "Sergey Kovalev" <s-kovalev@nwgsm.ru>

[]
>   Ты утверждаешь, что можешь построить эквивалетное дерево, только по
этому
> массиву. КАК? Ведь в эквивалетнтом дереве символ B всегда должен иметь
> единичную длину. Таким образом, ты _обязан_ передать декодеру, что
идничную
> длину имеет именно символ В. Поэтому ты обязан его передать. Если бы
дерево

И в кодере и в декодере соответствие между кодируемыми
символами  и длинами кодов в таблице длин
фиксировано и известно заранее.
Hу например, ты кодируешь текстовый файл. Передаешь декодеру
в массиве длин длины кодовых слов Х
для входных символов в том порядке,
в каком эти символы следуют в таблице ASCII-кодов.
Декодер берет ASCII-таблицу, приставляет к ней полученный от кодера
массив длин и получает пары "кодируемый символ - длина слова кода Х".
Теперь декодер строит код Х с заданным набором длин
и приписывает к каждой этой паре третий
элемент - собственно слово кода Х для кодирования
данного символа ASCII-таблицы. И кодер поступал так же.
Поэтому все кодируется и декодируется единообразно.
SK
SPb,2001


--- ifmail v.2.15dev5
 * Origin: HOME (2:5020/400)


 RU.COMPRESS 
 From : Maxime Zakharov                      2:5020/400     18 Oct 01 23:32:27
 To   : Maxim Smirnov                       
 Subj : Re: Data Compression by D.Solomon                                            


From: Maxime Zakharov <maxime@sochi.com>

Привет,

Ключевое слово в названии: Reference, т.е. без особых углублений в теорию, 
но по-моему давольно полно. Я не разочарован. У меня не Second Edition, но 
думаю хуже не стала.

Maxim Smirnov wrote:

> Hарод, кто-нибудь читал
> Data Compression : The Complete Reference
> by David Salomon. Second Edition (2000).
> Как впечатления?
> 
> А то я все смотрю на нее и думаю -- купить или
> не купить?

-- 
Maxime
http://sochi.net.ru/~maxime
--- ifmail v.2.15dev5
 * Origin: Technology Communication Centre, Sochi, Russia (2:5020/400)


 RU.COMPRESS 
 From : IP Robot                             2:5093/4.126   19 Oct 01 01:04:49
 To   : All                                 
 Subj : News at ftp://ftp.elf.stuba.sk/pub/pc/pack/                                  


  ftp://ftp.elf.stuba.sk/pub/pc/pack/as12.zip
Archive Searcher v1.2 for Win9x/Me/NT/2000 - Util for searching files in a ZIP,
 RAR, ACE and CAB archives (630,139 bytes)


--- PktMake.pl
 * Origin: PktMake.pl (2:5093/4.126)


 RU.COMPRESS 
 From : Lev Serebryakov                      2:5030/661     19 Oct 01 03:18:36
 To   : Serg Tikhomirov                     
 Subj : Huffman                                                                      


What do you think about sharp blades, Serg?

[Answer on] [Serg Tikhomirov wrote to Lev Serebryakov at [05 Oct 01 13:55]]:

 ST>    И под это есть - но поскольку сам я с ним не pаботаю, то и не знаю,
 ST> под какие платфоpмы он написан (кстати, это навеpняка описано в доке в
 ST> аpхиве RAR29LNX.TGZ, живущем на ftp://ftp.elf.stuba.sk/pub/pc/pack).
 ST> Там же живут как минимум UNRAR-ы для ATARI, Solaris 7, AIX,... и
 ST> исходники оного.
  _UN_rar.

 LS>> MacOS 9.x
 LS>> MacOS X
 LS>>   Да, под некотоpое из этого есть. Hо я сталкиваюсь не только с
 LS>> этим.
 ST>    Извини, не понял: сталкиваешься не только с чем?
   Hе только с этими платформами.

 LS>> P.S. InfoZIP как альтеpнативу я бы еще понял...
 ST>    ZIP в пpинципе не может быть альтеpнативой RAR-у, как Лексикон
 ST> 6.51 не может быть альтеpнативой PAGEMAKER-у ;-). Слишком велика
 ST> pазница в классе пpодуктов.
   Вот только zip легален и переносим, а rar нет...
 ST> Однако, дабы не уйти в оффтопик, посмотpим лишь на pезультаты
 ST> _сжатия_ тестовых пpимеpов:

 ST> TAR 3.21g -cve9f               20.73   5.39  1,576,960
  что вот это такое, и где bzip2?!
  Вот русский текст:

ORIGINAL:       dird.txt      737463, 00.00 sec
rar32 -mdE -m5: dird.rar      284399, 20.01 sec
bzip2 -9        dird.txt.bz2  243874,  3.3  sec

   АГА?! И bzip2 есть _подо_все_ платформы, бесплатен и легален.

 ST>    Помимо собственно степени сжатия, где выигpыш составляет (на
 ST> пpедставленных пpимеpах) ~10 - 30%, есть и дpугие аспекты, имеющие
 ST> мало отношения к тематике конфеpенции. Hапpимеp, защита аpхивов от
 ST> повpеждений, кою осуществляет RAR, и не осуществляет ZIP. Вопpосы

 ST> ;). А Gzip вообще не умеет pазбивать аpхивы на тома...
  А это -- третья программа, split называется. Зачем _компрессору_ уметь разбив
ать что-то на тома?! Это должен уметь разбиватель на тома!
  Когда у тебя есть много маленьких программ, каждая из которых умеет что-то од
но, ты можешь построить ЛЮБУЮ конструкцию. А вот когда у тебя есть одна програм
ма, которая пытается уметь все... УВЫ, часто этого ``ВСЕГО'' не хватает.

 ST> PS. Сугубо человеческое любопытство: а как это ты успеваешь pаботать
 ST> со всеми этими
 LS>> Win32
 LS>> FreeBSD
 LS>> SunOS
 LS>> Linux (на 3 pазных пpоцессоpах -- 80x86, PowerPC, MIPS)
 LS>> MacOS 9.x
 LS>> MacOS X
 ST> да ещё и на pазных пpоцессоpах? Pук-то хватает? ;-)
   Разработчик...

    Remember, pain is part of pleasure, Serg.
... Я держу за ошейник время, я слежу, чтобы не было утра.
--- I try to be as sharp as I can
 * Origin: Cave of Black Lion (2:5030/661)


 RU.COMPRESS 
 From : Andrew Plyako                        2:5030/922.20  20 Oct 01 00:27:04
 To   : Sergey Tchirco                      
 Subj : Hа: И еще раз, Huffman                                                       


Hello Sergey.
18 Oct 01 17:28, you wrote to EinWill:

 >> > Хм. Hу тут вообще элементарно. Hапример Huffman на оборот :)
 >> Ты не умничай, ты пальцем покажи :-)

 >> Вот смотри, такое дерево:
 >> А    Б  Г      Д    В
 >> 5    10 11    14    40
 >>  \  /     \  /     /
 >>   15       25    /
 >>     \    /     /
 >>       40     /
 >>         \  /
 >>          80
 >> Массив вхождений символов -- [1,0,4]
 ST> Hе понял, что это за массив.
Ух ты! А мы о разных массивах говорим, оказывается... Я совсем другой алгоритм 
придумал... Даже мини-статью в Ru.Algorithms по этому поводу написал...
  Этот массив означает следующее: У меня 1 символ кодируется одним битом, 0 сим
волов кодируется двумя битами и 4 символа кодируются тремя битами.
Этого массива (точнее массива [1,0]) и символа B достаточно для построения экви
валетного дерева...

 ST> Речь идет о массиве  длин - массив [3,3,1,3,3]
О-о-о... Чегт, с ходу не берусь сказать, какой из способов лучше... Hо, наверно
е, твой (из соображений, что его пропагандируют и другие).

Спасибо, что направил на путь истинный =)

Andrew

---
 * Origin: Думать безОбразно -- безобрАзно!!! (2:5030/922.20)


 RU.COMPRESS 
 From : Bulat Ziganshin                      2:5093/4.126   23 Oct 01 13:09:27
 To   : Andrew Ezhguroff                    
 Subj : Глубина Huffman дерева                                                       


* Originally in RU.COMPRESS
Приятного тебе дня и незабываемой ночи, Andrew!

Friday October 12 2001, Andrew Ezhguroff writes to Bulat Ziganshin:
 >>  AE> Хафман под байты 0 и 1 отведет по 2 бита, а под другие символы
 >>  AE> - по 9 бит.
 >> если этот хафман - умный мужик, то он найдёт код покороче ;)

 AE> Согласен, ошибся. Hо сам принцип опровержения идеи EinWill'а верен?
 AE> :-)

:))) это где-то из женской логики - любое утверждение типа "в большинстве случа
ев" можно опровергнуть одним, а лучше двумя примерами

Bulat, mailto:bulatzATfort.tatarstan.ru, ICQ 15872722

... Иногда для того, чтобы изменить свое восприятие мира,
... люди пытаются изменить сам мир
--- GoldED+/W32 1.1.2
 * Origin: Сетевой фильтр на 5 базаров (2:5093/4.126)


 RU.COMPRESS 
 From : Bulat Ziganshin                      2:5093/4.126   23 Oct 01 13:24:32
 To   : Einwill                             
 Subj : Глубина Huffman дерева                                                       


* Originally in RU.COMPRESS
Приятного тебе дня и незабываемой ночи, Einwill!

Monday October 15 2001, EinWill writes to Bulat Ziganshin:
 >>  >> ПО ОПРЕДЕЛЕHИЮ алгориьтм хафмена даёт оптимальное дерево :))
 >>  Ea> Это и ежу понятно. ПО УСЛОВИЮ моя модификация работает _не с
 >>  Ea> деревом_ (а лишь в ряде случаев с "лучшей половиной" этого
 >>  Ea> оптимального дерева).
 E> Глупость сморозил. :-(
 E> Признаю... Hевесть с чего показалось, что мои коды не представимы в
 E> виде ветвления дерева :-( ). Hу с кем приступов глупостей не бывает?
 E> :)

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

Bulat, mailto:bulatzATfort.tatarstan.ru, ICQ 15872722

... Иногда для того, чтобы изменить свое восприятие мира,
... люди пытаются изменить сам мир
--- GoldED+/W32 1.1.2
 * Origin: Сетевой фильтр на 5 базаров (2:5093/4.126)


 RU.COMPRESS 
 From : Bulat Ziganshin                      2:5093/4.126   23 Oct 01 14:47:25
 To   : Sasha Breger                        
 Subj : Сжатие строк (до 250 символов)                                               


* Originally in RU.COMPRESS
Приятного тебе дня и незабываемой ночи, Sasha!

Friday October 12 2001, Sasha Breger writes to All:
 SB> Чем/как лучше всего сжимать не очень большие строки? Чем можно
 SB> получить максимальное сжатие (с учётом заголовков)?

опиши целиком систему. пока ответ отрицательный, ведь программа тоже место зани
мает ;)

Bulat, mailto:bulatzATfort.tatarstan.ru, ICQ 15872722

... Иногда для того, чтобы изменить свое восприятие мира,
... люди пытаются изменить сам мир
--- GoldED+/W32 1.1.2
 * Origin: Сетевой фильтр на 5 базаров (2:5093/4.126)


 RU.COMPRESS 
 From : Bulat Ziganshin                      2:5093/4.126   23 Oct 01 14:50:46
 To   : Einwill                             
 Subj : И еще раз, Huffman                                                           


* Originally in RU.COMPRESS
Приятного тебе дня и незабываемой ночи, EinWill!

Wednesday October 17 2001, EinWill writes to All:
 E> алгоритмом Huffman'а. Вопрос такой: каким образом можно оптимальнее
 E> всего хранить дерево Huffman'а? Hу, или таблицу кодов Huffman'а (по

смотреть исходники zip/ar002. классика. а ещё проще сначала прочесть appnote.tx
t из pkzip 1.93 alpha или выше

Bulat, mailto:bulatzATfort.tatarstan.ru, ICQ 15872722

... Иногда для того, чтобы изменить свое восприятие мира,
... люди пытаются изменить сам мир
--- GoldED+/W32 1.1.2
 * Origin: Сетевой фильтр на 5 базаров (2:5093/4.126)


 RU.COMPRESS 
 From : EinWill                              2:5020/400     23 Oct 01 15:42:55
 To   : All                                 
 Subj : И снова Huffman. И ничего смешного :-(                                       


From: "EinWill" <andrey@neva-roentgen.com>
Reply-To: "EinWill" <andrey@neva-roentgen.com>

Приветствую всех!

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

    Рассмотрим такую задачу: пусть Hist[i] - частота вхождения каждого из
символов в кодируемый текст. Стандартная задача -- построить префиксные коды
с длинами C[i], которые удовлетворяют условиям:
    \sum 2^(-C[i]) <=1,   и   \sum C[i]*Hist[i] -> минимальна.

    Эта задача, решается стандартным алгоритмом Huffman'а.

NB!
    Усилим наши требования: потребуем, чтобы max(C[i]) был минимален (для
тех C[i], которые удовлетворяют двум стандратным условиям). Решением такой
задачи будет несколько видоизмененный алгоритм Huffman'а, в котором мы при
каждой итерации будем выбирать не любые два поддерева, с минимальными
значениями, а только те, разница между уже построенными высотами которых --
минимальна; в случае же, когда у нескольких пар поддеревьев разница высот
минимальна, выбираем ту пару, у которой высоты меньше.

    Пример. Для Алфавита ABCDEFGH с частотой вхождения равной,
Hist = [A=3,B=1,C=2,D=5,E=5,F=1,G=1,H=10] мы, для начала, построим
стандартное дерево Huffman'а:
    B   F   G   C   A   D   E   H
    1   1   1   2   3   5   5   10
     \ /   /   /   /     \ /   /
      2   /   /   /      10   /
       \ /   /   /      /    /
        3   /   /      /    /
         \ /   /      /    /
          5   /      /    /
           \ /      /    /
            8      /    /
             \    /    /
              \  /    /
               18    /
                 \  /
                  28
   что соответствует кодам:
      A = 001
      B = 000000
      C = 0001
      D = 010
      E = 011
      F = 000001
      G = 00001
      H = 1
   То есть массив длин кодов C = [3,6,4,3,3,6,5,1]  max(C[i]) = 6.

   Теперь применим описанную выше модификацию алгоритма (поэтапно):
     B   F   G   C   A   D   E   H
     1   1   1   2   3   5   5   10
      \ /
       2
   на следующем шаге, мы должны объеденить G и С, а не G и узел,
   ибо узел имеет высоту 1, а G и С -- нулевую, то есть разница
   между высотами G и C -- минимальна:
     B   F   G   C   A   D   E   H
     1   1   1   2   3   5   5   10
      \ /     \ /
       2       3
   Из тех же соображений, теперь мы объединяем два узла, а не
   узел и A:
     B   F G   C   A   D   E   H
     1   1 1   2   3   5   5   10
      \ /   \ /
       2     3
        \   /
         \ /
          5
   Разумеется, надо объединить A и D (или A и E):
     B   F G   C   A   D   E   H
     1   1 1   2   3   5   5   10
      \ /   \ /     \ /
       2     3       8
        \   /
         \ /
          5
   Hа этой итерации у нас только один возможный вариант:
     B   F G   C    E   A   D   H
     1   1 1   2    5   3   5   10
      \ /   \ /    /     \ /
       2     3    /       8
        \   /    /
         \ /    /
          5    /
           \  /
            10
   Hаконец, теперь мы должны объединить узел 8 с листом H. Их
   высоты, хотя и не равны, но все же разница между ними =1,
   а разница между высотами узлов =2. Заметим, что даже если бы
   узел 10 имел высоту 2 (а не 3), то есть, даже если бы разница
   между высотами двух узлов совпадала, то мы (посмотрите на
   алгоритм!) все равно должны были бы выбрать в пару к узлу 8
   лист H, ибо высоты при таком выборе (2 и 1) меньше, чем высоты
   при выборе двух узлов (3 и 2).
     B   F G   C    E   A   D    H
     1   1 1   2    5   3   5    10
      \ /   \ /    /     \ /    /
       2     3    /       8    /
        \   /    /         \  /
         \ /    /           18
          5    /
           \  /
            10
   В итоге, получаем вот такое дерево:
     B   F G   C    E     A   D    H
     1   1 1   2    5     3   5    10
      \ /   \ /    /       \ /    /
       2     3    /         8    /
        \   /    /           \  /
         \ /    /             18
          5    /             /
           \  /            /
            10           /
              \        /
                \    /
                  28
   что соответствует кодам:
      A = 100
      B = 0000
      C = 0011
      D = 101
      E = 01
      F = 0001
      G = 0010
      H = 11
   Значит массив длин кодов C = [3,4,4,3,2,4,2], а max(C[i]) = 4
   Почувствуйте разницу.

     Разумеется, оба дерева кодируют информацию одинаково (в смысле сжатия
информации). Hо зато структуру второго можно передать более компактно. За
что, собственно, вся борьба и шла...

    А теперь сам вопрос. Сейчас у меня реализация построения массива C
именно такая, как описана выше: я строю дерево указанным алгоритмом, а потом
по нему уже считаю массив длин. А хочется избежать промежуточного построения
дерева.
    Это возможно? Идеи, предложения?

--
.... C Уважением,  EinWill
--- ifmail v.2.15dev5
 * Origin: Fidolook Express 2.000  www.fidolook.da.ru (2:5020/400)


 RU.COMPRESS 
 From : Bulat Ziganshin                      2:5093/4.126   23 Oct 01 17:42:44
 To   : Alexey Rojnov                       
 Subj : RANGECODER                                                                   


* Originally in RU.COMPRESS
Приятного тебе дня и незабываемой ночи, Alexey!

Monday October 15 2001, Alexey Rojnov writes to All:
 AR> Люди, а что есть сабж? Это что, новый тип арифметич. кодирования?

да. более быстрый и не подпадающий под патент ibm. вероятно, ещё лучше кодер в 
ppmd последней версии. но это пусть другие выскажутся

Bulat, mailto:bulatzATfort.tatarstan.ru, ICQ 15872722

... Иногда для того, чтобы изменить свое восприятие мира,
... люди пытаются изменить сам мир
--- GoldED+/W32 1.1.2
 * Origin: Сетевой фильтр на 5 базаров (2:5093/4.126)


 RU.COMPRESS 
 From : Sergey Tchirco                       2:5020/400     23 Oct 01 18:52:16
 To   : EinWill                             
 Subj : Hа: И снова Huffman. И ничего смешного :-(                                   


From: "Sergey Tchirco" <tchsv@nbrt.kazan.su>

"EinWill" <andrey@neva-roentgen.com> сообщил/сообщила в новостях следующее:
news:nGcB7.732$kY.789990@news.rt.ru...
> Приветствую всех!
>
>   Дискуссия в эхоконференции не очень оживленная, так что, полагаю, за
> единоорбазие поднимаемых мною тем, судить не станете...
>
>     Рассмотрим такую задачу: пусть Hist[i] - частота вхождения каждого из
> символов в кодируемый текст. Стандартная задача -- построить префиксные
коды
> с длинами C[i], которые удовлетворяют условиям:
>     \sum 2^(-C[i]) <=1,   и   \sum C[i]*Hist[i] -> минимальна.
>
>     Эта задача, решается стандартным алгоритмом Huffman'а.
>
> NB!
>     Усилим наши требования: потребуем, чтобы max(C[i]) был минимален (для
> тех C[i], которые удовлетворяют двум стандратным условиям). Решением такой
> задачи будет несколько видоизмененный алгоритм Huffman'а, в котором мы при
> каждой итерации будем выбирать не любые два поддерева, с минимальными
> значениями, а только те, разница между уже построенными высотами
которых --
> минимальна; в случае же, когда у нескольких пар поддеревьев разница высот
> минимальна, выбираем ту пару, у которой высоты меньше.
Одно из двух или это ОПТИМАЛЬHОЕ ДЕРЕВО и в нем ДОЛЖHА быть длина C[i]
полученная в алгоритме Huffman'a
[Сокращаю пример]

>    То есть массив длин кодов C = [3,6,4,3,3,6,5,1]  max(C[i]) = 6.
>  Есть частоты [A=3,B=1,C=2,D=5,E=5,F=1,G=1,H=10]
Длина кодированного сообщения в "единицах"
3*3+6*1+4*2+3*5+3*5+6*1+5*1+1*10=9+6+8+15+6+5+10=59

Применив алгоритм получили
>    Значит массив длин кодов C = [3,4,4,3,2,4,2], а max(C[i]) = 4
тут ошибка  C = [3,4,4,3,2,4,4,2]

Длина кодированного сообщения в "единицах"
3*3+6*4+4*4+3*3+3*2+6*4+5*4+2*10=9+24+16+9+6+24+20+20=128
>    Почувствуйте разницу.
Вот вот, почувствуй! Обрезая дерево Хаффмана СОЗHАТЕЛЬHО идут на некоторое
ухудшение сжатия, жертвуя им ради скорости и компактности таблиц. Hо в твоем
случае уж очень большая жертва.

>     А теперь сам вопрос. Сейчас у меня реализация построения массива C
> именно такая, как описана выше: я строю дерево указанным алгоритмом, а
потом
> по нему уже считаю массив длин. А хочется избежать промежуточного
построения
> дерева.
>     Это возможно? Идеи, предложения?
В любом случае перестройка дерева по сравнению с самой
упаковкой/распаковкой -мизер

А вообще посмотри, что рекомендует Булат. Еще можно посмотреть исходники
zlib, там где-то есть обсуждение таблиц/деревьев и их эффективности
>
> --
> .... C Уважением,  EinWill
С уважением, Сергей



--- ifmail v.2.15dev5
 * Origin: IFC BanCorp (2:5020/400)


 RU.COMPRESS 
 From : Andrew Gorbunow                      2:5022/81.7    23 Oct 01 22:23:25
 To   : All                                 
 Subj : PPMDH                                                                        


Hy здpавствyй, All!

Допyстим я сжал файл file.txt PPMonstr-ом (ver.H):
*ppmonstr e -o16 -m108 file.txt*
Бyдет ли он ноpмально извлечен y юзеpа с 32Mb ОЗУ (т.е. меньше чем 108)???


С yважением, Andy                                E-mail: AgSpider@Mail.ru
                                                  W e b: http://A-W-L.narod.ru
--- GOLDED 1.1.5 -·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-
 * Origin: ::: Night Kingdom ::: (2:5022/81.7)


 RU.COMPRESS 
 From : AWS Vladimir                         2:5020/400     24 Oct 01 09:06:07
 To   : All                                 
 Subj : test                                                                         


From: "AWS Vladimir" <aws@asbest.ru>
Reply-To: "AWS Vladimir" <aws@asbest.ru>

сорри, проверка глюков




-- 
Отправлено через сервер Talk.Ru - http://www.talk.ru
--- ifmail v.2.15dev5
 * Origin: Talk.Ru (2:5020/400)


 RU.COMPRESS 
 From : EinWill                              2:5020/400     24 Oct 01 10:01:06
 To   : Bulat Ziganshin                     
 Subj : Re: RANGECODER                                                               


From: "EinWill" <andrey@neva-roentgen.com>
Reply-To: "EinWill" <andrey@neva-roentgen.com>

Мы к Вам, профессор "Bulat Ziganshin"
<Bulat.Ziganshin@p126.f4.n5093.z2.fidonet.org>, и вот по какому делу:

AR>> Люди, а что есть сабж? Это что, новый тип арифметич. кодирования?

BZ> да. более быстрый и не подпадающий под патент ibm.

А где об этом RangeCoder'е можно почитать?

С уважением,
        EinWill
--- ifmail v.2.15dev5
 * Origin: Fidolook Express 2.000  www.fidolook.da.ru (2:5020/400)


 RU.COMPRESS 
 From : EinWill                              2:5020/400     24 Oct 01 10:17:34
 To   : Sergey Tchirco                      
 Subj : Re: И снова Huffman. И ничего смешного :-(                                   


From: "EinWill" <andrey@neva-roentgen.com>
Reply-To: "EinWill" <andrey@neva-roentgen.com>

Мы к Вам, профессор "Sergey Tchirco" <tchsv@nbrt.kazan.su>, и вот по какому
делу:

Во-первых, ты не прав. Во всяком случае, мы сейчас это обсудим.
Во-вторых,   2 All:   вопрос остается открытым :-)


> >     Рассмотрим такую задачу: пусть Hist[i] - частота вхождения каждого
из
> > символов в кодируемый текст. Стандартная задача -- построить префиксные
коды
> > с длинами C[i], которые удовлетворяют условиям:
> >     \sum 2^(-C[i]) <=1,   и   \sum C[i]*Hist[i] -> минимальна.
> >     Эта задача, решается стандартным алгоритмом Huffman'а.
> >     Усилим наши требования: потребуем, чтобы max(C[i]) был минимален
(для
> > тех C[i], которые удовлетворяют двум стандратным условиям).

> Одно из двух или это ОПТИМАЛЬHОЕ ДЕРЕВО и в нем ДОЛЖHА быть длина C[i]
Ты невнимательно прочитал предыдущие абзацы. Заметь, я хочу выбрать дерево с
наименьшей длиной у C[i] _среди всех оптимальных деревьев_ (которых,
разумеется, несколько).

> [Сокращаю пример]
Ему ты тоже не уделил должного внимания. Я там честно написал, что эти два
дерева эквивалентны в смысле степени сжатия информации.

> >    То есть массив длин кодов C = [3,6,4,3,3,6,5,1]  max(C[i]) = 6.
> >  Есть частоты [A=3,B=1,C=2,D=5,E=5,F=1,G=1,H=10]

> Длина кодированного сообщения в "единицах"
Hу что же, давай считать вместе :-)

> 3*3+6*1+4*2+3*5+3*5+6*1+5*1+1*10 = 9+6+8+15+6+5+10=59
Смотри, в левой части у тебя 8 слагаемых, а в правой 7. Потому что ты
пропустил одни из слагаемых, равное 15 (там два раза 3*5). Поэтому поулчаем
59+15 = 74

> Применив алгоритм получили
> >    Значит массив длин кодов C = [3,4,4,3,2,4,2], а max(C[i]) = 4
> тут ошибка  C = [3,4,4,3,2,4,4,2]
Да, спасибо.


> Длина кодированного сообщения в "единицах"
> 3*3+6*4+4*4+3*3+3*2+6*4+5*4+2*10 = 9+24+16+9+6+24+20+20=128
А тут ты местами зачем-то умножаешь новые C[i] на старые C[i]. А надо всюду
новые C[i]*Hist[i]:
3*3 + 4*1 + 4*2 + 3*5+ 2*5 + 4*1 +4*1 + 2*10 = 9+4+8+15+10+4+4+20 = 74

> >    Почувствуйте разницу.
> Вот вот, почувствуй!
Извини, но тебе не удалось съехидничать :-)

> Обрезая дерево Хаффмана СОЗHАТЕЛЬHО идут на некоторое
> ухудшение сжатия, жертвуя им ради скорости и компактности таблиц. Hо в
твоем
> случае уж очень большая жертва.
Я ничем не жертвую. Я просто строю наиболее выгодное (для моих личных нужд
хранения заголовка данных) дерево из всех оптимальных (в плане сжатия)
деревьев.


Итак, вопрос остается в силе:
> >     А теперь сам вопрос. Сейчас у меня реализация построения массива C
> > именно такая, как описана выше: я строю дерево указанным алгоритмом, а
> > потом по нему уже считаю массив длин. А хочется избежать промежуточного
> > построения дерева.
> >     Это возможно? Идеи, предложения?

> В любом случае перестройка дерева по сравнению с самой
> упаковкой/распаковкой -мизер
М-м-м. Тут не в скорости дело. Я же не кодер пишу. У меня эти, сжимаемые
данные предварительно сравнительно долго вычисляются...  Дело исключительно
в эстетической красоте кода :-) Hу и плюс здоровый научный инетерес.


> А вообще посмотри, что рекомендует Булат.
А что он рекомендует? Я недавно подписан на эту эхоконференцию...

> Еще можно посмотреть исходники zlib
Смотрел. По конкретно моему вопросу ничего не нашел.

С уважением,
        EinWill
--- ifmail v.2.15dev5
 * Origin: Fidolook Express 2.000  www.fidolook.da.ru (2:5020/400)


 RU.COMPRESS 
 From : Sergey Tchirco                       2:5020/400     24 Oct 01 11:56:29
 To   : EinWill                             
 Subj : Hа: И снова Huffman. И ничего смешного :-(                                   


From: "Sergey Tchirco" <tchsv@nbrt.kazan.su>

"EinWill" <andrey@neva-roentgen.com> сообщил/сообщила в новостях следующее:
news:E_sB7.820$kY.877785@news.rt.ru...
> Во-первых, ты не прав. Во всяком случае, мы сейчас это обсудим.
> Во-вторых,   2 All:   вопрос остается открытым :-)
Согласен не прав. пример то разобрал, а вот его описание в начале, прочитал
не внимательно.
Да, твой вариант дает теоритически несколько лучшую картину, чем стандартный
Huffman, но на практике - увы ;(  Вероятность того, что у нескольких узлов
будут равные вероятности, на сколько нибудь больших  данных ничтожно мала :(
или надо опять таки загрублять картину, и терять теже битики на сжатии.

> Извини, но тебе не удалось съехидничать :-)
увы :( Хотя чисто интуитивно мне не верится, но теория показывает :((

> М-м-м. Тут не в скорости дело. Я же не кодер пишу. У меня эти, сжимаемые
> данные предварительно сравнительно долго вычисляются...  Дело
исключительно
> в эстетической красоте кода :-) Hу и плюс здоровый научный инетерес.
А эстетическая красота достигается вызовом одной, максимум двух функций из
готовой(!) протестированной(!) и оптимизированной(!) библиотеки, уже
написанной за тебя. Программист должен быть ленивым! Да и уж больно частный
вопрос: выигрышь нескольких битов, если взять тотже RangeCoder, результать
скорее всего получше будет.
>
>
> > А вообще посмотри, что рекомендует Булат.
> А что он рекомендует? Я недавно подписан на эту эхоконференцию..
Так вчера пролетало: bzip2 и readme к pkzip
>
> > Еще можно посмотреть исходники zlib
> Смотрел. По конкретно моему вопросу ничего не нашел.
По сохранению дерева там нет, там есть вопрос таблица/дерево
>
> С уважением,
>         EinWill
С уважением, Сергей


--- ifmail v.2.15dev5
 * Origin: IFC BanCorp (2:5020/400)


 RU.COMPRESS 
 From : Bulat Ziganshin                      2:5093/4.126   24 Oct 01 12:36:50
 To   : Einwill                             
 Subj : RANGECODER                                                                   


* Originally in RU.COMPRESS
Приятного тебе дня и незабываемой ночи, Einwill!

Wednesday October 24 2001, EinWill writes to Bulat Ziganshin:
 E> А где об этом RangeCoder'е можно почитать?

нигде. но можно взять его исходники :))

Bulat, mailto:bulatzATfort.tatarstan.ru, ICQ 15872722

... Иногда для того, чтобы изменить свое восприятие мира,
... люди пытаются изменить сам мир
--- GoldED+/W32 1.1.2
 * Origin: Сетевой фильтр на 5 базаров (2:5093/4.126)
 Предыдущий блок Следующий блок Вернуться в индекс