私はテキストの着信ストリームを扱っています。たとえば、 米国、英国、中国、ロシア、米国、英国、中国、フランス、ドイツなどです。
それらを 3 つの単語 (またはおそらく n 単語) のシーケンスに分割し、どのシーケンスが最も頻度が高いかを分析する必要があります。上記の場合、USA、UK、中国のシーケンスが 2 回発生します。そのため、周波数が最も高くなります。
さらに、すべてのシーケンスの頻度にインデックスを付ける必要があります。問題の一部を部分的に解決するために C++ stl マップを使用しようとしましたが、解決策が洗練されているとは思えません。その理由は、stl マップを使用した 3 つの単語シーケンスでm個の一意の単語に一意にインデックスを付けるためです。数学は次のとおりです。
ixmxm + jxm + k
i、j、k は各単語への整数マップです。
上記のソリューションの問題は、連続したテキスト ストリームにあり、一意の単語の総数、つまり m を認識できません。誰でもより良いアルゴリズムを提案できますか?