Представление словаря в виде дерева (сжатие)

Тема в разделе "WASM.A&O", создана пользователем nitrotoluol, 5 ноя 2007.

  1. nitrotoluol

    nitrotoluol New Member

    Публикаций:
    0
    Регистрация:
    5 сен 2006
    Сообщения:
    848
    Есть небольшой архиватор, модификация LZ.

    Но словарь в моем коде используется не эффективно. Для экономии места, как написанно на www,compression.ru, строки можно хранить не полностью, а в виде дерева.

    Теперь вопрос, как обычную последовательность (например: АБАБАБГГГ) представить в виде дерева?

    В идеале, объясните подробно. Как это дерево должно быть представлено, как лучше хранить ссылки на след. элемент дерева. Заранее благодарен.
     
  2. t00x

    t00x New Member

    Публикаций:
    0
    Регистрация:
    15 фев 2007
    Сообщения:
    1.921
    nitrotoluol
    ИМХО имеется в виду не совсем то, что АБАБАБГГГ.

    например есть слова: кот, котангенс, котелок, котельная.
    общий префикс будет "кот" и список указателей:
    1. 0 (конец строки); - кот
    2. указатель на "ангенс",0; - котангенс
    3. указатель на "ел" + список указателей:
    a. указатель на "ок",0; - котелок
    б. указатель на "ная",0; - котельная.
    в случае, если следующая подстрока - конец слова, можно обходится без указателей и завершать слово 0. размер указателей можно изменять.
    в таком виде обычно хранят слова для проверки орфографии.
     
  3. Ultrin Faern

    Ultrin Faern New Member

    Публикаций:
    0
    Регистрация:
    25 июн 2006
    Сообщения:
    170
    В журнале "МОНИТОР 1.93" был исходник сжатия с хранением сток в виде дерева на паскале...
     
  4. maxdiver

    maxdiver Max

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    308
    Адрес:
    Саратов
    Гасфилд "Строки, деревья и последовательности в алгоритмах"
     
  5. varnie

    varnie New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2005
    Сообщения:
    1.785
    если нужно всего лишь это, то можно использовать жадный алгоритм сжатия Хаффмана. как - в этом же подфоруме уже обсуждали, там пошагово даже описали.

    но ИМХО, t00x со своим постом прав и тебе нужно именно то, что он выше тебе разъяснил.