| Крупнейший каталог ресурсов по сжатию! Пополняйте! |
| ||
|
Сайт о сжатии >>
Новинки |
О сервере
(Compression Catalog! |
ENGLISH)
Книга "Методы сжатия данных" >> Без потерь | Изображений | Видео Разделы >> Cтатьи | Видео | Arctest | Ссылки | Ru.compress | Форум Проекты >> Д.Ватолина | А.Ратушняка | М.Смирнова | В.Юкина | Е.Шелвина | Д.Шкарина |
||
(Последние новости - внизу ;) 08.12.2k - Вот DC-kit#1. Набор для конструирования дистансных кодеров (того, что я так называю ;). Описание на русском внутри. 22.12.2k - sh 0.02 & sh 0.02s (исходники прилагаются). Мой вариант кодировки для использования вместо base64 и прочих uue. Использует некое обобщение интервального кодирования, так что легко можно работать с произвольным подмножеством символов. В отличие от "битовых" решений, для кодирования любого символа требуется один и тот же (практически ;) объем кода, размер закодированного файла, как минимум, на 20% меньше, чем при применении base64. Что, увы, полностью компенсируется за счет "удобства" использования :(. 27.12.2k - Выложил исходники дистансного кодера: lng-dc1. 21.02.2l - huffcomp. Шимон Грабовский предположил, что encode.com - "самостоятельная" версия хаффмановского кодировщика из архиватора ESP - самый быстрый и вообще лучший, и я попытался доказать, что он был неправ. Вот исходники и экзешники для моего собственного статического хаффмановского кодировщика - уже на 30% быстрее ESP'шного, и можно дальше оптимизировать. 22.02.2l
- Демо-версия CL-D 1.08+.
Адаптивный арифметик (точнее, rangecoder) нулевого порядка, основанный на
последнем из моих арифметических извращений. Для вычислений используется
FPU, полученный код выдается dword'ами, carryless. Все очень просто, поэтому
быстро, а в качестве бонуса можно использовать масштабы вплоть до
231 (MaxFreq=231).
24.02.2l - Получил разрешение Шкарина и выложил его C++'ные исходники, демонстрирующие использование арифметического кодирования (интервального, собственно, там субботинский carryless). Вот aridemo v0, aridemo v1 и моя мояутилитка для замера времени. 25.02.2l
- Добавил скрипт для показа нижней части страницы после загрузки ;).
27.02.2l - Все шкаринские order0-модели и три версии кодировщика (субботинская, шиндлерская, и моя) переделаны под работу с общим интерфейсом. Теперь можно #include'нуть модель и кодер на своей вкус, откомпилировать (VC/IntelC), и получить работающий кодек. Собственно, сделал я это чтобы доказать, что CL-D (мой кодер) быстрее остальных ;). Но к глубокому моему удивлению это оказалось совершенно не так :). Хотя он действительно эффективней - для Calgary Corpus шиндлерский кодер генерирует код на 1179 меньше субботинского, а мой - еще на 148 байт меньше... Но мои планы представить CL-D как лучший с любой точки зрения явно провалились ;)... возможно, удастся оптимизировать его и сравнять его скорость с целочисленными соперниками, но определенно я не смогу ускорить его _вдвое_. ...А! Чуть не забыл дать ссылку... Вот оно - aridemo 1.00. 01.03.2l
- Весна :). Так что aridemo продолжают разможаться ;). Вот
aridemo 1.01, содержащее
несколько новых сравнительных графиков и множество изменений, главное из
которых - исправление долгожданного глюка в CLD (большое спасибо А.Ратушняку за
тестирование). CLD также слегка ускорен; для графиков теперь используется
не полное время выполнения программ, а конкретно время кодирования / декодирования;
добавлено несколько опций etc.
04.03.2l - Процесс идет. CLD полностью переписан во измежание дальнейших глюков - так что он теперь, собственно, даже и не "CL", на самом-то деле :). А.Ратушняк обнаружил несколько ошибок в моем "шиндлеровском" кодировщике, но я с ними еще не справился :). В.Семенюк пожелал участвовать в наших "тараканьих бегах" и предоставил собственную модель - первую с использованием бинарного дерева в этом проекте. Впрочем, он считает, что aridemo содержит слишком много лишнего, так что вот его кодировщик отдельно - вместе с текстовкой, объясняющей работу модели. Ну и aridemo 1.02 появилось, конечно :). 08.03.2l - aridemo 1.03. Доказана корректность последней версии CL-D (спасибо А.Ратушняку), "шиндлерский" rangecoder также исправлен, наконец. Кроме того, теперь есть _две_ версии CL-D - полностью на C++ и полностью (почти) на ассемблере. По-моему, интересно, что C++'ная версия с int64 кодирует на 20% быстрее ассемблерной - которая использует FPU :).13.03.2l
- Со времени моей первой удачной реализации дистансного кодирования мне
хотелось изобрести подобный, но _поточный_ алгоритм. И вот он есть -
Distance Mixing.
С++'ные исходники прилагаются. Увы, правда, но оказалось, что этот
"прямолинейный" подход работает несколько хуже, чем даже мой DC из
DC-Kit (235k против 229k на book1.bwt).
16.03.2l - Заимел идею и написал некий алфавитный сортировщик. В основном, он ориентирован на применение вместе с BWT - для переупорядочивания алфавита перед блочной сортировкой. Берет таблицу частот пар символов, сортирует колонки по возрастанию энтропии и выдает таблицу с отсортированными колонками и - в отдельном файле - использованную перестановку. 22.03.2l
- После нескольких тестов и обсуждений выяснилось, что алгоритм, использованный
в cnksort1 практически бесполезен :). Его применение к данным перед BWT ухудшает
сжатие... и теперь я думаю, что это можно было предвидеть - нет особого смысла в
сортировке просто по энтропии распределения символов-суффиксов. Практически
нет корреляции между похожестью двух блоков суффиксов и их энтропий.
Так что я переделал кое-что - может, оно и не помогает при блочной сортировке,
но может быть использовано иначе :). Идея (возникшая благодаря Вадиму Юкину)
заключалась в том, чтобы переупорядочить блоки символов в файле так, чтобы
похожие фрагменты располагались рядом и получить лучшее статистическое сжатие.
Это - работает! :) 23.03.2l - Вот усовершенствованная версия переупорядочивания блоков в файле - тоже медлительная, но теперь оптимизация имеет сложность O(N^3) - что сравнительно терпимо :). Заодно, теперь оно генерирует диаграммы распределения частот в данных перед и после перестановки - номер блока по горизонтали, код символа по вертикали. 16.04.2l
- Потратил массу времени, пытаясь найти весовую функцию. Похоже, что
оценить реальную вероятность нулевого бита при наличие _двух_ (возможно,
различных) оценок p1 и p2, данных двумя моделями,
совсем несложно. Есть общеизвестное предположение, что в таком случае
должно использоваться значение, вычисляемое по формуле
pm = w1*p1+w2*p2,
где w? - веса моделей. Если обе модели считать равноценными, то
это будет просто средняя вероятность. Но вместо этого мы можем использовать
p? в качестве контекстов и собрать реальные частоты битов,
соответствующих каждой паре {p1;p2}. Так и выяснилось,
что весовая функция далека от простого среднего. Но все же она довольно
гладкая, хотя я и обломался подобрать функцию, дающую подобные результаты :(.
Может, вам повезет ;). 04.05.2l - Только что переписал на Си свою схему контекстного смешивания - PPM211. Медленная штука, но очень простая, особенно в сравнении с PPMd :). Хуже относится к бинарникам, но тексты c текстами справляется несколько лучше, чем PPMd v.F. Сжимает book1 в ~210.9k. ...И расжимает :). 14.05.2l - PPM211 - фигня, поскольку основывается на некой эвристической "магии". Так что я только что разработал новый кодировщик, гораздо более логичный по натуре, чем предыдущий. Ну, случайно он оказался и более эффективным, но я этого не ожидал :). Так что вот PPM210 - моя новая модель, в данный момент дающая 209,890 на book1. 22.05.2l - Надеюсь, это последний апдейт; модель опять полна мистики :). Хотя 207,879 на book1 это уже не так плохо... Еще соорудил кое-какой workaround для избежания генерации IntelC/VC слишком медленного кода в некоторых случаях - так что теперь оно на 20% (или даже больше) быстрее. 31.05.2l - Hopes are never true :) ...Так что вот еще кое-что. Вроде как доделанная версия, более стабильная на бинарниках. Кроме того, я добавил несколько опций для ограничения максимального порядка и объема используемой памяти. Сжимает book1 в 207,379. 02.06.2l - И еще одна версия, слегка усовершенствованная. Работает несколько быстрее и большинство файлов сжимает лучше, чем раньше, хотя не все, увы :). 206,991 на book1. 04.05.2002
- Нашел место для очередного "зеркала". Тут правда, меня заставили все
на русский перевести, но, хотя бы, может никто теперь на тормозизм серверов
не будет жаловаться ;).
09.05.2002 - Новая версия rarpass. Еще 10% скорости. 14.05.2002
- Перекомпилил rarpass со статической линковкой.
Скорость стала на 45p/s больше. Парадоксально, но факт ;). Ну, пришлось
под это дело кое-какие косметические изменения в архив внести - чтоб на
XX тянуло %). 18.01.2003
- Уже и год сменился, а я все страничку ленюсь обновить. Ну ничего,
теперь вот повод возник ;). В последнее время почему-то часто стали
возникать вопросы, связанные с 01.03.2003
- PiLabs, где хостилось мое самое
первое зеркало (и где до сих пор лежала большая часть старых файлов),
склеил ласты. Оказывается. Но теперь я это заметил и принял к сведению.
Кроме того, за прошедшее время пришлось выложить несколько файлов, на
которые я собрался с силами дать ссылку:
Links Downloads
Сайт о сжатии >> Новинки | О сервере | Статистика Книга "Методы сжатия данных" >> Универсальные | Изображений | Видео Разделы >> Download (статьи+исходники) | Ссылки | Ru.compress | Arctest | Видео | Каталог ссылок | Форум Проекты >> Д.Ватолина | А.Ратушняка | М.Смирнова | В.Юкина | Е.Шелвина | А.Филинского | Д.Шкарина | С.Оснача |
||||||||||||||||||||
|
Оставьте ваши замечания, предложения, мнения! О найденных ошибках пишите на compression_на_graphicon.ru © Д.Ватолин, А.Ратушняк, М.Смирнов, В.Юкин, Е.Шелвин, Д.Шкарин и др., текст, состав., 2001-2008 © А.Андреев, оформление, 2002
|
||||