特定のサイズのすべての非同型グラフを列挙する


30

サイズすべての無向グラフを列挙したいのですが、各同型クラスのインスタンスが1つだけ必要です。言い換えると、個の頂点上のすべての非同型(無向)グラフを列挙したいのです。これどうやってするの?nnn

より正確には、次のプロパティを持つ一連の無向グラフを生成するアルゴリズムが必要です:個の頂点上の無向グラフごとに、がと同型であるようなインデックスが存在します。アルゴリズムが可能な限り効率的であることを望みます。言い換えれば、私が気にするメトリックは、このグラフのリストを生成して反復する実行時間です。第二の目標は、アルゴリズムが実装するのに複雑すぎないのが良いことです。G1,G2,,GkGniGGi

各同型クラスから少なくとも1つのグラフが必要であることに注意してください。ただし、アルゴリズムが複数のインスタンスを生成する場合は問題ありません。特に、すべての可能なグラフをカバーしている限り、出力シーケンスに2つの同形グラフが含まれていれば、そのようなアルゴリズムを見つけやすくしたり、より効率的なアルゴリズムを有効にしたりすることができます。

私のアプリケーションは次のとおりです。サイズすべてのグラフでテストしたいプログラムがあります。2つのグラフが同型である場合、私のプログラムは両方で同じ動作をすることを知っています(両方で正しいか、両方で間違っています)ので、各同型クラスから少なくとも1つの代表を列挙し、次にテストするだけで十分ですそれらの入力に関するプログラム。私のアプリケーションでは、はかなり小さいです。nnn

私が検討したいくつかの候補アルゴリズム:

  • 考えられるすべての隣接行列、つまり、対角線上にすべて0がある対称 0-or-1行列をすべて列挙できます。ただし、これには行列の列挙が必要です。これらの行列の多くは同型グラフを表すため、これは多くの労力を浪費しているようです。2 n n 1 / 2n×n2n(n1)/2

  • 考えられるすべての隣接行列を列挙し、それぞれについて、以前に出力したグラフのいずれかと同型かどうかをテストできました。以前に出力されたものと同型でない場合は、出力します。これにより、出力リストが大幅に短縮されますが、少なくともステップの計算が必要になります(グラフの同型チェックが超高速であると仮定した場合でも)。私のメトリック。2n(n1)/2

  • 隣接行列のサブセットを列挙することは可能です。特に、が個の頂点グラフである、一般性を失うことなく、なるように頂点が配置されていると仮定できます。。言い換えれば、すべてのグラフは、頂点が非減少度の順に配置されているグラフと同型です。そのため、このプロパティを持つ隣接行列のみを列挙すれば十分です。そのような隣接行列がいくつあるのか正確にはわかりませんが、よりもはるかに少なく、GnV={v1,,vn}degv1degv2degvn2n(n1)/22n(n1)/2計算のステップ。ただし、これによって多くの冗長性が残ります。多くの同型クラスが何度もカバーされるため、これが最適であるとは思えません。

もっと良くできますか?正しく理解すれば、約非同型グラフの等価クラス。上記のアルゴリズムより実行時間が良いアルゴリズムを見つけることができますか?どれだけ近づくことができますか下限?私は主に小さな扱いやすさ(たとえば、または程度;そのようなアルゴリズムを完了までもっともらしく実行できるほど小さい)を気にし、大きな漸近性についてはあまり気にしません。2n(n1)/2/n!2n(n1)/2/n!nn=5n=8n

関連:等価でないバイナリ行列を構築します(残念ながら、有効な答えを受け取っていないようです)。


1
Afaik、サイズから同型までのグラフの数さえ不明であるため、(非ブルートフォース)アルゴリズムが存在する可能性は低いと思います。候補アルゴリズムについては、グラフの同型性(afaik)をチェックするための多項式時間アルゴリズムを知らないため、実行されるはずのアルゴリズムは、同型性をチェックします(多くの場合、愚かな)。(また、。)nO(|output|)|output|=Ω(n|classes|)
ラファエル

@Raphael、(1)同型までのサイズのグラフの正確な数を知らないことは知っていますが、この問題は必ずしもそれを知っている必要はありません(たとえば、繰り返しで問題ないという事実のため)。私が与えたものよりも優れたアルゴリズムが存在する可能性が低いことを意味する理由がわかりません。(2)はい、私はグラフ同型に対する既知の多項式時間アルゴリズムが存在しない知っているが、我々はの値について話されますのような既存のアルゴリズムは、おそらく速くなりますので、ここでは-と、とにかく、私は唯一の言及その候補アルゴリズムはそれを拒否するので、とにかく意味がありません。nnn=6
DW

以下のため 6せいぜい、私は頂点数と辺の数を、選ばれた、あなたが提案として度によって非漸減頂点ラベルを命じた後、その後、非常に少数の可能な同型クラスがあるだろうと信じています。この時点で、NAUTYやBLISSなどを使用したブルートフォース同型チェックによって残りのケースをソートすることが可能になる場合があります。n
サイモン

回答:


19

おそらく、頂点数が少ないすべての非同型グラフを列挙する最も簡単な方法は、Brendan McKayのコレクションからそれらダウンロードすることです。列挙アルゴリズムはMcKayの論文[1]で説明されており、あらゆる方法でサイズn-1の非同形を拡張し、新しい頂点が正準であるかどうかを確認することで機能します。gengマッケイのグラフ同型チェッカーのように実装されていnautyます。

[1]:BD McKay、ラベル付き列挙のための技術の応用、Congressus Numerantium、40(1983)207-221。


