혼합 그래프 비순환 테스트 알고리즘에 대한 참조?


16

혼합 그래프는 방향이 지정된 가장자리와 방향이없는 가장자리를 모두 가질 수있는 그래프입니다. 그 방향이없는 방향이없는 그래프는 방향이 지정된 가장자리의 방향을 잊어 버려서 얻을 수 있으며, 다른 방향으로 각 방향이없는 방향에 방향을 할당하여 혼합 그래프의 방향이 나타납니다. 방향이 지정된주기를 형성하도록 방향을 지정할 수있는 경우 모서리 세트가 혼합 그래프에서주기를 형성합니다. 혼합 그래프는주기가없는 경우에만 비 주기적입니다.

이것은 모두 표준이며 비 주기적 혼합 그래프를 언급 한 많은 논문이 있습니다. 따라서 혼합 그래프의 비 주기성을 테스트하기위한 다음 알고리즘을 알아야합니다.

다음 단계를 반복하십시오.

  • 들어오는 방향성 가장자리가없고 입사 비 방향성 가장자리가없는 정점은 사이클의 일부가 될 수 없으므로 제거하십시오.
  • 정점에 들어오는 방향성 가장자리가 없지만 정확히 하나의 인시던트 비 방향성 가장자리가있는 경우 방향이없는 가장자리를 사용하는 모든 사이클이 해당 가장자리에 있어야합니다. 방향이 지정되지 않은 가장자리는 들어오는 방향이 지정된 가장자리로 교체하십시오.

더 이상 단계를 수행 할 수 없으면 중지하십시오. 결과가 빈 그래프 인 경우 원래 그래프는 반드시 비 주기적이어야합니다. 그렇지 않으면, 남아있는 정점에서 시작하여, 반복되는 정점을 볼 때까지 들어오는 모서리를 통해 뒤로 또는 현재 정점에 도달하는 데 사용되지 않는 방향이 아닌 모서리를 따르는 각 단계에서 그래프를 통해 역 추적 할 수 있습니다. 이 정점의 첫 번째 반복과 두 번째 반복 (역순) 사이의 가장자리 순서는 혼합 그래프에서주기를 형성합니다.

혼합 그래프에 대한 Wikipedia 기사는 비 주기적 혼합 그래프를 언급하지만 테스트 방법을 언급하지 않으므로이 알고리즘에 대해 추가하고 싶지만 게시 된 참조가 필요합니다. 누군가가 문헌에서 그것이 (또는 비 주기성을 테스트하기위한 다른 알고리즘) 어디에 있는지 말해 줄 수 있습니까?


정점에 두 개의 인시던트 방향이없는 가장자리가 있고 다른 가장자리가없는 경우 어떻게됩니까? 예를 들어 방향이없는 삼각형입니다. 위의 규칙이이 경우에 적용됩니까?
Mateus de Oliveira Oliveira

다른 꼭짓점이 가장자리 중 하나를 향하는 규칙을 적용 할 때까지 그러한 꼭짓점에 대해 아무 것도 할 수 없습니다. 이러한 정점이 존재하는 상황에서 더 이상 규칙을 적용 할 수없는 경우 그래프에주기가 포함됩니다.
David Eppstein

그래프가 방향이 지정되지 않은 경우 발생하는 상황을 고려하는 것이 더 명확 할 수 있습니다. 숲인지 여부를 테스트하는 한 가지 방법은 빈 그래프 (숲임) 또는 중요하지 않은 2 코어 (모든 꼭짓점이 ≥ 2 인 하위 그래프)를 얻을 때까지 나뭇잎을 제거하고 (한 정점을 분리) 정점을 분리하는 것입니다. 반드시 사이클을 포함합니다). 혼합 그래프 알고리즘은 지시 된 경우에 표준 토폴로지 정렬 알고리즘으로 분해되는 것과 같이, 지시되지 않은 경우에는 잎을 즉시 제거하지 않고 방향을 결정하는 것을 제외하고는 이것으로 퇴화합니다.
David Eppstein

당신이 보았는지 확실하지 않습니다 : cs.stackexchange에 비슷한 질문 ref 를 묻는 게시물이 있습니다. 응답자는 방향이없는 가장자리의 방향을 지정하고 그래프가없는 경우이를 거부하여 혼합 그래프에서주기를 찾는 알고리즘을 제공합니다. 혼합 그래프 강력 방향 조정 여부를 판단 종이 (들)도있다 심판 하지만 이상하게도, 실제로 혼합 그래프로 연결 구성 요소를 찾는 아무것도 찾을 수 없습니다가.
Quanquan Liu

고마워 – 아니, 나는 그것을 보지 못했다. "그래프에 방향성주기가 포함되도록 방향 찾기"질문은 확실히 동일하며 답의 알고리즘이 올바르게 보입니다. 그러나 내가 묘사 한 것과 달리 그것은 선형 시간이 아닙니다.
David Eppstein

답변:


1

혼합 그래프에서 혼합주기를 찾는 것은 해당 방향 그래프에서 기본 방향주기 (길이> = 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의 알고리즘은 이러한 목적으로 사용될 수 있지만 강력하게 연결된 구성 요소에서만 사용하더라도 삭제할 수있는 모든 정점 또는 모서리를 삭제하지는 않습니다. 그러나 블록 확장 트리 를 계산하면 적어도 삭제할 수있는 모든 정점을 삭제할 수 있습니다.


이러한 참조 중 어느 것도 혼합 그래프를 언급합니까? 직접 그래프에서 사이클을 찾는 것에 대해 알고 있습니다. 내 질문은 이러한 알고리즘을 혼합 그래프로 확장하는 것에 관한 것입니다.
David Eppstein

@DavidEppstein 혼합 그래프에서 혼합주기를 찾는 것은 해당 방향 그래프에서 기본주기 (길이> = 3)를 찾는 것과 같습니다. 해당 진술에 대한 참조를 찾는 것이 어려울 수 있지만이 진술을 증명하는 것은 간단합니다. 나는 이제 진술과 그 증거를 답에 추가했다. (또한 블록 컷 트리 를 계산한다는 증거없이 설명을 추가했습니다. 초등학교 사이클에 영향을주지 않고 삭제 될 수 있습니다 가능한 모든 정점을 삭제할 수 있습니다.)
토마스 Klimpel

좋습니다. 그러나 여전히 선형 시간이 아닙니다.
David Eppstein

@DavidEppstein 비 주기성 테스트 자체는 선형 시간으로 수행됩니다. 그러나 알고리즘이 첫 번째 기본 회로 (길이> = 3)를 찾는 데 필요한 시간은 선형이 아닙니다 (최악의 경우). 더 나쁜 것은, Johnson 알고리즘의 대부분의 이용 가능한 구현은 단일 지향 원 (n 개의 정점, e = n 모서리, c = 1 기초)에 적용될 때 O ((n + e) ​​(c + 1) 시간 이상을 사용하는 것으로 보입니다. 사이클). 존슨의 논문이 "초등 회로 찾기"에 대해 가장 인용 된 참고 자료 인 것처럼 보이기 때문에 이것은 정답 인 것으로 의도되었다.
Thomas Klimpel
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.