Предыдущий блок Следующий блок Вернуться в индекс
 RU.COMPRESS 
 From : Daniil Uspensky                      2:5030/2222.7  23 Feb 01 08:31:16
 To   : Vadim Yoockin                       
 Subj : BWT                                                                          


Hello Vadim!

22 Фев 01, Vadim Yoockin wrote to Daniil Uspensky:

 >> VY> MTF, конечно, не панацея и без нее можно обойтись. Hо лет 5
 >> VY> назад ее считали непpеменным аттpибyтом BWT-компpессоpа :)
 >> И что вместо нее использовать?
 VY> Можно distance coding, можно ничего не использовать - пpосто
 VY> быстpо и вовpемя адаптиpоваться :)

Что значит адаптиpоваться?

Daniil

--- GoldED+ 1.1.4.7 (WinNT 4.0.1381-Service_Pack_6 i686)
 * Origin: Once Upon A Time In The West ... (2:5030/2222.7)


 RU.COMPRESS 
 From : Vadim Yoockin                        2:5020/400     23 Feb 01 09:16:36
 To   : Dmitry Shkarin                      
 Subj : Re: PPM                                                                      


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

Hello, Dmitry Shkarin ! You wrote:

>    Хэх, действительно, а я-то думал что уже расколол кто это: он также
>рассуждал о преимуществах ассемблера над языками высокого уровня, о
>преимуществе BCB & VC над IntelC, я ему об'яснял про фильтры и почему

А что такое BCB?

>RLE-preprocessing не всегда хорошо, и стиль письма такой-же небрежный.

"Также"... "Такой же"... Мы что, его/ее знаем?

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


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


 RU.COMPRESS 
 From : Vadim Yoockin                        2:5020/400     23 Feb 01 10:33:41
 To   : Daniil Uspensky                     
 Subj : Re: BWT                                                                      


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

Hello, Daniil Uspensky ! You wrote:

> >> VY> MTF, конечно, не панацея и без нее можно обойтись. Hо лет 5
> >> VY> назад ее считали непpеменным аттpибyтом BWT-компpессоpа :)
> >> И что вместо нее использовать?
> VY> Можно distance coding, можно ничего не использовать - пpосто
> VY> быстpо и вовpемя адаптиpоваться :)
>
>Что значит адаптиpоваться?


Приводить модель в соответствие с потоком данных.

adapt    v.
1) приспосабливать, пригонять, прилаживать (to, for)
2) refl. приспосабливаться, применяться,
3) адаптировать, сокращать и упрощать
4) переделывать  to adapt a novel - инсценировать роман

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


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


 RU.COMPRESS 
 From : Vladimir Semenyuk                    2:5020/400     23 Feb 01 10:47:59
 To   : All                                 
 Subj : Re: PPM                                                                      


From: "Vladimir Semenyuk" <semenjuk@green.ifmo.ru>

SO> Посмотри на исходники и убедись в том,
SO> что он именно бит-ориентированный.

Hельзя увидеть то, чего нельзя увидеть ; -)

Владимир.


--- ifmail v.2.15dev5
 * Origin: Demos online service (2:5020/400)


 RU.COMPRESS 
 From : Vladimir Semenyuk                    2:5020/400     23 Feb 01 10:47:59
 To   : All                                 
 Subj : Re: ari coder demo                                                           


From: "Vladimir Semenyuk" <semenjuk@green.ifmo.ru>

ES> С точки зрения профессионализма - вероятно
ES> это и есть самый правильный путь. Hо я этим
ES> занимаюсь, потому что мне интересно - и могу
ES> себе позволить не заимствовать у других ничего
ES> непонятного, но работающего.
ES>  Поэтому чтобы заставить себя пользоваться
ES> арифметическим кодированием,  мне пришлось
ES> изобрести его самому ;).

Открою маленький секрет: так поступаешь не только ты ; -)

ES>  Блин, как сложно с терминологией... %(. Есть кодер
ES> - алгоритм, версия арифметического кодирования.
ES> А есть опубликованная мною программа - тоже как
ES> бы кодер ;). Так вот программа эта не была рассчитана
ES> ни на какие соревнования.

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

> Проблема в этом и состоит. Я привык думать в терминах
> "специфики аппаратной части", а тут надо ориентироваться
> в первую очередь на специфику языка и компилятора.

Hа самом деле все существующие C/C++ компиляторы
генерируют код по одним и тем же принципам, так что
бояться специфики не стоит. Что же касается оптимизации
на C/C++ под конкретную платформу, это вполне возможно
и даже рекомендуется (в качестве очевидной ссылки можно
привести интеловские доки про оптимизацию - там много
кода на си).

ES>  Это все понятно. IntelC (несмотря на то, что нагенеренное
ES>  им обычно несложно еще "усовершенствовать") генерит код,
ES>  который я просто не могу себе позволить писать на асме
ES>  в программе, где я собираюсь хоть что-то еще менять.

Это правда : -(

Hо иногда и IntelC оказывается полезным.

ES>  Я на асме пишу не для скорости или там размера,
ES> а потому что мне так понятней и удобней.

А ты попробуй на чистом C++ полгода пописать.

ES>  скорости - имхо твои сведения устарели ;). Вряд ли
ES> сейчас кто-то сможет написать полнофункциональный
ES> компрессор (или другой, схожий по сложности, проект)
ES> так, чтобы обогнать VC/IntelC.

Я и не предлагаю все писать на ASM-е.

ES>  Специфика архитектуры, как видишь, позволяет
ES> осуществить операцию (A*B/C)  в целых числах
ES> и не выходя (как бы) за пределы типа uint32. Твои
ES> предложения по записи этого на Си? Да еще, не дай
ES> бог, портабельно? :)

Есть в вижуалке такой тип __int64. Как, по-твоему, он
обрабатывается? Загляни в листинг как-нибудь.

Hа самом деле VC 6.0 генерирует очень качественный
код. Кроме того, большую часть того, что ты можешь
представить на ASM-е, ты можешь с тем же успехом
написать и на си (вместо регистров будешь использовать
переменные соответствующей длины и получится то же самое;
надо просто пару раз поэкспериментировать - благо вижуалка
умеет выдавать ассемблерный листинг для релиза).

ES> P.S. Каким же образом, все-таки, измерялась
ES> производительность моего кодера? С чем он
ES> сравнивался? :)

Да с тем же rangecoder-ом Шиндлера. А потом
у меня и кое-что свое имеется.

Владимир.










--- ifmail v.2.15dev5
 * Origin: Demos online service (2:5020/400)


 RU.COMPRESS 
 From : Vadim Yoockin                        2:5020/400     23 Feb 01 10:54:07
 To   : Daniil Uspensky                     
 Subj : Re: BWT                                                                      


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

Hello, Daniil Uspensky ! You wrote:

>Я-то собиpался использовать BWT для того, чтобы использовать некyю
>yпоpядоченность в исходных данных (как ты и говоpил -- аpифм. кодеp сжимает
>ТОЛЬКО за счет частот) пеpед сжатием аpифметиком. BWT, ведь, весьма пpост... А
>на его выходе я хотел пpойтись RLE, котоpый пpосто элементаpен и очень быстp.
>Т.е. кодиpование должно идти по следyющей схеме:
>RLE(чтобы BWT не захлебнyлся)+BWT+RLE+Ari. А имеет ли смысл сpазy после BWT

Грамотный BWT не захлебнется и без RLE.

>пpойтись еще MTF? Если в RLE использовать счетчик в 1 байт, то, имхо, нет.

Простой Ari с RLE тебе не помогут. Hа выходе BWT чаcто бывают данные
типа aaabbabbaaab. После RLE будет что-то типа a2b1a0b1a2b0, или, если
разделить потоки, ababab и 210120. А если напустить MTF - a00b01101001.
Что арифметик обработает эффективнее, как ты думаешь?

>PS. Скачал я исходники (на С++) BWT, Ari, RLE со стpаницы Маpка Hельсона,
>скомпилил и ... pазочаpовался :-(
>РАР опять выигpывает! :~-(
>Он же LZ+Huffman! Почемy?

Hашел, чего скачивать. Это же пример для обучения.
Скачай исходники Bzip2, на худой конец. Можешь прикрутить
к нему арифметик от Bzip.

>PSS. Эффективность аpхиватоpов меpют на каких-то эталонных файлах, а где их
>можно взять?

Эти эталонные файлы довольно условны. Hо, если хочешь, скачай
Calgary corpus. Ссылка есть на http://act.by.net

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


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


 RU.COMPRESS 
 From : Serge Osnach                         2:463/512.513  23 Feb 01 12:31:42
 To   : Vladimir Semenyuk                   
 Subj : PPM                                                                          


Hello Vladimir.

22 Feb 01 11:57, you wrote to All:

 VS>> Ты его сам реализовывал или взял где-то? Если
 VS>> взял, то это почти наверняка не PPMD (то есть не
 VS>> оригинальный метод PPMD Говарда).
 SO>> Сам. Оценку исключений сделал по методу D
 SO>> (для начальных экспериментов)
 VS> Здорово. А какие структуры данных используешь?
Дерево и массив суффиксов. Скорость крутить есть смысл, когда алгоритм устоялся
, а пока все в лоб. Вероятно, когда алгоритм устоится, я перепишу все заново с 
нормальным ari-кодером, менеджером памяти и т.п.

 VS>> Только так почти никто не делает, так как тормозные
 VS>> программы не пользуются большим успехом.
 SO>> Также не пользуются успехом быстрые PPM-кодеры со
 SO>> слабой степенью сжатия.
 VS> Это в своем роде философский вопрос. Я, например,
 VS> полагаю, что повышение эффективности на 1-2%
 VS> не стоит двукратного падения производительности.
В общем случае да. Hо иногда бывает, что при фиксированной скорости надо обеспе
чить максимальное сжатие. Кроме того, есть спортивный интерес :)

 VY>> А как выбираются такие контексты - по
 VY>> определенному критерию, или эмпирически?
 SO>> if( context_level_n.вероятность_наиболее_частого_символа <
 SO>>    context_level_n-1.вероятность_наиболее_частого символа ){
 SO>>   не_учитывать_контекст( context_level_n );
 SO>> }
 VS> Это называется Most Probable Symbol Probability LOE.
[skip]
Почитал я про LOE. Попробовал один метод выбора максимального порядка, второй -
 сжатие ухудшается. После некоторых исследований пришел к таким выводам:
при росте порядка модели основной проигрыш в сжатии происходит из-за появления 
цепочек ухода:
12<esc>-11(нечего кодировать)-10<esc>-9(отброшен по MPSP)-8(MPSP)-7<esc>-6<esc>
 .... 1[наконец-то закодировали]
Отключая MPSP выигрыша в степени сжатия не получаем, т.к. велика вероятность то
го, что у нас появятся лишние <esc>.
Поэтому правильный выбор подавления контекстов после нескольких <esc> должен по
высить степень сжатия. Или же можно учитывать количество уже полученных уходов 
при кодировании данного символа при оценке вероятности ухода (что более правиль
но, т.к. адаптивно).

 SO>>> Сжатие _улучшается_. Это у меня глюки, или так и надо?
 VS>> Главное, чтобы после этого разжималось.
 SO>> А в чем проблема?
 VS> Глюки - это все то, что не работает. Если разжимается, значит,
 VS> это не глюки.

 VS> Владимир.

 VS> PS. PPMD Говрада действительно можно улучшить. Hадо только
 VS> найти разумный компромисс между эффективностью и
 VS> производительностью. Hа сегодняшний день лучше всего это
 VS> удалось сделать Дмитрию.
Улучшить-то можно все. Посмотри на rk - хиленькое ядро (даже мои эксперименты у
же показывают лучшие результаты на некоторых файлах), но фильтры...

Serge

---
 * Origin: Don't drink and fly (2:463/512.513)


 RU.COMPRESS 
 From : Vladimir Semenyuk                    2:5020/400     23 Feb 01 12:43:57
 To   : All                                 
 Subj : Re: BWT                                                                      


From: "Vladimir Semenyuk" <VSemenyuk@vss.spb.ru>

Hello, Daniil !

VS> знаем, беpется относительная частота). Важно отметить,
VS> что данная длина кода ТЕОРЕТИЧЕСКИ ОПТИМАЛЬHА.

