Суффиксные массивы и суффиксные деревья

Я просто хочу знать, когда дерево суффиксов превосходит расширенный массив суффиксов.

После прочтения Замена суффиксных деревьев расширенными суффиксными массивами я не вижу причин использовать суффиксные деревья больше. Некоторые методы могут быть сложными, но вы можете делать все с массивом суффиксов, что вы можете делать с деревом суффиксов, и вам нужна такая же временная сложность, но меньше памяти.

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

Итак, кто-нибудь знает причину выбора дерева суффиксов вместо массива суффиксов?

редактировать Хорошо, если вы знаете больше, расскажите мне, пока это:

  • Массивы суффиксов не допускают онлайн-конструкции
  • Некоторые алгоритмы сопоставления с образцом работают быстрее на деревьях суффиксов.
  • (добавлено) из-за онлайновой конструкции вы можете сохранить его на HD и увеличить существующее дерево суффиксов. Если вы используете SSD, он также должен быть тихим и быстрым.

person Nicolas    schedule 25.06.2012    source источник
comment
Просто предположение, но деревья суффиксов могут быть меньше с точки зрения памяти в реальной реализации.   -  person Justin    schedule 25.06.2012
comment
@Justin: Нет, на самом деле расширенные массивы суффиксов потребляют меньше памяти, о чем и говорится в связанной статье.   -  person Niklas B.    schedule 25.06.2012
comment
Хм, я не знаю. Если я сравню построение дерева суффиксов Укконена с построением массива линейных суффиксов времени, это будет не легче. А если просто посмотреть на самую простую конструкцию, то проще понять, отсортировать список суффиксов, чем расположить их в дереве, или?   -  person Nicolas    schedule 25.06.2012
comment
Может ли это быть из-за сложности расширенного массива суффиксов? Все мы люди, и многие программисты слишком ленивы, чтобы изучать новый алгоритм, если для этого нужно прочитать объемный 35-страничный документ. Я просто размышляю о себе, потому что только что потратил много часов на исследование суффиксных деревьев, сделал ошибку и реализовал неправильную структуру данных, наконец понял алгоритм Укконена (надеюсь)... А потом я открыл статью Enhanced Suffix Array и понял, сколько еще мне нужно научиться, чтобы реализовать это (вероятно, больше дня на чтение/изучение/кодирование, не считая моих предыдущих исследований)   -  person Sergiy Migdalskiy    schedule 13.01.2018


Ответы (2)


В самом SO есть несколько интересных мыслей по этому вопросу. Вы также можете найти дополнительные технические материалы в Интернете. Существует еще один документ, который может помочь вам с вашим вопросов, претендуя на роль еще одного эффективного способа реализации этих структур.

Я не эксперт в этом вопросе, но мне кажется, что массивы суффиксов могут быть несколько медленнее, хотя они более эффективны в пространстве. Тем не менее, мне не хватает практического опыта, чтобы более подробно остановиться на них обоих.

person rlinden    schedule 25.06.2012

Еще один пример, показывающий, что дерево суффиксов лучше:

Вы можете легко построить массив суффиксов, если у вас уже есть дерево суффиксов.

Но гораздо сложнее построить суффиксное дерево из массива суффиксов.

person lavin    schedule 03.08.2012