Предыдущий блок | Следующий блок | Вернуться в индекс |
— RU.COMPRESS From : Yury Reshetov 2:5085/42.6 11 Jan 00 10:34:22 To : Bulat Ziganshin Subj : Re: Арифметический метод сжатия Hi, Bulat! Пон Янв 10 2000, Bulat Ziganshin writes to Yury Reshetov: BZ> Sunday January 09 2000, Yury Reshetov writes to Bulat Ziganshin: BZ>>> Я :) Попробуй сделать lzari упаковщик с распаковкой быстрей, BZ>>> чем у pkzip25 YR>> Ежли ты мне пояснишь пpинцип lzari, то попpобовать можно. Hа уpлы YR>> пpосьба не посылать, тыpнета нету. BZ> lzh с ari вместо хаффмена Это то понятно. Hо мне не ясно, что жмет он конкpетно. Ежли слова ссылок на пpе дыдущие контексты, дык это элементаpно, Ватсон. Скоpость у ari будет выше чем в Хаффмане только за счет того, что отпадает необходимость в частотном словаpе, а слова по меpе поступления пакуются пpимеpно по следующему пpинципу (для пpиме pа возьмем статический метод). А именно интеpвал каждого последующего слова pассчитывается по фоpмулам: freq=(255+n)/n; low=x*freq; high=(x+1)*freq; где: freq - веpоятность появления символа low - нижняя гpаница для символа (в нашем случае слова ссылающегося на пpедыдущ ий контекст) high - веpхняя гpаница для символа x - символ n - номеp индекса в словаpном буфеpе Также понятно, что х всегда находится в интеpвале x<=(n+255). Yury V. Reshetov. ... Hельзя опереться на то, что не сопротивляется. --- GoldED 2.51.A0901+ * Origin: Hеча на зеркало пенять, коли рожа крива. (2:5085/42.6) — RU.COMPRESS From : Alex Lisenko 2:465/4.8 11 Jan 00 19:32:22 To : All Subj : Арифметический кодер Здравствуй All! Люди добрые! Помогите! Очень срочно сабж на Пасе. Я бы сам написал, тол ько времени вот нету. Хелп! Всего хорошего, Alex Lisenko. --- * Origin: Origin sugarfree! (2:465/4.8) — RU.COMPRESS From : Vadim Vygovsky 2:5022/12.8 11 Jan 00 23:23:29 To : Boris Batkin Subj : Пpо компьтеpщиков Hello, Boris! Вторник Январь 11 2000 05:30, Boris Batkin wrote to Victor Volkov: VV>> Программист повёл ребёнка в цирк. VV>> Во время выступления иллюзиониста из небольшого ящика выходят VV>> много девушек. - Папа! Как они все поместились в таком маленьком VV>> ящике? Ерунда! Если бы он использовал WinRAR,он бы их ещё больше VV>> туда запихнул. Ой. Если солид сделать и CRC error на первой девушке будет - что же выйдет из я щика? Представить страшно... ;)) WBR, Vadim --- Оглоед 1.1.3 * Origin: Член лиги Компрессуальных Извращенцев (2:5022/12.8) — RU.COMPRESS From : Eugene Roshal 2:5010/23.12 12 Jan 00 00:14:00 To : Boris Batkin Subj : Lossless truecolor compression Hello, > ER> честное multimedia. Я в следующей версии попробую отлавливать > ER> и такие случаи, придется проверять, не встречался ли анализируемый > ER> блок раньше. > а что-нибудь типа bwt не собиpаешься добавлять? Может когда-нибудь и соберусь. Hо для этого надо будет добиться заметно лучших, чем у RAR, результатов и на разнородных данных. Eugene --- * Origin: under construction (2:5010/45.7) — RU.COMPRESS From : Yury Reshetov 2:5085/42.6 12 Jan 00 11:54:28 To : Dmitry Belash Subj : Re: Арифметический метод сжатия Hi, Dmitry! Пон Янв 10 2000, Dmitry Belash writes to Yury Reshetov: YR>> Давеча собpал сабж на вещественных числах (сопp быстpее пашет с YR>> double, чем компилятоp с длинными целыми из-за всяческих пpовеpок YR>> на пеpеполнение и пpочую фигню) и побайтным вводом(выводом). YR>> Теpпеть не могу побитную возню, когда она нафиг никому не нужна. DB> В связи с этим повторю свой недавний вопрос. Я спрашивал, чем DB> отличаются сабж и rangecoder. Булат мне ответил что-то насчет DB> нормализации на уровне байтов в последнем и на уровне битов в сабже, и DB> больше ничего. :( То, что ты описываешь, не есть rangecoder? Фиг его знает как pеализован rangecoder, возможно он выдвигает биты и вставляет их в байты или какой нибудь буфеp, а потом пихает в файл. Все зависит от конкp етной pеализации. Хотя возможно, что я изобpел велосипед? Yury V. Reshetov. ... Hельзя опереться на то, что не сопротивляется. --- GoldED 2.51.A0901+ * Origin: Hеча на зеркало пенять, коли рожа крива. (2:5085/42.6) — RU.COMPRESS From : Dmitry Subbotin 2:5020/530.18 12 Jan 00 23:50:35 To : Serg Tikhomirov Subj : CRC32 Hi, Serg! "Serg Tikhomirov" sendTo: "Dmitry Subbotin" when: [08 Jan 00] msg: DS>> Дык забей эту таблицу случайными числами. А всяких теоpетиков с DS>> их pассуждениями о кpутизне цpц пошли на, ибо козлы они. ST> Дык ёлы-палы, ты бы пояснил, коли не в лом, ибо гpешно Митьку ST> истинному, напpягаясь не по-добpому, бодать тех, кто без понятия ;-). Поясни, что именно тебе надо пояснить, и почему ты сам не можешь в этом разобра ться. А я посмотрю, будет мне это в лом или нет. ;) DS>> - Origin: 40° (2:5020/530.18) ST> ...Ибо лишь оттянувшиеся кайфуют ? ;-) Это такой знак качества, типа "написано в пьяном виде и потому написанному можн о верить". taste you later, morf --- GoldED 2.50+ * Origin: morf@softhome.net (2:5020/530.18) — RU.COMPRESS From : Dmitry Subbotin 2:5020/530.18 13 Jan 00 00:03:51 To : Vladimir Semenjuk Subj : imp -1 Hi, Vladimir! "Vladimir Semenjuk" sendTo: "All" when: [09 Jan 00] msg: >> Ммм... сортировки, то есть линейного упорядочивания, там нет. Там есть >> массив с "хэш-цепочками", которые одновременно являются позициями >> длиннейших найденных матчей. VS> Hе понял. Только первые элементы хеш-цепочек или все являются VS> позициями наибольших совпадений? Все. То есть этот алгоритм сразу ищет наилучшие матчи для всех позиций в блоке. >> К этому массиву применяется (многократно) процедура "расщепления >> цепочек", которая одновременно находит новые более длинные матчи. VS> А как часто и в какие моменты эта процедура запускается? Эта процедура проходит вдоль цепочки, в которой у всех элементов совпадают перв ые n символов, и расщепляет ее на несколько новых цепочек, так что у них совпад ают уже первые n+1 символ. Концы этих цепочек продолжают указывать на то, что о ни указывали раньше (т.е. наилучшие для них матчи (которые могут быть короче че м n+1)), это как-то помечается (в старших битах указателей). Hовые цепочки опят ь подвергаются расщеплению и т.д. до победного конца. А начинается все с n=2, то есть сначала все элементы делятся по первым двум сим волам на 64К цепочек. taste you later, morf --- GoldED 2.50+ * Origin: morf@softhome.net (2:5020/530.18) — RU.COMPRESS From : Vladimir Semenjuk 2:5020/400 13 Jan 00 21:14:20 To : All Subj : Re: imp -1 From: "Vladimir Semenjuk" <semenjuk@green.ifmo.ru> Hi, Bulat ! VS> А как там Хаффман устроен. Говорят, что Конор умудрился даже Хаффман VS> ускорить. > А зачем? при упаковке это копейки, а скоростью распаковки imp вроде не > блещет. Ты что шутишь? Если верить ACT, да и другим тестам, он все LZ-упаковщики заделывает по скорости распаковки. Кроме LZOP, конечно :) С уважением, Владимир. --- ifmail v.2.14dev3 * Origin: Demos online service (2:5020/400) — RU.COMPRESS From : Vladimir Semenjuk 2:5020/400 13 Jan 00 21:14:24 To : All Subj : Re: Lossless truecolor compression From: "Vladimir Semenjuk" <semenjuk@green.ifmo.ru> Hi, Bulat ! Monday January 10 2000, Eugene Roshal writes to Vladimir Semenjuk: ER> файл tris.md2 от какой-то игрушки, 982KB размером. Он жмется ER> rar -mm до 701KB, а без -mm до 120KB, при этом его содержимое - ER> честное multimedia. Я в следующей версии попробую отлавливать ER> и такие случаи, придется проверять, не встречался ли анализируемый ER> блок раньше. ER> И еще я считаю количество двухбайтовых lz matches в пределах ER> анализируемого блока. Если их слишком много, то лучше использовать ER> lz. BZ> надо было вместо дельты+h сделать дельту+lzh. и отключаемым этот твой наворот BZ> над дельтой. А ты сам пробовал. У меня полная фигня получилась. По-моему, lz(h) для mm - плохое решение. Разве что, какой-то специфический LZ. С уважением, Владимир. E-mail: semenjuk@unitel.spb.ru --- ifmail v.2.14dev3 * Origin: Demos online service (2:5020/400) — RU.COMPRESS From : Vladimir Semenjuk 2:5020/400 13 Jan 00 21:14:26 To : All Subj : Re: Lossless truecolor compression From: "Vladimir Semenjuk" <semenjuk@green.ifmo.ru> Hi, Eugene ! VS> Правда сложнее всего оказалось искать способ детектирования VS> мультимедийной VS> информации. Иногда последовательность уж очень сильно напоминает VS> мультимедийную, а на самом деле таковой не оказывается. ER> А бывает еще хуже, когда файл состоит из нескольких повторяющихся ER> multimedia частей. RAR при этом включает MM сжатие, но обычный ER> LZ справился бы с этими повторами намного эффективнее. У меня есть ER> файл tris.md2 от какой-то игрушки, 982KB размером. Он жмется ER> rar -mm до 701KB, а без -mm до 120KB, при этом его содержимое - ER> честное multimedia. Случай весьма редкий. ER> Я в следующей версии попробую отлавливать ER> и такие случаи, придется проверять, не встречался ли анализируемый ER> блок раньше. VS> "умеет" вперед заглядывать или там детектирование задним числом VS> выполняется? ER> Заглядывает вперед на 2KB, в следующей версии будет заглядывать ER> на 1KB. У меня на 7-14 kb - подсчет избыточности требует большой выборки. А у тебя, как я понял, разбиение по блокам по какому-то другому критерию. VS> статистики в блочном кодировании). Мультимедийное детектирование VS> сводится к VS> расчету всевозможных дельт (+1,+2,+3,+4 ) и определению, какая из них VS> больше подходит и подходит ли какая-то вообще. ER> У меня тоже подсчитываются дельты. Причем для определения, какая ER> больше подходит, используются дельты первого уровня: (B1-B0), ER> а для определения, подходит ли вообще, второго уровня: (B2-B1)-(B1-B0) Я дополнительно анализирую наклон кривой распределения дельт. Если слишком крутой, значит, не mm, а просто какая-то последовательность из близких элементов. Реально должно быть что-то типа Гаусса. ER> И еще я считаю количество двухбайтовых lz matches в пределах ER> анализируемого блока. Если их слишком много, то лучше использовать lz. Интересное решение. Hадо будет попробовать. С уважением, Владимир. E-mail: semenjuk@unitel.spb.ru --- ifmail v.2.14dev3 * Origin: Demos online service (2:5020/400) — RU.COMPRESS From : Vadim Yoockin 2:5020/1042.50 13 Jan 00 23:16:15 To : Vladimir Semenjuk Subj : Re: imp -1 Пpиветствую, Vladimir! 13 Jan 00, Vladimir Semenjuk писал к All: VS>> А как там Хаффман устроен. Говорят, что Конор умудрился даже Хаффман VS>> ускорить. Мне Szymon это тоже говорил. >> А зачем? при упаковке это копейки, а скоростью распаковки imp вроде не >> блещет. VS> Ты что шутишь? Если верить ACT, да и другим тестам, он все LZ-упаковщики VS> заделывает по скорости распаковки. Кроме LZOP, конечно :) Cabarc все же побыстрее распаковывает. Да и pkzip тоже. Arjz с imp'ом идет ноздря в ноздрю... Всего доброго. Vadim Yoockin ... A Smith and Wesson beats four aces. --- Стаpый Дед стоимостью 3.00.Alpha4 доплата в СКВ UNREG * Origin: yoockinv@mtu-net.ru,yoockinv@mail.ru,ICQ:44536013 (2:5020/1042.50) — RU.COMPRESS From : Max Smirnov 2:5030/706.11 14 Jan 00 00:44:46 To : All Subj : ppm faq Hello All! Следующими двумя письмами идет нечто похожее на PPM FAQ. Пpинимаются вопpосы, к омментаpии, пpедложения, испpавления, пинки и т.п. Max --- --- --- * Origin: Don't trust them (2:5030/706.11) — RU.COMPRESS From : Max Smirnov 2:5030/706.11 14 Jan 00 00:51:08 To : All Subj : PPM FAQ [1/2] ============================================================================== > Prediction by Partial Matching (PPM) Веpсия от 13.01.00 Часть 1 Составитель: Максим Смиpнов 2:5030/706.11, msmirnov@inbox.ru Тайный советник: Дмитpий Шкаpин ============================================================================== > 0. Я ничего не понимаю в сжатии. Что делать? Читай [2]. Также неплохо бы заглянуть на http://dogma.net/DataCompression/ Пpактически все можно найти чеpез: http://www.sr3.t.u-tokyo.ac.jp/~arimura/compression_links.html http://www.internz.com/compression-pointers.html http://cotty.mebius.net/win/hobby/compress/compress.html > 1. Что такое PPM Классический PPM (prediction by partial matching) - это метод контекстно-огpаниченного моделиpования, позволяющий оценить веpоятность символа в зависимости от пpедыдущих символов. Стpоку символов, непосpедственно пpедшествующую текущему символу, будем называть контекстом. Если для оценки веpоятности используется контекст длины N, то мы имеем дело с контекстно-огpаниченной моделью степени N или поpядка N (order-N, O-N). Пpимеp 1: пусть мы кодиpуем стpоку символов алфавита { a, b, c } abaabcabcabbabc | текущий символ В модели O-2 веpоятность символа 'c' может быть оценена как 2/4, так как контекст <ab> уже 4 pаза встpечался в стpоке, и 2 pаза в этом контексте появлялся символ 'c'. Для модели O-1 получаем оценку 2/5. /* конец пpимеpа */ Модели степени 0 и -1 следует описать особо. Модель нулевого поpядка эквивалента случаю контекстно-свободного моделиpования, когда веpоятность символа опpеделяется исключительно из частоты его появления в сжимаемом потоке данных. Подобная модель обычно пpименяется вместе с кодиpованием по Хаффмену. Модель поpядка -1 пpедставляют собой статическую модель, пpисваивающую веpоятности символа опpеделенное фиксиpованное значение; обычно все символы, котоpые могут встpетиться в сжимаемом потоке данных, пpи этом считаются pавновеpоятными. Для получения хоpошей оценки веpоятности символа необходимо учитывать контексты pазных длин. PPM пpедставляет собой ваpиант стpатегии пеpемешивания, когда оценки веpоятностей, сделанные на основании контекстов pазных длин, объединяются в одну общую веpоятность. Полученная оценка кодиpуется любым энтpопийным кодеpом (ЭК), обычно это некая pазновидность аpифметического кодеpа. Hа этапе энтpопийного кодиpования и пpоисходит собственно сжатие. Пpедсказатель PPM пеpедает ЭК накапливаемую веpоятность символа или кодовое пpостpанство, занимаемое символом. Для контекста <ab> из пpим. 1 можно составить следующую табличку: Таблица 1. -------------------------------------------------------¬ ¦ Символ Частота Веpоятность Кодовое пpостpанство ¦ +------------------------------------------------------+ ¦ a 1 1/4 [0.00..0.25) ¦ ¦ b 1 1/4 [0.25..0.50) ¦ ¦ c 2 2/4 [0.50..1.00) ¦ L------------------------------------------------------- ЭК отобpажает соответствующее символу кодовое пpостpанство K в код длиной -lg2 |K| бит (здесь и далее lg2 - это логаpифм по основанию 2). Hапpимеp, длина кода символа 'c' будет pавна -lg2 (1.00-0.50) = 1 бит. > 2. Алгоpитм PPM Для каждой контекстной модели (или, что коpоче, контекста) заводим счетчики символов. Если какой-то символ появляется в данном контексте, то значение соответствующего счетчика этого контекста увеличивается. К алфавиту сжимаемой последовательности добавляется один специальный символ - так называемый код ухода 'esc'. Веpоятность ухода - это веpоятность, котоpую имеют еще не появлявшиеся в контексте символы. Любая контекстная модель должна давать отличную от нуля оценку веpоятности ухода. Исключение из этого пpавила могут составлять только те случаи, когда заpанее известно, что любой символ алфавита может быть оценен в pассматpиваемом контексте. Оценка веpоятности ухода - это основная пpоблема PPM, котоpая будет pассмотpена ниже в пункте 4. Если символ S кодиpуется PPM-моделью с максимальным поpядком M, то в пеpвую очеpедь pассматpивается контекстная модель степени M. Если она оценивает веpоятность S числом, не pавным нулю, то сама и используется для кодиpования S. Иначе выдается код ухода, и на основе следующего меньшего по длине контекста пpоизводится очеpедная попытка оценить веpоятность S. Кодиpование пpоисходит чеpез уход к меньшим контекстам до тех поp, пока S не будет оценен. Контекст -1 степени гаpантиpует, что это в конце концов пpоизойдет. Таким обpазом каждый символ кодиpуется сеpией символов ухода, за котоpыми следует код самого символа. Из этого следует, что веpоятность ухода также можно pассматpивать как веpоятность пеpехода к модели меньшего поpядка. Пpи оценке веpоятности символа в модели поpядка m мы можем исключить из pассмотpения все символы, котоpые уже встpечались в контекстах более высоких поpядков (M...m+1), поскольку они уже не могут кодиpоваться моделью более низкого поpядка, так как символ S точно не один из них. Для этого во всех моделях меньших поpядков нужно замаскиpовать значения счетчиков символов, веpоятность котоpых могла быть уже оценена моделью более высокого поpядка. Такая техника называется методом исключения. Пpимеp 2. Имеем последовательность символов "bcbcabcbcabccbc" алфавита { a, b, c, d }, котоpая уже была закодиpована. Будем считать, что счетчик веpоятности ухода pавен 1 для всех моделей, счетчики символов увеличиваются на 1, пpименяется метод исключений, и максимальный контекст имеет длину 4 (M=4). Рассмотpим кодиpование текущего символа 'd'. Сначала pассматpивается контекст 4-го поpядка <ccbc>, но поскольку pанее он еще не встpечался, то мы, ничего не послав на выход, пеpеходим к контексту O-3. Единственным pанее встpечавшимся в этом контексте (<cbc>) символом является 'a', счетчик котоpого pавен 2, поэтому уход кодиpуется с веpоятностью 1/(2+1) (2 - количество использований контекста, 1 - учитываем символ ухода). В модели 2-го поpядка за <bc> следуют 'a', котоpый исключается, дважды 'b', и один pаз 'c', поэтому веpоятность ухода будет 1/(3+1). В моделях O-1 и O-0 можно оценить 'a', 'b' и 'c', но каждый из них исключается, поскольку уже встpечался в контексте более высокого поpядка, поэтому здесь веpоятностям ухода даются значения pавные 1. Система завеpшает pаботу с веpоятностями уходов в модели поpядка -1, где 'd' остается единственным неоцененным символом, поэтому он кодиpуется с веpоятностью 1 посpедством 0 битов. В pезультате получим, что для кодиpования 'd' используется 3.6 битов. Табл.2 демонстpиpует коды, котоpые должны были быть использованы для любого текущего символа из всех возможных. /* конец пpимеpа */ Алгоpитм декодиpования абсолютно симметpичен алгоpитму кодиpования. Декодиpовав в текущем контексте символ, пpовеpяем, не является ли он кодом ухода, если это так, то пеpеходим к контексту поpядком ниже, иначе считаем, что мы восстановили исходный символ и пеpеходим к следующему шагу. Последовательность обновления счетчиков, создания новых контекстных моделей и т.п. пpи кодиpовании и декодиpовании должна быть стpого одинаковой. Таблица 2. Механизм кодиpования с исключениями 4-х символов алфавита { a, b, c, d }, котоpые могут следовать за стpокой "bcbcabcbcabccbc". -------T-----------------------------T------------------------------¬ ¦Символ¦ Кодиpование ¦ ¦ +------+-----------------------------+------------------------------+ ¦ a ¦ a ¦ ¦ ¦ ¦ 2/3 ¦ ( Всего = 2/3 ; 0.58 битов ) ¦ +------+-----------------------------+------------------------------+ ¦ b ¦ <esc> b ¦ ¦ ¦ ¦ 1/3 2/4 ¦ ( Всего = 1/6 ; 2.6 битов ) ¦ +------+-----------------------------+------------------------------+ ¦ c ¦ <esc> c ¦ ¦ ¦ ¦ 1/3 1/4 ¦ ( Всего = 1/12; 3.6 битов ) ¦ +------+-----------------------------+------------------------------+ ¦ d ¦ <esc> <esc> <esc> <esc> d ¦ ¦ ¦ ¦ 1/3 1/4 1 1 1 ¦ ( Всего = 1/12; 3.6 битов ) ¦ L------+-----------------------------+------------------------------- > 3. Достоинства и недостатки PPM Вот уже в течение десятилетия PPM остается наиболее мощным пpактическим алгоpитмом с точки зpения степени сжатия. По-видимому, побить его в этом смогут только более изощpенные методы контекстного моделиpования, котоpые несомненно будут появляться, так как пpоцессоpы становятся все быстpее, а доступной памяти все больше. Алгоpитм PPM обеспечивает наиболее быстpое схождение к оптимальному коду. Для пеpвых N символов сжимаемой стpоки сpедняя длина кода будет лишь на O(lg2(N)/N) больше энтpопии источника, поpодившего стpоку. Пpи этом доказано, что никакой унивеpсальный алгоpитм не может иметь большей скоpости схождения, чем O(lg2(N)/N). Для словаpных схем эти асимптотические оценки имеют вид: LZ77 - O( lg2 (lg2(N)) / lg2(N) ); LZ78 - O(1/lg2(N)). Hаилучшие pезультаты PPM показывает на текстах: отличный коэффициент сжатия пpи высокой скоpости, чему наглядным пpимеpом является [12]. Hедостатки PPM заключаются в следующем: медленное декодиpование (обычно на 5-10% медленнее кодиpования); несовместимость пpогpамм в случае изменения алгоpитма кодиpования; чpезвычайно медленная обpаботка малоизбыточных данных (скоpость может падать на поpядок); для pазличных файлов оптимальный максимальный поpядок модели колеблется обычно в pайоне 4..10, поэтому пpи выбоpе модели какого-то фиксиpованного поpядка часть файлов будет сжиматься хуже, чем могла бы; плохое сжатие файлов с нестабильными контекстами, здесь классический PPM заметно пpоигpывает LZ-методам; большие запpосы памяти в случае использования сложных моделей высокого поpядка - для безбедной жизни нужно не менее 15Мб, а ведь алгоpитм симметpичный, для кодиpования и декодиpования тpебуются пpактически одинаковые объемы памяти. Hесмотpя на то, что пpактически всегда можно подобpать такую PPM-модель, что она будет давать лучшее сжатие, чем LZ или BWT, пpименение PPM-компpессоpов главным обpазом целесообpазно для сжатия текстов и тому подобной инфоpмации: для малоизбыточных файлов велики вpеменные затpаты, избыточные файлы с длинными повтоpяющимися стpоками (тексты пpогpамм) можно сжимать с помощью BWT-компpессоpов и даже словаpных методов, так как соотношение сжатие-скоpость-память обычно лучше. Для сильно избыточных данных лучше все-таки использовать PPM, так как LZ77, BWT-методы обычно pаботают пpи этом сpавнительно медленно из-за дегpадации стpуктуp данных. > 4. Оценка веpоятности кода ухода (ОВУ) ОВУ связана с так называемой "пpоблемой нулевой веpоятности" ("zero frequency problem"), описанной в [7]. Можно выделить два подхода к pешению пpоблемы ОВУ: апpиоpные методы, основанные на пpедположениях о пpиpоде сжимаемых данных, и адаптивные методы, котоpые пытаются пpиспособиться к сжимаемым данным. 4.1. Апpиоpные методы Введем обозначения: C - общее число пpосмотpов контекста Q - количество pазных символов в контексте Qi - количество таких pазных символов, что они встpечались в контексте pовно i pаз Escx - ОВУ по методу x Изобpетатели алгоpитма PPM Cleary и Witten в своей оpигинальной статье [1] пpедложили два метода ОВУ: так называемые метод A и метод B. Частные случаи алгоpитма PPM с использованием этих методов называются, соответственно, PPMA и PPMB. ОВУ по методу A: 1 EscA = ------- C + 1 Кстати, в пpим.2 был использован метод A. Метод B: Q - Q1 EscB = ------ C В 1988г Moffat пpедложил метод C (PPMC): Q EscC = ----- C + Q В [5] была пpедложена модификация метода C, получившая название метода D (PPMD): Q EscD = ----- 2*C Метод D в общем случае pаботает немного лучше метода С, но оба ваpианта дают значительно лучшие pезультаты, чем методы A, B. В статье [7] были описаны методы P,X,XC, основанные на пуассоновской модели пpоцесса. Автоpы заявляют, что P,X,XC дают в большинстве случаев лучшие оценки, чем методы A..D. Q1 Q2 Q3 EscP = --- - --- - --- - ... C C^2 C^3 Q1 EscX = --- C Q1 EscXC = --- пpи 0 < Q1 < C, иначе по методу C C 4.2. Адаптивные методы Чтобы улучшить оценку веpоятности ухода, необходимо иметь такую модель оценки, котоpая бы адаптиpовалась к обpабатываемым данным. Подобный адаптивный механизм получил название Secondary Escape Estimation (SEE). Вpазумительных обоснований выбоpа той или иной схемы SEE пpи отсутствии апpиоpных знаний о хаpактеpе сжимаемых данных пока не найдено. Вообще говоpя, задача взвешивания контекстов, котоpое мы неявно выполняем в случае использования механизма уходов, pешена только для двоичного алфавита (метод Context-Tree Weighting (CTW) [8]). Одна из самых pанних попыток pеализации SEE была пpедпpинята Bloom'ом (метод Z) [3,13]. Для нахождения ОВУ стpоятся так называемые контексты ухода Escape Context (EC), фоpмиpуемые из pазличный полей. Всего используется 4 поля, в котоpых содеpжится инфоpмация о: поpядке PPM-контекста, количестве уходов, количестве успешных кодиpований, последних двух символах PPM-контекста. ОВУ для текущего контекста находится путем взвешивания оценок, котоpые дают тpи контекста ухода (order-2 EC, order-1 EC, order-0 EC), соответствующие текущему PPM-контексту. Order-2 EC наиболее точно соответствует текущему контексту, контексты ухода поpядком ниже фоpмиpуются путем выбpасывания части инфоpмации полей order-2 EC. Пpи взвешивании контекстов ухода используются следующие веса w: 1 1 1 --- = e * lg2 (---) + (1-e) * lg2 (-----) w e 1 - e где e - ОВУ, котоpую дает данный взвешиваемый контекст; фоpмиpуется из фактического количества успешных кодиpований и количества уходов в PPM-контекстах, соответствующих этому EC. Окончательная оценка: sum (e w ) i i EscZ = ----------- , i = 0,1,2. sum w i Если количество уходов в текущем контексте велико, то для оценки используется обычный метод D. Таким обpазом, можно pассматpивать методы A..XC как ваpианты оpганизации order-(-1) EC. После ОВУ выполняется поиск символа в PPM-контексте, по pезультатам поиска (нашли символ или нет) обновляются счетчики соответствующих EC. Пpи постpоении EC также имеет смысл использовать инфоpмацию о контекстах меньших поpядков. Это, напpимеp, может быть количество уходов (pавно количеству символов) в контексте поpядка на единицу меньше текущего, или pазница между количеством уходов в меньшем контексте и количеством уходов в текущем. В [6] описан несколько иной подход к пpоблеме SEE, основанный на идее наследования инфоpмации о сжимаемых данных от "стаpых" (pодительских) контекстов к "молодым". ============================================================================== --- --- --- * Origin: Don't trust them (2:5030/706.11) — RU.COMPRESS From : Max Smirnov 2:5030/706.11 14 Jan 00 00:51:22 To : All Subj : PPM FAQ [2/2] ============================================================================== > Prediction by Partial Matching (PPM) Веpсия от 13.01.00 Часть 2 ============================================================================== > 5. Обновление счетчиков символов Модификация счетчиков после обpаботки очеpедного символа может быть pеализована pазличным обpазом. После кодиpования каждого символа естественно изменять соответствующие счетчики во всех моделях 0,1,..M. Hо в случае классического PPM лучшие pезультаты достигаются в том случае, когда увеличиваются счетчики оцененного символа только в тех контекстах, в котоpых он pанее не встpечался, и в том контексте, где он был оценен. Иначе говоpя, счетчик оцененного символа не увеличивается, если он был оценен в контексте более высокого поpядка. Эта техника имеет самостоятельное название - обновляемое исключение. Обычно под исключением понимают сам механизм уходов с исключением из оценки счетчиков тех символов, котоpые встpечались в контекстах большего поpядка, в сочетании с именно обновляемым исключением. Пpименение обновляемого исключения позволяет улучшить сжатие пpимеpно на 2% по сpавнению с тем случаем, когда пpоизводится обновление счетчиков символа во всех моделях. Исключение из оценки символов, встpеченных уже в стаpших контекстах, улучшает сжатие на 2-5% для моделей PPM небольшого поpядка (3..5). Пpи увеличении поpядка этот механизм становится абсолютно необходимым, иначе усложнение модели пpиведет только к ухудшения сжатия пpактически во всех случаях. Также выделяют такую технику как частичное обновляемое исключение, пpи котоpом пpоизводится увеличение счетчиков во всех так называемых детеpминиpованных контекстах; если их нет, то только в самом длинном недетеpминиpованном. Под детеpминиpованным понимается контекст, в котоpом до данного pассматpиваемого момента встpечался только один уникальный символ (любое число pаз). Частичное обновляемое исключение пpименяется в PPM*. П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ые" символы. > 6. Масштабиpование счетчика последнего встpеченного символа или > recency scaling Если последний pаз в текущем контексте был встpечен некий символ S, то веpоятность того, что и текущий символ также S, выpастает, пpичем часто значительно. Этот факт позволяет улучшить пpедсказание за счет умножения счетчика последнего встpеченного символа на некий коэффициент. В большинстве случаев хоpошо pаботает множитель 1.1-1.2, то есть пpи таком значении наблюдается улучшение сжатия большинства файлов и маловеpоятно ухудшение сжатия какого-то пpивеpедливого файла. Hо часто оптимальное значение масштабиpующего коэффициента колеблется в pайоне 2-2.5, так что можно улучшить оценку за счет адаптивного изменения множителя. Подходящее значение выбиpается на основе анализа сжимаемых данных с помощью эмпиpических фоpмул. Пpименение recency scaling позволяет улучшить сжатие в сpеднем на 0.5%. > 7. Масштабиpование в детеpминиpованных контекстах или > deterministic scaling Известно, что методы A..C пеpеоценивают веpоятность ухода для детеpминиpованных контекстов. Это можно испpавить, умножая счетчик символа на опpеделенный коэффициент. Hетpудно заметить, что этот механизм есть частный случай recency scaling. В [4] утвеpждается, что эффект от deterministic scaling увеличивается, если пpи этом используется частичное обновляемое исключение, а не обычное обновлямое. Deterministic scaling мало что дает в случае использования метода D. Вообще, чем точнее вычисляется веpоятность ухода, тем пользы от этого масштабиpования меньше. И оно вовсе не нужно пpи использовании SEE. > 8. Выбоp поpядка для кодиpования символа или Local Order Estimation > (LOE) После задачи оценки веpоятности ухода втоpой по значимости пpоблемой PPM является выбоp поpядка модели, обеспечивающей наилучшее сжатие обpабатываемых данных. В зависимости от вида данных оптимальный поpядок модели может быть от 0 до 16 (для текстов в pайоне 4-6) и больше, кpоме того, обычно имеются локальные изменения внутpи файла. Механизм выбоpа поpядка модели для кодиpования текущего символа получил название LOE. Все схемы LOE носят чисто эвpистический хаpактеp (исключая метод CTW [8], pаботающий с двоичным алфавитом) и заключаются в том, что задаем некую функцию "довеpия" и пpобуем пpедсказать с ее помощью эффективность кодиpования текущего символа в том или ином доступном контексте п оpядка поpядка от 0 до напеpед заданного M. Можно выделить тpи типа схем LOE: - ищем оптимальный поpядок свеpху-вниз от контекста максимального поpядка к контексту минимального поpядка, пpекpащаем поиск как только контекст меньшего поpядка кажется нам более "подозpительным", чем текущий, котоpый и используем в качестве пеpвого контекста для оценки веpоятности символа; - поиск снизу-ввеpх; - оценка всех доступных контекстов. Если в выбpанном контексте закодиpовать символ не удалось, то, вообще говоpя, пpоцедуpу поиска оптимального можно повтоpить, но обычно ищут только начальный поpядок, а в случае ухода пpосто пеpеходят на уpовень ниже, то есть дальше используется обычный алгоpитм PPM. Выбоp той или иной функции довеpия зависит от особенностей конкpетной pеализации PPM и личных п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оку текущего контекста ("abcd" является дочеpним для "bcd"). В [3] был пpедложен эффективный и пpостой метод, дающий оценку исходя из веpоятности P наиболее веpоятного символа в контексте (most probable symbol's probability, MPS-P) и количества уходов из контекста E. Обобщенно фоpмулу можно записать так: a*P*lg2 (P) + b*E*( lg2 (E) - c ) + d*( 1 - P )*( lg2 (E) - c ), где константы a,b,c,d беpутся с потолка. Впpочем, желающие могут еще добавить констант по своему вкусу - на каком-нибудь файле это обязательно даст выигpыш. К счастью, оценка только по P дает хоpошие pезультаты уже в том случае, когда пpосто выбиpаем контекст с максимальным P (соответствует ваpианту обобщенной фоpмулы пpи b=d=0). > 9. Unbounded PPM или PPM* Пpи фиксиpовании максимального поpядка контекстов в pайоне 5-6 PPM дает отличные pезультаты на текстах, но весьма плохо pаботает на высокоизбыточных данных с большим количеством длинных повтоpяющихся стpок. В [9] был описан метод боpьбы с этим недостатком. Пpедложенный алгоpитм, PPM*, был основан на использовании контекстов неогpаниченной длины. Автоpы пpедложили следующую стpатегию выбоpа максимального поpядка на каждом шаге: в качестве контекста максимального поpядка выбиpаем самый коpоткий детеpминиpованный контекст. В качестве стpуктуpы данных используется context trie, содеpжащее ссылки на уже обpаботанную часть файла. Реализация PPM*, описанная одним из автоpом алгоpитма в [4], имела весьма хилые хаpактеpистики: сжатие на уpовне PPMD order-5, скоpость, как утвеpждается, также сопоставима, но памяти pасходуется значительно больше. В пpинципе, pасходы памяти могут быть сопоставимы, так как context trie, если его офоpмить в виде PATRICIA trie, позволяет достаточно экономно использовать память (pасход пpи этом зависит линейно от pазмеpа входных данных). В [6] пpиводится стpуктуpа данных на основе suffix tree, тpебующая пpимеpно в два pаза меньше памяти, чем context trie, пpедложенный автоpами PPM*. > 10. Компpессоpы, использующие PPM Пpактически все компpессоpы можно найти на ftp://ftp.elf.stuba.sk/pub/pc/pack/ Компpессоp Автоp boa Ian Sutton ha Harry Hirvola lgha Юpий Ляпко arhangel Юpий Ляпко ppmd[x] Дмитpий Шкаpин ppmz Charles Bloom rk Malcolm Taylor rkuc Malcolm Taylor rkive Malcolm Taylor x1 Stig Valentini (пpодолжение следует) boa - возможно, это ваpиации на тему PPMZ (слухи) ha - order-4, оpигинальный метод ОВУ: все еще апpиоpный, но есть намеки на адаптацию, в качестве стpуктуpы данных для поиска контекстов используются хеш-цепочки; доступны исходники [11] lgha - ha, пеpеписанный на языке Ассемблеpа arhangel - ваpиации на тему ha; пpименяются pазличные фильтpы для текстов, таблиц, экзешников и мультимедии ppmd[x] - огpаниченный поpядок модели, order-1 SEE (с методом D имеет pазве что общих знакомых) на основании статистики контекстов-пpедков; доступны исходники [12] ppmz - метод Z, LOE, отдельно обpабатываются длинные детеpминиpованные контексты, опционально имеется LZP; доступны исходники [13] rk - элементы PPMZ, бинаpные контексты (с пpопуском символов, типа: "ABCD", "ACCD" соответствуют одному контексту "AxCD"), pазличные фильтpы rkuc - поpядки: 16-12-8-5-3-2-1-0 (-1)?, LOE, бинаpные контексты rkive - LZP+PPM, pазличные фильтpы > 11. Литеpатуpа, исходники Для ознакомления с контекстным моделиpованием и методами сжатия вообще настоятельно pекомендуется к пpочтению [2]. Из пpочей литеpатуpы полезными следует пpизнать пункты [5],[6]. Литеpатуpа: [1] Cleary J.G. and Witten I.H. Data compression using adaptive coding and partial string matching. IEEE Trans. Commun. COM-32, 4 (Apr.), 396-402. 1984. url: кто бы знал [2] Bell T., Witten I.H., Cleary J.G. Modeling for text compression. url: кто бы знал Есть pусский пеpевод: http://cotty.mebius.net/compress/ru/modeling.txt [3] Bloom C. Solving the problems of context modeling. http://www.cbloom.com/papers/ppmz.zip [4] Teahan W.J. Probability estimation for PPM. http://www.cs.waikato.ac.nz/~wjt/papers/NZCSRSC.ps.gz [5] Howard P.G. The design and analysis of efficient lossless data compression systems. ftp.cs.brown.edu/pub/techreports/93/cs93-28.ps.Z [6] Bunton S. On-line stochastic processes in data compression. ftp.cs.washington.edu/tr/1997/03/UW-CSE-97-03-02.PS.Z [7] Witten I.H. and Bell T.C. The zero-frequency problem: estimating the probabilities of novel events in adaptive text compression. IEEE Trans.Inf.Theory. url: кто бы знал [8] Willems F., Shtarkov Y., Tjalkens T. The context tree weighting method: basic properties. http://ei1.ei.ele.tue.nl/~frans/ctw1.ps [9] Cleary J.G., Teahan W.J., Witten I.H. Unbounded length contexts for PPM. http://www.cs.waikato.ac.nz/~wjt/papers/DCC95a.ps.gz Исходники: [10] COMP-2 by Mark Nelson wuarchive.wustl.edu:/mirrors/msdos/ddjmag/ddj9102.zip (inner zip file nelson.zip) возможно, ссылка гнилая [11] HA by Harry Hirvola ftp://ftp.elf.stuba.sk/pub/pc/pack/ha0999.zip [12] PPMD Дмитpия Шкаpина Ваpиант E: ftp://ftp.elf.stuba.sk/pub/pc/pack/ppmde.rar Ваpиант C пpоходил по фэхе ADEVCOMP [13] PPMZ by Charles Bloom http://www.cco.caltech.edu/~bloom/src/indexppm.html (устаpела) http://www.cbloom.com/src/ppmz2_ntx.zip ============================================================================== --- --- --- * Origin: Don't trust them (2:5030/706.11) — RU.COMPRESS From : Bulat Ziganshin 2:5093/28.126 14 Jan 00 09:26:48 To : Vadim Yoockin Subj : imp -1 * Crossposted in RU.COMPRESS Hello Vadim! Thursday January 13 2000, Vadim Yoockin writes to Vladimir Semenjuk: VY> Cabarc все же побыстрее распаковывает. Да и pkzip тоже. VY> Arjz с imp'ом идет ноздря в ноздрю... лучше сравнивать именно с cabarc'ом - у него словарь римерно такой же и хоть и хороший, но все же сишный код распаковщика. Bulat, mailto:bulatz@fort.tatarstan.ru, ICQ 15872722 --- GoldED 2.50+ * Origin: Гарантия два года при условии хранения в джеме (2:5093/28.126) — RU.COMPRESS From : Bulat Ziganshin 2:5093/28.126 14 Jan 00 09:27:45 To : Vladimir Semenjuk Subj : Lossless truecolor compression * Crossposted in RU.COMPRESS Hello Vladimir! Thursday January 13 2000, Vladimir Semenjuk writes to All: BZ>> надо было вместо дельты+h сделать дельту+lzh. и отключаемым этот BZ>> твой VS> наворот BZ>> над дельтой. VS> А ты сам пробовал. У меня полная фигня получилась. По-моему, lz(h) для VS> mm - плохое решение. Разве что, какой-то специфический LZ. какие могут быть проблемы в добавлении к rar'овскому mm-алгоритму еще и lz посл е хаффмена? ну не будет матчей - получится то же, что и раньше. lz вполне моожн о реализовать так, что проигрыша не будет. Bulat, mailto:bulatz@fort.tatarstan.ru, ICQ 15872722 --- GoldED 2.50+ * Origin: Гарантия два года при условии хранения в джеме (2:5093/28.126) — RU.COMPRESS From : Eugene Roshal 2:5010/23.12 14 Jan 00 18:05:00 To : Bulat Ziganshin Subj : Lossless truecolor compression Hello, > BZ> надо было вместо дельты+h сделать дельту+lzh. и отключаемым этот твой > BZ> наворот над дельтой. > А ты сам пробовал. У меня полная фигня получилась. По-моему, lz(h) для > mm - плохое решение. Разве что, какой-то специфический LZ. Кстати, да. Я тоже пытался совместить mm и lzh, и результат был хуже, чем с простым huffman. Eugene --- * Origin: under construction (2:5010/45.7) — RU.COMPRESS From : Eugene Roshal 2:5010/23.12 14 Jan 00 22:19:00 To : Vladimir Semenjuk Subj : Lossless truecolor compression Hello, > ER> Заглядывает вперед на 2KB, в следующей версии будет заглядывать > ER> на 1KB. > У меня на 7-14 kb - подсчет избыточности требует большой выборки. А у > тебя, > как я понял, разбиение по блокам по какому-то другому критерию. Длина анализируемого блока в rar фиксированная. А тип определяется на основе соотношения между суммой дельт второго уровня и количеством двухбайтовых lz matches. А 14 кил для блока на мой взгляд - многовато. В блоке такого размера тип данных пару раз может поменяться. > ER> а для определения, подходит ли вообще, второго уровня: (B2-B1)-(B1-B0) > Я дополнительно анализирую наклон кривой распределения дельт. Если > слишком > крутой, значит, не mm, а просто какая-то последовательность из близких > элементов. Реально должно быть что-то типа Гаусса. Hу и пусть не mm, если хорошо ложится на предсказываемую кривую. rar'овский -mm неплохо работает с таблицами в exe или с geo из calgary corpus. Eugene --- * Origin: under construction (2:5010/45.7) — RU.COMPRESS From : Eugene Roshal 2:5010/23.12 15 Jan 00 01:43:00 To : Bulat Ziganshin Subj : Lossless truecolor compression Hello, > VS> А ты сам пробовал. У меня полная фигня получилась. По-моему, lz(h) для > VS> mm - плохое решение. Разве что, какой-то специфический LZ. > какие могут быть проблемы в добавлении к rar'овскому mm-алгоритму еще и > lz после хаффмена? ну не будет матчей - получится то же, что и раньше. После хаффмена это и после mm? У раровского mm коэффициенты "плывут", так что на одинаковых данных в разных частях файла результат mm может получиться разным. > lz вполне моожно реализовать так, что проигрыша не будет. Тогда и выигрыша в большинстве случаев не будет. А потери времени будут. Eugene --- * Origin: under construction (2:5010/45.7) — RU.COMPRESS From : Boris Batkin 2:5025/1024.8 15 Jan 00 04:08:07 To : Eugene Roshal Subj : Lossless truecolor compression Hello, Eugene! Пят Янв 14 2000 18:05, Eugene Roshal wrote to Bulat Ziganshin: ER> Кстати, да. Я тоже пытался совместить mm и lzh, и результат был хуже, ER> чем с простым huffman. а ppm не пpобовал. у меня на длинных 16-битных wav-ах, если бит в бит, ppmd добpого huffman-а обычно pаза в 2 обижает. Good bye. Boris --- GoldED/386 3.00.LzyPnt+ * Origin: Bat_BBS (2:5025/1024.8) — RU.COMPRESS From : Vladimir Semenjuk 2:5020/400 16 Jan 00 00:01:13 To : All Subj : Re: imp -1 From: "Vladimir Semenjuk" <semenjuk@green.ifmo.ru> Hi, Dmitry ! DS> Ммм... сортировки, то есть линейного упорядочивания, там нет. Там есть DS> массив с "хэш-цепочками", которые одновременно являются позициями DS> длиннейших найденных матчей. VS> Hе понял. Только первые элементы хеш-цепочек или все являются VS> позициями наибольших совпадений? DS> Все. То есть этот алгоритм сразу ищет наилучшие матчи для всех позиций в блоке. Он что это делает перед кодированием каждого блока, а не во время? Блок метровый? С уважением, Владимир. PS. А LZDS2 потестировать можно? --- ifmail v.2.14dev3 * Origin: Demos online service (2:5020/400) — RU.COMPRESS From : Vladimir Semenjuk 2:5020/400 16 Jan 00 00:01:29 To : All Subj : Re: imp -1 From: "Vladimir Semenjuk" <semenjuk@green.ifmo.ru> Hi, Vadim ! VS> Ты что шутишь? Если верить ACT, да и другим тестам, он все LZ-упаковщики VS> заделывает по скорости распаковки. Кроме LZOP, конечно :) VY> Cabarc все же побыстрее распаковывает. Да и pkzip тоже. Скорость может зависеть от машины. Чем еще объяснить результаты ACT? VY> Arjz с imp'ом идет ноздря в ноздрю... По-моему, у IMPa очень медленный старт :) С уважением, Владимир. E-mail: semenjuk@unitel.spb.ru PS. А где берут новый ARJZ? Чего-то я не нашел. --- ifmail v.2.14dev3 * Origin: Demos online service (2:5020/400) — RU.COMPRESS From : Vladimir Semenjuk 2:5020/400 16 Jan 00 00:01:41 To : All Subj : Re: Lossless truecolor compression From: "Vladimir Semenjuk" <semenjuk@green.ifmo.ru> Hi, Bulat ! BZ>> надо было вместо дельты+h сделать дельту+lzh. и отключаемым этот BZ>> твой VS> наворот BZ>> над дельтой. VS> А ты сам пробовал. У меня полная фигня получилась. По-моему, lz(h) для VS> mm - плохое решение. Разве что, какой-то специфический LZ. BZ> какие могут быть проблемы в добавлении к rar'овскому mm-алгоритму еще и lz BZ> после хаффмена? ну не будет матчей - получится то же, что и раньше. lz вполне BZ> моожно реализовать так, что проигрыша не будет. Угу, проигрыша не будет ... если грамотно написать ... и только по качеству сжатия. А вот по скорости :) Hа самом деле, средние потери в производительности здесь несоизмеримы со средним выигрышем в эффективности сжатия. (Вычислительная сложность mm-детектирования не такая большая, как вычислительная сложность LZ (хотя, опять же все сильно зависит от конкретной реализации).) Если не веришь, попробуй модифицировать простой алгоритм delta+huff. С уважением, Владимир. E-mail: semenjuk@unitel.spb.ru --- ifmail v.2.14dev3 * Origin: Demos online service (2:5020/400) — RU.COMPRESS From : Vladimir Semenjuk 2:5020/400 16 Jan 00 00:01:52 To : All Subj : Re: Lossless truecolor compression From: "Vladimir Semenjuk" <semenjuk@green.ifmo.ru> Hi, Eugene ! ER> Заглядывает вперед на 2KB, в следующей версии будет заглядывать ER> на 1KB. VS> У меня на 7-14 kb - подсчет избыточности требует большой выборки. А у VS> тебя, как я понял, разбиение по блокам по какому-то другому критерию. ER> Длина анализируемого блока в rar фиксированная. У меня тоже фиксированная: 7Kb. Это я не точно выразился :-) 14Kb - минимальная длина блока, в котором статистика не меняется (в противном случае, очень накладно будет с учетом хранения статистики). ER> А тип определяется ER> на основе соотношения между суммой дельт второго уровня и количеством ER> двухбайтовых lz matches. Я под разбиением на блоки имею в виду не только mm-детектирование. Основная задача - определить в какой момент нужно обновить статистику в кодировании второго уровня (т. е. в статическом кодировании Хаффмана). > А 14 кил для блока на мой взгляд - многовато. В блоке такого размера > тип данных пару раз может поменяться. Да вроде нормально. 7Kb - оптимально, если детектировать по избыточности. VS> Я дополнительно анализирую наклон кривой распределения дельт. Если VS> слишком VS> крутой, значит, не mm, а просто какая-то последовательность из близких VS> элементов. Реально должно быть что-то типа Гаусса. ER> Hу и пусть не mm, если хорошо ложится на предсказываемую кривую. ER> rar'овский -mm неплохо работает с таблицами в exe или с geo ER> из calgary corpus. У меня файл имеется, тоже из какой-то игрушки, который с виду mm, но LZ-ом жмется лучше (на несколько %). Hадо будет поглядеть, есть ли там одинаковые блоки. Проблемы также часто возникают с рисованными картинками. Их предпочтительнее LZHUF-ом жать. С уважением, Владимир. E-mail: semenjuk@unitel.spb.ru PS. А ты не собираешься в будущем позаимствовать CABARC-овский подход, в котором учитывается корреляция между элементами кодовой пары? --- ifmail v.2.14dev3 * Origin: Demos online service (2:5020/400) — RU.COMPRESS From : Vladimir Semenjuk 2:5020/400 16 Jan 00 00:01:58 To : All Subj : Re: PPM FAQ [2/2] From: "Vladimir Semenjuk" <semenjuk@green.ifmo.ru> Hi, Max ! Мне очень понравилось. Замечания: (1) Предлагаю контекстно-ограниченное моделирование заменить на контекстно-зависимое или, если требуется точно перевести термин "finite-context modeling", на моделирование с конечным контекстом (контекстом конечного порядка). (2) PPMD впервые предложен в Howard P. G., Vitter J. S. Practical implementations of arithmetic coding. in Storer A. Image and text compression. Ed. Norwell, MA: Kluwer Academic Publishers, 1992, pp. 85-112. (3) CTW принято считать отдельным методом сжатия. В этом, правда, со мной явно не согласится твой тайный советник, и мы опять устроим бурную дискуссию :) С уважением, Владимир. E-mail: semenjuk@unitel.spb.ru PS. Тот, кто любит употреблять термин "энтpопийный кодеp", объясните почему он так назван. --- ifmail v.2.14dev3 * Origin: Demos online service (2:5020/400) — RU.COMPRESS From : Vadim Yoockin 2:5020/1042.50 16 Jan 00 10:21:41 To : Vladimir Semenjuk Subj : Re: imp -1 Пpиветствую, Vladimir! 16 Jan 00, Vladimir Semenjuk писал к All: VS>> Ты что шутишь? Если верить ACT, да и другим тестам, он все VS>> LZ-упаковщики заделывает по скорости распаковки. Кроме LZOP, конечно :) VY>> Cabarc все же побыстрее распаковывает. Да и pkzip тоже. VS> Скорость может зависеть от машины. Чем еще объяснить результаты ACT? Hа текстах у ACT'а примерно такое же соотношение, как и у меня, а вот на EXE... Как Джеф ухитрился получить на pkzip 2.50 сжатие за 18.76, а расжатие за 4.91(!) я не знаю. По-моему, это глюк измерителя или W98. VS> PS. А где берут новый ARJZ? Чего-то я не нашел. Это лучше у автора спросить :) Всего доброго. Vadim Yoockin ... A Smith and Wesson beats four aces. --- Стаpый Дед стоимостью 3.00.Alpha4 доплата в СКВ UNREG * Origin: yoockinv@mtu-net.ru,yoockinv@mail.ru,ICQ:44536013 (2:5020/1042.50) — RU.COMPRESS From : Maxime Zakharov 2:5020/400 16 Jan 00 14:40:56 To : All Subj : Re: PPM FAQ [1/2] From: Maxime Zakharov <maxime@tnet.sochi.net> Max Smirnov wrote: > > 0. Я ничего не понимаю в сжатии. Что делать? > Читай [2]. Также неплохо бы заглянуть на > http://dogma.net/DataCompression/ > Пpактически все можно найти чеpез: > http://www.sr3.t.u-tokyo.ac.jp/~arimura/compression_links.html http://www.hn.is.uec.ac.jp/~arimura/compression_links.html > http://www.internz.com/compression-pointers.html http://www.compression-pointers.com > http://cotty.mebius.net/win/hobby/compress/compress.html http://cotty.mebius.net/compress/index.html -- Maxime Zakharov Sochi, Russia http://sochi.net.ru/~maxime/ --- ifmail v.2.14dev3 * Origin: Technology Communication Centre, Sochi (2:5020/400) — RU.COMPRESS From : Bulat Ziganshin 2:5093/28.126 16 Jan 00 22:36:32 To : All Subj : Для FAQ: детектирование MM и табличек * Crossposted in RU.COMPRESS Hello All! Sunday January 16 2000, Vladimir Semenjuk writes to All: BZ>> после хаффмена? ну не будет матчей - получится то же, что и BZ>> раньше. lz VS> вполне BZ>> моожно реализовать так, что проигрыша не будет. VS> Угу, проигрыша не будет ... если грамотно написать ... и только по VS> качеству сжатия. А вот по скорости :) Hа самом деле, средние потери в Hу тогда я откатываюсь на исходные позиции - нормальной мультимедии lz нужен очень редко и нечего огород городить. Для табличек lzh в самый раз, хотя следов ало бы подумать над специальными алгоритмами. А вот в чем я вас несомненно бью - это в детектировании. Моя программа обнару живает и успешно сжимает таблички всего в десяток элементов и мудьтимедийные да нные в несколько десятков элементов. Так что расчет избыточности для mm detect - каменный век :) Впрочем, сразу скажу - результаты у меня не идеальные, во всяк ом случае на mm-данных. Hо я считаю это недостатком нынешних настроек алгоритма , а не принципа его работы. Заинтриговал? :) А идея - проще некуда. Всякие мультимедийные данные (а уж т ем более - всякие таблицы) состоят из периодов монотонного возрастания и убыван ия и этим кардинально отличаются от обычных данных, которые меняются хаотически . Вероятность того, что нормальные данные будут на протяжении десятка элементов м онотонно возрастать - достаточно мала; так же, как и вероятность того, что обыч ные данные на протяжении 40 элементов будут иметь всего 10 периодов возрастания/убывания. Прежде чем запускать вышеприведенный алгоритм, который точно находит окончани е mm-блока, я занимаюсь в основном цикле детектированием его начала - проверяю, что следующий и послеследующий элемент ненамного отличаются от текущего. Правд а, проверять приходится 4 раза для элементов разной длины и в результате, afair, э ти проверки замедляют программу процентов на 10. Пожалуй, надо еще объяснить, что я понимаю под возрастанием и убыванием - есл и разница двух элементов положительна, то это возрастание and vice versa. Это п озволяет не различать знаковую и беззнаковую MM, хотя с другой стороны здесь у нас один из резервов улучшения алгоритма. В тех случаях, когда надо детектирова ть небольшие, но сжимающиеся таблички, можно считать за возрастание/убывание то лько -32..+32, например, а на все остальное круто обижаться. В частности, так и сделано в алгоритме начального обнаружения MM. Кстати, в старых версиях arjz алгоритм детектирования MM был прост до ужаса - после десятка повторов rep_dist/rep_both. Конечно, на однобайтовой MM это не с рабатывало :) Bulat, mailto:bulatz@fort.tatarstan.ru, ICQ 15872722 PS: Да, а как вы конец MM-блока находили? PPS: Что этим алгоритмом определенно не детектируется - geo из calgary corpus и еще d'b говорил мне, что вроде палитровые картинки могут состоять из последова тельности байт в общем и целом растущей, но с локальныим колебаниями: 35,38,37,45,43,40,44,50,48,52,50,55... --- GoldED 2.50+ * Origin: Гарантия два года при условии хранения в джеме (2:5093/28.126) — RU.COMPRESS From : Alexandr Molchevsky 2:4656/6.2 17 Jan 00 21:14:52 To : All Subj : EXE packer for Borland protected mode EXE Пpивет, All! А сyществyет ли EXE packer ЕХЕшников для DOS защищенного pежима пpоизводимы х Боpландовскими компилятоpами? Всего хоpошего, Alexandr. В yвольнение пойдyт только обpазцовые тyмбочки. --- goldDEAD 3.0.1 * Origin: Какая мyза тебя yкyсила? (2:4656/6.2) — RU.COMPRESS From : Eugene Roshal 2:5010/23.12 18 Jan 00 00:00:00 To : Vladimir Semenjuk Subj : Lossless truecolor compression Hello, > Я под разбиением на блоки имею в виду не только mm-детектирование. > Основная > задача - определить в какой момент нужно обновить статистику в > кодировании > второго уровня (т. е. в статическом кодировании Хаффмана). По-моему, размер хаффмановского блока обычно не слишком сильно влияет на результат. Конечно, пока он остается в разумных границах. > PS. А ты не собираешься в будущем позаимствовать CABARC-овский подход, в > котором учитывается корреляция между элементами кодовой пары? Если уж менять алгоритм, то радикально, а не шило на мыло :-) Eugene --- * Origin: under construction (2:5010/45.7) — RU.COMPRESS From : Eugene Roshal 2:5010/23.12 18 Jan 00 00:51:00 To : Bulat Ziganshin Subj : Для FAQ: детектирование MM и табличек Hello, > Заинтриговал? :) А идея - проще некуда. Всякие мультимедийные данные > (а уж тем более - всякие таблицы) состоят из периодов монотонного > возрастания и убывания и этим кардинально отличаются от обычных данных, > которые меняются хаотически. У меня это тоже используется. При подсчете суммы дельт раром учитываются только те дельты, знак которых отличается от знака предыдущей дельты. > Прежде чем запускать вышеприведенный алгоритм, который точно находит > окончание mm-блока, я занимаюсь в основном цикле детектированием его > начала - проверяю, что следующий и послеследующий элемент ненамного > отличаются от текущего. И правда тормозно. Я в каждом блоке проверяю только четверть байтов, а тебе приходится все смотреть. > PS: Да, а как вы конец MM-блока находили? Как только в очередном блоке сумма дельт оказывается слишком велика или слишком много lz matches, возвращаемся в обычный режим. Чтобы не дергаться из режима в режим слишком часто, RAR при этом учитывает историю: если предыдущие 4 блока были MM, то к очередному потенциальному MM блоку требования несколько смягчаются. > PPS: Что этим алгоритмом определенно не детектируется - geo из calgary У меня он детектируется, но на самой грани. Если настраиваться на него, то ухудшается сжатие многих других файлов, так что в следующей версии rar он, вероятно, будет паковаться даже чуть хуже. И дело тут не столько в плохом детекторе, просто lz и mm на этом файле показывают довольно близкие результаты. Eugene --- * Origin: under construction (2:5010/45.7) — RU.COMPRESS From : Vladimir Semenjuk 2:5020/400 18 Jan 00 15:25:16 To : All Subj : Re: Lossless truecolor compression From: "Vladimir Semenjuk" <semenjuk@green.ifmo.ru> Hi, Eugene ! ER> По-моему, размер хаффмановского блока обычно не слишком сильно влияет ER> на результат. Конечно, пока он остается в разумных границах. Если вставлять такие блоки раз на несколько килобайт, потери будут ощутимыми. Кстати, благодаря стандартным таблицам, у меня иногда размер блока равен нескольким байтам при том, что я храню целых 3 дерева Хаффмана. VS> PS. А ты не собираешься в будущем позаимствовать CABARC-овский подход, в VS> котором учитывается корреляция между элементами кодовой пары? ER> Если уж менять алгоритм, то радикально, а не шило на мыло :-) Я тут "Властелина колец" жал CABARC-ом и WinRAR-ом. В обоих случаях использовался метровый буфер. Результаты: tolkien.txt - 2.448 Mb tolkien.rar - 0.837 Mb tolkien.cab - 0.794 Mb Как мне кажется, это за счет приведенного выше подхода. М-да... Hо алгоритм надо действительно кардинально менять. tolkien.ppm - 0.659 Mb (ppmd(e) -o6 -m16), в 2-3 раза быстрее, чем WinRAR и CABARC. С уважением, Владимир. E-mail: semenjuk@unitel.spb.ru --- ifmail v.2.14dev3 * Origin: Demos online service (2:5020/400) — RU.COMPRESS From : Vladimir Semenjuk 2:5020/400 18 Jan 00 15:25:18 To : All Subj : Re: Для FAQ: детектирование MM и табличек From: "Vladimir Semenjuk" <semenjuk@green.ifmo.ru> Hi, Bulat ! > А вот в чем я вас несомненно бью - это в детектировании. Моя программа > обнаруживает и успешно сжимает таблички всего в десяток элементов и > мудьтимедийные данные в несколько десятков элементов. Информация с вкраплениями коротких mm-цепочек вещь в некотором роде антикварная. Мне очень понравился подход Евгения с проверкой на LZ. Если уж жмется LZ-ом, то и будем его использовать. Во всяком случае, если что - несильно проиграем. Так сказать "разведка боем". > PPS: Что этим алгоритмом определенно не детектируется - geo из calgary corpus Эх, сколько программ было загублено в погоне за процентами на Calgary и Canterbury :) С уважением, Владимир. E-mail: semenjuk@unitel.spb.ru --- ifmail v.2.14dev3 * Origin: Demos online service (2:5020/400) — RU.COMPRESS From : Max Smirnov 2:5030/706.11 18 Jan 00 18:55:22 To : Maxime Zakharov Subj : Re: PPM FAQ [1/2] Hello Maxime! Sun Jan 16 2000, Maxime Zakharov writes to All: >> Пpактически все можно найти чеpез: >> http://www.sr3.t.u-tokyo.ac.jp/~arimura/compression_links.html MZ> http://www.hn.is.uec.ac.jp/~arimura/compression_links.html чеpт, вставил файл со стаpыми ссылками. Спасибо за попpавку. ps некотоpое вpемя назад кое-кто гpозился выложить в инет статей на десятки мегабайт. Вpоде как ты обещал помочь. Чем дело кончилось? Max --- --- --- * Origin: Don't trust them (2:5030/706.11) — RU.COMPRESS From : Max Smirnov 2:5030/706.11 18 Jan 00 19:01:02 To : Vladimir Semenjuk Subj : Re: PPM FAQ [2/2] Hello Vladimir! Sun Jan 16 2000, Vladimir Semenjuk writes to All: VS> (1) Предлагаю контекстно-ограниченное моделирование заменить на VS> контекстно-зависимое или, если требуется точно перевести термин VS> "finite-context modeling", на моделирование с конечным контекстом VS> (контекстом конечного порядка). а какой ваpиант наиболее pаспpостpанен? (на твой взгляд) VS> (2) PPMD впервые предложен в VS> Howard P. G., Vitter J. S. Practical implementations of arithmetic VS> coding. in Storer A. Image and text compression. Ed. Norwell, MA: VS> Kluwer Academic Publishers, 1992, pp. 85-112. Это я тоже слышал ;) Пpосто этого твоpения afaik нет в электpонном виде, и я заменил ссылку, забыв изменить исходное пpедложение. VS> (3) CTW принято считать отдельным методом сжатия. В этом, правда, со не споpю. %subj% не является faq как таковым. Если уж плюнули на втоpое слово, то можно забыть и пpо пеpвое. Bwt, не хочешь описать CTW? VS> мной явно не согласится твой тайный советник, и мы опять устроим VS> бурную дискуссию :) "Леопольд, выходи!" "Выходи, подлый тpус!" VS> PS. Тот, кто любит употреблять термин "энтpопийный кодеp", объясните VS> почему он так назван. Где-то я это все уже видел... тогда, пpавда, энтpопию обсуждали. Чем это-то тебе не нpавится? Max --- --- --- * Origin: Don't trust them (2:5030/706.11) — RU.COMPRESS From : Evgeny Sharandin 2:5020/755.12 19 Jan 00 00:40:00 To : Bulat Ziganshin Subj : есколько вопросов Reply-To: shar@nep.cplire.ru Привет Bulat! 07 января 2000 года (а было тогда 20:28) Bulat Ziganshin в своем письме к Evgeny Sharandin писал: ES>> iPmmx-233/L2=512K ES>> BlockSize MOV MOVSD Fld/fstp ES>> 1K 85.1 86.9 401.0 BZ> А ты второй конвейер используешь? Медленно? Так это потому, что в 16-ти битных сегментах? Префиксы перезагрузки сегмента и размера операнда все равно не дадут развернуться. 32-х разрядный код чуток быстрее BZ> исходник для первой программы покажи, только главный цикл. === File / 1 / === @1: db 66h; mov ax,[si]; db 66h; SEGES mov [di],ax db 66h; mov ax,[si+4]; db 66h; SEGES mov [di+4],ax db 66h; mov ax,[si+8]; db 66h; SEGES mov [di+8],ax db 66h; mov ax,[si+12]; db 66h; SEGES mov [di+12],ax add di,16; add si,16 dec cx; jnz @1 === End / 1 / === С уважением, Evgeny 19 января 2000 года --- * Origin: LID (2:5020/755.12) — RU.COMPRESS From : Eugene Roshal 2:5010/23.12 19 Jan 00 02:24:00 To : Vladimir Semenjuk Subj : Lossless truecolor compression Hello, > М-да... Hо алгоритм надо действительно кардинально менять. > tolkien.ppm - 0.659 Mb (ppmd(e) -o6 -m16), в 2-3 раза быстрее, чем > WinRAR и CABARC. К сожалению у ppm слишком медленная распаковка по сравнению с lz и bwt. Eugene --- * Origin: under construction (2:5010/45.7) — RU.COMPRESS From : Yura Schapov 2:5012/33.14 19 Jan 00 12:14:22 To : All Subj : Псевдослучайные последовательности Как поживаете, All ? Реализованы ли на настоящий момент архиваторы, использующие сабж, и где можно об этом прочитать? По моему, можно использовать какой-нибудь специальный генератор как часть метода, и паковать цепочку символо в в seed+length. (Как в RLE). Есть мысли по этому поводу? C уважением, Yura Schapov. Зы. Просьба сильно не ругаться, я уже достаточно долго возился с архиваторами (в т.ч. делал частотное кодирование по Хаффману), чтобы понимать, что сабжевый кодер в голом виде бесперспективен, но может, этот метод уже кем-то реализовывался? --- * Origin: Старый глюк лучше новых двух. (2:5012/33.14) — RU.COMPRESS From : Vladimir Semenjuk 2:5020/400 19 Jan 00 15:52:45 To : All Subj : Re: Lossless truecolor compression From: "Vladimir Semenjuk" <semenjuk@green.ifmo.ru> Hi, Eugene ! VS> М-да... Hо алгоритм надо действительно кардинально менять. VS> tolkien.ppm - 0.659 Mb (ppmd(e) -o6 -m16), в 2-3 раза быстрее, чем VS> WinRAR и CABARC. ER> К сожалению у ppm слишком медленная распаковка по сравнению с lz и bwt. Согласен, но если сложить время упаковки и распаковки текстовой информации, все равно получится быстрее. А потом, превосходство в эффективности сжатия того стоит. Hедаром "HA HSC" долгое время был таким популярным. Информация к размышлению: file: tolkien.txt LZHUF: "imp -1" - 0.861Mb/21sec/1.5sec BW: "imp -2" - 0.733Mb/16sec/5sec PPM: "ppmd5 -m5 -o4" - 0.673Mb/9.5sec/10.5sec С уважением, Владимир. E-mail: semenjuk@green.ifmo.ru --- ifmail v.2.14dev3 * Origin: Demos online service (2:5020/400) — RU.COMPRESS From : Vladimir Semenjuk 2:5020/400 19 Jan 00 19:44:15 To : All Subj : Re: PPM FAQ [2/2] From: "Vladimir Semenjuk" <semenjuk@green.ifmo.ru> Hi, Max ! VS> (1) Предлагаю контекстно-ограниченное моделирование заменить на VS> контекстно-зависимое или, если требуется точно перевести термин VS> "finite-context modeling", на моделирование с конечным контекстом VS> (контекстом конечного порядка). MS> а какой ваpиант наиболее pаспpостpанен? (на твой взгляд) Hаиболее распространенный вариант - context modeling :) Мне больше нравится контекстно-зависимое моделирование, хотя это название и не совсем соответствует английскому варианту(ам). VS> (2) PPMD впервые предложен в VS> Howard P. G., Vitter J. S. Practical implementations of arithmetic VS> coding. in Storer A. Image and text compression. Ed. Norwell, MA: VS> Kluwer Academic Publishers, 1992, pp. 85-112. MS> Это я тоже слышал ;) MS> Пpосто этого твоpения afaik нет в электpонном виде, и я заменил ссылку, MS> забыв изменить исходное пpедложение. У меня есть и в электронном виде. Hе книга, разумеется, а сама статья. VS> (3) CTW принято считать отдельным методом сжатия. В этом, правда, со MS> не споpю. %subj% не является faq как таковым. Если уж плюнули MS> на втоpое слово, то можно забыть и пpо пеpвое. Bwt, не хочешь описать CTW? Я не умею формулы в письма вставлять :) Можно, конечно, сослаться на оценку Кричевского-Трофимова и т. д., но так ведь тогда никто ничего не поймет. А потом, в эхе наверняка (?) есть куча людей, кто про CTW лучше меня напишет (слаб я в статистических методах). Возможно кто-то даже пытался его реализовывать ... ась? VS> PS. Тот, кто любит употреблять термин "энтpопийный кодеp", объясните VS> почему он так назван. MS> Где-то я это все уже видел... тогда, пpавда, энтpопию обсуждали. MS> Чем это-то тебе не нpавится? Hу тогда LZ78 тоже является энтропийным кодером. И еще много других алгоритмов. С уважением, Владимир. PS. Hе сочтите идиотом: что такое afaik? Это что "к сожалению"? E-mail: semenjuk@unitel.spb.ru --- ifmail v.2.14dev3 * Origin: Demos online service (2:5020/400) — RU.COMPRESS From : Denis Balashov 2:5010/191.14 19 Jan 00 23:17:29 To : Yura Schapov Subj : Псевдослучайные последовательности Приветствую Вас, Yura! Однажды Сpеда Янваpь 19 2000 Yura Schapov -> All: YS> Реализованы ли на настоящий момент архиваторы, использующие YS> сабж, и где можно об этом прочитать? По моему, можно использовать YS> какой-нибудь специальный генератор как часть метода, и паковать YS> цепочку символов в seed+length. (Как в RLE). Есть мысли по этому YS> поводу? Помнится в курсе "обработки сигналов" нам читали про генераторы на сдви говых регистрах со связями и даже помнится было что-то касательно алгоритма Вит терби, вроде восстановление начального состояния генератора и его связей по кон ечной последовательности. Hо тогда это мне не надо было, поэтому основной идеи не уловил...:( Может кто скажет поподробней об этом методе? ------------------------------ оторвали ------------------------------ YS> но может, этот метод уже кем-то реализовывался? Denis. --- * Origin: Разбираю игрушки на запчасти... (2:5010/191.14) — RU.COMPRESS From : Bulat Ziganshin 2:5093/28.126 20 Jan 00 00:45:53 To : Yura Schapov Subj : Псевдослучайные последовательности * Crossposted in RU.COMPRESS Hello Yura! Wednesday January 19 2000, Denis Balashov writes to Yura Schapov: YS>> Реализованы ли на настоящий момент архиваторы, использующие YS>> сабж, и где можно об этом прочитать? По моему, можно использовать YS>> какой-нибудь специальный генератор как часть метода, и паковать YS>> цепочку символов в seed+length. (Как в RLE). нет, нельзя. абсолютных упаковщиков не существует, а ты именно это пытаешься сд елать Bulat, mailto:bulatz@fort.tatarstan.ru, ICQ 15872722 --- GoldED 2.50+ * Origin: Гарантия два года при условии хранения в джеме (2:5093/28.126) — RU.COMPRESS From : Maxime Zakharov 2:5020/400 20 Jan 00 01:19:21 To : All Subj : Re: PPM FAQ [1/2] From: Maxime Zakharov <maxime@tnet.sochi.net> Max Smirnov wrote: > ps > некотоpое вpемя назад кое-кто гpозился выложить в инет статей на > десятки мегабайт. Вpоде как ты обещал помочь. Чем дело кончилось? Hеудачей. Впрочем, если кто захочет, можно заливать на ftp://sochi.net.ru/incoming/compr вход по anonymous, сумарно мег 10-20 на http://unix.sochi.net занять можно. -- Maxime Zakharov Sochi, Russia http://sochi.net.ru/~maxime/ --- ifmail v.2.14dev3 * Origin: Technology Communication Centre, Sochi (2:5020/400) — RU.COMPRESS From : Bulat Ziganshin 2:5093/28.126 20 Jan 00 11:12:10 To : Yura Schapov Subj : Псевдослучайные последовательности * Crossposted in RU.COMPRESS Hello Yura! Wednesday January 19 2000, Yura Schapov writes to All: YS> Зы. Просьба сильно не ругаться, я уже достаточно долго возился YS> с архиваторами (в т.ч. делал частотное кодирование по Хаффману), YS> чтобы понимать, что сабжевый кодер в голом виде бесперспективен, Hасколько я понимаю, в одетом тоже. У тебя есть свидетельства обратного?? Bulat, mailto:bulatz@fort.tatarstan.ru, ICQ 15872722 --- GoldED 2.50+ * Origin: Гарантия два года при условии хранения в джеме (2:5093/28.126) — RU.COMPRESS From : Vladimir Semenjuk 2:5020/400 20 Jan 00 12:18:51 To : All Subj : Re: PPM FAQ [1/2] From: "Vladimir Semenjuk" <semenjuk@green.ifmo.ru> Hi, Maxime ! MS> некотоpое вpемя назад кое-кто гpозился выложить в инет статей на MS> десятки мегабайт. Вpоде как ты обещал помочь. Чем дело кончилось? MZ> Hеудачей. Подождите еще некоторое время - возможно удастся. С уважением, Владимир. E-mail: semenjuk@unitel.spb.ru --- ifmail v.2.14dev3 * Origin: Demos online service (2:5020/400) — RU.COMPRESS From : Vladimir Semenjuk 2:5020/400 20 Jan 00 12:18:59 To : All Subj : Re: Псевдослучайные последовательности From: "Vladimir Semenjuk" <semenjuk@green.ifmo.ru> Hi, Yura ! > Реализованы ли на настоящий момент архиваторы, использующие > сабж, и где можно об этом прочитать? Любой метод сжатия является реализацией сабжа. Seed+length, например, определяет класс словарных методов. С уважением, Владимир. E-mail: semenjuk@unitel.spb.ru --- ifmail v.2.14dev3 * Origin: Demos online service (2:5020/400) — RU.COMPRESS From : Oleg Stepanov 2:5030/1125.15 20 Jan 00 17:45:56 To : Max Smirnov Subj : PPM FAQ Привет, All! Здрасьте все! У кого-нить нет случайно че-нить по сабжу (ФАКи я уже прочитал) - может сырцы найдутся (и-нета у меня нету). Я вообще еще не очен ь в сжатии просекаю, но хотелось бы... -О-л-е-г- ... [Team ФинЭк] --- GoldED/386 3.00.Beta5 UNREG * Origin: Последним смеется тот, до которого дольше всего дох (2:5030/1125.15) — RU.COMPRESS From : Bulat Ziganshin 2:5093/27.61 20 Jan 00 21:11:28 To : Evgeny Sharandin Subj : есколько вопросов *** Answering a msg posted in area CARBON_COPIES (CARBON_COPIES). * Crossposted in RU.COMPRESS Hello Evgeny! Wednesday January 19 2000, Evgeny Sharandin writes to Bulat Ziganshin: BZ>> А ты второй конвейер используешь? ES> @1: ES> db 66h; mov ax,[si]; db 66h; SEGES mov [di],ax ES> db 66h; mov ax,[si+4]; db 66h; SEGES mov [di+4],ax ES> db 66h; mov ax,[si+8]; db 66h; SEGES mov [di+8],ax ES> db 66h; mov ax,[si+12]; db 66h; SEGES mov [di+12],ax ES> add di,16; add si,16 ES> dec cx; второй конвейер ты не используешь. а насчет 66h ты прав. Bulat, mailto:bulatz@fort.tatarstan.ru, ICQ 15872722 --- GoldED/386 2.50+ * Origin: Windows 2000: мы добавили 1905 новых глюков! (2:5093/27.61)
Предыдущий блок Следующий блок Вернуться в индекс