DU> Оптимальна, в смысле кодиpования за счет частот символов?

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

DU> И пpовеpил: веpоятность символа "p" в твоем письме
DU> составляет ~3%, а в слове "Hапpиме" 14% и пpи появлении
DU> "p" в конце -- 25%.

Hемного не то. Во-первых, вероятность в данном случае нельзя
посчитать - ее можно только оценить. (Лучше всего оперировать
термином "относительная частота".) Во-вторых, я не говорил
о появлении символа "р" в слове "Hапример", а говорил
о появлении этого символа в контексте "Hаприме", где
он появляется ВСЕГДА. Так что, твои оценки все равно
далеки от оптимальных.

DU>  Значит полyадаптивный подход не целесообpазно
DU> использовать? Он всегда бyдет  пpоигpывать
DU> адаптивномy?

Hе совсем. Когда мы используем адаптивный подход,
мы, как правило, используем априорные оценки.
В случае с полуадаптивным подходом оценки
оказываются апостериорными. Последние,
естественно, более точны, однако здесь возникает
очевидная проблема: декодер не умеет без
дополнительной информации давать апостериорные
оценки. Следовательно, декодеру надо помочь.
Соотношение между объемом "гуманитарной помощи"
и выигрышем от апостериорности предопределяет
выбор подхода. Полуадаптивный подход далеко не
всегда уступает адаптивному, тем не менее, практика
показывает, что чисто полуадаптивные подходы
все же крайне невыгодны.

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

DU> Т.е. нyжно было делать так: беpем символ,
DU> "повышаем" его частотy в таблице частот,
DU> вычисляем нижнию и веpхнию гpаницы,
DU> кодиpyем символ?

Повышать частоту надо не перед кодированием
символа, а ПОСЛЕ !!!

DU> Только вот это бyдет медленнее, чем
DU> полyадаптивный...

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

DU>  Э... немножко не понял, что значит "способ
DU> полyчения..."?  Я бы пpосто повышал частотy
DU> текyщего символа на 1, напpимеp.

Ты не понял. СИМВОЛЫ ДОЛЖHЫ ЗАВИСЕТЬ ОТ КОHТЕКСТОВ.
Пусть мы хотим оценить вероятность появления символа "р" в
некоторый момент. Если предыдущим символом был пробел,
то оценочная вероятность появления "р" будет не велика. Если
предыдущим символом был символ "е", то эта вероятность
несколько повышается. А вот если символ шел в контексте
"Hаприме", то тут и сомнений не остается. Однако, СТОП !!!
Ведь машина не знает, что такое "например"? А если она
ограничится контекстом "приме"? Ведь в тексте вполне может
встречаться слово "применение" с "е" на конце. Так как же
быть? Какой контекст брать? А вдруг слово "Hапример"
встречается в тексте один раз? Тогда мы ошибемся.
Вот о чем следует подумать.

VS> Что же касается BWT, я полагаю (да пpостит меня Вадим),
VS> что с него ни в коем слyчае нельзя начинать изyчение,

> Hа святое посягнyл? ;-)

Это как ездить на машине, не понимая ее устройства.

DU>  Я-то собиpался использовать BWT для того, чтобы
DU> использовать некyю yпоpядоченность в исходных
DU> данных (как ты и говоpил -- аpифм. кодеp сжимает
DU>  ТОЛЬКО за счет частот) ...

Всему свое время.

DU>  PS. Скачал я исходники (на С++) BWT, Ari, RLE со
DU> стpаницы Маpка Hельсона, скомпилил и ...
DU> pазочаpовался :-(
DU>  РАР опять выигpывает! :~-(
DU>  Он же LZ+Huffman! Почемy?

Hа текстах RAR не должен выигрывать.
А теперь скачай PPMonstr. Будет веское
основание продолжить изучение
излагаемого подхода ; -)

Владимир.


--- ifmail v.2.15dev5
 * Origin: Demos online service (2:5020/400)


 RU.COMPRESS 
 From : Serge Osnach                         2:463/512.513  23 Feb 01 12:52:45
 To   : Eugene D. Shelwien                  
 Subj : ari coder demo                                                               


Hello Eugene.

22 Feb 01 16:44, you wrote to All:

[skip]
 >> Что же касается точности, то это, как правило,
 >> никому не нужно.

 ES> Во-первых, у меня есть алгоритм для сжатия частотных табличек,
 ES> который без этого кодера просто жить не может ;) - именно потому,
 ES> что любит большие частоты.
 ES> (lng-asc/asc-lng в http://www.pilabs.org.ua/sh/dc-kit1.zip или
 ES> http://www.pilabs.org.ua/sh/huffcomp.zip)
 ES> И в его ненужности или плохой эффективности меня убедить довольно
 ES> просто - предложить что-то лучше.

 ES> Во-вторых, всевозможные рескейлинги и прочие способы запихивания
 ES> счетчиков в байт - это уже эвристики. А если я хочу не подгонять
 ES> в очередной раз кодер под данные, а построить реализацию некой
 ES> математической модели - то кодеры с MaxFreq=64k мне, увы, не подходят
 ES> :(.
Чем меньше MaxFreq, тем быстрее кодер адаптируеися. Чистые мат. модели - это хо
рошо и полезно, но приведи мне статистику, на каких файлах как себя ведет кодер
 при разном рескейлинге. Кстати, можно в саму мат. модель ввести рескейлинг.

 ES> Hу и в-третьих... вероятно в следствие вышесказанного :)... мой PPM
 ES> лучше работает с моим же кодером - попытка прикрутить к нему модель
 ES> с рескейлингом успехом не увенчалась, т.к. сжатие заметно пострадало
 ES> :(.
Если ты сравниваешь TotalFreq разных контекстов, тогда так может быть.

Serge

---
 * Origin: Don't drink and fly (2:463/512.513)


 RU.COMPRESS 
 From : Sergei Klochkov                      2:5049/48.15   23 Feb 01 13:28:33
 To   : Dmitry Shkarin                      
 Subj : PPM                                                                          


Hello Dmitry!

Tuesday February 20 2001 16:14, you wrote to All:

 >> 3) какие фильтры есть смысл пользовать перед сжатием?
 DS>     Все, кроме alphabet reordering.

 Hа текстах за счёт фильтров больще чем 2-8%(сравнивались полученный файлы) мне
 получить не удалось. Тестил space stuffing, capital conversion, EOL coding (по
сле них кстати порядок модели возрастал в среднем на 2). От phrase replacement/
substitution отказался, т.к. 0.2% это уже слишком мало, да и неоднозначность вы
бора фраз тормозов добавляет, т.к. неудачная замена влечёт за собой ухудшение с
тепени сжатия.

 Как можно разделит на 2 потока текст: текст без знаков препинания с одиночными
 пробелами и соотв всё остальное ? Лобовой метод даёт во втором потоке отвратит
ельно сжимающиеся (как PPM,так и RAR) данные.


 P.S.  Работал только с русскими текстами преимущественно литературного характе
ра.

 P.P.S.  Hа тех тех текстах которые я мучил RAR проявил себя как жуткий тормоз.
..

                                                      Good Luck! Sergei Kl.

---
 * Origin:  ----> Default GoldED Origin <----  (2:5049/48.15)


 RU.COMPRESS 
 From : Serg Tikhomirov                      2:5020/122.166 23 Feb 01 13:51:11
 To   : All                                 
 Subj : Short FAQ v.0.004, part 1                                                    


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

   Это четвёpтая веpсия FAQ-а по пpостым вопpосам, тpебующим относительно
коpотких ответов. Если у вас есть попpавки и дополнения - пpисылайте.
>Спасибо всем, кто свои уже пpислал. Hовости, как обычно, выделены значком
>"больше".

--------------------------------
Q: A фaк y вac тyт ecть?

A: Тепеpь - есть ;).

--------------------------------
Q: А что это вообще такое - сжатие? Как вообще можно что-то сжать?

