Суффиксное дерево (алгоритм Укконена)

Тема в разделе "WASM.A&O", создана пользователем Proteus, 23 июл 2007.

  1. Proteus

    Proteus Member

    Публикаций:
    0
    Регистрация:
    19 июн 2004
    Сообщения:
    344
    Адрес:
    Russia
    Ночные похождения. Построение на асме (fasm), обёртка на Си (VC).
    С оптимизацией пока что - косяки (от предложений, что и где улучшить не откажусь)....

    p.s. только не спрашивайте меня что такое суф. дерево....
     
  2. nitrotoluol

    nitrotoluol New Member

    Публикаций:
    0
    Регистрация:
    5 сен 2006
    Сообщения:
    848
    Поскольку википедия ничего не сказала (Там на непонятном языке), я все-таки спрошу.
    Что это и для чего нужно?
    В нескольких простых словах.
     
  3. gazlan

    gazlan Member

    Публикаций:
    0
    Регистрация:
    22 май 2005
    Сообщения:
    414
    Очень быстрый поиск (всех/самых длинных) подстрок в тексте, сохраненном как Suff.Tree, за счет немыслимого расхода памяти (обычно, порядка двух дюжин байт на один символ исходного текста).
    "Текст" может быть и бинарным. Обычно, используется как индекс/замена хэш-таблиц (линейное время поиска).
     
  4. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.243
    Proteus
    а почему тема в куче??
     
  5. Proteus

    Proteus Member

    Публикаций:
    0
    Регистрация:
    19 июн 2004
    Сообщения:
    344
    Адрес:
    Russia
    Не знаю...
    Куда торкнуло, туда и запостил.

    К тому же мне не очень понравился результат, над ним ещё думать надо много...
     
  6. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.243
    Proteus
    а над чем думать не надо??:))
     
  7. Proteus

    Proteus Member

    Публикаций:
    0
    Регистрация:
    19 июн 2004
    Сообщения:
    344
    Адрес:
    Russia
    Есть поправочка:
    Код (Text):
    1. proc Find pattern,size
    2. ...
    3.            mov  edx,[edx+edi*4+link_st.p1]
    4. .3: ...
    Надо заменить на
    Код (Text):
    1.            mov  edx,[edx+edi*4+link_st.p2]
    2. .3: ...
    Иначе на большом алфавите, будет облом.
    Я попросту не компилировал текст после того как изменял поиск в узлах. Поганые привычки....

    p.s. первый пост, перезалил...
     
  8. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.243
    Proteus
    ты алгос для архиватора строкаешь иль просто так.... ради тренировки??
     
  9. Proteus

    Proteus Member

    Публикаций:
    0
    Регистрация:
    19 июн 2004
    Сообщения:
    344
    Адрес:
    Russia
    Архиватор это скушно.

    Скажем так: 'для прикола написал'. Думал дальше функциональность развивать,
    сделать дерево для множества строк или скользящие окна. Но потом подумал: во первых скорость меня не радует, думал что быстрее получится (её бы хотя бы раза в полтора повысить), во вторых я ей пользоваться в обозримом будущем не собирался (да и не знаю что с ней делать можно полезного)....

    Так что пока просто лежит....
     
  10. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.243
    Архиватор - это сложная задача, а всякая сложная задача скучной быть не может....;)
     
  11. Proteus

    Proteus Member

    Публикаций:
    0
    Регистрация:
    19 июн 2004
    Сообщения:
    344
    Адрес:
    Russia
    Если какой-нибудь хафман или LZ писать то как раз не сложная (несколько строк в этот же код добавить). А вот если нормальный архиватор, чьё сжатие меня хоть чуть чуть устраивает. То я сомневаюсь что я его придумаю, тем более при ограниченном времени.

    А сложных задач мне хватает выше крыши)) На архиватор просто времени жалко.
     
  12. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.243
    расскажи какие - интересно.
    тебе не угодишь:))
     
  13. Proteus

    Proteus Member

    Публикаций:
    0
    Регистрация:
    19 июн 2004
    Сообщения:
    344
    Адрес:
    Russia
    Боюсь болтать в пустую. Не факт что хоть что-то когда-нибудь решу.
     
  14. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.243
    Proteus
    я тоже занимаюсь задачами аля миссия невыполнима, но даже, если не смогу решить, зато тренировка мозга хорошая:))
     
  15. Proteus

    Proteus Member

    Публикаций:
    0
    Регистрация:
    19 июн 2004
    Сообщения:
    344
    Адрес:
    Russia
    У меня тут ещё графическая обёртка, завалялась. Правда писалась она в пьяном угаре, поэтому работает не очень хорошо.
     
  16. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.243
    Proteus
    ты ещё что-то и в пьяном угаре можешь строкать -монстр:))
     
  17. Proteus

    Proteus Member

    Публикаций:
    0
    Регистрация:
    19 июн 2004
    Сообщения:
    344
    Адрес:
    Russia
    Новая версия.... приспособлена для работы со множеством строк.
    Если раньше каждый вызов MakeTree создавал независимое дерево. Теперь получается общее дерево множества строк.....