私は弦の大きなセットを持っています。文字列を次のようなサブセットに分割したい:
- サブセット内の各アイテムは、1 つ以上の連続する文字を共有します。
- サブセットを定義する共有連続文字は、サブセットのセットに対して一意です (つまり、共有文字は、他のサブセットと相互に排他的な関係にある文字列のサブセットを定義するのに十分です)。
- サブセットはほぼ同じサイズです。
- 結果として得られるサブセットのセットは、上記の基準に適合するために必要なサブセットの最小数です。
たとえば、次の一連の名前があるとします。
アラン、ラリー、アルフレッド、バーバラ、アルフォンス、カール
このセットを同じサイズの 2 つのサブセットに分割できます。連続する文字「AL」によって定義されるサブセット 1 は、次のようになります。
アラン、アルフレッド、アルフォンス
連続する文字 ar によって定義されるサブセット 2 は次のようになります。
ラリー、バーバラ、カール。
任意の文字列セットに対してこれを行うアルゴリズムを探しています。結果として得られるサブセットのセットは 2 である必要はありませんが、最小セットである必要があり、結果のサブセットはほぼ等しくなる必要があります。
エリオット