Нигде не видел самого подробного объяснения алгоритма LZSS. На www.compression.ru хорошо объясняется этот алгоритм, но не полностью: какой оптимальный размер представления ссылки и размера повторяющейся фразы лучше использовать, какой использовать порог количества символов при котором фраза заменяется ссылкой и размером, а так же есть и другие вопросы. Поэтому я решил создать этот топик, чтобы освятить в нём все вопросы косающиеся LZSS. Если есть исходники этого алгоритма на MASM'е прошу выкладывать
может быть потому, что у каждого свое понятие "оптимальности"? И под каждую из этих оптимальностей нет оптимальных значений?
А алгоритме не описано какой размер выбирать и как представлять свои данные. Поэтому весь выбор на твоей совести. Оптимальный выбор зависит от исходных данных и размеры можно подбирать чисто под них. > какой использовать порог количества символов при котором фраза заменяется ссылкой и размером Ссылку надо вставлять если она уменьшет размер данных. Если ссылка и размер в сумме, меньше/или равна, количеству байт которые они занимают плюс ещё 1 байт (который нужен чтобы объявить о новом количестве неповторяющихся байт), то ты очевидно эту ссылку вставлять не должен. Я бы например с выбором не морочился. Потому как сам алгоритм мало эффективен, и долго с ним возиться не стоит. Определённо сделать так, чтобы их границы совпадали с границами байт, и успокоиться. Сделать к примеру так: А ещё лучше, чуть-чуть отлониться от начальной консепции и сделать так:
вообще, поиск подстрок наибольшей длины не даёт гарантии лучшего результа, напротив, он может ухудшать ситуацию, зато увеличение ресурсоёмкости алгоса гарантировано на все 100 пудов. лучше юзай блоки равной длины, а саму длину сделай опциональной.