aPLib

Discussion in 'WASM.RESEARCH' started by tan, Oct 27, 2006.

  1. tan

    tan New Member

    Blog Posts:
    0
    Joined:
    Aug 9, 2006
    Messages:
    4
    не мог бы кто прокомментировать кусок из исходника метода сжатия aPLib

    if (offs >= 32000) len++;
    if (offs >= 1280) len++;
    if (offs < 128) len += 2;
     
  2. Bohdan200

    Bohdan200 New Member

    Blog Posts:
    0
    Joined:
    Sep 13, 2005
    Messages:
    134
    Location:
    Lviv
    А че тут сбсно коментировать?...
    len наращивается на 2 если offs >= 32000 или ести offs < 128
    len наращивается на 1 если 32000 > offs >= 1280
    Простая оптимизация теста на вхождение значения в диапазон...
     
  3. Dr.Golova

    Dr.Golova New Member

    Blog Posts:
    0
    Joined:
    Sep 7, 2002
    Messages:
    348
    Сначала разберись, как работает LZ алгоритм, вопросы отпадут сами собой - это оптимизация копирования lz фразы: При большых смещениях внутри окна нет смысла кодировать короткие фразы, вот и наращивают длину. Вопросы есть?
     
  4. tan

    tan New Member

    Blog Posts:
    0
    Joined:
    Aug 9, 2006
    Messages:
    4
    а чего тогда длину наращивать при offs < 128 ?!

    Я боюсь, что чего-то действительно не понимаю... :-(
    Теория по LZ была прочитана. Но по одному исходнику все равно не могу разобрать до конца алгоритм aPLib. Может еще чего посоветуете почитать.
    Спасибо за ответ.
     
  5. Nothing

    Nothing New Member

    Blog Posts:
    0
    Joined:
    Aug 4, 2003
    Messages:
    139
    Location:
    Russia
    Прошу прощения, а разве где-то пробегал исходник сжатия aplib? Сам автор его вроде не отдает. Или имеется ввиду реверсированный вариант?
     
  6. tan

    tan New Member

    Blog Posts:
    0
    Joined:
    Aug 9, 2006
    Messages:
    4
    вота http://www.ibsensoftware.com/download.html
     
  7. diamond

    diamond New Member

    Blog Posts:
    0
    Joined:
    May 21, 2004
    Messages:
    507
    Location:
    Russia
    Распаковщик там в исходниках, а вот упаковка не является OpenSource. IMHO только по распаковщику понять алгоритм упаковки можно не всегда.
     
  8. Dr.Golova

    Dr.Golova New Member

    Blog Posts:
    0
    Joined:
    Sep 7, 2002
    Messages:
    348
    > а чего тогда длину наращивать при offs < 128 ?!

    Опять же оптимизация - по статистике, lz фраз в ближайших 128 байтах должно быть много и достоточно длинных (больше 2х байт), поэтому можно сэкономить на кодировании длины.

    > IMHO только по распаковщику понять алгоритм упаковки можно не всегда.

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

    tan New Member

    Blog Posts:
    0
    Joined:
    Aug 9, 2006
    Messages:
    4
    использовние флага LWM тоже связано с оптимизацией ?
     
  10. Dr.Golova

    Dr.Golova New Member

    Blog Posts:
    0
    Joined:
    Sep 7, 2002
    Messages:
    348
    > использовние флага LWM тоже связано с оптимизацией ?

    Естественно! Все современные чистые LZ алгоритмы отличаются только способом кодирования литералов/фраз и некоторых методов оптимизаций кодирования потока.
    aplib позиционируется для сжатия бинарных данных, отсюда и такая оптимизация. Был бы под текст сделал - все было бы чуть по другому.