Вот в чем проблема:
Предположим, S — это набор строк, и мы знаем общую длину всех строк в S в n. Мы должны найти структуру данных с пробелом O(n), которая находит LCP(s,t) в O(1), где LCP является самым длинным общим префиксом между строками с,т.
Сначала я думал, что смогу использовать хеширование, так как мы можем проверять числа за постоянное время и находить подстроки за постоянное время, если предварительно хешируем строки. Но я не думаю, что это сработает, так как требуется больше места и после небольшого поиск я обнаружил, что решение, вероятно, заключается в использовании массивов Trie, Suffix и, возможно, LCA и RMQ. Я думаю, что близок к ответу, но не знаю, как эти концепции могут работать вместе, чтобы создать структуру данных, обеспечивающую быструю работу LCP!
Спасибо за прочтение
sqrt(n)
и что имеетсяsqrt(n)
строк? - person Yonlif   schedule 03.01.2020n
- person FrastoFresto   schedule 03.01.2020sqrt(n)
. - person Yonlif   schedule 03.01.2020O(length of prefix)
. Учитывая, что вы не можете построить строку для возврата быстрее, я думаю, что это должен быть ответ. Есть ли где-нибудь в исходном описании такая фраза, как строки фиксированной длины? - person btilly   schedule 03.01.2020