Есть небольшой архиватор, модификация LZ. Но словарь в моем коде используется не эффективно. Для экономии места, как написанно на www,compression.ru, строки можно хранить не полностью, а в виде дерева. Теперь вопрос, как обычную последовательность (например: АБАБАБГГГ) представить в виде дерева? В идеале, объясните подробно. Как это дерево должно быть представлено, как лучше хранить ссылки на след. элемент дерева. Заранее благодарен.
nitrotoluol ИМХО имеется в виду не совсем то, что АБАБАБГГГ. например есть слова: кот, котангенс, котелок, котельная. общий префикс будет "кот" и список указателей: 1. 0 (конец строки); - кот 2. указатель на "ангенс",0; - котангенс 3. указатель на "ел" + список указателей: a. указатель на "ок",0; - котелок б. указатель на "ная",0; - котельная. в случае, если следующая подстрока - конец слова, можно обходится без указателей и завершать слово 0. размер указателей можно изменять. в таком виде обычно хранят слова для проверки орфографии.
если нужно всего лишь это, то можно использовать жадный алгоритм сжатия Хаффмана. как - в этом же подфоруме уже обсуждали, там пошагово даже описали. но ИМХО, t00x со своим постом прав и тебе нужно именно то, что он выше тебе разъяснил.