Суффикс Массив сторожевой характер лексикографический порядок - PullRequest
0 голосов
/ 11 января 2020

Этот вопрос основан на этом ответе jogojapan.

В этом ответе он отмечает, что для некоторых алгоритмов суффиксного дерева / массива суффиксов, просто имеющих уникальный символ стража $ достаточно, в то время как другие требуют $ либо для лексикографического сравнения наименьшего / наибольшего.

читая статью Replacing suffix trees with enhanced suffix arrays Абуэльоды и др., они делают выбор, что $ должен быть больше, чем любой другой символ , Благодаря этому выбору они могут создавать эффективные алгоритмы, которые могут имитировать обход дерева суффиксов как снизу вверх, так и сверху вниз, а также различные потенциальные приложения на основе этих схем обхода.

С другой стороны, алгоритмы для эффективного построения массива суффиксов или массива LCP с использованием принудительной сортировки сделайте противоположный выбор: $ должно быть лексикографически наименьшим. (см .: Linear Suffix Array Construction by Almost Pure Induced-Sorting от Nong et al. и Inducing the LCP-Array от Johannes Fischer).

Для меня не сразу очевидно, необходимы ли эти выборы для того, какие свойства $ необходимы или были только что сделаны для удобство. Мне было бы крайне неприятно, если бы самые быстрые алгоритмы построения SA / LCP-Array не могли использоваться со многими эффективными алгоритмами, которые используют суффиксные массивы.

  1. Строго ли требуют методы построения индуцированной сортировки $ быть лексикографически наименьшим или они одинаково хорошо работают (или с небольшими изменениями), если я выбрал $ как лексикографически наибольший?
  2. Если ответ на 1 - нет, представляют ли алгоритмы Abouelhoda для эмуляции Применяется ли обход дерева сверху вниз / снизу вверх, если $ является лексикографически наименьшим, и если нет, то могут ли они быть слегка изменены, чтобы их можно было использовать?
  3. Если нет 1 и 2, существуют ли совершенно разные алгоритмы, которые можно использовать для выполнения аналогичных задач, когда я делаю выбор $ является лексикографически наименьшим? Кто они, если они существуют?

1 Ответ

0 голосов
/ 11 января 2020

Если это когда-нибудь имеет значение, тогда вы можете просто добавить еще одного стража.

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

Это добавит только один дополнительный суффикс к массиву суффиксов, который вы можете легко удалить, а остальные будут в том порядке, в котором вы требуется.

...