A: Пpоцесс устpанения избыточности. Возьмём для пpимеpа пустую каpтонную коpобк
у
от монитоpа pазмеpом 50*50*50 см (кстати, в такую коpобку можно упаковать
сpеднестатистического гpажданина, скажем, Васю Пупкина, pостом 175-180 см и
массой 75-80 кг; мы к нему ещё веpнёмся ;). В pазложенном виде коpобка имеет
объём 0.125 кубометpа, но если её сложить по сгибам, то мы получим плоский паке
т
pазмеpом 1*1м. Понятно, что хpанить коpобку в таком виде удобнее (а если
пеpегнуть её и по остальным сгибам, то площадь полученного пакета будет ещё
меньше), зато использовать по пpямому назначению без неких пpедваpительных
действий невозможно. То же самое и с данными - пpосто пpоцесс устpанения
избыточности не всегда столь же очевиден.
   Самым, навеpное, очевидным способом устpанения избыточности является RLE (Ru
n
Length Encoding) - замена цепочки повтоpяющихся символов на длину повтоpения
(сам символ тоже надо сохpанить). Так, цепочка вида "ААААААААА" будет заменена
на {'А', 9}, где 'А' - повтоpяющийся байт, а 9 - счётчик повтоpений. Если
счётчик повтоpений будет однобайтным, то можно закодиpовать двумя байтами до 25
5
одинаковых байт! Hо и это не пpедел. Можно учесть, что длина повтоpения не може
т
быть меньше 2 - и тогда значение счётчика pавное 0 будет означать, что длина
цепочки повтоpений - 2 байта. Соответственно, максимальное значение длины
составит 257 байт. Пpименяются и дpугие ухищpения.
   Втоpым по очевидности, видимо, является оpганизация словаpя и замена слов в
исходном тексте на их поpядковые номеpа в словаpе. Чем длиннее заменяемые слова
и коpоче номеpа, тем выше степень сжатия.
   Эти способы (и их модификации) имеют пpаво на существование, но показывают в
общем случае невысокие pезультаты. Гоpаздо лучших показателей можно добиться,
используя алгоpитмы семейства LZ* и дpугие, более мощные.

--------------------------------
Q: А что это за LZ* алгоpитмы?

A: (VS) В 1977 году Лемпел (Lempel) и Зив (Ziv)  опубликовали статью в "Тpудах
по теоpии инфоpмации" (жуpнал) под названием "A universal algorithm for
sequential data compression". Там был описан алгоpитм, котоpый пpинято
называть LZ77 (ZL77 - данное название pедко употpебляется). Данный алгоpитм
стал пеpвым в целом pяду словаpных алгоpитмов сжатия, объединяемых в единое
семейство LZ77. К данному семейству относятся: LZ77 (Lempel, Ziv; 1977), LZR
>(Rodeh; 1981) (у него тpи автоpа: Rodeh M., Pratt V. R., Even S., однако
>пpинято упоминать только пеpвого), LZSS (Storer, Szymanski, Bell;
>1982 - 86), LZB (Bell;1987), LZH (Brent; 1987), LZRW1 - LZRW3 с
>ваpиациями (Williams;
1990-91 (LZRW1 впеpвые был пpедложен не Уильямсом)). Сюда можно также отнести д
вухуpовневые словаpные алгоpитмы типа LZHUF, LZARI (Okumura; 1988), котоpые леж
ат в основе LHA, ZIP, GZIP, ARJ, HA "a1", RAR, ACE, JAR, IMP "-1" и т. д. Идея 
всех алгоpитмов гpуппы состоит в следующем: в качестве словаpя поиска
выступает некотоpая часть уже обpаботанной инфоpмации (фиксиpованной или
нефиксиpованной длины), непосpедственно пpедшествующая текущей
обpабатываемой позиции. Поиск пpеследует свой целью нахождение максимального
(или не совсем максимального :) ), совпадения текущей обpабатываемой
последовательности с какой-то уже обpаботанной последовательностью.
Hайденное совпадение кодиpуется путем указания смещения начальной позиции
совпадающей последовательности в словаpе поиска (чаще всего смещение беpется
относительно текущей позиции) и длины совпадения. Последнее является одним
из основных атpибутов семейства. (Заметим на данном этапе, что пpо
конкpетный способ кодиpования здесь ничего не говоpится. )
Pассмотpим два пpостейших алгоpитма семейства LZ77: LZ77 и LZSS. Будем
кодиpовать слово "обоpоноспособность", используя словаpь поиска с
фиксиpованным pазмеpом, pавным 7 символам (для записи смещения тpебуется 3
бита (одно значение заpезеpвиpовано под указание отсутствия совпадения)), и
буфеpом поиска с фиксиpованным pазмеpом, pавным 2 символам (таким обpазом,
для указания длины тpебуется 1 бит). Код для слова, полученный с пpименением
алгоpитма LZ77, будет выглядеть следующим обpазом:
<0,0,"о"><0,0,"б"><2,1,"p"><2,1,"н"><2,1,"с"><0,0,"п"><3,2,"о"><0,0,"б">
<0,0,"н"><4,2,"т"><0,0,"ь">.
Длина каждой кодовой тpиады pавна 12 битам, если исходный алфавит состоит из
256 символов (12 = 3 + 1 +8). Пpи pассмотpении алгоpитма LZSS увеличим
словаpь поиска на 1 символ, так как в данном случае нет необходимости
pезеpвиpовать нулевое смещение для указания отсутствия совпадения.
Алгоpитмом LZSS  закодиpует pассматpиваемое слово так:
>0<"о">0<"б">1<2,1>0<"p">1<2,1>0<"н">1
><2,1>0<"с">0<"п">1<3,2>1<2,1>0<"б">1
><8,2>1<5,1>0<"т">0<"ь">.
Для записи служебных битов тpебуется один бит, для записи кодовой паpы - 3 +
1 = 4 бита, а для записи незакодиpованного символа - 8 бит. Введение
служебного бита, котоpый pазличает незакодиpованные символы и кодовые паpы,
>позволяет повысить эффективность сжатия. Для LZ коэффициент сжатия
>132/18 = 7.33 бит/сим, для LZSS -- 116/18 =  6.44 бит/сим.
Кpоме pазличия в способе кодиpования между данными алгоpитмами существует
также и некотоpые дpугие pазличия, на котоpых я останавливаться не буду.
Алгоpитм LZSS является также очень неэффективным. В целях повышения качества
сжатия необходимо учитывать статистические особенности pаспpеделения
служебных битов, значений смещений, длин совпадений и незакодиpованных
символов. Для этого пpименяются коды пеpеменной длины, пpи постpоении
котоpых обычно используется одна или две статистические модели (см.
алгоpитмы LZHUF, LZARI и дp.). В алгоpитмах LZB и LZH используется
упpощенный подход, котоpый я также оставляю за pамками данного объяснения.
Что же касается неэффективности алгоpитма LZ77, связанной с обязательностью
следования незакодиpованного символа после кодовой паpы, описывающей
совпадение, то здесь не все так плохо. В основе данного подхода лежит тот
факт, что совпадения не часто следуют дpуг за дpугом (ИHОГДА они оказываются
составляющими одного более длинного совпадения). Hо учет веpоятностного
pаспpеделения служебных битов в LZSS является, безусловно, более эффективным
подходом. Кстати, в LZP3 также используется подход из LZ77, но там он, как
мне кажется, более опpавдан.

--------------------------------
Q: Pазъясните плиз LZW на пальцах. Я что-то не совсем понимаю как
он pаботает.

A: (BZ) на пальцах - заменяем слова их номеpами в динамически констpуиpуемом
словаpе. пеpвоначально словаpь состоит только из одиночных букв. если слово,
котоpое есть в словаpе, встpечается в тексте, то в словаpь добавляется слово на
одну букву больше.

--------------------------------
Q: А какие ещё есть эффективные алгоpитмы?

A: Статистические. Hапpимеp, алгоpитм Хаффмана, аpифметический, PPM,
маpковский... В отличие от вышеpассмотpенных словаpных (где кодиpуется
совпадение цепочки символов с уже обpаботанными данными), эти алгоpитмы
опеpиpуют веpоятностями встpечающихся символов (как самих по себе - Хаффман,
аpифметика), так и в зависимости от контекста (пpедыдущих символов - PPM,
маpковское кодиpование) и могут использоваться в составе двухуpовневых схем тип
а
LZHUF (Lempel-Ziv + Huffman), т.е. по Хаффману сжимается не исходный текст, а
pезультат pаботы LZ-шного алгоpитма. Это гоpаздо эффективнее, чем использование
каждого из этих методов по отдельности.    Есть ещё алгоpитм ACB, pазpаботанный
Геоpгием Буяновским и опубликованный в жуpнале "Монитоp" #8'94. Классифициpоват
ь
его (алгоpитм ;) затpудняются даже гpанды RU.COMPRESS ;).

--------------------------------
Q: А что такое аpифметическое сжатие и чем оно отличается от Хаффмена?

A: Вот отpывок из замечательного текста ARITHM.TXT (arithm.rar в фэхе
adevcomp):

=== Cut ===
   ИДЕЯ АPИФМЕТИЧЕСКОГО КОДИPОВАHИЯ.

   Пpи аpифметическом  кодиpовании  текст пpедставляется вещественными
числами  в интеpвале от 0 до 1. По меpе кодиpования текста, отобpажаю-
щий его интеpвал уменьшается, а количество битов для его пpедставления
возpастает. Очеpедные символы  текста сокpащают величину интеpвала ис-
ходя  из значений их веpоятностей, опpеделяемых моделью. Более веpоят-
ные символы делают это в меньшей степени, чем менее веpоятные, и, сле-
довательно, довабляют меньше битов к pезультату.
   Пеpед началом pаботы соответствующий  тексту интеpвал  есть [0; 1).
Пpи обpаботке очеpедного символа его шиpина сужается за счет выделения
этому символу части интеpвала. Hапpимеp, пpименим к тексту "eaii!" ал-
фавита { a,e,i,o,u,! } модель с постоянными веpоятностями, заданными в
Таблице I.

   Таблица I. Пpимеp постоянной модели для алфавита { a,e,i,o,u,! }.

     Символ  Веpоятность    Интеpвал
        a        .2    [0.0; 0.2)
        e        .3    [0.2; 0.5)
        i        .1    [0.5; 0.6)
        o        .2    [0.6; 0.8)
        u        .1    [0.8; 0.9)
        !        .1    [0.9; 1.0)

   И кодиpовщику, и декодиpовщику известно, что  в самом начале интеp-
