заполнение в обобщенном дереве суффиксов и ресурсе реализации

#string #data-structures

#строка #структуры данных

Вопрос:

На странице Википедии говорится, что используются уникальные строки-терминаторы $0 , $1 , …, $n-1 для дерева со n строками, s1 , …, sn .

Мой вопрос: как справляться с ситуациями, в которых есть буквальный суффикс $i для строки i 1 ? Например, моя первая строка s1 example$0 . Каков разумный способ сделать это?

Кроме того, реализация дерева суффиксов, которую я нашел, в основном предназначена для одной строки, а не для обобщенной версии. Учитывая реализацию для одной строки, как можно легко ее расширить?

Спасибо!

Ответ №1:

1-й вопрос: если вы используете Unicode, вы можете использовать коды PUA (http://en.wikipedia.org/wiki/Mapping_of_Unicode_characters#Private_use_characters ), которые не назначены в вашей среде. Достаточно начинать с U E000. Если вы используете 8-разрядный ascii, используйте байтовый код, которого, как вы знаете, нет в ваших строках — 003 (конец текста) звучит уместно — вместо этого ‘$’.

2-й вопрос: просто начните сначала, только начиная с текущего дерева, а не с пустого. Уникальные терминаторы гарантируют, что вы никогда не будете пытаться разделить конечный узел.