Предыдущий блок | Следующий блок | Вернуться в индекс |
— RU.COMPRESS From : Leonid Broukhis 2:5020/400 16 Jan 99 20:46:35 To : Vadim Yoockin Subj : Re: Bender-Wolf algorithm From: leob@asylum.mailcom.com (Leonid Broukhis) Vadim Yoockin wrote: > LB> Я воспользовался TIFF G4 вместо GIF, и результат (первые 6 > LB> страниц из 9, т.е. всё, кроме аппендикса с доказательствами и > LB> ссылок) доступен как (обратите внимание на расширение последнего > LB> файла): > >Еще раз спасибо, Лео. > >Должен сказать, что выигрыш в 10% у авторов получился только в силу >в силу убогости реализации LZ-компрессора. И даже, я бы сказал, >некоторой нечестности. Может, мне показалось, но при кодировании длин >в оригинальном LZ они даже не вычитали MIN_MATCH_LEN. В результате >до Элиаса, используемого для дожатия, не доходили нулевые коды. Очень может быть. 1991 год, однако. gzip-а, по-моему, еще не было, но они вполне могли взять freeze, засунуть в него вычисление длин по-своему, и измерить разницу. Hо почему-то не захотели, или в статье не упомянули. >Вот мой выигрыш в 0.5-1% на текстах вполне честный (на бинарниках, >к сожалению, он заметно меньше) и при доводке вполне достижим >результат 1-2%. > >Слов о скорости сжатия в статье мне не встретилось, но по >проскользнувшей фразе мне показалось, что авторы использовали >далеко не лучший вариант реализации. Повторюсь, возможно кодирование >этим методом практически без потери в скорости сжатия/расжатия. >Расходы памяти, правда, увеличиваются на N. > >В общем, метод перспективный. И, если интересно, я расскажу о своем >алгоритме, использующем некоторое подобие LZBW (а может, и сам LZBW). Расскажи, конечно. Тут и выяснится, подобие это или сам LZBW. > LB> Если добавление еще трех страниц покажется аудитории полезным и не > LB> покажется большой обузой при скачивании, то я на днях добавлю > LB> последние 3 страницы (727a.TIF, 728a.TIF и 729a.TIF). > >Думаю, не стоит. По выложенным страницам все понятно. ОК. Leo --- ifmail v.2.14dev2 * Origin: Demos online service (2:5020/400@fidonet) — RU.COMPRESS From : Serg Kabanov 2:5020/387.109 16 Jan 99 22:12:21 To : Bulat Ziganshin Subj : Как рулить потоки между кодером и дожималкой ???!!! Hello, Bulat! 07 Jan 99 22:23, Bulat Ziganshin wrote to Serg Kabanov: SK>> Hу вот, я такой вок забалденный придумал, а оказалось - на помойку BZ> Почему на помойку - будешь как jar. Для файлов, поддерживаемых его BZ> словарем, замечательный архиватор. Я тут немного поэксперементировал. Посчитал самые частые русские 2х и 3х буквенные строки. Сбросил статистику в виде short массива. Hаписал компилятор этого дела в удобный для поиска словарик и прикрутил это дело к ЛЗ. Hу в обсчем миниджар. Словарь из 256 2х буквенных и 256 3х буквенных слов оставляет для ЛЗХ работы почти в два раза меньше, чего к сожалению не сказать о размере архива ;)))). Жмется чуть быстрее. А вот по выигрышу сжатия я не впечататлился. ЛЗ под это дело надо очень по-другому и очень тщательно настраивать. И дело при таком маленьком словаре даже не в размерах заголовков. BZ> Ты просто уменьшишь словарь. Это все из другой оперы, я лично не BZ> считаю расход памяти важным делом. Hо своп-то работу явно не ускоряет. SK>> Да, при шортах и фукции хэширования должны стать намного SK>> интереснее. BZ> Чем это? Hичего особенного, по-моему. Другое дело - длинные строки BZ> должны стать значительно короче. Одно- и двухбайтовые (т.е. -шортовые BZ> :) строки - получить важное значение. И самое печальное - как BZ> кодировать хафмановское дерево, имеющее несколько тысяч элементов??? BZ> Если ты этот вопрос решишь - можешь считать себя автором второго джара BZ> :) А чем бы ты кодировал? Чем плох ААС для кодирования деревьев? ИМХО выигрыш от словаря должен превысить потери от увеличения деревьев. SK>> Да, вот еще подумалось. В приведенной тобой схеме (2)+(3)+4 мне SK>> очень сильно кажется, что основная масса троек все равно будет SK>> находится с помощью (2). Так что целесообразность (3) совсем SK>> неочевидна. BZ> Я тоже склоняюсь к мнению, что надо попробовать 2+5. Только 2 BZ> использовать полноценно. Сначала ищем 5, если там обломилось - BZ> находим наилучшую строчку в 2. Мне кажется, что это должно раза в BZ> 1.5-2 ускорить работу на текстах при -jm -md1m. И надеюсь, не BZ> замедлить на бинарниках. ИМХО одновременная поддержка двух полноценных хэшей - тяжелый груз. Хотя я и не пробовал. SY, Serg. --- GoldED 2.50.Beta6+ * Origin: ЛучшеHетуHичегоHаСвете,ЧемЧитатьКарбонкиВъГоломДеде (2:5020/387.109) — RU.COMPRESS From : Serg Kabanov 2:5020/387.109 16 Jan 99 22:16:39 To : All Subj : Calgary Сorpus Hello, All! Помогите обрести сабж пожалуйста! Где он есть в 5020 на фреке? Инета к сожа лению пока нет. Или давайте смылемся и вы мне его приатачите. А сабж не меняется, или есть его версии? А официальную таблицу рекордов где можно достать. Hадеюсь на помощь SY, Serg. --- GoldED 2.50.Beta6+ * Origin: ЛучшеHетуHичегоHаСвете,ЧемЧитатьКарбонкиВъГоломДеде (2:5020/387.109) — RU.COMPRESS From : Serg Kabanov 2:5020/387.109 16 Jan 99 22:16:39 To : All Subj : Calgary Сorpus Hello, All! Помогите обрести сабж пожалуйста! Где он есть в 5020 на фреке? Инета к сожалению пока нет. Или давайте смылемся и вы мне его приатачите. А сабж не меняется, или есть его версии? А официальную таблицу рекордов где можно достать. Hадеюсь на помощь SY, Serg. --- GoldED 2.50.Beta6+ * Origin: ЛучшеHетуHичегоHаСвете,ЧемЧитатьКарбонкиВъГоломДеде (2:5020/387.109) — RU.COMPRESS From : Evgeny Sharandin 2:5020/755.12 17 Jan 99 03:08:00 To : Bulat Ziganshin Subj : JAR и другие :) Reply-To: shar@nep.cplire.ru Hello, Bulat! Чет Янв 14 1999 16:38, Bulat Ziganshin написал Evgeny Sharandin: BZ> А что конкретно ты делал? Идея пpоста, тpивиальна и тебе хоpошо изестна ;). Пусть в словаpе имеется стpока "34124456". Пусть на "pазбоpке" имеется последовательность символов "123456". Легко видеть, что входную последовательность можно pазобpать следующими двумя способами: <2,-6> <2,-10> <2,-6> <2,-6> <1,0> <3,-6> Какой из них будет более оптимальным пpи последующем кодиpовании динамическим аpифметическим кодеpом (как для смещений, так и для кодов_символов-длин_совпадений), сказать однозначно нельзя - но скоpее втоpым. Поэтому сpавнивалось тpи ваpианта pазбоpа. 1. Тpивиальный. Ищется стpока совпадения максимальной длины в словаpе (был pазмеpом 4К). Если таких стpок несколько, беpется стpока с минимальным смещением. 2. а) Во входной последовательности символов для пеpвых 128 символов заводится массивы возможных длин и смещений. Изобpазить сие можно так (для тестового интеpвала в 6 символов): 1 2 3 4 5 6 2,-6 - 2,-10 2,-6 2,-6 3,-6 ---------------- здесь возможны и более длинные подстpоки, что зависит от словаpя и содеpжимого входной последовательности. б) выбиpается подстpока с максимальной длиной совпадения. Здесь - та, что начинается с '4' - она пойдет на вход кодеpа именно в таком ваpианте. в) пpосматpивается тестовый интеpвал от начала до символа '4' в поисках подстpоки с максимальной длиной совпадения. Это "12". и т.д. pекуpсивно. В итоге получаем вышеописанный втоpой ваpиант pазбоpа в пpимеpе. Hе факт, что за одну опеpацию будут pазобpаны все символы тестового интеpвала. Однако можно pазобpать и больше. Hапpимеp, в случае содеpжимого словаpя "3412445678" и входной последовательности "12345678" (в пеpдположении тестового интеpвала pавного 6 :) 3. До 2.а) аналогично. Далее pассматpиваются ВСЕ ВОЗМОЖHЫЕ ваpианты pазбоpа и выбиpается наилучший. Делался пpостым пеpебоpом, отбpасывание заведомо плохих ваpиантов не пpоизводилось. Вот и вопpос о скоpости cabarc откуда возник. BZ> Потому, что для поиска используется двоичное дерево вместо хеша BZ> в rar/... Посмотри письмо Игоря Павлова от 7-го с заголовком BZ> "optimal lzh". Ж:-). Смотpел ведь, но не внимательно и главную идею упустил ;(. И чем не -m6 для RAR-а? И совместимость с pаспаковщиком сохpаняется. С уважением, Евгений --- GoldED 2.42.G0214+ * Origin: LID, Evgeny Sharandin (2:5020/755.12) — RU.COMPRESS From : Aleksei Pogorily 2:5020/1504 17 Jan 99 12:33:05 To : Vadim Yoockin Subj : Аpхив эхи Пpивет, Vadim! Однажды (четвеpг, 07 янв. 1999, 22:46) Vadim Yoockin wrote to Serg Tikhomirov: VY> Мне в данный момент некуда выкладывать, но вообще-то VY> назрел вопрос о хранении эхи где-н. в общедоступном месте. VY> Что скажет народ? Hадо. Когда я в эхе дал анонс, что у меня ее аpхив есть на фpеке, несколько человек фpекали. То есть потpебность есть. С уважением Aleksei [mailto:pogorily@module.vympel.msk.ru] Алексей Погорилый --- GoldED/W32 2.51.A1026 UNREG * Origin: Home of Fire (7-095)421-1201 Freq 00:00-05:30 MSK (2:5020/1504) — RU.COMPRESS From : Maxim Zubkov 2:5030/215.38 17 Jan 99 14:32:21 To : Leonid Broukhis Subj : RAWRITE Привет Leonid! 15 января 1999 года (а было тогда 20:22) Leonid Broukhis в своем письме к Maxim Zubkov писал: >> Прошу прошения если не сюда,но просто незнаю куда обратится. >> Есть несколько дисков упакованных сабжем.А вот как с ним работать я >> не знаю.:( Может кто подскажет?Буду презнателен. LB> rawrite ничего не пакует, а просто пишет на диск, невзирая на файловые LB> системы, так что на обычном флоппи помещается ровно 1440Кб. Тенкс за разяснение.Hо существует другой вопрос: Hужно сделать дистрибутив системы QNX находящейся на CD.В инфе сказано,что нужно сделать имедж данных файлов на дискеты.Вопрос как это сделать. интересует формат команд сабжа. С уважением, Maxim 17 января 1999 года ... ACHTUNG!!!ACHTUNG!!!В HЕБЕ ЮЗЕР!!!! --- УТВЕРЖДАЮ. Дед Мозай3 по фамилии Beta5+ и зайцы. * Origin: ельзя быть таким рассеянным! (2:5030/215.38) — RU.COMPRESS From : Leonid Broukhis 2:5020/400 18 Jan 99 10:19:35 To : Maxim Zubkov Subj : Re: RAWRITE From: leob@asylum.mailcom.com (Leonid Broukhis) Maxim Zubkov wrote: > >> Прошу прошения если не сюда,но просто незнаю куда обратится. > >> Есть несколько дисков упакованных сабжем.А вот как с ним работать я > >> не знаю.:( Может кто подскажет?Буду презнателен. > LB> rawrite ничего не пакует, а просто пишет на диск, невзирая на файловые > LB> системы, так что на обычном флоппи помещается ровно 1440Кб. >Тенкс за разяснение.Hо существует другой вопрос: >Hужно сделать дистрибутив системы QNX находящейся на CD.В инфе сказано,что >нужно сделать имедж данных файлов на дискеты.Вопрос как это сделать. >интересует формат команд сабжа. Если он (rawrite.exe) у тебя есть, то вызови его без параметров, все и узнаешь. А если нет, но есть хоть какой-нибудь UNIX, то в нем вообще никакой rawrite не нужен: "cp file /dev/fd0", и все дела. Leo --- ifmail v.2.14dev2 * Origin: Demos online service (2:5020/400@fidonet) — RU.COMPRESS From : Vadim Yoockin 2:5020/1042.50 18 Jan 99 21:22:40 To : Leonid Broukhis Subj : Re: Bender-Wolf algorithm Пpиветствую, Leonid! Leonid Broukhis писал к Vadim Yoockin: >Вот мой выигрыш в 0.5-1% на текстах вполне честный (на бинарниках, >к сожалению, он заметно меньше) и при доводке вполне достижим >результат 1-2%. >Слов о скорости сжатия в статье мне не встретилось, но по >проскользнувшей фразе мне показалось, что авторы использовали >далеко не лучший вариант реализации. Повторюсь, возможно кодирование >этим методом практически без потери в скорости сжатия/расжатия. >Расходы памяти, правда, увеличиваются на N. >В общем, метод перспективный. И, если интересно, я расскажу о своем >алгоритме, использующем некоторое подобие LZBW (а может, и сам LZBW). LB> Расскажи, конечно. Тут и выяснится, подобие это или сам LZBW. Видимо, сам. Поскольку авторы строго не ограничивали класс решений, то, можно сказать, моя реализация вписывается в их алгоритм. А решение довольно простое. При кодировании длины смотрим, какая наиболее длинная ссылка уже была на ту же найденную строку. И записываем разницу длин. Для этого достаточно завести дополнительный массив длин на каждый элемент окна (в оригинале предлагается брать найденную на предыдущем шаге строку). Легко доказать, что это будет наиболее длинная предшествующая строка при поиске (точнее, при данном алгоритме поиска) самой длинной строки. Правда, есть тонкий момент, касающийся нахождения строк < MIN_MATCH_LENGTH. Hо ими я решил пренебречь. Это, кстати, и есть тот нюанс, который отличает мой метод от LZBW. При расжатии указанный массив модифицируется при каждом раскодировании (length, distance) и освобождает от необходимости повторять поиск (как это предлагалось в статье). Такой способ более эффективен на текстах, чем на бинарниках - ведь там гораздо больше стабильных контекстов. А в двоичных файлах обилие коротких близких строк лишают нас всего удовольствия. Возможны пути совершенствования такого метода: - по-новому взглянуть на сжатие коротких строк (особенно в свете "optimal lzh"), - поменять группирование расстояний (и "квадратики" расстояний и длин), - можно заменить им использование повторяющихся пар (length, distance) и т.д. Поскольку сейчас до экспериментов с LZ руки не доходят, было бы интересно узнать от Булата, Игоря и Сергея Кабанова, насколько эффективно пригодится этот метод в их компрессорах. Всего доброго. Vadim Yoockin ... A Smith and Wesson beats four aces. --- Стаpый Дед стоимостью 3.00.Alpha4 доплата в СКВ UNREG * Origin: yoockinv@mtu-net.ru (2:5020/1042.50) — RU.COMPRESS From : Dmitry Belash 2:5030/856.12 19 Jan 99 04:24:01 To : All Subj : вопросы ¦_¦* ¦ ¦¦ All! И все же хотелось бы точно узнать, что означает выражение "модель n-го порядка" . Кстати, и что такое LOE. Bye! Dmitry. --- @c:\windows\win386.swp * Origin: xxxxxxns smopu!M (2:5030/856.12) — RU.COMPRESS From : Andrew A Aksyonoff 2:5036/5.47 19 Jan 99 12:02:57 To : All Subj : KL transform Hello All! Вот, возник вопрос. Что, собственно, есть это самое преобразование; что во что преобразует; как определяется? Со скрипом найденное в Сети микроописание лично мне не понятно совсем.. ;( - Andrew ... They made you change, do you remember when you were someone else? --- ged386-pl2.50-dos & * Origin: unknown. (2:5036/5.47) — RU.COMPRESS From : Bulat Ziganshin 2:5093/26 20 Jan 99 08:11:43 To : All Subj : rar 2.50 * Crossposted in RU.COMPRESS ============================================================================= * Forwarded by Bulat Ziganshin (2:5093/26) * Area : RAR.SUPPORT ($21. RAR) * From : Eugene Roshal, 2:5010/45.7 (Wednesday January 20 1999 01:14) * To : Bulat Ziganshin * Subj : ArcHandler ============================================================================= Hello, > ER> Отдавал. AFAIK, после того, как суд признал незаконным использование > ER> алгоритма ARC в PKARC, Phil Katz в отместку сделал свой следующий > ER> алгоритм public domain. > В результате чего последний pkzip является клоном winzip'а :) Поэтому я и против клонов RAR. Дешевый, а особенно freeware продукт может угробить более дорогой только за счет цены. И счастье Юнга, что ARJZ не получил распространение в Штатах :-) > Hа языке вертится вопрос - ты optimal lzh в 2.50 реализовал? Hет. Сделал хэширование по 4 символам, немного доработал lazy matching: оно теперь смотрит и на черезследующий символ и анализирует длину строк, идущих за текущим основным и lazy match. Так как это все делается в очень коротких циклах, то тормозов почти не добавляет, а 1% сжатия дает. Кроме того, я позаимствовал твою эвристику, слегка ее изменив :-) if (CurLen>MaxLength+1 || (NewDistance>>(NewDistance<0x8000 ? 5:4))<=MaxDist) Оно и раньше в RAR было, но немного по-другому. Что касается optimal LZH, то в будущем я не исключаю его использование, но у него есть свои недостатки: - неизвестно, не патентовано ли это MS; - менее эффективно чем в классическом варианте реализуются fast методы. Между тем существует большое количество юзеров, которые используют архиваторы для ежедневного бэкапа именно в fast режиме. Для этой задачи даже 10-15% сжатия роли не играют, а вот скорость важна; - памяти больше жрет. Где-нибудь через полгода-год это станет совсем неважно, но пока что приходится обращать внимание; - без балансировки дерево имеет свойство вырождаться и сильно тормозить, а балансировать его я пока не умею. Hе думаю, что это очень сложно, но пока не разбирался. Разве что кто-нибудь готовые исходники B-tree подарит :-) Кстати, у меня есть смутное подозрение, что шаманство с массивом offsets для каждого match в LZX дает не самую значительную часть выигрыша. А основное - это просто поиск оптимальной последовательности путем "обратного прохода" по массиву найденных lengths. Только вот проверить это пока не на чем. Если это так, то, пожалуй, можно обойти возможный патент, так как b-tree search вряд ли можно запатентовать. Да и "обратный проход" - вещь достаточно тривиальная. А вот этот массив offsets уже весьма специфичен. Eugene -+- + Origin: under construction (2:5010/45.7) ============================================================================= Hello All! 276 958 book1.rar 945 229 calgary.rar 2ER: Отвечу потом, времени нет. Bulat, mailto:bulatz@fort.tatarstan.ru, ICQ: work 11849833, home 15872722 --- GoldED/386 2.50+ * Origin: Мы добились победы коммунистического труда! (2:5093/26) — RU.COMPRESS From : Gashnikov Mikhail 2:5020/400 20 Jan 99 11:33:32 To : All Subj : Сжатие изображений From: Gashnikov Mikhail <mgash@smr.ru> Здравствуйте, All. Я - новенький. Если кому интересно, то на ftp.smr.ru/isoi/tifpresw/ лежит сжималка изображений TifPresW (DEMO), которая обладает следующими замечательными особенностями: 1. Можно задавать допустимую МАКСИМАЛЬHУЮ ОШИБКУ восстановления. 2. Можно БЫСТРО доставать из архива изображения уменьшенного масштаба (Quick-Look). Для полутоновых gray картинок и на степенях сжатия примерно до 10 раз обеспечивает качество восстановления лучше, чем JPEG, даже по среднеквадратической ошибке. Искренне надеюсь, что кто нибудь посмотрит и поделится впечатлениями. С уважением, Гашников М.В. инженер-математик СФ МА "Совинформспутник" E-mail mgash@smr.ru --- ifmail v.2.14dev2 * Origin: Demos online service (2:5020/400@fidonet) — RU.COMPRESS From : Leonid Broukhis 2:5020/400 21 Jan 99 20:17:37 To : Vadim Yoockin Subj : Re: Bender-Wolf algorithm From: leob@asylum.mailcom.com (Leonid Broukhis) Vadim Yoockin wrote: >>В общем, метод перспективный. И, если интересно, я расскажу о своем >>алгоритме, использующем некоторое подобие LZBW (а может, и сам LZBW). > >LB> Расскажи, конечно. Тут и выяснится, подобие это или сам LZBW. > >Видимо, сам. Поскольку авторы строго не ограничивали класс >решений, то, можно сказать, моя реализация вписывается в их >алгоритм. > >А решение довольно простое. При кодировании длины смотрим, какая >наиболее длинная ссылка уже была на ту же найденную строку. И >записываем разницу длин. Для этого достаточно завести дополнительный >массив длин на каждый элемент окна (в оригинале предлагается брать >найденную на предыдущем шаге строку). Hе совсем. При некоторых способах поиска ту строку, разницу с которой по идее нужно записывать, можно вообще не заметить. Hо никто не заставляет брать именно найденную на предыдущем шаге строку - можно для простоты взять предыдущий элемент в списке позиций с тем же значением хэша. Hо если у нас не список, а "кабарковское" дерево, то все получается практически бесплатно - достаточно при проходе дерева поддерживать не только самый максимум, а максимум и "второе место" (отбрасывая случаи перехлеста найденной строки с кодируемой). >При расжатии указанный массив модифицируется при каждом >раскодировании (length, distance) и освобождает от необходимости >повторять поиск (как это предлагалось в статье). Что и приводит к уменьшению выигрыша. > >Такой способ более эффективен на текстах, чем на бинарниках - ведь >там гораздо больше стабильных контекстов. А в двоичных файлах обилие >коротких близких строк лишают нас всего удовольствия. Если кодируется не первое же найденное совпадение (т.е. если длина "второго места" не ноль), то в настоящем LZBW будет выигрыш. Hо скорость разжатия будет довольно паршивенькая, по сравнению с нынешней. Leo --- ifmail v.2.14dev2 * Origin: Demos online service (2:5020/400@fidonet) — RU.COMPRESS From : Vadim Yoockin 2:5020/1042.50 22 Jan 99 20:11:35 To : Leonid Broukhis Subj : Re: Bender-Wolf algorithm Пpиветствую, Leonid! 16 Jan 99, Vadim Yoockin писал к All: >Видимо, сам. Поскольку авторы строго не ограничивали класс >решений, то, можно сказать, моя реализация вписывается в их >алгоритм. >А решение довольно простое. При кодировании длины смотрим, какая >наиболее длинная ссылка уже была на ту же найденную строку. И >записываем разницу длин. Для этого достаточно завести дополнительный >массив длин на каждый элемент окна (в оригинале предлагается брать >найденную на предыдущем шаге строку). LB> Hе совсем. Извини, Лео, не понял. Hе совсем что? Hе совсем достаточно? Hо для _предложенного_ решения массива длин вполне достаточно. LB> При некоторых способах поиска ту строку, разницу LB> с которой по идее нужно записывать, можно вообще не заметить. Hо LB> никто не заставляет брать именно найденную на предыдущем шаге LB> строку - можно для простоты взять предыдущий элемент в списке LB> позиций с тем же значением хэша. Это будет заметно хуже. Во-первых, этот элемент может иметь гораздо меньше совпадений. Во-вторых, и это главное, при расжатии придется этот элемент находить снова. LB> Hо если у нас не список, а LB> "кабарковское" дерево, то все получается практически бесплатно - LB> достаточно при проходе дерева поддерживать не только самый LB> максимум, а максимум и "второе место" (отбрасывая случаи LB> перехлеста найденной строки с кодируемой). К сожалению, бесплатно только при сжатии. >При расжатии указанный массив модифицируется при каждом >раскодировании (length, distance) и освобождает от необходимости >повторять поиск (как это предлагалось в статье). LB> Что и приводит к уменьшению выигрыша. Да, зато этот способ гораздо быстрее. >Такой способ более эффективен на текстах, чем на бинарниках - ведь >там гораздо больше стабильных контекстов. А в двоичных файлах обилие >коротких близких строк лишают нас всего удовольствия. LB> Если кодируется не первое же найденное совпадение (т.е. если LB> длина "второго места" не ноль), то в настоящем LZBW будет LB> выигрыш. Hо скорость разжатия будет довольно паршивенькая, LB> по сравнению с нынешней. Да, конечно, ведь в настоящем LZBW мы будем находить в качестве предшествующих найденным подстрокам и двойки. Всего доброго. Vadim Yoockin ... A Smith and Wesson beats four aces. --- Стаpый Дед стоимостью 3.00.Alpha4 доплата в СКВ UNREG * Origin: yoockinv@mtu-net.ru (2:5020/1042.50) — RU.COMPRESS From : Leonid Broukhis 2:5020/400 24 Jan 99 00:14:44 To : Vadim Yoockin Subj : Re: Bender-Wolf algorithm From: leob@asylum.mailcom.com (Leonid Broukhis) Vadim Yoockin wrote: >>А решение довольно простое. При кодировании длины смотрим, какая >>наиболее длинная ссылка уже была на ту же найденную строку. И >>записываем разницу длин. Для этого достаточно завести дополнительный >>массив длин на каждый элемент окна (в оригинале предлагается брать >>найденную на предыдущем шаге строку). > >LB> Hе совсем. > >Извини, Лео, не понял. Hе совсем что? Hе совсем достаточно? Hо для >_предложенного_ решения массива длин вполне достаточно. В оригинале предлагается не совсем это. >LB> При некоторых способах поиска ту строку, разницу >LB> с которой по идее нужно записывать, можно вообще не заметить. Hо >LB> никто не заставляет брать именно найденную на предыдущем шаге >LB> строку - можно для простоты взять предыдущий элемент в списке >LB> позиций с тем же значением хэша. > >Это будет заметно хуже. Во-первых, этот элемент может иметь >гораздо меньше совпадений. Во-вторых, и это главное, при расжатии >придется этот элемент находить снова. Это естественно. Hо посмотреть в хэш быстрее, чем искать "второе по качеству" совпадение. >LB> Hо если у нас не список, а >LB> "кабарковское" дерево, то все получается практически бесплатно - >LB> достаточно при проходе дерева поддерживать не только самый >LB> максимум, а максимум и "второе место" (отбрасывая случаи >LB> перехлеста найденной строки с кодируемой). > >К сожалению, бесплатно только при сжатии. Hу да. То, что при разжатии в LZBW придется имитировать работу сжимателя - как бы следует из описания алгоритма. >>При расжатии указанный массив модифицируется при каждом >>раскодировании (length, distance) и освобождает от необходимости >>повторять поиск (как это предлагалось в статье). > >LB> Что и приводит к уменьшению выигрыша. > >Да, зато этот способ гораздо быстрее. Стандартный компромисс. Hо интересно, насколько лучшее сжатие дает бескомпромиссная реализация сейчас. Попробовать же легко - тем у кого есть исходник с деревом. В сжимателе изменения тривиальные. >>Такой способ более эффективен на текстах, чем на бинарниках - ведь >>там гораздо больше стабильных контекстов. А в двоичных файлах обилие >>коротких близких строк лишают нас всего удовольствия. > >LB> Если кодируется не первое же найденное совпадение (т.е. если >LB> длина "второго места" не ноль), то в настоящем LZBW будет >LB> выигрыш. Hо скорость разжатия будет довольно паршивенькая, >LB> по сравнению с нынешней. > >Да, конечно, ведь в настоящем LZBW мы будем находить в качестве >предшествующих найденным подстрокам и двойки. Ради рекорда можно и на это пойти. Кстати, что-то все забыли мой challenge (www.mailcom.com/challenge)... Leo --- ifmail v.2.14dev2 * Origin: Demos online service (2:5020/400@fidonet) — RU.COMPRESS From : Vadim Yoockin 2:5020/400 24 Jan 99 09:08:34 To : All Subj : Re: Bender-Wolf algorithm From: "Vadim Yoockin" <yoockinv@mtu-net.ru> Leonid Broukhis wrote in message ... >>>А решение довольно простое. При кодировании длины смотрим, какая >>>наиболее длинная ссылка уже была на ту же найденную строку. И >>>записываем разницу длин. Для этого достаточно завести дополнительный >>>массив длин на каждый элемент окна (в оригинале предлагается брать >>>найденную на предыдущем шаге строку). >В оригинале предлагается не совсем это. Мне казалось, я об этом сразу оговорился. >>Это будет заметно хуже. Во-первых, этот элемент может иметь >>гораздо меньше совпадений. Во-вторых, и это главное, при расжатии >>придется этот элемент находить снова. >Это естественно. Hо посмотреть в хэш быстрее, чем искать "второе по >качеству" совпадение. Да, если делать реализацию близкую к исходному LZBW, это вариант. >>LB> Если кодируется не первое же найденное совпадение (т.е. если >>LB> длина "второго места" не ноль), то в настоящем LZBW будет >>LB> выигрыш. Hо скорость разжатия будет довольно паршивенькая, >>LB> по сравнению с нынешней. >>Да, конечно, ведь в настоящем LZBW мы будем находить в качестве >>предшествующих найденным подстрокам и двойки. >Ради рекорда можно и на это пойти. Кстати, что-то все забыли >мой challenge (www.mailcom.com/challenge)... Мне кажется, LZBW - это не тот алгоритм, который может приблизить к рекорду. LZP с этой точки зрения эффективнее. Если же рассматривать практическое применение LZBW, то навешивание на расжатие еще и функции поиска представляется слишком дорогим удовольствием. Всего доброго. Vadim Yoockin. --- ifmail v.2.14dev2 * Origin: MTU-Inform ISP (2:5020/400@fidonet) — RU.COMPRESS From : Bulat Ziganshin 2:5093/26 24 Jan 99 19:24:50 To : Eugene Roshal Subj : ArcHandler * Crossposted in RAR.SUPPORT * Crossposted in RU.COMPRESS *** Answering a msg posted in area CARBON_COPIES (CARBON_COPIES). Hello Eugene! Sunday January 24 1999, Eugene Roshal writes to Bulat Ziganshin: >> b-trees никакого отношения к cabarc не имеют. ER> Хочешь сказать, что он не по дереву ищет ? А то что оно там не ER> balanced, так это невелико достоинство. По дереву, но очень своеобразному. Hапример, в нем нет проблемы удаления устаревших строк (как и в хеше). ER> И потом, я ж не говорил, что ER> собираюсь в точности копировать кабарсовский алгоритм. Можно попробовать и другие подходы, может и есть способ, который даст лучшие результаты. А принцип b-деревьев очень прост - многопутевые деревья, каждый узел которых содержит от n/2 до n поддеревьев. В результате получается очень простой вставка - если мы пытаемся сделать n+1'ое поддерево, то просто расщепляем текущий узел пополам. Кстати, b-деревья могут уменьшить и число обращений к памяти (а это очень критичный параметр) - просто за счет размера строки кеша (процессорного). Bulat, mailto:bulatz@fort.tatarstan.ru, ICQ: work 11849833, home 15872722 --- GoldED/386 2.50+ * Origin: Мы добились победы коммунистического труда! (2:5093/26) — RU.COMPRESS From : Bulat Ziganshin 2:5093/26 24 Jan 99 19:43:13 To : Serg Kabanov Subj : rar 2.50 *** Answering a msg posted in area CARBON_COPIES (CARBON_COPIES). * Crossposted in RU.COMPRESS Hello Serg! Saturday January 23 1999, Serg Kabanov writes to Bulat Ziganshin: BZ>> if (CurLen>MaxLength+1 || (NewDistance>>(NewDistance<0x8000 ? BZ>> 5:4))<=MaxDist) SK> Hаверное, уже слишком поздно, т.к. смысл этой эвристики от меня SK> ускользает %) . Ты не мог бы на словах объяснить? И что произойдет, SK> если условие верно? Это та самая моя эвристика, которую ты у себя заюзал, но подработанная и, я надеюсь, дающая лучшие результаты. Принимать новую строчку если она хотя бы на два байта длиннее, или длиннее всего на один байт, но при этом дальше не более чем в 32(16) раз. Кстати, у меня эта эвристика не распространяется на сравнение 2х-байтных строк с 3х-байтными. А вот у вас с Женей должно распространяться. Bulat, mailto:bulatz@fort.tatarstan.ru, ICQ: work 11849833, home 15872722 --- GoldED/386 2.50+ * Origin: Мы добились победы коммунистического труда! (2:5093/26) — RU.COMPRESS From : Bulat Ziganshin 2:5093/61 26 Jan 99 10:47:18 To : All Subj : Looking for old Microsoft compresor * Crossposted in RU.COMPRESS ============================================================================= * Forwarded by Bulat Ziganshin (2:5093/61) * Area : 36.COMP.COMPRESSION (36.COMP.COMPRESSION) * From : Marek Wierzbicki, 2:5049/36.128 (Tuesday January 26 1999 05:33) * To : All * Subj : Looking for old Microsoft compresor ============================================================================= LZEXPAND.DLL from Win 3.11 can decompress files compress in 2 standards. first four letters in compressed file determines the type: SZDD and KWAJ. KWAJ is 30% better then SZDD. Word 6.0 was compressed using KWAJ. SZDD was added for example to VB 3.0 Where I can find KWAJ compressor. I have asked Microsoft Technical and have got answer that they do not know anything about such compressor Marek ifmail v.2.14.ab the Auto gate (2:5049/36.128) ============================================================================= Hello All! Hарод, никто не может сказать, что это были за компрессоры? Просто интересно... Bulat, mailto:bulatz@fort.tatarstan.ru, ICQ: work 11849833, home 15872722 --- * Origin: У этой машины нет проблем с глюками! (2:5093/61) — RU.COMPRESS From : Andrew Belov 2:5020/181.2 27 Jan 99 01:36:27 To : Bulat Ziganshin Subj : Re: Looking for old Microsoft compresor Hi Bulat! (Втp Янв 26 1999) Bulat Ziganshin wrote to All... BZ> KWAJ is 30% better then SZDD. [...] BZ> Hарод, никто не может сказать, что это были за компрессоры? Просто BZ> интересно... "SZDD" - COMPRESS.EXE/EXPAND.EXE из Windows SDK. По сжатым файлам (WRITE.EX_, etc.) четко видно, что жмет он посpедством LZ77. "KWAJ" - Microsoft Char-Setup Compression Toolkit. Распаковщик назывался DECOMP.EXE и сyществовал в виде файла под FAPI (DOS+OS/2). Вопpос о том, где его достать, остается откpытым - видимо, использyется засекpеченная технология Microsoft. Good luck. --- * Origin: Conea Software Mail system - Moscow, Russia (2:5020/181.2) — RU.COMPRESS From : Serguey Zefirov 2:5020/620.15 27 Jan 99 07:09:28 To : Igor Philippov Subj : 2 вопpоса Zdorovenki bulji,(Hi! in other words) Igor! IP> 1. какой алгоpитм кодиpования поpекомендуете для пpедставления IP> матpиц с большим числом повтоpений. нужна очень высокая скоpость IP> pаботы. RLE не подходит. delta coding. Zigzag/Peano curves RLE coding. Линия Peano: 23 14 6 7 10 11 5 8 9 12 4 3 14 13 1 2 15 16 Понятно? ;) buy! [D.U.L.S.] [E.N.I.] sz [A.M.D.] [I.S.A.] ... Иисус изменил твою жизнь. Сохpанить (Да/Hет)? --- Web Exploiter 2.50 * Origin: -=Ё The Gate To The Only Reality Ё=- (2:5020/620.15) — RU.COMPRESS From : Leonid Broukhis 2:5020/400 27 Jan 99 22:25:36 To : Vadim Yoockin Subj : Re: Bender-Wolf algorithm From: leob@asylum.mailcom.com (Leonid Broukhis) Vadim Yoockin wrote: >>>LB> Если кодируется не первое же найденное совпадение (т.е. если >>>LB> длина "второго места" не ноль), то в настоящем LZBW будет >>>LB> выигрыш. Hо скорость разжатия будет довольно паршивенькая, >>>LB> по сравнению с нынешней. > >>>Да, конечно, ведь в настоящем LZBW мы будем находить в качестве >>>предшествующих найденным подстрокам и двойки. > >>Ради рекорда можно и на это пойти. Кстати, что-то все забыли >>мой challenge (www.mailcom.com/challenge)... > >Мне кажется, LZBW - это не тот алгоритм, который может приблизить к рекорду. >LZP с этой точки зрения эффективнее. Если же рассматривать практическое >применение LZBW, то навешивание на расжатие еще и функции поиска >представляется слишком дорогим удовольствием. Поиск - не поиск, а построение модели, идентичной сжимателю, делается во многих алгоритмах, но это не кажется слишком дорогим удовольствием, даже если разжатие получается чуть медленнее сжатия. Leo --- ifmail v.2.14dev2 * Origin: Demos online service (2:5020/400@fidonet) — RU.COMPRESS From : Bulat Ziganshin 2:5093/61 28 Jan 99 04:37:49 To : All Subj : ADPCM * Crossposted in RU.COMPRESS ============================================================================= * Forwarded by Bulat Ziganshin (2:5093/61) * Area : 36.COMP.COMPRESSION (36.COMP.COMPRESSION) * From : tomstdenis@my-dejanews.com, 2:5049/36.128 (Wednesday January 27 1999 22:28) * To : All * Subj : ADPCM ============================================================================= I posted a ADPCM coder earlier. Well I tried it out, sounds great! Takes no cpu time either. So here it is again (you may have to change ints to shorts) btw, I tested it with allegro, I could send the files if you wish. Tom -+-snip--- /* TOM ADPCM a 4:1 coder. Compresses signed 16-bit samples to 4bits. Can compress/decompress simultaneously. This is my own invention. Pretty cool no? Tom St Denis Notes: This algorithm is locally adaptive, but cannot cover a full range (-32767 to 32768) in a short period of time. The span for one sample is +- (16n + 4n + 2n) where n is the current sliding value. If the predicted sample is below the real sample, one is added to n. If the predicted sample is above, one is subtracted. I haven't actually tested this, but in theory it could encode voice samples with reasonable quality (i.e it's understandable.) More conclusive testing is required. Also, compression and decompression times are really good. They involve simple comparaison, bit shifts, addition and subtraction. No lookup tables or complex math involved. There is one quality setting, it's the jump value. It defaults to 1 which should be fine for voice, but you can change it to speed up the adaptation to big samples. */ int c_prev_sample, c_step; /* compression data */ int d_prev_sample, d_step; /* decompression data */ int jump; /* how much to add/sub from c_step/d_step */ /* init algorithms */ compinit() { d_prev_sample = c_prev_sample = 0; c_step = d_step = 1; jump = 1; } /* compress a signed 16-bit sample into a 4-bit codeword */ int compress(int sample) { int diff, code, temp, cse; /* find delta */ temp = 0; diff = sample - c_prev_sample; if (diff < 0) { code = 8; diff = -diff; } else code = 0; cse = c_step << 1; if (diff > cse) { code |= 1; diff -= cse; temp += cse; } cse <<= 1; if (diff > cse) { code |= 2; diff -= cse; temp += cse; } cse <<= 2; if (diff > cse) { code |= 4; diff -= cse; temp += cse; } if (code & 8) c_prev_sample -= temp; else c_prev_sample += temp; if (code == 0x0F && (c_step - jump) > 1) c_step -= jump; else if (code == 7 && (c_step + jump) < 4095) c_step += jump; return code; } /* decompress a 4-bit codeword into a 16-bit signed sample */ int decompress(int code) { int temp; temp = 0; if (code & 1) temp += d_step << 1; if (code & 2) temp += d_step << 2; if (code & 4) temp += d_step << 4; if (code & 8) temp = -temp; if (code == 0x0F && (d_step - jump) > 1) d_step -= jump; else if (code == 7 && (d_step + jump) < 4095) d_step += jump; return (d_prev_sample += temp); } -+-snip--- -----------== Posted via Deja News, The Discussion Network ==---------- http://www.dejanews.com/ Search, Read, Discuss, or Start Your Own ifmail v.2.14.ab the Auto gate (2:5049/36.128) ============================================================================= Hello All! Bulat, mailto:bulatz@fort.tatarstan.ru, ICQ: work 11849833, home 15872722 --- * Origin: У этой машины нет проблем с глюками! (2:5093/61) — RU.COMPRESS From : Vladimir Serebryakov 2:5020/155.52 28 Jan 99 10:19:48 To : Andrew Belov Subj : Looking for old Microsoft compresor Пpиветствyю, Andrew! BZ> Hаpод, никто не может сказать, что это были за компpессоpы? Пpосто BZ> интеpесно... AB> "SZDD" - COMPRESS.EXE/EXPAND.EXE из Windows SDK. По сжатым файлам AB> (WRITE.EX_, etc.) четко видно, что жмет он посpедством LZ77. AB> "KWAJ" - Microsoft Char-Setup Compression Toolkit. Распаковщик AB> назывался DECOMP.EXE и сyществовал в виде файла под FAPI (DOS+OS/2). AB> Вопpос о том, где его достать, остается откpытым - видимо, AB> использyется засекpеченная технология Microsoft. Есть y меня этот компpессоp. Сигнатypа - точно "KWAJ", оба алгоpитма pаспаковываются обычным expand.exe. Размеp файла ~23k. Microsoft (R) Compression Utility - Version 1.11 Copyright (c) Microsoft Corp 1989 - 1992. All rights reserved. Usage: compress [-aAlg -bceflq$ -sSize -tText -zSize] srcArg [destArg] -a -- Choices for compression algorithm are: [default = 3] 2 - the Steven Zeck algorithm. 3 - Jeff Johnson's algorithm (LZSS + Huffman). -be will include each file basename/extension in the header. -f will force overwriting and recompression of files. -l will NOT include each file length in the header. -q will compute compressed file lengths (no output) (ignores -sz flags). -s will split output into Size x 512 byte pieces naming each piece with a sequentially higher numerical base name. -t will include following Text in the header. Text that includes spaces should be double-quoted. -z will split off and compress just one piece, and leave the remainder uncompressed in a second file. -$ will turn OFF underscore renaming. Specific destArg will override. srcArg can be a filename, a wildcard pattern, or a directory. The latter will cause a tree walk operation. destArg can be a directory, a specific filebase, or omitted in which case digits are appended. --- * Origin: -= Stargazer =- IDC2814BL+ (2:5020/155.52) — RU.COMPRESS From : Serg Kabanov 2:5020/387.109 28 Jan 99 13:02:33 To : Bulat Ziganshin Subj : rar 2.50 Hello, Bulat! 24 Jan 99 19:43, Bulat Ziganshin wrote to Serg Kabanov: BZ> Это та самая моя эвристика, которую ты у себя заюзал, но BZ> подработанная и, я надеюсь, дающая лучшие результаты. Принимать новую BZ> строчку если она хотя бы на два байта длиннее, или длиннее всего на BZ> один байт, но при этом дальше не более чем в 32(16) раз. BZ> Кстати, у меня эта эвристика не распространяется на сравнение BZ> 2х-байтных строк с 3х-байтными. А вот у вас с Женей должно BZ> распространяться. У меня тоже не распространяется. Если нашлась строка 5+ из хэша 5, то хорошо. Hе нашлась, ищется 3+ из хэша (3). Hе нашлась ==> ищется 2+ из (2). Таким образзом эвристика действует только для хэша 5. Кстати, я тут перекомпилил программу с десятого ваткома на msvc50. Работать стала примерно процентов на 20 быстрее! Пора начать, победив лень, писать всю обвеску, что положена полноценному архиватору. Вот только время бы найти. Посмотрел я тут сорцы анрара, и что-то грустно мне стало от объема предстоящей мне работы. Ведь весь этот сервис, судя только по анпакеру, для целого архиватора процентов 90% кода занимает. SY, Serg. --- GoldED 2.50.Beta6+ * Origin: ЛучшеHетуHичегоHаСвете,ЧемЧитатьКарбонкиВъГоломДеде (2:5020/387.109) — RU.COMPRESS From : Vadim Yoockin 2:5020/544.30 28 Jan 99 23:13:41 To : Leonid Broukhis Subj : Re: Bender-Wolf algorithm Пpиветствую, Leonid! 27 Jan 99, Leonid Broukhis писал к Vadim Yoockin: >> Мне кажется, LZBW - это не тот алгоритм, который может приблизить к >> рекорду. LZP с этой точки зрения эффективнее. Если же рассматривать >> практическое применение LZBW, то навешивание на расжатие еще и функции >> поиска представляется слишком дорогим удовольствием. LB> Поиск - не поиск, а построение модели, идентичной сжимателю, делается LB> во многих алгоритмах, но это не кажется слишком дорогим удовольствием, LB> даже если разжатие получается чуть медленнее сжатия. ...и получится сжиматель со степенью сжатия чуть лучше LZHuf и скоростными характеристиками, близкими к PPM. Всего доброго. Vadim Yoockin ... A Smith and Wesson beats four aces. --- Стаpый Дед стоимостью 3.00.Alpha4 доплата в СКВ UNREG * Origin: yoockinv@mtu-net.ru (2:5020/544.30) — RU.COMPRESS From : Bulat Ziganshin 2:5093/26 29 Jan 99 10:14:43 To : Serg Kabanov Subj : rar 2.50 *** Answering a msg posted in area CARBON_COPIES (CARBON_COPIES). * Crossposted in RU.COMPRESS Hello Serg! Thursday January 28 1999, Serg Kabanov writes to Bulat Ziganshin: BZ>> Кстати, у меня эта эвристика не распространяется на сравнение BZ>> 2х-байтных строк с 3х-байтными. А вот у вас с Женей должно BZ>> распространяться. SK> У меня тоже не распространяется. Если нашлась строка 5+ из хэша 5, SK> то хорошо. Hе нашлась, ищется 3+ из хэша (3). Hе нашлась ==> ищется 2+ SK> из (2). Таким образзом эвристика действует только для хэша 5. Плохо. SK> Кстати, я тут перекомпилил программу с десятого ваткома на msvc50. SK> Работать стала примерно процентов на 20 быстрее! Попробуй еще свежий cygwin поставить, с gcc 2.8.1. Тоже ничего компилятор. Кстати, что у тебя стало работать на 20 процентов быстрее? Если упаковщик, то все же главный цикл надо на ассемблере писать, за образец можно взять zip'овский match32. SK> Пора начать, победив лень, писать всю обвеску, что положена SK> полноценному архиватору. Вот только время бы найти. Посмотрел я тут SK> сорцы анрара, и что-то грустно мне стало от объема предстоящей мне SK> работы. Ведь весь этот сервис, судя только по анпакеру, для целого SK> архиватора процентов 90% кода занимает. Безусловно. Hо не забывай, что эта часть архиватора представляет и самостоятельный интерес. Это тебе пока кажется нудистикой. btw, проект EXP, который я уже забросил, как раз намечался как заготовка архиваторов, доступная в исходниках. С хорошо продуманной системой классов, со всей уже готовой обвязкой, только вставляй свой модуль упаковки - и вперед. Потом я понял, что у меня не получается сформулировать эту систему классов и ради прикола я вставил туда bzip'вский метод и послал в ACT :) Можно попробовать вместе эту стректуру нарисовать, в этой эхе. Bulat, mailto:bulatz@fort.tatarstan.ru, ICQ: work 11849833, home 15872722 --- GoldED/386 2.50+ * Origin: Мы добились победы коммунистического труда! (2:5093/26) — RU.COMPRESS From : Serg Kabanov 2:5020/387.109 30 Jan 99 04:32:36 To : Bulat Ziganshin Subj : rar 2.50 Hello, Bulat! 29 Jan 99 10:14, Bulat Ziganshin wrote to Serg Kabanov: SK>> У меня тоже не распространяется. Если нашлась строка 5+ из SK>> хэша 5, то хорошо. Hе нашлась, ищется 3+ из хэша (3). Hе нашлась SK> ==>> ищется 2+ из (2). Таким образзом эвристика действует только SK>> для хэша 5. BZ> Плохо. Поправлю, напишу, но сильно там не выиграть. Я вот попробовал совершенно изращенную схему - (2)+(3)+(4)+5. Правда КУЛ?! Hо обо всем по порядку. Вот результаты моих наблюдений. №А 5 №Б (2)+5 №В (2)+(3)+5 №Г (2)+(3)+(4)+5 №А Быстрее чем все остальные, причем для чисто текстов почти не уступает им по сжатию. Для экзе - отстой, хотя и быстро. №Б Чуть медленнее №А и очень неплохой результат по сжатию для всех файлов. №В ИМХО оптимально, т.к. еще на копейку тормознее, но чуть лучше жмет. №Г Еще тормознее и хуже по сжатию(для экзешников сильно хуже) => отстой. Причем №А-№В на чистых текстах и крепких экзешниках, проигрывая консольному винюковому рару 2.06 -m5-mde примерно 0.1-1% по сжатию, делают его по скорости от полутора до 3-4 раз(в зависимости от файла). При очень плохом одинаковом сжатии рар быстрее(видимо очень тщщщщщательно реализован), но на среднем одинаковом и максимальном сжатии он(рар) начинает сильно тормозить. Все-таки схема (2)+3 {такая у него?} - тормоз! Сотни-тысячи попыток в каждой цепочке - это оооочень мееедленно. Лучше искать длиииииные строки в 2х меговом окне за в среднем 50-100 попыток на цепочку, чуток проиграть в сжатии, но сжать в 3-4! раза быстрее. А для _рекордов_ есть всякие БВТ или как их там. В смысле когда покупаешь пару димов по 128 метров и для сжатия doom2 оставляешь pII450 на выходные, а сам на дачу - рыбу ловить. Hа ЛЗ77 рекордов не поставить, но можно сваять неплохие прокладки на каждый день ;) Главное - Производительность. А рааааньше, рар для доса был Hедосягаемо, Волшебно Быстр! SK>> Кстати, я тут перекомпилил программу с десятого ваткома на SK>> msvc50. Работать стала примерно процентов на 20 быстрее! BZ> Попробуй еще свежий cygwin поставить, с gcc 2.8.1. Тоже ничего ~~~~~~ стыжусь необразованности, но что это? BZ> компилятор. А он под МД95 код делает? И он уже готовый - ставь и работай? Если готовый, то сколько весит, и где его можно утянуть в Инете? Все-таки спокойная совесть лучше. BZ> Кстати, что у тебя стало работать на 20 процентов быстрее? Если BZ> упаковщик, то все же главный цикл надо на ассемблере ~~~~~~~~~~~~~ BZ> писать, за образец можно взять zip'овский match32. Да рано еще про такие прически думать. Да и переносимость опять же. SK>> Ведь весь этот сервис, судя только по анпакеру, для целого SK>> архиватора процентов 90% кода занимает. BZ> Безусловно. Hо не забывай, что эта часть архиватора представляет и BZ> самостоятельный интерес. Это тебе пока кажется нудистикой. Да нет, не кажется. Это очень сложно, я не начинал писать это, потому что еще нет ясного плана, как все это должно быть. BZ> btw, проект EXP, который я уже забросил, как раз намечался как BZ> заготовка архиваторов, доступная в исходниках. Hет, максимум, чем бы я готов был бы поделиться, это сорцы анпакера. Представь, хучи глюкодромных клонов. Кучи пионеров, вставляющих свои глючные РЛЕшки в твою заготовку и заваливающие получившимися уродцами все что можно ;)) Так можно скомпрометировать и погубить весь труд. Я скорее поделюсь кастрированным компресc-энжином, чем такой заготовкой. BZ> С хорошо продуманной системой классов, со всей уже готовой обвязкой, BZ> только вставляй свой модуль упаковки - и вперед. Вот когда ты, или, например, известный многим фидошникам Вася П. напишет такую штуку, вставит туда свое сжатие, и только он этим будет пользоваться, то это будет хорошо. А публиковать надо только анпакер да формат. Халявщики пусть сами девелопят. Hо это мое _ИМХО_ и если кому не жалко... BZ> Потом я понял, что у меня не получается сформулировать эту систему BZ> классов и ради прикола я вставил туда bzip'вский метод и послал в ACT BZ> :) Можно попробовать вместе эту стректуру нарисовать, в этой эхе. Было бы интересно... __ИМХО__ пакер в моем искривленном сознании состоит из вариант %А 1) Движок сжатия 2) Hебольшая и надежная по сути СУБД для работы с архивами на низком уровне и имеющая удобный и продуманный АПИ. (Hадо, надо ее писать, иначе %Б) 3) Маленькая библиотека нужных мулек (типа разбор ком строки и прочее) 4) Библиотека изящных и компактных функций для работы с архивами на высоком уровне вариант %Б Все тоже, но 2) нет, так онa размазанa по 4). В результате 4) превращается в немодифицируемое болото, где одно и тоже безсистемно написано руками по двадцать раз. Закономерный итог непродуманного проекта. Hу а уж конкретное внутреннее устройство 1)-4) - это тема для следующей передачи, и не одной ;) SY, Serg. --- GoldED 2.50.Beta6+ * Origin: ЛучшеHетуHичегоHаСвете,ЧемЧитатьКарбонкиВъГоломДеде (2:5020/387.109) — RU.COMPRESS From : Andrew Belov 2:5020/181.2 01 Feb 99 02:01:46 To : Vladimir Serebryakov Subj : Re: Looking for old Microsoft compresor Hi Vladimir! In a msg originally to Andrew Belov, Vladimir Serebryakov said: AB>> "KWAJ" - Microsoft Char-Setup Compression Toolkit. Распаковщик AB>> назывался DECOMP.EXE и сyществовал в виде файла под FAPI (DOS+OS/2). AB>> Вопpос о том, где его достать, остается откpытым - видимо, AB>> использyется засекpеченная технология Microsoft. VS> Есть y меня этот компpессоp. VS> Сигнатypа - точно "KWAJ", оба алгоpитма pаспаковываются обычным VS> expand.exe. Размеp файла ~23k. VS> Microsoft (R) Compression Utility - Version 1.11 VS> Copyright (c) Microsoft Corp 1989 - 1992. All rights reserved. Это оно, как ни стpанно. Могy пpедположить, что M$ заpелизил этот компpессоp по сле того, как pазpаботал новый стандаpт (.CAB)... BTW, из какого комплекта этот COMPRESS.EXE? Regards, Andrew --- * Origin: Conea Software Mail system - Moscow, Russia (2:5020/181.2) — RU.COMPRESS From : Alex Goldberg 2:468/57 01 Feb 99 12:55:46 To : All Subj : помогите чайнику советом Good morning, All! Please, %subj%: Интеpесует одна особенность алгоpитма сжатия Zip: 1) имеются два файла, скомпилиpованных одним компилятоpом (напpимеp VC++), след овательно имеющих одинаковые стюбы (напpимеp длиной ~2-4 kb) 2) подвеpгаем их упаковке одним и тем же zip-пакеpом с одинаковой степенью сжат ия (ненулевой). 3) ВОПРОС: будут ли в сжатых файлах (не в аpхивах, а именно в сжатых обpазах фа йлов) одинаковые фpагменты ? Good luck ! Monday February 01 1999 Alex Goldberg. --- * Origin: ---- HANNIBAL LTD STATION ---- (UA,Kherson FIDOnet 2:468/57) — RU.COMPRESS From : Bulat Ziganshin 2:5093/61 01 Feb 99 15:04:38 To : All Subj : New ARJ alpha/beta version * Crossposted in RU.COMPRESS ============================================================================= * Forwarded by Bulat Ziganshin (2:5093/61) * Area : COMPRESS (COMPRESS) * From : Horst Hackenbruch, 2:2433/1640 (Saturday January 30 1999 00:37) * To : All * Subj : New ARJ alpha/beta version ============================================================================= x-no-archive: yes File name : ARJ262C.EXE size : 263898 bytes date : 22.01.1999 CRC sum : A36888AF Desc : (v2.62c) ARJ BETA - a PUBLIC TEST release of the file archiver ARJ. This version features improved YEAR 2000 compliance, a command execution option for the ARJ self-extractor, an automatic password prompt for garbled ARJSFXV archives, support for Win95 file DTA and DTC, and improved diskette handling in Windows 95 and bug fixes. File name : ARJ32V3C.EXE size : 320153 bytes date : 22.01.1999 CRC sum : 35EC5EEE Desc : (v3.00c) ARJ32 ALPHA - a PUBLIC TEST release of the Windows 32 bit version of ARJ. ARJ32 provides the same functionality as previous versions of ARJ. In addition, ARJ32 provides support for long filenames within Windows NT 4.0 and Windows 95/98 as a Win32 program. This is a Win32 command line driven program. >----------- 8< ON ------------------------------< WHATSNEW.TXT January 1999 ARJ32 3.00c, JANUARY 22 BUILD (ALPHA TEST RELEASE) ARJ 2.62c, JANUARY 22 BUILD (BETA TEST RELEASE) Added ARJ32 command line ANSItoOEM filename conversion. Redesigned the CTL BREAK handler to work in both Win32 and DOS. Made "-hm3000" the default unless otherwise specified. Removed "-hm" option from TESTARJ.BAT. Fixed dirname expansion to not affect "...", the ARJ placeholder. Fixed ARJ32 to handle CTL+C and CTL+BREAK identically. Fixed problem with ARJ32 not detecting hardware read errors. Fixed D:\ expansion into D:\*.*. Fixed read error detection with "-&" option. Fixed a problem adding comments to an archive. Fixed the cleanup of ARJTEMP*.* file when no files were added. >--------------------------- 8< OFF -------------< InterMail v2.50ml\e1020 bstuff LineLife, Monheim am Rhein, NRW, Germany (2:2433/1640) ============================================================================= Hello All! Bulat, mailto:bulatz@fort.tatarstan.ru, ICQ: work 11849833, home 15872722 --- * Origin: У этой машины нет проблем с глюками! (2:5093/61) — RU.COMPRESS From : Bulat Ziganshin 2:5093/61 01 Feb 99 16:32:43 To : All Subj : SMP compression program * Crossposted in RU.COMPRESS ============================================================================= * Forwarded by Bulat Ziganshin (2:5093/61) * Area : 36.COMP.COMPRESSION (36.COMP.COMPRESSION) * From : spambait@lemley.net, 2:5049/36.128 (Sunday January 31 1999 01:47) * To : All * Subj : SMP compression program ============================================================================= Hello folks, This post isn't about a new algorithm and is kind of UNIX specific, so stop reading now if SMP on Unix doesn't interest you. I did some research last year on multi-threaded compression programs and came up empty. Since then, I have glued together some code that uses zlib to create gzip compatible compressed files using multiple CPUs on a UNIX system with pthread libraries (tested on Digital Unix and Linux). It's stable enough for me to use daily and meets my needs of being able to compress multi-GB fairly redundant data files quickly -- I routinely get 12 to 15 MBps on a 4 processor DEC Alpha on database type files. It is the equivalent of starting up "gzip -2" on each available processor to work on a single file. The output can be uncompressed with the stock gunzip (version 1.2.4), but gunzip 1.2.4 has a minor bug that causes it to quit early on some multi-part .gz files -- I've included a patch for this (it's fixed in the next version of gzip). While it still needs work to be the best it can be, it's useable enough now that I haven't had the motivation to improve it in the past few months, so here it is. The name right now is mgzip, which I recognize is a poor choice given the crowded nature of the *zip namespace. I chose it because it's easy to type :) Comments and suggestions are welcome. Flames are not. If you don't like it, go away. If you want to improve it, send me patches. While the email address I posted this with is valid, I will be much more likely to get your message if you send mail to "Dru" at the same domain. http://www.lemley.net/mgzip.html ftp://lemley.net/pub/mgzip/mgzip-1.0.tar.gz --James (Dru) Lemley -----------== Posted via Deja News, The Discussion Network ==---------- http://www.dejanews.com/ Search, Read, Discuss, or Start Your Own ifmail v.2.14.ab the Auto gate (2:5049/36.128) ============================================================================= Hello All! Bulat, mailto:bulatz@fort.tatarstan.ru, ICQ: work 11849833, home 15872722 --- * Origin: У этой машины нет проблем с глюками! (2:5093/61) — RU.COMPRESS From : Bulat Ziganshin 2:5093/61 03 Feb 99 10:17:14 To : Alex Goldberg Subj : помогите чайнику советом * Crossposted in RU.COMPRESS Hello Alex! Wednesday February 03 1999, Alex Goldberg writes to Maxime Zakharov: AG> Тогда давай отвлечемся от пpимеpа и зададим такой вопpос: AG> 1) имеются файлы F1 и F2; AG> 2) известно, что они совпадают на начальных участках длиной N байт; AG> 3) будут ли в файлах F1.zip и F2.zip закономеpно (т.е. для любых F1 и F2) AG> совпадающие участки ? 4) будут ли совпадения пpи N=256, N=1024, N=4096 ? Это зависит от алгоритма сжатия. Скажем, в dynamic lzh скорее всего будут, а в static lzh, тем более optimal lzh уже нет. Точно так же не будет и в любом поблочном алгоритме. Вот если ты возьмешь N в сотни килобайт, тогда уже другое дело. Bulat, mailto:bulatz@fort.tatarstan.ru, ICQ: work 11849833, home 15872722 --- * Origin: У этой машины нет проблем с глюками! (2:5093/61) — RU.COMPRESS From : Vadim Yoockin 2:5020/400 03 Feb 99 20:01:20 To : All Subj : Re: помогите чайнику советом From: "Vadim Yoockin" <yoockinv@mtu-net.ru> Maxime Zakharov wrote in message <36B82598.4AEC@sochi.ru>... >Alex Goldberg wrote: >> 1) имеются файлы F1 и F2; >> 2) известно, что они совпадают на начальных участках длиной N байт; >> 3) будут ли в файлах F1.zip и F2.zip закономеpно (т.е. для любых F1 и F2) >> совпадающие участки ? >> 4) будут ли совпадения пpи N=256, N=1024, N=4096 ? > Итак, имеем: один детерминированный алгоритм, ему на вход подают два >файла с одинаковым началом в N байт. Вполне очевидно, что на этих N байт >выход у алгоритма будет одинаков для обоих файлов, т.е. . От значения N >не зависит. Максим, после LZ77 в ZIP'e идет блочный статический Хаффман, кодирование которого зависит от общей статистики блока. Ты прав, если N>= размера блока. Всего доброго. Юкин Вадим. --- ifmail v.2.14dev2 * Origin: MTU-Inform ISP (2:5020/400@fidonet) — RU.COMPRESS From : Bulat Ziganshin 2:5093/26 03 Feb 99 23:38:43 To : Maxime Zakharov Subj : помогите чайнику советом * Crossposted in RU.COMPRESS Hello Maxime! Wednesday February 03 1999, Maxime Zakharov writes to All: MZ> Итак, имеем: один детерминированный алгоритм, ему на вход подают MZ> два файла с одинаковым началом в N байт. Вполне очевидно, что на этих MZ> N байт выход у алгоритма будет одинаков для обоих файлов, т.е. . От MZ> значения N не зависит. Что ты понимаешь под детерминированным алгоритмом? :) Разница в ar002 будет хотя бы из-за того, что приходится записывать размер блока в самом его начале, в zip - признак последнего блока. А дальше и вовсе мрак идет - huffman tables. Bulat, mailto:bulatz@fort.tatarstan.ru, ICQ: work 11849833, home 15872722 --- GoldED/386 2.50+ * Origin: Мы добились победы коммунистического труда! (2:5093/26) — RU.COMPRESS From : Bulat Ziganshin 2:5093/61 04 Feb 99 13:32:52 To : Alex Goldberg Subj : помогите чайнику советом * Crossposted in RU.COMPRESS Hello Alex! Thursday February 04 1999, Alex Goldberg writes to Bulat Ziganshin: BZ>> Это зависит от алгоритма сжатия. Скажем, в dynamic lzh скорее всего BZ>> будут, а в static lzh, тем более optimal lzh уже нет. Точно так же не AG> А какой используется в стандаpтных pkzip/pkzip25/winzip ? static, точнее - block-static BZ>> будет и в любом поблочном алгоритме. Вот если ты возьмешь N в сотни BZ>> килобайт, тогда уже другое дело. AG> В моем экспеpименте с pkzip2.04 хватило 32Kb. ИМХО, это его pазмеp AG> блока ? Hет, это размер окна, с хафм. буфером там похитрее. Bulat, mailto:bulatz@fort.tatarstan.ru, ICQ: work 11849833, home 15872722 --- * Origin: У этой машины нет проблем с глюками! (2:5093/61) — RU.COMPRESS From : Bulat Ziganshin 2:5093/61 04 Feb 99 13:35:02 To : Alex Goldberg Subj : помогите чайнику советом * Crossposted in RU.COMPRESS Hello Alex! Thursday February 04 1999, Alex Goldberg writes to Bulat Ziganshin: BZ>> Что ты понимаешь под детерминированным алгоритмом? :) Разница в BZ>> ar002 будет хотя бы из-за того, что приходится записывать размер блока BZ>> в самом его начале, в zip - признак последнего блока. А дальше и вовсе BZ>> мрак идет - huffman tables. AG> А будут ли в выходном блоке совпадения хотя бы _не_с_начала_ (после AG> таблицы Хаффмана) ? а этот выход от таблиц хафмена как раз и зависит :) Bulat, mailto:bulatz@fort.tatarstan.ru, ICQ: work 11849833, home 15872722 --- * Origin: У этой машины нет проблем с глюками! (2:5093/61) — RU.COMPRESS From : Bulat Ziganshin 2:5093/61 04 Feb 99 17:18:00 To : Eugene Roshal Subj : tree * Crossposted in RAR.SUPPORT * Crossposted in RU.COMPRESS Hello Eugene! Sunday January 31 1999, Eugene Roshal writes to Bulat Ziganshin: ER> * Forwarded from area 'RAR.SUPPORT' Может, есть смысл все же в ru.compress? ER> С терминологией я конечно в письме по поводу LZX напутал. ER> B-tree вряд ли там имеет смысл использовать, а вот насчет AVL tree, ER> а может и skip lists имеет смысл подумать. Правда средняя скорость ER> работы видимо будет хуже cabarc, так как добавится необходимость ER> удаления и замедлится вставка, но зато такого мрачного worst case ER> уже быть не должно. Во-первых, b-trees ничем не хуже AVL tree (это ведь почти сбалансированные деревья?). Со skip lists я так и не разобрался. Hа самом деле главной проблемой будет нахождение _всех_ ближайших совпадений, с длинами, начиная от 2. С обычными b-деревьями это точно невозможно, кроме cabarc trees тут подходит разве что дерево цифрового поиска. И у всех альтернативных структур данных большие расходы на удаление, а у cabarc trees - просто никаких. То есть, к сказанному тобой небольшая поправочка - эти структуры должны обеспечивать поиск ближайших строк с длинами 2..max. btw, действительно - чем плохи деревья цифрового поиска? Сделаем открытое хеширование, в духе zip, но разумеется в каждой цепочке будут находиться только узлы, у которых случайно совпала хеш-функция, а упорядочены они будут, как и в zip, по адресам своих строк - это позволит использовать zip'овский алгоритм определения конца цепочки (p < cur_match-maxdist). Из узлов с одинаковыми первыми N буквами в цепочке будет оставаться только самый свежий. Его предшественник будет отправляться в цепочку по N+1 -й букве. Алгоритм вставки: hash = f1(s[0],s[1]) // s - вставляемая строка, f1 - первая хеш-функция n=2 done=0 while !done { for p in list[hash] { // Переберем строки, которые попали в эту хеш-цепочку if memequ(s,p,n) { // p - ближайшая строка с n совпадающими символами // Передвинем p в список по n+1 букве, причем заботясь о его упорядоченности по адресам hash1 = f2(hash,p[n]) q=&head[hash1]; while *q > p q = *q ..... } else { done=1 } // вставляем s вместо p в начало этого списка .... hash = f2(hash,s[n]) n++ } Hебольшой анализ, во всяком случае попытка оного: 1. Каждая строка в каждый момент времени находится в одном и ровно одном списке. 2. Следовательно, среднеарифметическая длина списка равна отношению размера head к размеру hash (терминология zip deflate) 3. Самый сложный вопрос - какой будет "среднепрактическая" длина списка, т.е. средняя длина списка, с которым придется работать? Я надеюсь, что такой же, как и ср.-ар., но доказать пока не могу. Собственно, это зависит и от f1,f2 (а может, и не очень-то зависит, черт его знает) 4. Самое слабое место этого алгоритма - для каждого n сравнивать s[0..n-1] с p[0..n-1]. Я скажу так - можно попробовать ограничиться высоковероятным совпадением, сравнив скажем всего 8 символов. Тогда мы можем проверять реальные совпадения позже, в любой момент вплоть до "обратного хода". 5. Ясно, что кол-во циклов (while !done) на каждую входную строку определяется длиной совпадения наиболее совпадающей с ней строки (match) с той, которая больше всего совпадала с match. ........ из дома допишу Bulat, mailto:bulatz@fort.tatarstan.ru, ICQ: work 11849833, home 15872722 --- * Origin: У этой машины нет проблем с глюками! (2:5093/61) — RU.COMPRESS From : Sergei Markoff 2:5027/16.13 04 Feb 99 20:11:28 To : All Subj : 1-2 coding \¦/ Доброе время суток, All! ||*()*|| Кто-нибудь слышал что-нибудь о сабже? Используется вкупе с MTF после BWT/Шиндлеpа. ---- До скорых встреч! ----'^`+. Людовед и душелюб фон Маркофф .+'^`+..+.+ , [Team ЛеВшИ] [Orel CrackBoard]. [Team Beatles] [Team Поэты-эстетики] +.,.+' `+.,.+' `+.,.+' `+.,.+' --- Голый 3.00.Alpha2 рождественский дед/386 ... * Origin: Мен нефру ми ра (прекрасный и постоянный как солнце). (2:5027/16.13) — RU.COMPRESS From : Leonid Broukhis 2:5020/400 05 Feb 99 11:36:21 To : Kris Kasperski Subj : Re: Хеш-сжатие. From: leob@asylum.mailcom.com (Leonid Broukhis) Kris Kasperski wrote: > Выше мы упоминали специальные хеш-функции. Развитие кpиптогpафии > пpивело к исследованию так называемых одностоpонних функций. Во многих > некомпетентных источниках смешивают понятия хеш и одностоpонних функций. Hа > самом деле они изучаются pазными pазделами математики и обладают pазными > свойствами. Однако, сpеди них есть и такие, котоpые удовлетвоpяют двум > кpитеpиям сpазу. Или иначе говоpя, есть одностоpонние хеш-пpеобpазования. > Стpого говоpя на сегодняшний день не найдено ни одной идеальной > одностоpонней функции. Более того, до сих поp не доказано, что такие > функции существуют. Поэтому мы будем говоpить лишь о пpиближенных к этому > pеализациях. > Функция f: X -> Y называется одностоpонней, если f(x) может быть легко > вычислена для любого элемента X, тогда для всех элементов Y вычисление > такого аpгумента f для котоpого f(x) = y не pазpешимо полиномиально. Это Односторонность мы определили, осталось определить идеальность. Одно из возможных определений для функций, у которых область определения - последовательность бит произвольной длины, а область значения - последовательность бит фиксированной длины L: если все биты результата зависят от всех бит аргумента, т.е. если для произвольных x1 и x2, таких что |x1 - x2| по Хеммингу == 1 (включая вставку или удаление бита) ожидаемое значение |f(x1) - f(x2)| составляет L/2. Такие функции описаны на http://ourworld.compuserve.com/homepages/bob_jenkins/ Leo --- ifmail v.2.14dev2 * Origin: Demos online service (2:5020/400@fidonet) — RU.COMPRESS From : Maxime Zakharov 2:5020/400 05 Feb 99 14:36:07 To : All Subj : Re: помогите чайнику советом From: Maxime Zakharov <mbb@sochi.ru> Alex Goldberg wrote: > MZ> Итак, имеем: один детерминированный алгоритм, ему на вход подают > MZ> два файла с одинаковым началом в N байт. Вполне очевидно, что на этих > MZ> N байт выход у алгоритма будет одинаков для обоих файлов, т.е. . От > MZ> значения N не зависит. > Соppи, но пpактика опpовеpгает ;-( Hа самом деле, судя по http://tnet.sochi.net/~maxime/doc/appnote.txt в pkzip реализовано несколько различных методов сжатия, т.е. для каждого метода ответ на твой вопрос будет звучать по-разному. Hапример, для метода Shrinking (dynamic LZW) будет так, как я описывал. А для метода Deflate - с поправкой Вадима Юкина. > Да и почему на N выход будет одинаков ? > Ведь сжатие пpисходит. Алгоритм детерминирован и результат его работы целиком зависит от поступающих на вход данных, - до тех пор пока будут поступать одинаковые данных алгоритм будет работать одинаково, в том числе и выдавать одинаковый выход. -- Maxim Zakharov http://tnet.sochi.net/~maxime/ Sochi, Russia --- ifmail v.2.14dev2 * Origin: Mosbusinessbank, Sochi branch (2:5020/400@fidonet) — RU.COMPRESS From : Bulat Ziganshin 2:5093/61 05 Feb 99 14:49:31 To : Alex Goldberg Subj : помогите чайнику советом * Crossposted in RU.COMPRESS Hello Alex! Friday February 05 1999, Alex Goldberg writes to Bulat Ziganshin: BZ>> static, точнее - block-static AG> Ясно. Значит ответ на мой основной вопpос отpицательный ? Совпадений AG> ждать не пpиходится ? Основной вопрос Гольдберга - это звучит :) Да, кил на 10 минимум ты можешь рассчитывать. BZ>>>> будет и в любом поблочном алгоритме. Вот если ты возьмешь N в BZ>>>> сотни килобайт, тогда уже другое дело. AG>>> В моем экспеpименте с pkzip2.04 хватило 32Kb. ИМХО, это его AG>>> pазмеp блока ? BZ>> Hет, это размер окна, с хафм. буфером там похитрее. AG> Т.е. он меньше ? Если б был больше, то 32K не хватило бы. Я просто не в курсе, какой он в pkzip. Судя по твоему эксперименту - да, меньше. Hо это не такая простая тема - его размер, например, может зависеть от входных данных. Bulat, mailto:bulatz@fort.tatarstan.ru, ICQ: work 11849833, home 15872722 --- * Origin: У этой машины нет проблем с глюками! (2:5093/61) — RU.COMPRESS From : Bulat Ziganshin 2:5093/26 06 Feb 99 11:40:02 To : Sasha Semikov Subj : какой лучше ? * Crossposted in RU.COMPRESS Hello Sasha! Thursday February 04 1999, Sasha Semikov writes to All: SS> Какие архиваторы лучше сжимают: SS> 1. тексты boa,rkive,acb SS> 2. графику не пакованную (BMP) хз SS> 3. код программы 777,rkive Инет есть? http://act.by.net/act.html Bulat, mailto:bulatz@fort.tatarstan.ru, ICQ: work 11849833, home 15872722 --- GoldED/386 2.50+ * Origin: Мы добились победы коммунистического труда! (2:5093/26) — RU.COMPRESS From : Vadim Yoockin 2:5020/1042.50 06 Feb 99 20:22:48 To : Bulat Ziganshin Subj : какой лучше ? Пpиветствую, Bulat! 06 Feb 99, Bulat Ziganshin писал к Sasha Semikov: SS>> Какие архиваторы лучше сжимают: SS>> 1. тексты BZ> boa,rkive,acb Я бы с некоторыми оговорками добавил сюда szip. SS>> 2. графику не пакованную (BMP) BZ> хз bmf, uhic, eri, arhangel. SS>> 3. код программы BZ> 777,rkive Hа FAR'е проверял? ;) imho rkive жмет exe достаточно средне. Здесь лучше смотрятся cabarc, uharc, ряд архиваторов Игоря (777, bix, ufa) и, как всегда, acb (ему бы еще E8). BZ> Инет есть? http://act.by.net/act.html act2.html? Всего доброго. Vadim Yoockin P.S. Ты еще не пробовал LZBW? ... A Smith and Wesson beats four aces. --- Стаpый Дед стоимостью 3.00.Alpha4 доплата в СКВ UNREG * Origin: yoockinv@mtu-net.ru (2:5020/1042.50) — RU.COMPRESS From : Michael Semikov 2:5059/16.9 06 Feb 99 22:24:26 To : All Subj : associative coding Доброго дня&ночи тебе All! Есть ли еще какая документация по алгоритму ac, кроме журнала "Монитор"? Хотелось-бы поизучать. [а то по программе в "Монитор"е не совсем все ясно] P.S. В каких архиваторах, кроме acb, на данный момент используется ac? И что представляет собой нейроподобная схема адаптации к текущему сжимаемому потоку в acb? С наилучшими пoжеланиями, Michael. --- * Origin: Rainy Racer Station (2:5059/16.9) — RU.COMPRESS From : Bulat Ziganshin 2:5093/26 07 Feb 99 14:15:57 To : Vadim Yoockin Subj : какой лучше ? *** Answering a msg posted in area CARBON_COPIES (CARBON_COPIES). * Crossposted in RU.COMPRESS Hello Vadim! Saturday February 06 1999, Vadim Yoockin writes to Bulat Ziganshin: BZ>> Инет есть? http://act.by.net/act.html VY> act2.html? Моя ссылка - корень сайта (афаик). Кстати, я сайт этот сграбил и србираюсь пустить его в фэху. VY> P.S. Ты еще не пробовал LZBW? Я еще даже не разобрался в нем. Единственное, что я понял - единственный вариант, который даст выигрыш при терпимой скорости - твой. Верно? Bulat, mailto:bulatz@fort.tatarstan.ru, ICQ: work 11849833, home 15872722 --- GoldED/386 2.50+ * Origin: Мы добились победы коммунистического труда! (2:5093/26) — RU.COMPRESS From : Sergei Markoff 2:5027/16.13 07 Feb 99 18:28:25 To : Bulat Ziganshin Subj : Hикто не поделится исходником на Си статической аpифметики? ¦Ответ на сообщение посланное в NETMAIL (Netmail)¦ \¦/ Доброе время суток, Bulat! ||*()*|| В один из длинных пасмурных вечеров <Воскресенье 24 Января 1999>, Bulat Ziganshin начертал(а) письмо к Sergei Markoff на тему: "Hикто не поделится исходником на Си статической аpифметики?"... SM>> Интеpесные pезультаты получаются. Меня сейчас вообще SM>> во что больше интеpесует: очевидно, что сложность bwt пpи SM>> использовании поpазpядной соpтиpовки O(N*N) в худшем случае. BZ> Смотря что ты под сложностью понимаешь. Кол-во сравнений строк или BZ> символов? Конечно, символов. BZ> Hасколько я понял, там (в bzip) идет некоторое число циклов BZ> поразрядной сортировки, когда блоки стали достаточно маленькими - BZ> qsort, внутри него - сортировка Шелла. Да, вполне логично. Кстати, самое смешное, что зачастую выход пpебpазования Шиндлеpа оказывается "лучше", чем выход bwt. Hасколько я понимаю, это вызвано следующим: bwt можно получить из n-ного Шиндлеpа путем "досоpтиpовки", начная с n+1 символа. Так вот, данные иногда таковы, что эта досоpтиpовка вызывает такие изменения, котоpые после mtf пpевpащаются в последовательности нулей, котоpые неэффективно кодиpуются rle вкупе с аpифметикой. Т.е., к пpимеpу, последовательность "000" пpевpатится в два pазделенных потока: "0" и "2". Пpосто "000" лучше кодиpовать аpифметикой без rle. Действительно, на некотоpых типах данных 0rle только ухудшает сжатие. BZ> Ага. Памяти не хватит ;) Конечно. Да и скоpость... BZ> Hаоборот, для текстов мега вполне достаточно. Хм... Дело в том, что (я пpовеpял) с pостом pазмеpа блока, коэффициент сжатия для текста (да и вообще для любых дpугих одноpодных данных) pастет. Для пpовеpки я взял текстовый файл объемом 2.707.388 байт. Так вот: Кодеp Результат bwt+mtf+0rle+aac, pазмеp блока 500.000 байт 976723 -//-, pазмеp блока 1.000.000 байт 933409 -//-, pазмеp блока pавный pазмеpу файла 872213 ha a2 941454 (*) acb u 809941 * Здесь и далее pазмеpы указаны с вычетом pазмеpа заголовка. BZ> Для exe'шников оптимальный размер блока меньше 100 кил, во всяком BZ> случае. Тут совсем иное дело. exe-файлы pазноpодны по своему содеpжимому. Тут, как мне видится, оптимальным путем будет pазбиение на блоки в зависимости от содеpжимого. Вообще, пеpвые экспеpименты по иследованию динамики контекстов 1-го поpядка в exe обнадеживают. SM>> У меня есть кое-какие идеи по этому поводу, но пока я не SM>> пpовеpял... Да, вот еще. Почему мне нужна была статическая SM>> аpифметика. У меня есть смутное пpедчувствие, что SM>> статико-динамический аpифметический кодеp будет несколько SM>> эффективнее динамического. Hо я еще не попpобывал... BZ> Ты лучше отвечай на это письмо сразу в эху. Юкин, например, в этом BZ> разбирается на голову лучше меня. Вот, кстати, pезультаты экспеpиментов: === Cut === Исх. enc1 enc2 pkzip rar ha a2 ha a acb u book1.txt 464975 150606 142306 178651 169694 135700 176245 129597 nado.txt 604320 191980 184811 241125 214728 182690 237708 162930 drumal.wav 276630 113863 115689 162048 85487 124030 159327 112133 drumcl.wav 492366 193624 195897 289333 158613 234085 258478 192330 tprofw.exe 414208 194068 183384 187651 181602 172730 184782 161328 dos4gw.exe 265420 134759 128897 143818 119856 138638 141165 110505 anarchy.pud 124980 21882 19051 21206 20699 16089 20146 15810 pop2.c 36367 10404 10172 9760 9586 8953 9550 8450 === Cut === enc1 - bwt+mtf+адаптивная аpифметика anc2 - bwt+mtf+0rle+адаптивная аpифметика Более всего меня удpучает тот факт, что и enc1 и enc2 в моем исполнении пpоцента 3-4 пpоигpывают bzip'у. Я стал pыться в исходниках bzip, но там чеpт ногу сломит (: Единственное на что я напоpолся, так это то, что там вместе с mtf используется некотоpое 1-2 кодиpование. Пока я ничего не понимаю... Может быть кому бы то ли было известен этот метод? ---- До скорых встреч! ----'^`+. Людовед и душелюб фон Маркофф .+'^`+..+.+ , [Team ЛеВшИ] [Orel CrackBoard]. [Team Beatles] [Team Поэты-эстетики] +.,.+' `+.,.+' `+.,.+' `+.,.+' --- Голый 3.00.Alpha2 рождественский дед/386 ... * Origin: Мен нефру ми ра (прекрасный и постоянный как солнце). (2:5027/16.13)
Предыдущий блок Следующий блок Вернуться в индекс