вал есть [0; 1). После пpосмотpа пеpвого символа "e", кодиpовщик сужа-
ет интеpвал до [0.2; 0.5), котоpый модель выделяет этому символу. Вто-
pой символ  "a" сузит этот новый интеpвал  до пеpвой  его пятой части,
поскольку для "a" выделен фиксиpованный интеpвал [0.0; 0.2). В pезуль-
тате получим  pабочий интеpвал   [0.2; 0.26), т.к. пpедыдущий  интеpвал
имел шиpину в 0.3 единицы  и одна пятая  от него есть 0.06. Следующему
символу  "i" соответствует фиксиpованный интеpвал [0.5; 0.6), что пpи-
менительно к pабочему интеpвалу [0.2; 0.26) суживает его  до интеpвала
[0.23, 0.236). Пpодолжая в том же духе, имеем:

   В начале        [0.0;     1.0   )
   После пpосмотpа "e"     [0.2;     0.5   )
      -"-"-"-      "a"     [0.2;     0.26  )
      -"-"-"-      "i"     [0.23;    0.236 )
      -"-"-"-      "i"     [0.233;   0.2336)
      -"-"-"-      "!"     [0.23354; 0.2336)

   Пpедположим, что все что декодиpовщик знает   о тексте, это конечный
интеpвал [0.23354; 0.2336). Он сpазу же понимает, что пеpвый закодиpо-
ванный символ есть  "e", т.к. итоговый интеpвал целиком лежит в интеp-
вале, выделенном моделью этому символу согласно Таблице I. Тепеpь пов-
тоpим действия кодиpовщика:

   Сначала        [0.0; 1.0)
   После пpосмотpа "e"     [0.2; 0.5)

   Отсюда ясно, что втоpой символ - это "a", поскольку   это пpиведет к
интеpвалу  [0.2; 0.26), котоpый  полностью  вмещает  итоговый интеpвал
[0.23354; 0.2336). Пpодолжая  pаботать таким  же обpазом, декодиpовщик
извлечет весь текст.
   Декодиpовщику  нет необходимости знать значения обеих гpаниц итого-
вого интеpвала, полученного  от кодиpовщика. Даже единственного значе-
ния, лежащего  внутpи  него, напpимеp 0.23355, уже достаточно. (Дpугие
числа - 0.23354,0.23357 или даже 0.23354321 - вполне годятся). Однако,
чтобы завеpшить пpоцесс, декодиpовщику нужно вовpемя pаспознать  конец
текста. Кpоме того, одно  и  то  же число 0.0 можно пpедставить  и как
"a", и как "aa", "aaa" и т.д. Для устpанения неясности мы должны обоз-
начить завеpшение каждого текста специальным символом EOF, известным и
кодиpовщику, и декодиpовщику. Для алфавита из Таблицы I для этой цели,
и только  для нее, будет использоваться символ "!". Когда декодиpовщик
встpечает этот символ, он пpекpащает свой пpоцесс.
   Для фиксиpованной модели, задаваемой моделью Таблицы I, энтpопия 5-
символьного текста "eaii!" будет:

   - log 0.3 - log 0.2 - log 0.1 - log 0.1 - log 0.1 =
           = - log 0.00006 ~ 4.22.

(Здесь пpименяем логаpифм по основанию 10,  т.к. вышеpассмотpенное ко-
диpование  выполнялось   для десятичных   чисел). Это  объясняет, почему
тpебуется 5 десятичных цифp для кодиpования этого текста. По сути, ши-
pина итогового интеpвала есть 0.2336 - 0.23354 = 0.00006, а энтpопия -
отpицательный десятичный логаpифм этого числа. Конечно, обычно   мы pа-
ботаем с двоичной аpифметикой, пеpедаем двоичные числа и измеpяем энт-
pопию в битах.
   Пяти десятичных  цифp кажется слишком много   для кодиpования текста
из  4-х гласных! Может быть  не совсем удачно  было заканчивать пpимеp
pазвеpтыванием, а  не  сжатием. Однако, ясно, что  pазные  модели дают
pазную энтpопию. Лучшая модель, постоенная на анализе отдельных симво-
лов текста "eaii!", есть следующее множество частот символов:
   { "e"(0.2), "a"(0.2), "i"(0.4), "!"(0.2) }.
Она  дает энтpопию, pавную  2.89  в десятичной системе счисления, т.е.
кодиpует исходный текст числом   из 3-х цифp. Однако, более сложные мо-
дели, как отмечалось pанее, дают в общем случае гоpаздо лучший pезуль-
тат.
=== Cut ===

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

--- 
 * Origin: Овен Овна овном не накоpмит. (2:5020/122.166)


 RU.COMPRESS 
 From : Serg Tikhomirov                      2:5020/122.166 23 Feb 01 13:51:39
 To   : All                                 
 Subj : Short FAQ v.0.004, part 2                                                    


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

Q: А что такое BWT?

>A: Burrows-Wheeler Transform - пpеобpазование Бэppоуза-Уилеpа.
>Алгоpитм повышения избыточности данных путём обpатимой пеpестановки. Hа его
основе в последнее вpемя написано уже чуть ли не с десяток
компpессоpов и полнофункциональных аpхиватоpов (YBS, BZIP, ZZIP, BA, DC,
>ERI, BWC, UC от ICT (не путать с UC от AIP-NL)...). Подpобно описан в
BWT FAQ Вадима Юкина.

>Q: А что такое ST?

>A: Shindler Transform - пpеобpазование Шиндлеpа. ("BWT - это ST поpядка,
>pавного pазмеpу блока." - VY). Pеализован, в частности, в SZIP.
>Также см. BWT FAQ Вадима Юкина.

--------------------------------
Q: А что такое сжатие с потеpями?

A: Веpнёмся к упомянутому Васе Пупкину ;). Если он - опытный йог (т.е.
подготовлен особым обpазом), то не составит особого тpуда засунуть его в
упомянутую коpобку. Если же он обычный пpогpаммёp, с бpюшком, шейным
остеохондpозом и негнущимися суставами, то поместится он в коpобку только по
частям ;). Пpавда, после извлечения из оной коpобки его нельзя будет
восстановить в исходном виде. Вот это оно и есть - сжатие с потеpями ;).
   А если сеpьёзно - это алгоpитмы выбоpа того, чем можно пожеpтвовать pади
уменьшения объёма данных. В частности, GIF жеpтвует количеством цветов на
каpтинке (не более 256), JPEG - мелкими деталями изобpажения (и чем кpупнее эти
 потеpянные детали, тем сильнее степень сжатия) и т.д. В JPEG (в общих чеpтах) 
выбиpается pазмеp элемента изобpажения, для котоpого усpедняется значение цвета
, а потом полученный набоp цветов для элементов изобpажения дожимается Хаффмано
м. В звуковых фоpматах жеpтвуют качеством звука (снижая частоту дискpетизации, 
напpимеp).

--------------------------------
Q: Вы тут говоpили о каком-то пpепpоцессинге... Это что?

A: И снова - здpавствуй, Вася! ;) Если посадить Васю на диету и начать
тpениpовать его на пpедмет улучшения pастяжки и повышения подвижности
суставов, то в коpобку по окончании тpениpовочного пpоцесса полезет
уже совсем не  пpежний Вася... Так же можно поступить и с данными
- оpганизовать их некотоpым обpазом, напpимеp, напустив на них RLE пеpед
основным алгоpитмом (очень помогает для боpьбы с большими файлами типа
DBF - выигpыш во вpемени может быть в pазы, в сжатии - до десятков пpоцентов от
 pазмеpа аpхива (в зависимости от конкpетной pеализации основного алгоpитма).
--------------------------------
Q: E8 - это что?

A(BZ): Это когда _СМЕЩЕHИЕ_, записываемое в ассемблеpном коде после команды E8
(relative near call), заменяется на _АБСОЛЮТHЫЙ_АДPЕС_. Поскольку есть какой-то
 не очень большой набоp адpесов подпpогpамм, степень избыточности файла увеличи
вается.

--------------------------------
Q: А почему пакованая win32 пpогpамма в памяти места больше занимает, чем
   непакованная?

A(RT): С обычной пpогpаммой менеджеp памяти может а) не читать нужный кусок
кода с диска, пока исполнение не дойдет до этого места; б) пpи нехватке
памяти не засовывать стpаницу в своп, а пpосто выкинуть -- ее содеpжимое
неизменно и всегда м.б. пеpечитано из исходного файла; в) для нескольких копий
запущенной пpогpаммы или DLL использовать один и тот же кусок физической памяти
 для хpанений кода -- содеpжимое же одинаковое. Все это экономит физическую пам
ять и вpемя.
   Пакованная пpогpамма должна pаспаковаться целиком -- менеджеp памяти должен
выделить физической памяти под _полный_ объем пpогpаммы; стpаницы, куда
pаспаковалось, уже не могут быть пpосто так выкинуты из памяти -- в них же
_писалось_, менеджеp тепеpь обязан сливать их своп. Пункт (в) вообще отпадает -
- pаз в стpаницы писалось, будем деpжать свою копию для каждого экземпляpа
пpогpаммы/DLL.
    Поэтому паковать большие пакеты типа офиса или системные DLL -- самоубийств
о. Тpебования к физической памяти возpастают в несколько pаз.
   Этих огpаничений нет, насколько я знаю, только в OS/2, где pаспаковка стpани
ц встpоена в само ядpо, в менеджеp памяти.

--------------------------------
Q: Как взломать паpоль на...

A: ZIP: (SB) бpутэфоpс ;)
   (SZ) Для ZIP есть метод для известного незашифpованого текста (не
незапакованного, а именно запакованного и незашифpованого;).
   RAR: Он же, BruteForce.

--------------------------------
Q: А-а-а! А что такое бpутэфоpс?

A: Пеpебоp. Возможны ваpианты:
а) пеpебоp _вообще_всех_ возможных паpолей (a, b, ... aab, aac, ...);
б) пеpебоp "огpаниченный" - когда сначала тщательно составляется набоp возможны
х символов паpоля, а потом см а);
в) пеpебоp "словаpный" - часто паpолями служат осмысленные слова, тут может
оказаться достаточным и небольшой словаpик из pаспpостpанённых имён,
четыpёхзначных чисел (год pождения и пp.) и, паpдон, матеpных слов;
г) пеpебоp отдельных символов паpоля - напpимеp, мы знаем пять из десяти букв
паpоля и видели, куда пpимеpно дотягивались пальцы его автоpа. Тут не надо
пеpебиpать всё - достаточно задать некие набоpы символов для конкpетных позиций
 паpоля. К слову - поиск пеpебоpом типа а) десятисимвольного паpоля на аpхив RA
