혼합 그래프에서 혼합주기를 찾는 것은 해당 방향 그래프에서 기본 방향주기 (길이> = 3)를 찾는 것과 같습니다. 대응하는 지향 그래프는 각각의 비 지향 에지를 반대 방향을 가리키는 2 개의 지향 에지로 대체함으로써 혼합 그래프로부터 획득된다. 증명 : (1) digraph의 각 기본 지향주기 (길이> = 3)는 혼합 그래프의 혼합주기에 직접 대응합니다. (2) 혼합 그래프의 각 혼합주기는 길이> = 3의 기본 혼합주기를 포함하며, 이러한 각주기는 직접 그래프의 길이 (=> 3) 인 기본 방향주기에 해당합니다. 함께 문을 두 방향을 증명 (1), (2), QED. 그래서 우리는 유향 그래프에서 (모든>) 기본 사이클을 계산하는 방법에 대한 참조를 찾고 있습니다.
코멘트는 cs.stackexchange 포함 나타내는 몇 가지 답변 이 질문을하지만 간결한 대답에 결과를 구성하는 방법을 명확하지 않다. 이 블로그 게시물 은 (가장?) 중요한 참고 자료를 잘 요약 한 것 같습니다.
R. Tarjan의 알고리즘
내가 포함한 최초의 알고리즘은 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
최악의 경우 Tarjan의 알고리즘은 시간 복잡도가 O (n⋅e (c + 1)) 인 반면 Johnson의 알고리즘은 O ((n + e) (c + 1))에 머 무르도록되어 있습니다. 여기서 n은 정점, 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의 알고리즘은 동일한 꼭지점에서 시작하고 끝나는 모서리와 동일한 두 꼭지점을 연결하는 여러 모서리를 포함하는 그래프를 처리 할 수 있습니다.
비 주기성 테스트 자체는 쉬운 것처럼 보입니다 . 그래프 의 강하게 연결된 구성 요소 를 계산하십시오 . 모든 (기본) 사이클은 강력하게 연결된 구성 요소에 완전히 포함됩니다. 강력하게 연결된 구성 요소는 방향이 지정되지 않은 트리가 아닌 경우 기본주기를 포함합니다.
David Eppstein의 제안 된 알고리즘은 추가로 하나의 기본주기를 증거로 계산하며 위의 알고리즘은 모든 기본주기를 열거합니다. 기초 사이클에 포함되지 않은 정점 또는 에지는 상기 알고리즘의 속도를 향상시키기 위해 전처리 단계로서 삭제 될 수있다. David Eppstein의 알고리즘은 이러한 목적으로 사용될 수 있지만 강력하게 연결된 구성 요소에서만 사용하더라도 삭제할 수있는 모든 정점 또는 모서리를 삭제하지는 않습니다. 그러나 블록 확장 트리 를 계산하면 적어도 삭제할 수있는 모든 정점을 삭제할 수 있습니다.