Алгоритмы сжатия LZW / Хаффман / Deflate

 

Други, есть ли уже у кого реализация на MQL4 / 5.    (или же подробно комментированный на C++)

Мой по LZW сжимает только на 25%. А Хаффмана на больших файлах почему-то барахлит, файл получается больше чем исходный. :(

Интернет хорошо прорыскал. Нашел древние варианты (паскаль и с), но писаны коряво и без коментов (к тому же проверить нет чем).

Спасибо.

 

Это читал? по моему вполне вразумительно и на С#      

http://algolist.manual.ru/compress/standard/lzw.php

����� LZW-������ ������
  • algolist.manual.ru
Mark R. Nelson �������: ���������� �.�. ���������� �������� Lempel/Ziv ������ � ������ ������ ��� ������� ����������� � 1977�., � ������������������� (Terry Welch) ������� ��� ����������� � 1984�. �������� �� ��������� �����. ���� � ���� ������, �� LZW-������ �������� ������ �������� ���������� ������. ��� �������� ��� ������-���� �������...
 
Urain:

Это читал? по моему вполне вразумительно и на С#      

http://algolist.manual.ru/compress/standard/lzw.php


c LZW вопросов нет. он понятен и реализация проста.  Из-за того, что адресация словаря (слов в словаре) ограничено 1 байтом - то сжатие всего 25-30%

если делать адрес на 2 байта, то уже не рационально. Оптимально было бы 12 бит, но мороки много с переводом в байты.

сейчас пыхчу над Хаффманом, код сделал, дерево строит (визуализацию дерева проверил), но вот почему то на больших файлах (более 100кб) путь в дереве к конкретному символу занимает больше 8 бит (то есть родных для символа 1 байта). Нерационально получается.

Думал, что может кто реализовал. Кстати, Хаффман работает быстрее LZW раза в два минимум. если бы еще так сжимал :)

 

хотелось бы узнать на какой стадии у топикстартера реализация  под mql5 алгоритма  Хаффмана?

я пока портирую на mql5 этот http://studup.com.ua/blog/2011/03/19/11.html , код рабочий, да и Делфи мне попривычнее 

 

это класс с алгоритмами Хаффмана.

сначала сделал сжатие, но из-за того, что кодируется байтами, результирующее дерево получается большим. То есть в результате кодирования файл занимает больше места чем оригинал.

поэтому обратное декодирование уже не стал дописывать, так как не увидел смысла.

если у вас получится сжимать по коду из Дельфи более компактно, то скиньте пожалста.

Файлы:
 

пока с лету не получилось код из Делфи на mql5 переписать

за код спс, посмотрю 

 

Причина обращения: