Я просмотрел много литературы, но я не нашел никакой информации об удалении или вставке подстроки в дерево суффикса. Существуют только алгоритмы Ukkonen или McCreight для построения дерева.
Самый плохой способ - восстановить дерево после удаления или вставки подстроки. Но я думаю, что существует лучший способ сделать это.
Например,
У меня есть дерево суффиксов с «abcdef», и мне нужно удалить символы от 1 до 3. И тогда у меня будет дерево суффиксов с «aef». И тогда мне нужно добавить из строки 1 строки «как». И после этого у меня будет суффиксное дерево с «aasef». Вы можете мне помочь?Как удалить подстроку из дерева суффикса?
ответ
Вы смешиваете две задачи в своем вопросе, сначала найдите символ, затем замените символ. Дерево суффикса делает первую часть поиска символа для вас, теперь вам нужен второй алгоритм для замены этого символа новым персонажем. По мере замены символов исходное дерево суффиксов становится недействительным, поэтому дерево нужно снова отобразить, чтобы выполнить вторую замену.
Что вам нужно, это две вещи: сначала «суффикс-массив», это даст вам больше контроля над поиском символов и их местоположением, во-вторых, «алгоритм кеша», это поможет вам с заменой.
Я только начал работать с деревьями суффикса, поэтому я могу ошибаться, но кажется, что вставки или удаления могут изменить дерево довольно радикальными способами.
«ABCDEF» является действительно тривиальным дерево суффиксов:
abcdef
├a..$
├b..$
├c..$
├d..$
├e..$
└f$
Добавление «г» в конце или вычеркивания «а» в начале невероятно легко.
Но сказать, что мы засунуть другой «а» в середине:
abcadef
├a
│├b..$
│└d..$
├b
├c
├...
Мы должны вернуться и проверить каждую букву с самого начала, чтобы увидеть, если нам нужно вставить узел, основанный на этом. То же самое, если у нас есть характер с конца:
abafef
├a
│├bafef$
│└fef$
├bafef$
├f
│├ef$
│└$
└ef$
Если теперь вставить что-то вроде «эф» до конца, вам придется пройти и добавлять новые узлы повсюду!
Вставка символа выглядит так, как будто это потребует повторного изучения каждого символа в строке, т. Е. Линейного времени. Поскольку алгоритм Укконена уже принимает линейное время, не стоит использовать какой-либо динамический алгоритм вставки, вы должны просто регенерировать дерево с нуля каждый раз с уверенностью, что это все еще довольно хорошо.
Если вам небезразлично пространство, вы всегда можете кэшировать каждый шаг алгоритма генерации дерева, а затем, когда наступает время для вставки или удаления в точке x, просто загрузите дерево как построенное до точки x ,
- 1. Создание суффиксов из дерева суффикса
- 2. суффикса построение дерева
- 3. Trie против дерева суффикса против суффикса
- 4. Приблизительное совпадение подстроки с использованием дерева суффикса
- 5. Построение суффикса дерева в C++
- 6. Доказательство краев корня дерева суффикса
- 7. Как удалить подстроку из строки?
- 8. Как удалить подстроку из строки
- 9. описание дерева суффикса хеш-таблицы
- 10. удалить подстроку из файла
- 11. Удалить подстроку из строки
- 12. Удалить подстроку из строки
- 13. Как удалить детей из дерева
- 14. iPhone удалить подстроку из строки
- 15. Удалить динамическую подстроку из строки
- 16. Какова наихудшая временная сложность построения суффикса дерева?
- 17. Удалить определенную подстроку из строки
- 18. Удалить повторяющуюся подстроку из строки
- 19. MySQL - удалить подстроку из записи
- 20. Алгоритм дерева суффикса Ukkonen, что необходимо?
- 21. Hive - удалить подстроку из строки
- 22. удалить последнюю подстроку из строки
- 23. Qt - удалить подстроку из QString
- 24. Как удалить DateTime подстроку из строки
- 25. Как удалить подстроку из строки в java
- 26. Как удалить определенную подстроку из строки?
- 27. Как удалить подстроку из строки в C++
- 28. Как удалить подстроку из объекта JavaScript?
- 29. Как удалить/заменить подстроку из столбца GridView?
- 30. Дерево суффикса в Matlab
Cn вы более конкретно? Из того, что я вижу, вы вставили строку «abdc», и теперь вы хотите сделать ее «abd» (удаление подстроки) или «abced» (вставка подстроки), правильно? – ElKamina
Да, вы правы – user2386656
Вы можете добавлять/удалять подстроки при обновлении массива суффикс-корреспондента: [«Динамические расширенные массивы суффикса»] (http://www-igm.univ-mlv.fr/~lecroq/articles/jda2009. pdf) (pdf). Не могу сказать ничего о деревьях суффиксов. –