私は問題があります。あなたが言ったように、私はサイズのグラフを取り、n-1あらゆる可能な方法で頂点によってそれを拡張しています。次に、頂点に標準ラベルがあるかどうかを確認し1ます。たとえば、(標準頂点?!)しかし、グラフが正準形にのみ同型であり、頂点のラベルが異なる場合はどうなりますか?ラベルを持つ頂点が1同じ軌道にあるかどうかを確認するために自己同型をチェックしようとしましたが、リストに2回グラフが表示されます。論文は本当に私を助けません。また、gengのソースコードは、これらすべてのバイナリ最適化とコメントがほとんどないため、読み込めません。
アレックス

1
@Alex新しい頂点が1と同じ軌道にあるかどうかを決定するバージョンのチェックが間違いなく必要です。これが2つの同型グラフを生成する例を挙げていただけますか。たぶん、これは新しい質問としてより良いでしょう。
デビッドアイゼンスタット

わかりました、ありがとうございます!その場合、「すべての可能な方法で拡張する」ことは、どういうわけn-1か頂点を持つグラフの自己同型を考慮する必要があると思いますか?たとえば、n = 3で、以前のグラフはP2でした。次に、3番目の頂点を前の頂点の1つに結合する2つの場合は、当然同じグラフP3になります。「可能な限りすべての方法で」適切に拡張する方法を簡単に説明してもらえますか、またはこれを別の質問として尋ねるべきですか (また、プログラムが特別なタイプのグラフの非同型を見つける必要があるため、事態が少し複雑になることがあります)
アレックス

@Alexええ、拡張機能自体は正規である必要があるようです。おそらくこれが私の頭上でどのように機能するか覚えていないので、おそらく新しい質問の価値があります。
デビッドアイゼンスタット

1
Nautyホームページ
ガイCoderの

4

3番目のアイデアを改善することを提案します。隣接行列を行ごとに塗りつぶし、以前に塗りつぶされた頂点と次数および隣接関係が等しい頂点を追跡します。したがって、最初は、同値類は同程度のすべてのノードで構成されます。
新しく塗りつぶされた頂点が同等のノードの一部のみに隣接している場合、どの選択でも同じ等屈折クラスからの表現につながります。したがって、現在の塗りつぶされた頂点が最も高い番号を持つ同等の頂点に隣接する割り当てのみを考慮します(残りのプロセスでは同等クラスを2つに分割します)。

このアプローチはすべての同型をカバーすると思います(しかし、証明しようとしませんでした)。 大きなグラフの場合、エッジおよび(およびその他のエッジを持つサブグラフには、2つの同等の頂点グループがあるという事実に基づいて同型が得られる可能性がありますが、アプローチ。(もちろん拡張することもできますが、のみを目指している場合、努力する価値があるとは思いません。)n<6
(1,2)(3,4)n=6

このアルゴリズムの単純な実装は行き止まりに陥り、与えられた一連の度数と以前の割り当てに従って隣接行列を埋めることができないことがわかります。これらを早期に検出/フィルタリングするのは、努力する価値があるかもしれません。いくつかのアイデア:

  • 度の合計が奇数の場合、グラフを形成することはありません
  • 残っている頂点のすべて/どれにもすぐに接続する必要がある頂点のエントリを埋めます。

3

これらの論文は興味深いかもしれません。

「グラフの簡潔な表現について」、Gyorgy Turan、Discrete Applied Mathematics、Volume 8、Issue 3、1984年7月、pp。289-294 http://www.sciencedirect.com/science/article/pii/0166218X84901264

「一般的なラベルなしグラフの簡潔な表現」、Moni Naor、Discrete Applied Mathematics、Volume 28、Issue 3、1990年9月、303-307ページ http://www.sciencedirect.com/science/article/pii/0166218X9090011Z

これらは、頂点ラベル付きグラフをエンコードするためのエンコードおよびデコード関数を提供し、2つのそのようなグラフが、一方が他方の頂点ラベルを並べ替えた結果である場合にのみ同じコードワードにマップします。

さらに、エンコードおよびデコード機能が効率的であることが証明されています。

最初の論文は平面グラフを扱っています。2番目の論文では、平面性の制限が削除されました。

編集:この論文も関連する可能性があります:

準多項式時間のグラフ同型、Laszlo Babai、シカゴ大学、プレプリントarXiv、2015年12月9日 http://arxiv.org/pdf/1512.03547v1.pdf

ババイの彼の結果の発表はニュースを作りました:https : //www.sciencenews.org/article/new-algorithm-cracks-graph-problem

しかし、おそらく私はOPの質問をこれらの3つの論文と混同しているのではないでしょうか?OPは非同型グラフを列挙したいと考えていますが、2つのグラフが同型であるかどうかを判断するための効率的な方法があるとなお役に立つかもしれません。


私はその考えに感謝していますが、2つのグラフが同型かどうかを判断する方法を尋ねているのではないのではないでしょうか。私は本当に非同型グラフを列挙する方法を尋ねています。2つのグラフが同型かどうかをテストするためのアルゴリズムを記述することは本当に助けにはなりません、私は恐れています-試してくれてありがとう!
DW

TuranとNaor(上記の論文で)は、記述したタイプの関数を構築します。つまり、グラフを、そのグラフが属する等価クラスの標準的な代表にマップします。それらの標準的な代表を列挙できれば、問題は解決するようです。
サイモン

ババイは準多項式ランタイムの主張を撤回した。どうやら分析にエラーがありました。
ラファエル

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.