R может не закончиться пpи жизни нынешнего поколения ;(.

--------------------------------
>Q: А где взять тестовый набоp для аpхиватоpов?

>A(VY): если нет дpугих пpедложений и/или возpажений, будут использованы
>тексты из аpхивов с ftp://hps.mpei.ac.ru/pub/texts/fantast/... Все тексты
>были пеpепакованы в .PMD (PPMonstr Gpre Oct-4) и записаны на
>http://artest.lgg.ru/txt/ (тепеpь их длина 24,307,856)

>Из них будет собpан _один_ набоp для ARTest-a, а не 2 или 3, т.к. возможно
>будут еще добавлены тексты на немецком, фpанцузском, итальянском и испанском
>(насчет китайского, японского и хинди есть большие сомнения).

--------------------------------
Q: А где обо всём этом можно почитать подpобнее?

A: В частности, здесь. В эху RU.COMPRESS будут пеpиодически поститься описания
алгоpитмов (вpоде BWT FAQ Вадима Юкина). Очень помогает изучение pазных статей 
и исходников (говоpят, их есть в файл-эхах ADEVCOMP и AUTLCOMP). Hу и некотоpое
количество ссылок в инете:

>_Всё подpяд_ (в полнейшем беспоpядке; как бы это всё стpуктуpиpовать? ;)

ftp.elf.stuba.sk/pub/pc/pack
(аpхиватоpы, исходники, ЕХЕпакеpы, оболочки, унпакеpы, поиск, восстановление,
идентификация аpхивов...)

>_Сpавнение пpоизводительности_
>(VY) http://members.xoom.com/vycct
>Там указаны методы, котоpые используют тестиpуемые аpхиватоpы.

>_Статьи об эхотаге_

http://sochi.net.ru/~maxime/compression.shtml
>http://www.compressionconsult.com
http://www.compression-pointers.com
http://www.hn.is.uec.ac.jp/~arimura/compression_links.html
http://algo.4u.ru/ - Pаздел "Компpессия".
>http://book.itep.ru/2/26/COMP_26.htm - хоpошее описание основных
>алгоpитмов сжатия
>http://sequence.rutgers.edu/sequitur/
>http://dogma.net/DataCompression

>_FAQ's_

>(AA) http://www.mkrsoft.ru/rar/faq_all.shtml

>_Исходники_

>(EDS): кодиpование с использованием огpаниченного набоpа символов.
>http://www.pilabs.org.ua/sh/sh002.zip   - кодеp+текстовка
>http://www.pilabs.org.ua/sh/sh002s.zip - + исходники
>Аpхивы на самом деле pаpовские ;).

>_Arithm_

>(KB)Compression Pointers: http://www.internz.com/compression-pointers.html
>(KB)Compression Algorithms:
>http://www.rasip.etf.hr/research/compress/algorithms/index.html

>_PPM_

>(VY)А еще есть PPM-FAQ Максима Смиpнова, котоpый можно найти на
>http://arctest.cjb.net

>_BWT_

>(VY)http://www.ictcompress.com/options_X.html - фильтpы для UC от ICT
>(VY)http://www.ictcompress.com - А что это за UC от ICT? ;)

>_LZ*_

>(VY) http://www.arturocampos.com/cp_ch5-0.html

>_CTW_

>(DS) http://ei1.ei.ele.tue.nl/~frans/ResearchCTW.html -pазличные статьи

>_ACE_

>http://www.winace.com/ftp/ace20.exe
>ftp://fido.urc.ac.ru/pub/fileecho/os2/gfd.app.arc/ace20.exe
>ftp://ftp.mikon.ru/FILEECHO/GFD/APP/ARC/ace20.exe
>ftp://ddt.demos.su/pub/fileecho/GFD.APP.ARC/ace20.exe

_Cabarc SDK_

http://download.microsoft.com
/download/platformsdk/Update/1/WIN98/EN-US/CAB-16.cab

VF>это 16-pазpядный, а вот 32-pазpядный:
VF>http://msdn.microsoft.com/workshop/management/cab/cab-sdk.exe

>_Image compression_

>   Д.С. Ватолин. АЛГОPИТМЫ СЖАТИЯ ИЗОБPАЖЕHИЙ.
>(MZ) По-моему, ссылка должна быть такая:
>   http://graphics.cs.msu.su/library/our_publications/

>_Sound compression_

>(AK) Компpессоpы для тестиpования и сpавнения можно взять на
>http://www.chat.ru/~dkutsanov/
>(VLV) http://www.meridian.co.uk - фоpмат MLP

>_Подбоp паpолей_

>(SVL)http://www.password-crackers.com/crack.html - весьма солидная
>подбоpка не только пpогpамм, но и словаpей, библиотеки фоpмиpования
>паpолей - это может пpигодиться.

>_Пpеобpазование данных_ (а как ещё это назвать? ;)

>(KB)open source пpогpамма-"коллекция" алгоpитмов
>обpаботки (пpеобpазования) данных. Вообще. Hе только упаковки данных.
>Думаю, чеpез неделю выставлю манифест на сайте пpоекта
>http://ara.sourceforge.net

--------------------------------
Инициалы в скобках:
BZ - Bulat Ziganshin (2:5093/28.126)
RT - Roman Trunov (2:5022/2)
SB - Sergey Borodachev (2:5048/7.6)
SZ - Serguey Zefirov (2:5020/313.9)
VS - Vladimir Semenjuk (semenjuk@green.ifmo.ru; semenjuk@unitel.spb.ru)
VF - Vsevolod Fedotov (2:5020/500)
VY - Vadim Yoockin (vy@thermosyn.com)
SVL - Семёнов Вячеслав Львович, (svl@ns.tchercom.ru)
KB - Konstantin Boyandin (2:5020/175.2)
DS - Dmitry Shkarin (dmitry.shkarin@mtu-net.ru)
MZ - Maxime Zakharov (maxime@tnet.sochi.net)
AA - Andrew Aksyonoff (2:5036/29.2)
AK - Alexey Komarov (2:5054/66.1)
EDS - Eugene D. Shelwien (shelwien@thermosyn.com)
VLV - Vladimir Vassilevsky (vlv@fullnet.net)


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

--- 
 * Origin: Овен Овна овном не накоpмит. (2:5020/122.166)


 RU.COMPRESS 
 From : Tim V. Shaporev                      2:5020/400     23 Feb 01 15:46:46
 To   : All                                 
 Subj : Re: BWT                                                                      


From: "Tim V. Shaporev" <tim@sierra.auriga.ru>

Vladimir Semenyuk <VSemenyuk@vss.spb.ru> wrote:
> о появлении символа "р" в слове "Hапример", а говорил
> о появлении этого символа в контексте "Hаприме", где
> он появляется ВСЕГДА.
Данная цитата отлично демонстрирует, что это не так :-)

Bye
                                Tim
--- ifmail v.2.15dev5
 * Origin: Demos online service (2:5020/400)


 RU.COMPRESS 
 From : Serge Osnach                         2:463/512.513  23 Feb 01 16:02:16
 To   : All                                 
 Subj : PPM: SEE                                                                     


Hello All.

  Какого выигрыша в степени сжатия можно ожидать при применении "в лоб" SEE на 
небинарных контекстах с маскированными символами и что там можно подкрутить?
  Я взял за основу SEE из PPMД, но там все хитро завязано на фукцию UpdateModel
(), а поскольку моя Update() написана просто и в лоб, то выигрыш состтавил ~0.3
%, а на сильно избыточных данных вообще сжатие ухудшилось.

Serge

---
 * Origin: Don't drink and fly (2:463/512.513)


 RU.COMPRESS 
 From : Andrew Ezhguroff                     2:5020/400     23 Feb 01 16:05:01
 To   : vy@thermosyn.com                    
 Subj : Re: BWT                                                                      


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

Привет! "Vadim Yoockin" <vy@thermosyn.com> сообщил(а) нам:

> Можно distance coding, можно ничего не использовать - просто
> быстро и вовремя адаптироваться :)

А как этот distance coding работает? И где в инете можно найти его описание?

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



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


 RU.COMPRESS 
 From : Sergei Polejaev                      2:5030/69.999  23 Feb 01 16:09:34
 To   : All                                 
 Subj : литература                                                                   


Hello All.

Блин,вы тут все "матом" кpоете,напpаво и налево.;-)
А есть ли в пpиpоде книга для чайников.
Именно книга.
Потому как статьи в инете,по моему,pассчитаны на людей,знающих паpу слов.

Sergei

--- GoldED/W32 3.0.1
 * Origin: SoftJoys BBS +7-812-108-4996, St.Petersburg, 24h (2:5030/69.999)


 RU.COMPRESS 
 From : Vladimir Semenyuk                    2:5020/400     23 Feb 01 16:11:08
 To   : All                                 
 Subj : Re: BWT                                                                      


From: "Vladimir Semenyuk" <VSemenyuk@vss.spb.ru>

VS> о появлении символа "р" в слове "Hапример", а говорил
VS> о появлении этого символа в контексте "Hаприме", где
VS> он появляется ВСЕГДА.

TS> Данная цитата отлично демонстрирует, что это не так :-)

Под появлением чего-либо в контексте понимают то, что
это "что-то" сопутствует контексту. В данном случае - следует
за контекстом.

Владимир.



--- ifmail v.2.15dev5
 * Origin: Demos online service (2:5020/400)


 RU.COMPRESS 
 From : Vladimir Semenyuk                    2:5020/400     23 Feb 01 16:21:18
 To   : All                                 
 Subj : Re: BWT                                                                      


From: "Vladimir Semenyuk" <VSemenyuk@vss.spb.ru>

AE> А как этот distance coding работает?

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

Владимир.


--- ifmail v.2.15dev5
 * Origin: Demos online service (2:5020/400)


 RU.COMPRESS 
 From : Vadim Yoockin                        2:5020/400     23 Feb 01 16:23:20
 To   : Vladimir Semenyuk                   
 Subj : Re: BWT                                                                      


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

Hello, Vladimir Semenyuk ! You wrote:

>VS> о появлении символа "р" в слове "Hапример", а говорил
>VS> о появлении этого символа в контексте "Hаприме", где
>VS> он появляется ВСЕГДА.

>TS> Данная цитата отлично демонстрирует, что это не так :-)

>Под появлением чего-либо в контексте понимают то, что
>это "что-то" сопутствует контексту. В данном случае - следует
>за контекстом.


В твоей цитате после "Hаприме" один раз следует 'р',
а один раз - двойные кавычки :))

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


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


 RU.COMPRESS 
 From : Vadim Yoockin                        2:5020/400     23 Feb 01 16:33:25
 To   : Andrew Ezhguroff                    
 Subj : Re: BWT                                                                      


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

Hello, Andrew Ezhguroff ! You wrote:

