LZFG
Ещё один эксперимент с простейшими алгоритмами.
Правда на этот раз решил даже не выкладывать.
Это было сделано по небольшому и скудному описанию.
Данные представленны ввиде префиксного дерева, размер которого поддеживается постоянным: не более 65536 узлов.
Когда новый отрезок данных добавляется в дерево, то это как правило создаётся новая вершина.
При этом на выход подаётся номер той вершины, которая встретилась последней по пути от корня.
Там образом здесь прослеживается некая аналогия с LZW. Но на выход попадают те части текста,
которые уже повторялись хотя бы один раз, независимо от их размера. Сам исходник мало отличается
от LZSS. Только на выход подаются не смещения и размеры, а всего лишь небольшие номера вершин в дереве,
разрядность которых возрастает постепенно. К тому же появляется возможность кодировать повторения
всего из двух байт. Звучит это очень хорошо. Но при проверке оказалось что качество сжатия в два раза хуже чем у LZW.
Можно попытаться исправить это положение, передав следом за вершиной номера и сами элементы LZSS,
повторённые участки. Но даже при небольшой разрядности все достоинства метода сводятся к нулю.
Довольно весомое улучшение наблюдается, если вместо чистого номера вершины, а пишу на выход,
номер той вершины до которой последняя цепочка чуть-туть не достала. А так же расстояние до неё
ввиде 4 бит, т.е расстояния не более 16 байт. Но разница с LZW так и так получается огромной и сделать с ней ничего нельзя.