유 방향 그래프에서 길이가 같은 경로를 두 개 이상 찾기


20

유 방향 그래프 와 두 개의 노드 및 가 있다고 가정 합니다. 다음 결정 문제를 계산하기위한 알고리즘이 이미 있는지 알고 싶습니다.G=(V,E)BAB

길이가 같은 와 사이에 두 개 이상의 경로가 있습니까?BAB

복잡성은 어떻습니까? 다항식 시간으로 해결할 수 있습니까?


그래프에 새로운 제약 조건을 추가하고 싶습니다. 아마도 문제는 더 해결할 수 있습니다. 인접 행렬에서 모든 열은 비어 있지 않습니다. 따라서 모든 노드에는 입력시 하나 이상의 화살표가 있으며 자체적으로 연결된 하나 이상의 노드가 있습니다. 따라서 노드가 번째 노드이면 는 그래프의 모서리입니다.( 나는 , 나는 )i(i,i)


간단한 길을 의미 했습니까? (각 노드를 최대 한 번 방문) 또한 공통 내부 노드를 가질 수 있습니까?

1
아니요, 경로에는 제한이 없습니다. 원하는 경우 루프 할 수 있습니다.
Paolo Parisen T.

쉬운 관찰은 이것입니다 : 사이에 하나의 간단한 경로 가 있고이 간단한 경로가 최대 하나의 루프에 연결된 경우이 간단한 경로에 연결된 길이가 다른 두 개 이상의 루프가있는 경우 간단히 라고 말할 수 있습니다 , 당신은 그렇습니다, .... (유사한 것들이 유용하고 그것을 증명할 수 있다고 생각합니다)라고 말할 수 있습니다. N oA,BNo

1
@mrm : 나는 이것을 중복으로 보지 않습니다. 모든 보행을 요청하는 것은 시간이 많이 걸리는 작업 (일반적으로 무한한 보행이 있음) 인 반면 OP는 모든 보행이 아닌 두 개의 (간단한) 경로를 요구합니다 .
Dave Clarke

답변:


10

그래프 고려하십시오. 우리는 길이가 같은 A 에서 B 까지 서로 다른 두 경로가 있는지 알고 싶습니다 . 무엇을해야합니까? 단순 : 두 경로를 하나로 코딩하십시오. 꼭짓점 V × V × { 0 , 1 }로 그래프 G ' 를 정의합니다 . 당신은 한 단계 만들 G ' 에 두 개의 독립적 인 단계를함으로써 G를 . 추가 비트는 두 경로가 이미 서로 분리되어 있는지 알려줍니다.GABGV×V×{0,1}GG

공식적으로, 가장자리가 G ' IFF I I ' , J J ' 에서 GE ' = E ( I , I '는 ) ( j , j ' ) .(i,j,e)(i,j,e)GiijjGe=e(i,i)(j,j)

알고리즘 검사 경로가있는 경우 ( B , B , 1 ) 에서의 G ' 이고, O ( V 4 ) 등, 또는 어떤 O ( ( V + E ) 2 ) .(A,A,0)(B,B,1)GO(V4)O((V+E)2)

이 알고리즘이 정확하다는 데 동의하면 결과적으로 의 경로 는 최대 2 n 2 의 길이 이므로 잠재적 인 "경로 충돌"은 해당 길이에서 최신으로 발생해야합니다. 이 관측 값에서 O ( V ω log V ) 알고리즘을 얻을 수 있습니다 . 여기서 ω 는 행렬 곱셈 복잡성입니다 (스포일러가 필요한 경우 묻습니다 ...).G2n2O(VωlogV)ω

나는 문제의 구조를 더 많이 사용 하는 알고리즘 이 있다고 생각 합니다.O(V+E)


3
우아합니다.
라파엘

4

아마이 문제에 대한 답이 있지만 그것이 효과가 있는지 확실하지 않습니다.

두 경로를 "찾아"내는 것이 중요하지 않으며, 유일한 존재는 존재하는지 여부를 "알아내는 것"입니다. 이것이 NP 완전한 문제라고 생각하지 않습니다.

인접 행렬 취하십시오 . 우리는 그것이 0.1 값으로 채워 진다고 쉽게 추측 할 수 있습니다. (0 = 모서리 없음; 1 = 모서리가 있음) 다음 값을 제외하고 모든 것이 정상적으로 작동하는 3 개의 값 (0,1,2)을 가진 다음 대수를 사용합시다. 2 + <something> = 2 ; 2 <0보다 큰 값> = 2A2+<something>=22<whatever greater than 0>=2

동일한 길이의 두 개의 경로로 존재한다면, 나는 값이 있다는 것을 예상하고있어 P 되도록 ( 경우 → P ) I , J = 2 .i,jp(Ap)i,j=2

하자 (즉,의 말을하자, 또는 정점의 수는 그래프에 A는 차원이 N을 × N ). p 의 값을 모르지만 최대 n 2에 자체를 곱하여 A 를 반복 하면 답을 찾아야합니다. (따라서 p < n 2 ) (감각은 A 를 확인한 다음 A 2 를 확인한 다음 A 3을 확인 하는 것입니다 ...)nAn×npAn2p<n2AA2A3

여기 내 주장이있다 :

  • 두 경로가 간단한 경로라면 잘 작동합니다. 있다면, 최대 번 반복해야합니다 .n
  • 적어도 하나의 Neasted주기가 있거나 2주기의 경로가 있다면, 최소 공배수 (LCM)를 찾아야합니다. 는 확실히 더 큰 값이며, 찾아야 할 경우 n 2 미만 입니다.n2n2
  • 다음 두 개의 경로가 하나의주기에 두 가지 경로가 모두 인 경우에, 그것은 다소 유사한 본 개의 방정식에 대한 솔루션을 찾는 데있어 , mk는 두 가지 별개의 길이이다 사이클. 행렬 곱셈 A q 는 위에서 정의한 것처럼 " 길이가 qi 에서 j 까지의 경로 가 있습니까?" 따라서 A q1 보다 강하면 i 에서 j로 이어지는 더 많은 경로가 있음을 의미합니다 . 행렬 n 을 반복함으로써α+βm=γ+δkmkAqijqAq1ij 번 우리는 δ β 의 가능한 모든 조합을 통과합니다. 실제로 L C M ( a , b ) ( a * b ) / G C D ( a , b )로 정의 되며 사이클은 n 보다 클 수 없습니다.n2δβLCM(a,b)(ab)/GCD(a,b)n

제가 발견되면 I는 반복을 중지 .(Ap)i,j=2

내가 잘못?


나는 똑같이 시도하고 몇 가지 문제 / 불확실성을 만났다 : 1) 경로가 하나 이상의 사이클에 연결되면 어떻게됩니까? 모든 조합을 "체크"해야합니까 (최악의 경우 모든 노드가 기하 급수적으로 많은 사이클에 있습니다!) 상한을 불거나 각각에 대해 하나만 고려하면 충분합니까? 2) 상수 오프셋 γ 때문에 LCM은 실제로 상한입니까? αγ
Raphael

그건 그렇고, 펑키 대수가 필요하지 않습니다 . 를 행렬 입력으로 계산하는 순간을 멈추십시오 . 2
Raphael

n2nαγLCM(a,b)+α+γ<ab+α+γα+γ+a+b<nab+α+γn2
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.