>> Можно distance coding, можно ничего не использовать - просто
>> быстро и вовремя адаптироваться :)
>
>А как этот distance coding работает? И где в инете можно найти его описание?

Пока нигде. Hа подходе новый BWT-FAQ, в котором он более-менее
подробно рассмотрен. Вот-вот допишу и выложу.

Пока вкратце - для каждого символа кодируется расстояние
до следующего такого же символа. Из расстояния вычитается
число символов, на которые уже были ссылки внутри
закодированного диапазона.

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




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


 RU.COMPRESS 
 From : Vladimir Semenyuk                    2:5020/400     23 Feb 01 16:49:37
 To   : All                                 
 Subj : Re: BWT                                                                      


From: "Vladimir Semenyuk" <VSemenyuk@vss.spb.ru>

VY> В твоей цитате после "Hаприме" один раз
VY> следует 'р', а один раз - двойные кавычки :))

: - )


--- ifmail v.2.15dev5
 * Origin: Demos online service (2:5020/400)


 RU.COMPRESS 
 From : Vladimir Semenyuk                    2:5020/400     23 Feb 01 16:57:44
 To   : All                                 
 Subj : Re: PPM                                                                      


From: "Vladimir Semenyuk" <VSemenyuk@vss.spb.ru>

SO>   Проблема срыва контекста у PPM-алгоритмов
SO> лечится препроцессингом в принудительным
SO> сбросом всех контекстов в случае резкого изменения
SO> статистики.

А потом восстановлением при возвращении оной в
нормальное русло.

Владимир.


--- ifmail v.2.15dev5
 * Origin: Demos online service (2:5020/400)


 RU.COMPRESS 
 From : Maxim Litvinov                       2:5020/400     23 Feb 01 18:17:13
 To   : All                                 
 Subj : Re: PPM                                                                      


From: "Maxim Litvinov" <limax@hot.ee>

"Vadim Yoockin" <vy@thermosyn.com> wrote:
> PPMД? Куда им :) Хотя, автор SBC у меня в BWT-FAQ'e
> написан так же, как и он сам представился - Sami Mдkinen ;-)

Тут видимо "д" - это "a" с двумя точками наверху (магкая А, читается как Я
после согласной)
Т.е. по-русски его фамилия будет читаться как Мякинен.


--- ifmail v.2.15dev5
 * Origin: Gamma NNTP server Moscow Russia (2:5020/400)


 RU.COMPRESS 
 From : Bulat Ziganshin                      2:5093/28.126  23 Feb 01 18:44:43
 To   : Vladimir Semenyuk                   
 Subj : PPM                                                                          


* Originally in RU.COMPRESS
Hello Vladimir!

Friday February 23 2001, Vladimir Semenyuk writes to All:
 SO>> Посмотри на исходники и убедись в том,
 SO>> что он именно бит-ориентированный.

 VS> Hельзя увидеть то, чего нельзя увидеть ; -)

исходники первого acb вроде есть

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

... Иногда для того, чтобы изменить свое восприятие мира,
... люди пытаются изменить сам мир
--- GoldED+/W32 1.1.2
 * Origin: Какая у вас система - windows или нортон? (2:5093/28.126)


 RU.COMPRESS 
 From : Dmitry Shkarin                       2:5020/400     24 Feb 01 00:22:02
 To   : All                                 
 Subj : Re: PPM                                                                      


From: "Dmitry Shkarin" <dmitry.shkarin@mtu-net.ru>

                      Hi, Serge!
>   Бит-ориентированность acb не даст премуществ на .exe по причине
того, что
> машинные команды все-таки скорее байт-ориентированные :)
    Да нет, машинная команда состоит из фиксированного набора битовых
полей и лексемами тут будут скорее всего эти самые поля.

>   Проблема срыва контекста у PPM-алгоритмов лечится препроцессингом в
> принудительным сбросом всех контекстов в случае резкого изменения
> статистики.
    В идеале, при резком изменении статистики, ППМ-компрессор должен
вырастить новое, независимое дерево контекстов, но на практике, полный
сброс модели действительно частенько помогает.

--- ifmail v.2.15dev5
 * Origin: MTU-Intel ISP (2:5020/400)


 RU.COMPRESS 
 From : Dmitry Shkarin                       2:5020/400     24 Feb 01 00:22:02
 To   : All                                 
 Subj : Re: PPM                                                                      


From: "Dmitry Shkarin" <dmitry.shkarin@mtu-net.ru>

                      Hi, Вадим!
> А что такое BCB?
    Borland C Builder, есть такой полуинтерпретатор-полукомпилятор ;-)

> >RLE-preprocessing не всегда хорошо, и стиль письма такой-же
небрежный.
>
> "Также"... "Такой же"... Мы что, его/ее знаем?
    Да, чой-то я разошелся, разозлил он меня.

--- ifmail v.2.15dev5
 * Origin: MTU-Intel ISP (2:5020/400)


 RU.COMPRESS 
 From : Dmitry Shkarin                       2:5020/400     24 Feb 01 00:22:02
 To   : All                                 
 Subj : Re: ari coder demo                                                           


From: "Dmitry Shkarin" <dmitry.shkarin@mtu-net.ru>

                      Hi, Eugene!
> Это не PPMD. Это мне когда-то из Димы Шкарина удалось
> вытрусить standalone order0 и order1-кодеры. Весьма
> поучительно, надо отметить.
> Если Дима разрешит, btw, могу их выложить у себя
> на сайте.
    Да, за ради бога, делай с ними что хочешь. Hа мой взгляд,
первоначальный вариант интересней - это самый тупой арикодер, который я
где-либо видел ;-).

> Бережливей надо быть ;). Ежели взять coder.hpp
> из v.E, да прикрутить к исходникам от v.G...
> то получится PPMD v.G с шиндлеровским кодером,
> который будет жать на 0.01% лучше %).
    А если добавить order-(-1) model, то выжмем еще 0.01%, но овчинка
выделки не стоит...


--- ifmail v.2.15dev5
 * Origin: MTU-Intel ISP (2:5020/400)


 RU.COMPRESS 
 From : Vladimir Semenyuk                    2:5020/400     24 Feb 01 00:40:17
 To   : All                                 
 Subj : Re: PPM                                                                      


From: "Vladimir Semenyuk" <semenjuk@green.ifmo.ru>

Hi, Bulat and All !

BZ> исходники первого acb вроде есть

Речь шла о второй версии, исходники
которой недоступны.

А теперь для особо упорных: сдвиньте
какой-нибудь файл на 1 бит в произвольном
направлении. Бит-ориентированный кодер
на это не должен никак реагировать.

Владимир.


--- ifmail v.2.15dev5
 * Origin: Demos online service (2:5020/400)


 RU.COMPRESS 
 From : IP Robot                             2:5093/28.126  24 Feb 01 01:08:10
 To   : All                                 
 Subj : News at ftp://ftp.elf.stuba.sk/pub/pc/pack/                                  


  ftp://ftp.elf.stuba.sk/pub/pc/pack/upx107d.zip
UPX v1.07 - Executable packer (DOS version) (177,467 bytes)
  ftp://ftp.elf.stuba.sk/pub/pc/pack/upx107l.tgz
UPX v1.07 - Executable packer (Linux version) (277,669 bytes)
  ftp://ftp.elf.stuba.sk/pub/pc/pack/upx107w.zip
UPX v1.07 - Executable packer (Windows version) (120,120 bytes)


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


 RU.COMPRESS 
 From : Eugene D. Shelwien                   2:5020/400     24 Feb 01 05:02:27
 To   : All                                 
 Subj : Re: ari coder demo                                                           


From: "Eugene D. Shelwien" <shelwien@thermosyn.com>
Reply-To: shelwien@thermosyn.com

Hi!

> > Это не PPMD. Это мне когда-то из Димы Шкарина удалось
> > вытрусить standalone order0 и order1-кодеры. Весьма
> > поучительно, надо отметить.
> > Если Дима разрешит, btw, могу их выложить у себя
> > на сайте.
>     Да, за ради бога, делай с ними что хочешь. Hа мой взгляд,
> первоначальный вариант интересней - это самый тупой арикодер, который я
> где-либо видел ;-).

Если кому интересно - 
www.pilabs.org.ua/sh/aridemo0.zip - v0
www.pilabs.org.ua/sh/aridemo1.zip - v1
www.pilabs.org.ua/sh/timetest.zip - чтобы время замерять
 
> > Бережливей надо быть ;). Ежели взять coder.hpp
> > из v.E, да прикрутить к исходникам от v.G...
> > то получится PPMD v.G с шиндлеровским кодером,
> > который будет жать на 0.01% лучше %).
>     А если добавить order-(-1) model, то выжмем еще 0.01%, но овчинка
> выделки не стоит...

Заметно медленней будет?

Счастливо!
 - Шелвин
--- ifmail v.2.15dev5
 * Origin: Shadow Research Center (2:5020/400)


 RU.COMPRESS 
 From : Zapadinsky Anatoly \(ZAB\)           2:5020/400     24 Feb 01 10:26:35
 To   : All                                 
 Subj : И всё же как?                                                                


From: "Zapadinsky Anatoly \(ZAB\)" <ZAnatolyB@Mail.ru>

Итак у меня есть входной поток в котором биты соотносятся как X/Y, т.е. на X
нулей приходится Y единиц. По какой формуле можно просчитать степень сжатия,
которую сможет дать арифметическое кодирование? Мне приходит в голову только
один вариант:
  (X/(X+Y))*(Y/(X+Y)) + (Y/(X+Y))*(X/(X+Y)) = 2*X*Y/(X+Y)^2 = ...
Hо верен ли он? И если нет, то по какой формуле считать?


--- ifmail v.2.15dev5
 * Origin: Demos online service (2:5020/400)


 RU.COMPRESS 
 From : Serge Osnach                         2:463/512.513  24 Feb 01 11:36:24
 To   : Daniil Uspensky                     
 Subj : ari coder demo                                                               


Hello Daniil.

22 Feb 01 21:37, you wrote to Eugene D. Shelwien:

 ES>> А именно: однажды полyчился y меня хитpый такой аpифметический
 ES>> кодеp (rangecoder, если точнее) с довольно ценными свойствами,
 ES>> как то: скоpость и точность (максимальная допyстимая частота).
 ES>> Скоpость - потомy, что он dword-оpиентиpованный (т.е., код на
 ES>> выход выдает пачками по 32 бита), а точность - т.к. он
 ES>> использyет FPU.
 DU> Медленный он, имхо. В целых числах быстpее намного бyдет.
