混合グラフ非周期性テストアルゴリズムのリファレンス?


16

混合グラフは、有向エッジと無向エッジの両方を持つ可能性があるグラフです。その基礎となる無向グラフは、有向エッジの方向を忘れることによって取得され、他の方向では、混合グラフの方向は、各無向エッジに方向を割り当てることによって取得されます。有向サイクルを形成するように方向付けできる場合、エッジのセットは混合グラフでサイクルを形成します。混合グラフは、サイクルがない場合にのみ非周期的です。

これはすべて標準であり、非循環混合グラフについて言及している多くの論文があります。したがって、混合グラフの非周期性をテストするための次のアルゴリズムを知っておく必要があります。

次の手順を繰り返します。

  • 入ってくる有向エッジと入射する無向エッジのない頂点は、サイクルの一部にできないため、削除します。
  • 頂点に入力有向エッジがないが、1つの入射無向エッジがある場合、無向エッジを使用するサイクルはそのエッジに入らなければなりません。無向エッジを着信有向エッジに置き換えます。

これ以上ステップを実行できなくなったら停止します。結果が空のグラフである場合、元のグラフは必ず非周期的である必要があります。それ以外の場合、残っている頂点から開始し、グラフをバックトラックできます。各ステップで、入ってくるエッジを逆方向にたどるか、現在の頂点に到達するために使用されたものではない無向エッジをたどり、頂点が繰り返されるまで続きます。この頂点の最初と2回目の繰り返し(逆順)の間に続くエッジのシーケンスは、混合グラフのサイクルを形成します。

混合グラフに関するウィキペディアの記事では、非循環混合グラフについて言及していますが、それらをテストする方法については言及していません。したがって、このアルゴリズムについて何か付け加えたいと思いますが、そのためには公開されたリファレンスが必要です。誰かがそれ(または非周期性をテストするためのその他のアルゴリズム)が文献のどこにあるか教えてもらえますか?


頂点に2つの入射する無向エッジがあり、他のエッジがない場合はどうなりますか?たとえば、無向の三角形。上記のルールはこのケースをカバーしていますか?
マテウスデオリヴェイラオリヴェイラ

別の頂点がエッジの1つを方向付ける規則を適用するまで、そのような頂点については何もできません。そのような頂点が存在する状況に陥り、それ以上ルールを適用できない場合、グラフにはサイクルが含まれます。
デビッドエップスタイン

たぶん、グラフが無向の場合に何が起こるかを考えることがより明確になるでしょう。フォレストかどうかをテストする1つの方法は、空のグラフ(フォレスト)または自明でない2コア(すべての頂点の次数が2以上のサブグラフ)が得られるまで、葉(1度の頂点)と孤立した頂点を削除することです必ずサイクルが含まれます)。混合グラフアルゴリズムは、有向の場合に標準的なトポロジソートアルゴリズムに縮退するのと同様に、無向の場合にこれに縮退します(葉をすぐに削除するのではなく、方向付けすることを除く)。
デビッドエップシュタイン

見たことがあるかどうかわかりません:同様の質問refを尋ねるcs.stackexchangeの投稿があります。回答者は、無向エッジを方向付けて、存在しない場合はグラフを拒否することにより、混合グラフのサイクルを見つけるアルゴリズムを提供します。また、混合グラフが強く方向付け可能な参照であるかどうかを判断する論文もありますが、奇妙なことに、混合グラフで実際に接続されたコンポーネントを見つけることについては何も見つかりませんでした。
泉泉Li

ありがとう-いいえ、私はそれを見ていませんでした。「グラフに有向サイクルを含めるための方向を見つける」という質問は間違いなく同じものであり、答えのアルゴリズムは正しいように見えます。しかし、私が説明したものとは異なり、それは線形時間ではありません。
デビッドエップシュタイン

回答:


1

混合グラフで混合サイクルを見つけることは、対応する有向グラフで(長さ> = 3の)基本有向サイクルを見つけることと同等です。対応する有向グラフは、各無向エッジを反対方向を指す2つの有向エッジで置き換えることにより、混合グラフから取得されます。証明:(1)有向グラフの各基本有向サイクル(長さ> = 3)は、混合グラフの混合サイクルに直接対応します。(2)混合グラフの各混合サイクルには、長さ> = 3の基本混合サイクルが含まれ、そのような各サイクルは、有向グラフの(長さ> = 3)の基本有向サイクルに直接対応します。(1)と(2)を組み合わせて、声明の両方向を証明します。。そこで、有向グラフで(長さ> = 3の)基本サイクル(すべて?)を計算する方法のリファレンスを探しています。

