単純なグラフ正規化アルゴリズム


8

与えられた色付きのグラフに標準的な文字列を提供するアルゴリズムを探しています。つまり。グラフの文字列を返すアルゴリズム。2つのグラフが同型の場合にのみ、同じ文字列を取得します。

特に、ほとんどのグラフ(もちろん、最悪の場合は超多項式)で妥当なパフォーマンスを発揮し、簡単に実装できる単純なアルゴリズムを探しています。小さなグラフを期待しているので、パフォーマンスは優れている必要はありません。

残念ながら、私が見つけたほとんどのものは非常に複雑であり、単純にアルゴリズムを説明するよりも、深い数学的なつながりを表現することに関心があります。そんなに深く潜る時間がないのではないでしょうか。誰かが私にショートカットを与えることはできますか?

フロイドワーシャルアルゴリズムのようなものを期待しています。最適ではありませんが、十分に優れており、実装は簡単です。


グラフは一貫してラベル付けされていますか?はいの場合は、すべてのエッジを書き留め、リストを並べ替えます。
adrianN 2013

あ、ごめんなさい。頂点とエッジにはラベルが付けられますが、一意ではありません。各ラベルは複数回発生する可能性があります。数学的なフレーズはラベル付けされているのではなく「色付け」されていると思います。質問を編集します。
Peter

「もちろん、最悪のケースのNP」-明確にするために:グラフ同型の既知の(決定論的)多項式時間アルゴリズムがあるため、期待できる最良の方法は超多項式解です。はい、問題はNPにあります。参照してください。ここでこれらの概念の詳細については。
ラファエル

@Raphaelそうですね、もっと不正確な用語です。最悪のケースは超多項式です。ただし、平均ケースの多項式アルゴリズムがあるため、少なくとも達成可能です。
ピーター

@Raphael期待できる最高のものは、ほとんどのグラフで機能する高速アルゴリズムです。
Yuval Filmus 2013

回答:


3

Brendan McKayとAdolfo Pipernoは、2013年にこの質問に関する調査論文を書きました。彼らは、想像以上に多くのグラフを標準化する効率的なコンピュータープログラムをいくつか提示しています。これらのアルゴリズムを自分で実装する必要はありません(意味がありません)。これらはソースコードとしてもオンラインで入手できます。


色付きGIとGIの間には減少があります(一定の数の色が与えられた定数の乗法ブローアップにより)、またはおそらくアルゴリズム自体が変更される可能性があります。
Yuval Filmus 2013

完全な答えを出すために、ここで1つ説明できますか?
ラファエル

3
各色について、頂点を追加します。エッジを追加して、元の各頂点をその色を表す頂点に接続します。「カラー」頂点の次数が一意であることを確認してください。そうでない場合は、ループまたはその他の偽のエッジを追加してください。ちなみに、私はマッケイ/ピペルノ調査紙についてはあまり満足していません。それは彼ら自身の調査の調査であり、他のツールとの比較は興味深いと思うベンチマークに基づいています。彼らは、重要な最近の進展と、経験的結果に影響を与える非理論的なアプリケーションから派生したほとんどすべてのベンチマークを省略しています。
イゴールマルコフ

2

私はNautyアルゴリズムを実装することになりましたが、そうすることで、自分の質問に対する答えを見つけました。Nautyは、この基本的なアルゴリズムを多くの複雑なヒューリスティックで拡張します。

長さnの小さなグラフGがあるとします。

  1. n!
  2. それぞれの文字列表現を生成します(1対1)。
  3. 文字列の標準的な順序を定義し、遭遇した最小の文字列を覚えておいてください。

O(n!)

Nautyは、主に、最小の文字列表現を持つグラフを探すときに、検討するグラフの検索スペースをプルーニングすることにより、このアルゴリズムを拡張します。


1
15!1012

1
@DavidRicherby絶対に。ただし、モチーフ分析など、サイズ3または4のグラフでのみこの操作が行われるユースケースがあります。実際、正規同形サブグラフを見つけることがグラフに対して妥当な時間ですべて実行できるかどうかはわかりません15を超えるノード(サブグラフ同型自体が多項式に非常に近いことが知られている場合でも)
Peter
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.