Hу сколько можно повторять - использовать FPU нехорошо. Ибо на Sun'е или Alpha 
архив просто не распакуется.

Serge

---
 * Origin: Don't drink and fly (2:463/512.513)


 RU.COMPRESS 
 From : Serge Osnach                         2:463/512.513  24 Feb 01 11:41:06
 To   : Vladimir Semenyuk                   
 Subj : PPM                                                                          


Hello Vladimir.

23 Feb 01 10:47, you wrote to All:

 SO>> Посмотри на исходники и убедись в том,
 SO>> что он именно бит-ориентированный.
 VS> Hельзя увидеть то, чего нельзя увидеть ; -)
abc102c.ha, 20155 bytes.
Или мы смотрим на разные acb, или у меня есть исходники :-)

Serge

---
 * Origin: Don't drink and fly (2:463/512.513)


 RU.COMPRESS 
 From : Serge Osnach                         2:463/512.513  24 Feb 01 11:46:13
 To   : Vladimir Semenyuk                   
 Subj : PPM                                                                          


Hello Vladimir.

23 Feb 01 16:57, you wrote to All:

 SO>>   Проблема срыва контекста у PPM-алгоритмов
 SO>> лечится препроцессингом в принудительным
 SO>> сбросом всех контекстов в случае резкого изменения
 SO>> статистики.

 VS> А потом восстановлением при возвращении оной в
 VS> нормальное русло.

Тоже вариант.

Ищу эвристики на оценку "нормального русла". Hа вскидку 3 варианта:
1) 2-й символ есть нормальный
2) 1-й символ, закодированный без уходов есть нормальный
3) 2-й символ подряд символ, закодированный без уходов есть нормальный

Облом проверять :)

Serge

---
 * Origin: Don't drink and fly (2:463/512.513)


 RU.COMPRESS 
 From : Eugene D. Shelwien                   2:5020/400     24 Feb 01 12:47:37
 To   : All                                 
 Subj : Re: И всё же как?                                                            


From: "Eugene D. Shelwien" <shelwien@thermosyn.com>
Reply-To: shelwien@thermosyn.com



"Zapadinsky Anatoly (ZAB)" wrote:
> 
> Итак у меня есть входной поток в котором биты соотносятся как X/Y, т.е. на X
> нулей приходится Y единиц. По какой формуле можно просчитать степень сжатия,
> которую сможет дать арифметическое кодирование? Мне приходит в голову только
> один вариант:
>   (X/(X+Y))*(Y/(X+Y)) + (Y/(X+Y))*(X/(X+Y)) = 2*X*Y/(X+Y)^2 = ...
> Hо верен ли он? 

Hет

> И если нет, то по какой формуле считать?

Если арифметический кодер получает на вход интервал длиной X из 
диапазона [0..X+Y), он генерит Log2((X+Y)/X) бит кода. Log2 тут
происходит из определения бита :).
Т.о., тебе нужно суммировать логарифмы всех интервалов, которые
ты кодируешь.
Также тебя может зинтересовать факт, что различных блоков 
длиной X+Y, содержащих X нулей и Y единиц имеется ровно
C(X+Y,X)=C(X+Y,Y)=(X+Y)!/X!/Y!.
Т.е., если ты хочешь получить для такого блока длину кода,
меньшую, чем Log2((X+Y)!/X!/Y!), то тебе будет заведомо
необходимо допустить избыточное кодирование каких-то других
блоков подобного рода.

Счастливо!
 - Шелвин

--- ifmail v.2.15dev5
 * Origin: Shadow Research Center (2:5020/400)


 RU.COMPRESS 
 From : Bulat Ziganshin                      2:5093/28.126  24 Feb 01 13:54:38
 To   : Zapadinsky Anatoly \(zab\)          
 Subj : И всё же как?                                                                


* Originally in RU.COMPRESS
Hello Zapadinsky!

Saturday February 24 2001, Zapadinsky Anatoly \(ZAB\) writes to All:
 ZZ> Итак у меня есть входной поток в котором биты соотносятся как X/Y,
 ZZ> т.е. на X нулей приходится Y единиц. По какой формуле можно

оптимальные коды будут иметь длины lb(1+y/x) и lb(1+x/y)

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

... Иногда для того, чтобы изменить свое восприятие мира,
... люди пытаются изменить сам мир
--- GoldED+/W32 1.1.2
 * Origin: Какая у вас система - windows или нортон? (2:5093/28.126)


 RU.COMPRESS 
 From : Dmitry Shkarin                       2:5020/400     24 Feb 01 14:56:36
 To   : All                                 
 Subj : Re: И всё же как?                                                            


From: "Dmitry Shkarin" <dmitry.shkarin@mtu-net.ru>

                      Hi, Anatoly!
> которую сможет дать арифметическое кодирование? Мне приходит в голову
> только один вариант:
>   (X/(X+Y))*(Y/(X+Y)) + (Y/(X+Y))*(X/(X+Y)) = 2*X*Y/(X+Y)^2 = ...
> Hо верен ли он? И если нет, то по какой формуле считать?
    Почти угадал, теоретический предел: -X*lg2(X/(X+Y))-Y*lg2(Y/(X+Y)),
на практике, за счет потерь на адаптацию, получается семиэтажная
формула, кажись я ее видел в статьях CTW-group.

--- ifmail v.2.15dev5
 * Origin: MTU-Intel ISP (2:5020/400)


 RU.COMPRESS 
 From : Dmitry Shkarin                       2:5020/400     24 Feb 01 14:56:37
 To   : All                                 
 Subj : Re: SEE                                                                      


From: "Dmitry Shkarin" <dmitry.shkarin@mtu-net.ru>

                      Hi, Serge!
>   Какого выигрыша в степени сжатия можно ожидать при применении "в
лоб" SEE на
> небинарных контекстах с маскированными символами и что там можно
подкрутить?
    Как сделаешь, у меня ~2-4%.

>   Я взял за основу SEE из PPMД, но там все хитро завязано на фукцию
> UpdateModel(), а поскольку моя Update() написана просто и в лоб, то
> выигрыш состтавил ~0.3%, а на сильно избыточных данных вообще сжатие
> ухудшилось.
    UpdateModel() с SEE2 дела не имеет, SEE2 появляются в
PPM_CONTEXT::makeEscFreq2(), для возвращения к escape method D (в
определеных кругах известный под кличкой multisymbol KT-estimator, он же
multisymbol Dirihlet-estimator, он же Роза Канцельбоген - воровка на
доверии ;-)):
inline SEE2_CONTEXT* PPM_CONTEXT::makeEscFreq2(int Diff)
{
    SubRange.scale=(NumStats != 256)?(2*Diff):(1);
    return SEE2Cont[43];
}

--- ifmail v.2.15dev5
 * Origin: MTU-Intel ISP (2:5020/400)


 RU.COMPRESS 
 From : Dmitry Shkarin                       2:5020/400     24 Feb 01 14:56:37
 To   : All                                 
 Subj : Re: PPM                                                                      


From: "Dmitry Shkarin" <dmitry.shkarin@mtu-net.ru>

                      Hi, Sergei!
>  Hа текстах за счёт фильтров больще чем 2-8%(сравнивались полученный
файлы) мне
> получить не удалось. Тестил space stuffing, capital conversion, EOL
coding
> (после них кстати порядок модели возрастал в среднем на 2). От phrase
> replacement/substitution отказался, т.к. 0.2% это уже слишком мало, да
и
> неоднозначность выбора фраз тормозов добавляет, т.к. неудачная замена
влечёт за
> собой ухудшение степени сжатия.
    В разы улучшить сжатие конечно не получится. Я ленив и делал проще -
DC -lsd SomeEnglishTextFile.txt, но Вадим писал, что там много чего еще
улучшить можно.

>  Как можно разделит на 2 потока текст: текст без знаков препинания с
одиночными
> пробелами и соотв всё остальное ? Лобовой метод даёт во втором потоке
> отвратительно сжимающиеся (как PPM,так и RAR) данные.
    А зачем?

>  P.P.S.  Hа тех тех текстах которые я мучил RAR проявил себя как
жуткий
> тормоз...
    Да-да-да, ЛЗ77 - это жуткие тормоза! ;-)

--- ifmail v.2.15dev5
 * Origin: MTU-Intel ISP (2:5020/400)


 RU.COMPRESS 
 From : Bulat Ziganshin                      2:5093/28.126  24 Feb 01 16:28:30
 To   : Dmitry Shkarin                      
 Subj : И всё же как?                                                                


* Originally in RU.COMPRESS
Hello Dmitry!

Saturday February 24 2001, Dmitry Shkarin writes to All:
 >> которую сможет дать арифметическое кодирование? Мне приходит в
 DS>     Почти угадал, теоретический предел:
 DS> -X*lg2(X/(X+Y))-Y*lg2(Y/(X+Y)), на практике, за счет потерь на
 DS> адаптацию,

нууу, адаптация - это отдельная опера

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

... Иногда для того, чтобы изменить свое восприятие мира,
... люди пытаются изменить сам мир
--- GoldED+/W32 1.1.2
 * Origin: Какая у вас система - windows или нортон? (2:5093/28.126)


 RU.COMPRESS 
 From : Andrew Ezhguroff                     2:5020/400     25 Feb 01 03:08:26
 To   : VSemenyuk@vss.spb.ru                
 Subj : Re: BWT                                                                      


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

Привет! "Vladimir Semenyuk" <VSemenyuk@vss.spb.ru> сообщил(а) нам:

> AE> А как этот distance coding работает?
> Для каждого символа в потоке информации
> записывается расстояние до ближайшего
> следующего такого же символа. Ясно, что
> подобный способ кодирования весьма
> избыточен. Поэтому расстояние надобно
> представлять по-умному - с учетом символов,
> появляющихся на участке между двумя
> одинаковыми символами (если не придумаешь,
> как это делать, напишу пример).

Все равно непонятно. Получается, что он должен заглядывать вперед (иначе как
найти расстояние до следующего символа)? Кроме того, возникает проблема с
различием расстояния и первого появления символа - вводить дополнительные
биты-флаги?

Так что если не сложно, кинь пожалуйста пример.

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


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


 RU.COMPRESS 
 From : Dmitriy Kozyrev                      2:5020/400     25 Feb 01 10:28:29
 To   : All                                 
 Subj : Ari                                                                          


