ここに問題の説明があります。文字列のセット(最大100億の文字列、各文字列の長さは最大10k文字、1000個のユニークなシンボル文字列が構築できる)があるとします。長さが2から長さNまでのパターンを見つけるにはどうすればよいですか(簡略化のために10と言うことができます)。また、私はすべての文字列の少なくとも1%(ある閾値)で発生するパターンだけを見たいと思います。文字列のセットで未知の繰り返しパターンを見つける方法はありますか?
私はこの問題を解決するのに役立つアルゴリズムを見つけたいと思います。数字は正確ではありませんが、私たちがプロジェクトで持っているのと同じオーダーです。
はあなたに接尾辞木(link)で
ノードの下にある葉の数を数えれば、OPが要求したもの(つまり、同じ文字列内の複数の出現を含む)のパターンの総出現回数がカウントされますパターンが現れる文字列の総数)。しかし、あなたの方法は速いですし、後者を数えるTTBOMKは、各ノードにその下にある文字列の* set *とDFS中の共用体を計算する必要があります。これは時間と空間の複雑さを乗算します。 。 –
私はバッチ処理のアイディアを得られなかったと思います。コンピュータ/クラスタが一度に処理できる妥当なサイズのバッチに自分の入力を分割したとします。最後にすべてのバッチをマージして正解を得るべきではないでしょうか?私が間違っている? –
あなたは正しいです。結果を最後にマージして、正しい答えを得る必要があります。私はその部分が明らかであると仮定した。 – Sorin