найти длинные повторяющиеся подстроки в массивной строке
Я наивно полагал, что мог бы создать три суффиксную запись, в которой я веду счетчик посещений для каждого узла, и тогда самые глубокие узлы с числом больше одного - это набор результатов, который я ищу.
У меня действительно очень длинная строка (сотни мегабайт). У меня около 1 ГБ оперативной памяти.
Вот почему создание суффикса с подсчетом данных слишком неэффективно для меня. ЦитироватьСуффикс дерево Википедии:
Хранение дерева суффиксов строки обычно требует значительно больше места, чем хранение самой строки.
Большой объем информации в каждом ребре и узле делает дерево суффиксов очень дорогим, потребляя от десяти до двадцати раз больше объема памяти исходного текста в хороших реализациях. Суффиксный массив уменьшает это требование в четыре раза, и исследователи продолжают находить меньшие структуры индексации.
И это были комментарии Википедии о дереве, а не три.
Как я могу найти длинные повторяющиеся последовательности в таком большом количестве данных и в разумные сроки (например, менее часа на современном настольном компьютере)?
(Некоторые ссылки в Википедии, чтобы люди не публиковали их как «ответ»:Алгоритмы на строках и особенноСамая длинная повторяющаяся проблема с подстрокой ;-))