前述の問題は、edge-coloring problemと考えることができます。各タプルエントリがノードであり、エッジがタプルによって与えられるグラフがあります。タプルをグループにクラスタリングすることは、端点(マッチ)を共有しないエッジのグループを見つけることに相当し、エッジカラーで同じ色を割り当てることができます。言い換えると、各エッジの色分けによってクラスタリングが行われ、各クラスタリングによってエッジの色付けが行われます。残念ながら、NP -hardは、最高の色付けを見つけるため、問題は一般的にNP -hardです。この問題の近似アルゴリズムは定数因子近似を生成しますが、P = NPがない限り、正確なアルゴリズムはありません。
タプルごとに任意の数の要素を許可するようにこの問題を一般化すると、この問題はより困難になります。この問題の一般的なバージョンは、実際にはNP -hardであり、グラフの色付けからの削減によって、実際には近似しにくいです。特定のケースの削減の例を示しますが、それは非常にうまく一般化します。
このようなグラフを考える:
A -- B -- C
| | |
D -- E -- F
我々は、タプル内の各エントリは、そのノードに隣接するエッジの集合であるタプルの集合、各ノードに1つずつ、作成します。例えば、上のグラフでは、我々はこれらのタプルを形成したい:
(AB, AD)
(AB, BC, BE)
(CB, CF)
(AD, DE)
(BE, DE, EF)
(CF, EF)
は今、これらのタプルの2が重複していないことを想像してください。これは、それらのタプルに対応する2つのノードが隣接していてはならないことを意味する。なぜなら、それらの間のエッジはタプル内の共通要素であり、したがってそれらはクラスタ化できないからである。一方、2つのノードが隣接していない場合、それらのタプルは、同じタプル内のエッジが他のタプルに存在しないので、同じクラスタ内に一緒にグループ化することができる。
元のグラフを着色すると、タプルをクラスタリングする方法が提供されます(同じ色のノードのすべてのタプルを同じセットに入れます;それらのどれも隣接しないので競合しません)。タプルをクラスタリングする任意の方法では、色付けが行われます(クラスター内の各タプルに対応するすべてのノードを同じ色に色付けします)。したがって、クラスタの最小数を見つけることは、NP -hardであり、真の値に近いところに近づく近似アルゴリズムを認めることは知られていない元のグラフの色数を見つけることに対応する。
もっと長いサンプルを投稿したり、実際の入力のサイズを考えてもらえますか?重複するタプルが存在する可能性はありますか?すべての要素が多かれ少なかれ同じ回数出現すると思いますか? – m69
入力のサイズは20-60(ペア)の範囲です。重複タプルは存在しない。すなわち、(A、B)が集合内にある場合、他の(A、B)または(B、A)は存在しない。私は個々の要素の分布知識を持っていません(実際には、いくつかの要素が他の要素よりも頻繁に出現すると思われますが、問題のためにこれが当てはまるとは思いません。 –
入力にはどのくらいの別個の文字(またはそれらが表すもの)がどれくらいあるのですか?グラフの最小頂点 - カバー - サイズ(https://en.wikipedia.org/wiki/Vertex_cover#Approximate_evaluation)とその[補足グラフ](https://en.wikipedia)を試してみましたか? org/wiki/Complement_graph)?あなたはあなたのグラフの[treewidthに近似する](http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.29.7198&rep=rep1&type=pdf)を試しましたか? –