LZFG

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