У меня есть строки в несколько GBs, и для каждого префикса я хочу найти 10 наиболее распространенных суффиксов. Есть ли для этого эффективный алгоритм?Эффективный наиболее распространенный алгоритм суффикса?
Очевидным решением было бы:
- магазин отсортированный список
<string, count>
пар. - Определить по размеру бинарного поиска для префикса, который мы ищем.
- Найти 10 самых высоких
count
s в этом объеме. - Возможно, прекомпретировать его для всех коротких префиксов, поэтому ему не нужно смотреть на большую часть данных.
Я не уверен, действительно ли это было бы эффективно. Есть ли лучший способ, который я забыл?
Ответы должны быть в режиме реального времени, но при необходимости может потребоваться столько же предварительной обработки.
Любой конкретный язык, который вы используете? C++ или Java Я бы догадался ... Кроме того, являются ли ваши строки в БД или просто в файле? – nico
Это все файлы, и какой бы язык оказался самым быстрым, поэтому, скорее всего, C. – taw