コメントは、cs.stackexchangeにはこの質問に対するいくつかの 回答が含まれていることを示していますが、結果を簡潔な回答にまとめる方法は不明です。このブログ投稿は、(ほとんどの?)重要な参照をうまく要約しているようです:

R.タージャンによるアルゴリズム

私が含めた最初のアルゴリズムは、1973年にR. Tarjanによって公開されました。

Enumeration of the elementary circuits of a directed graph
R. Tarjan, SIAM Journal on Computing, 2 (1973), pp. 211-216
http://dx.doi.org/10.1137/0202017

DB Johnsonによるアルゴリズム

1975年のDB Johnsonによるアルゴリズムは、その複雑さによりTarjanのアルゴリズムを改善しています。

Finding all the elementary circuits of a directed graph.
D. B. Johnson, SIAM Journal on Computing 4, no. 1, 77-84, 1975.
http://dx.doi.org/10.1137/0204007

最悪の場合、タージャンのアルゴリズムはO(n⋅e(c + 1))の時間の複雑さを持ちますが、ジョンソンのアルゴリズムはおそらくO((n + e)(c + 1))に留まることができます。頂点、eはエッジの数、cはグラフのサイクル数です。

KA HawickおよびHA Jamesによるアルゴリズム

2008年のKA HawickとHA Jamesによるアルゴリズムは、Johnsonのアルゴリズムをさらに改良し、その制限を排除しています。

Enumerating Circuits and Loops in Graphs with Self-Arcs and Multiple-Arcs.
Hawick and H.A. James, In Proceedings of FCS. 2008, 14-20
www.massey.ac.nz/~kahawick/cstn/013/cstn-013.pdf
http://complexity.massey.ac.nz/cstn/013/cstn-013.pdf

Johnsonのアルゴリズムとは対照的に、KA HawickとHA Jamesのアルゴリズムは、同じ頂点で開始および終了するエッジと、同じ2つの頂点を接続する複数のエッジを含むグラフを処理できます。

非周期性テスト自体は簡単なようです:グラフの強く接続されたコンポーネントを計算します。(基本)サイクルはすべて、強力に接続されたコンポーネントに完全に含まれています。強く接続されたコンポーネントには、無向ツリーではない場合に基本サイクルが含まれます。

David Eppsteinの提案したアルゴリズムは、証拠として1つの基本サイクルをさらに計算し、上記のアルゴリズムはすべての基本サイクルを列挙します。基本アルゴリズムに含まれない頂点またはエッジは、前処理ステップとして削除して、上記のアルゴリズムの速度を向上させることができます。David Eppsteinのアルゴリズムはその目的に使用できますが、強力に接続されたコンポーネントでのみ使用された場合でも、削除可能なすべての頂点またはエッジを削除するわけではありません。しかし、そのように拡張できたとしても(ブロックカットツリーを計算することで、削除可能なすべての頂点を少なくとも削除することができます)、これが上記のアルゴリズムの速度を本当に改善するかどうかは不明です。


それらの参考文献のいずれかが混合グラフに言及していますか?有向グラフでサイクルを見つけることを知っています。私の質問は、これらのアルゴリズムを混合グラフに拡張することについてでした。
デビッドエップスタイン

@DavidEppstein混合グラフで混合サイクルを見つけることは、対応する有向グラフで(長さ> = 3の)基本サイクルを見つけることと同等です。そのステートメントの参照を見つけるのは難しいかもしれませんが、このステートメントを証明するのは簡単です。答えに声明とその証明を追加しました。(ブロックカットツリーを計算すると、基本サイクルに影響を与えずに削除可能なすべての頂点を削除できることを示す証拠もありません。)
トーマスクリンペル

わかりましたが、まだ線形時間ではありません。
デビッドエップスタイン

@DavidEppstein非周期性テスト自体は線形時間で実行されます。しかし、あなたの言うとおり、これらのアルゴリズムが最初の基本回路(長さ> = 3)を見つけるのに必要な時間は線形ではありません(最悪の場合)。さらに悪いことに、ジョンソンのアルゴリズムのほとんどの利用可能な実装は、単一の有向円(n頂点、e = nエッジ、およびc = 1基本要素)に適用されると、O((n + e)(c + 1))時間以上を使用するようですサイクル)。それでも、これは正解を意図したものです。ジョンソンの論文は、「基本回路を見つける」ための最も引用された参考文献であると思われるためです。
トーマスクリンペル
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.