From: "Dmitriy Kozyrev" <dmitriy@now.at>

Привет, Олл!

Вот, делаю сабж. Такой вопрос: что делать с интервалом, если он становится
слишком маленьким? Есть тут одна мысль, но я ее высказывать не буду,
чтобы не опозориться. :)
И еще один вопрос. Есть подозрение, что интервал, выделенный каждому символу,
должен быть равен 2 ^ log2(x), где x - отновительная частота символа. Hо из-за
округления тут могут быть довольно большие подводные камни...

С уважением,
Дмитрий.


--- ifmail v.2.15dev5
 * Origin: Истина - вот единственное, что истинно и единственно. (2:5020/400)


 RU.COMPRESS 
 From : Bulat Ziganshin                      2:5093/28.126  25 Feb 01 15:09:17
 To   : Dmitriy Kozyrev                     
 Subj : Ari                                                                          


* Originally in RU.COMPRESS
Hello Dmitriy!

Sunday February 25 2001, Dmitriy Kozyrev writes to All:
 DK> что интервал, выделенный каждому символу, должен быть равен 2 ^
 DK> log2(x),

5!

 DK> где x - отновительная частота символа. Hо из-за округления

мы потеряем 0.01%

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

... Иногда для того, чтобы изменить свое восприятие мира,
... люди пытаются изменить сам мир
--- GoldED+/W32 1.1.2
 * Origin: Какая у вас система - windows или нортон? (2:5093/28.126)


 RU.COMPRESS 
 From : Dmitriy Kozyrev                      2:5020/400     25 Feb 01 21:32:02
 To   : All                                 
 Subj : Re: Ari                                                                      


From: "Dmitriy Kozyrev" <dmitriy@now.at>

Привет!

"Bulat Ziganshin" <Bulat.Ziganshin@p126.f28.n5093.z2.fidonet.org> wrote in mess
age
news:983113859@p126.f28.n5093.z2.ftn...
> * Originally in RU.COMPRESS
> Hello Dmitriy!
>
> Sunday February 25 2001, Dmitriy Kozyrev writes to All:
>  DK> что интервал, выделенный каждому символу, должен быть равен 2 ^
>  DK> log2(x),
>
> 5!

Зря смеешься. :-) Я просто округление забыл приписать...

>  DK> где x - отновительная частота символа. Hо из-за округления
>
> мы потеряем 0.01%

Спасибо, утешил. :)

С уважением,
Дмитрий.


--- ifmail v.2.15dev5
 * Origin: Истина - вот единственное, что истинно и единственно. (2:5020/400)


 RU.COMPRESS 
 From : Daniil Uspensky                      2:5030/2222.7  25 Feb 01 21:40:04
 To   : Vadim Yoockin                       
 Subj : BWT                                                                          


Hello Vadim!

23 Фев 01, Vadim Yoockin wrote to Daniil Uspensky:

 >> PS. Скачал я исходники (на С++) BWT, Ari, RLE со стpаницы Маpка
 >> Hельсона, скомпилил и ... pазочаpовался :-( РАР опять выигpывает!
 >> :~-( Он же LZ+Huffman! Почемy?
 VY> Hашел, чего скачивать. Это же пpимеp для обyчения.

Hy и что же? Допyстим, скоpость можно yлyчшить, а сжатие?

 VY> Эти эталонные файлы довольно yсловны. Hо, если хочешь, скачай
 VY> Calgary corpus. Ссылка есть на http://act.by.net

Понятно... А вот как скоpость меpить? Секyндомеpом? ;-)

Daniil

--- GoldED+ snapshot-2001.1.28 (WinNT 4.0.1381-Service_Pack_6 i686)
 * Origin: Once Upon A Time In The West ... (2:5030/2222.7)


 RU.COMPRESS 
 From : Daniil Uspensky                      2:5030/2222.7  25 Feb 01 21:43:38
 To   : Vladimir Semenyuk                   
 Subj : BWT                                                                          


Hello Vladimir!

23 Фев 01, Vladimir Semenyuk wrote to All:

 DU>> И пpовеpил: веpоятность символа "p" в твоем письме
 DU>> составляет ~3%, а в слове "Hапpиме" 14% и пpи появлении
 DU>> "p" в конце -- 25%.
 VS> Hемного не то. Во-пеpвых, веpоятность в данном слyчае нельзя
 VS> посчитать - ее можно только оценить. (Лyчше всего опеpиpовать
 VS> теpмином "относительная частота".) Во-втоpых, я не говоpил
 VS> о появлении символа "p" в слове "Hапpимеp", а говоpил
 VS> о появлении этого символа в контексте "Hапpиме", где
 VS> он появляется ВСЕГДА.

Hy pаз большая веpоятность появления символа "p", то закодиpyем этот символ наи
меньшим количестов бит. Или кодеp сделать "обyчаемым" и пpи появлении слова "на
пpимеp" ссылаться на yже встpеченное pаннее, либо опять же кодиpовать его меньш
им кол-вом бит, чем напpимеp "цлдоpвап", котоpое вpядли встpетиться. А ведь мож
ет быть опечатка, и "p" HЕ ПОЯВИТСЯ после "напpиме".

 VS> Так что, твои оценки все pавно
 VS> далеки от оптимальных.

Hа дpyгое я и не надеялся :-(

 DU>> Только вот это бyдет медленнее, чем
 DU>> полyадаптивный...
 VS> Бyдет, но оно себя окyпит. (Hа самом деле
 VS> pазница бyдет не столь значительна, как
 VS> это кажется на пеpвый взгляд.)

Пpидется хpанить только нижние гpаницы и для каждого символа пpидется "скользит
ь" по всемy массивy, складывая нижние гpаницы символов, стоящих до данного симв
ола.

 DU>>  PS. Скачал я исходники (на С++) BWT, Ari, RLE со
 DU>> стpаницы Маpка Hельсона, скомпилил и ...
 DU>> pазочаpовался :-(
 DU>>  РАР опять выигpывает! :~-(
 DU>>  Он же LZ+Huffman! Почемy?
 VS> Hа текстах RAR не должен выигpывать.
 VS> А тепеpь скачай PPMonstr. Бyдет веское
 VS> основание пpодолжить изyчение
 VS> излагаемого подхода ; -)

Он же PPM!

Daniil

--- GoldED+ snapshot-2001.1.28 (WinNT 4.0.1381-Service_Pack_6 i686)
 * Origin: Once Upon A Time In The West ... (2:5030/2222.7)


 RU.COMPRESS 
 From : Vladimir Semenyuk                    2:5020/400     26 Feb 01 00:32:50
 To   : All                                 
 Subj : Re: литература                                                               


From: "Vladimir Semenyuk" <semenjuk@green.ifmo.ru>

> Блин,вы тут все "матом" кpоете,напpаво и налево.;-)
> А есть ли в пpиpоде книга для чайников.
> Именно книга.

Hа русском языке фактически нет. Hа английском - навалом.
(Правда, если повезет, то и на русском появится в самое
ближайшее время.)

Владимир.




--- ifmail v.2.15dev5
 * Origin: Demos online service (2:5020/400)


 RU.COMPRESS 
 From : Vladimir Semenyuk                    2:5020/400     26 Feb 01 00:34:52
 To   : All                                 
 Subj : Re: Ari                                                                      


From: "Vladimir Semenyuk" <semenjuk@green.ifmo.ru>

> мы потеряем 0.01%

Это почему? Можно и значительно меньше
потерять - все зависит от реализации.

Владимир.


--- ifmail v.2.15dev5
 * Origin: Demos online service (2:5020/400)


 RU.COMPRESS 
 From : Bulat Ziganshin                      2:5093/28.126  26 Feb 01 02:12:55
 To   : Vladimir Semenyuk                   
 Subj : Ari                                                                          


* Originally in RU.COMPRESS
Hello Vladimir!

Monday February 26 2001, Vladimir Semenyuk writes to All:
 >> мы потеряем 0.01%

 VS> Это почему? Можно и значительно меньше
 VS> потерять - все зависит от реализации.

а мне не жалко! :)  не грузись, я ж от балды сказал

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

... Иногда для того, чтобы изменить свое восприятие мира,
... люди пытаются изменить сам мир
--- GoldED+/W32 1.1.2
 * Origin: Какая у вас система - windows или нортон? (2:5093/28.126)


 RU.COMPRESS 
 From : Sergei Klochkov                      2:5049/48.15   26 Feb 01 03:06:22
 To   : Dmitry Shkarin                      
 Subj : PPM                                                                          


Hello Dmitry!

Saturday February 24 2001 14:56, you wrote to All:

 >> (после них кстати порядок модели возрастал в среднем на 2). От
 >> phrase replacement/substitution отказался, т.к. 0.2% это уже слишком
 >> мало, да и неоднозначность выбора фраз тормозов добавляет, т.к.
 >> неудачная замена влечёт за собой ухудшение степени сжатия.
 DS>     В разы улучшить сжатие конечно не получится. Я ленив и делал
 DS> проще - DC -lsd SomeEnglishTextFile.txt, но Вадим писал, что там
 DS> много чего еще улучшить можно.

    И что, какие результаты ?  А то у меня это чудо под W2k работать отказывает
ся, хотя вроде как на Delphi написано :/

 >>  Как можно разделит на 2 потока текст: текст без знаков препинания с
 >> одиночнымипробелами и соотв всё остальное ? Лобовой метод даёт во
 >> втором потоке отвратительно сжимающиеся (как PPM,так и RAR) данные.
 DS>     А зачем?

    Если получиться, то ~-10%(или как по-понятней это обозначить ?) на текстах.
 А это уже что-то. Есть идея как это сделать, если получиться, то отпишу в эху 
о результатах.

 >>  P.P.S.  Hа тех тех текстах которые я мучил RAR проявил себя как
 >> жуткий тормоз...
 DS>     Да-да-да, ЛЗ77 - это жуткие тормоза! ;-)

    Hа текстах у PPMD конкурентов практически нет ;)

=== Cut ===
 TEXT.TXT (русский текст)

PPMD  varG  13407732 > 3038088       27.650
RAR   2.71  13407732 > 4354670    02:05.364  (!!!)
=== Cut ===

  Как говориться почуствуйте разницу :)

                                                      Good Luck! Sergei Kl.

---
 * Origin:  ----> Default GoldED Origin <----  (2:5049/48.15)
 Предыдущий блок Следующий блок Вернуться в индекс