混合グラフで混合サイクルを見つけることは、対応する有向グラフで(長さ> = 3の)基本有向サイクルを見つけることと同等です。対応する有向グラフは、各無向エッジを反対方向を指す2つの有向エッジで置き換えることにより、混合グラフから取得されます。証明:(1)有向グラフの各基本有向サイクル(長さ> = 3)は、混合グラフの混合サイクルに直接対応します。(2)混合グラフの各混合サイクルには、長さ> = 3の基本混合サイクルが含まれ、そのような各サイクルは、有向グラフの(長さ> = 3)の基本有向サイクルに直接対応します。(1)と(2)を組み合わせて、声明の両方向を証明します。。そこで、有向グラフで(長さ> = 3の)基本サイクル(すべて?)を計算する方法のリファレンスを探しています。
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のアルゴリズムはその目的に使用できますが、強力に接続されたコンポーネントでのみ使用された場合でも、削除可能なすべての頂点またはエッジを削除するわけではありません。しかし、そのように拡張できたとしても(ブロックカットツリーを計算することで、削除可能なすべての頂点を少なくとも削除することができます)、これが上記のアルゴリズムの速度を本当に改善するかどうかは不明です。