다이닉 알고리즘

Dinic's algorithm

디닉의 알고리즘 또는 디니츠의 알고리즘플로우 네트워크최대 흐름을 계산하기 위한 강력한 다항식 알고리즘으로, 이스라엘(구 소련)의 컴퓨터 과학자 예핌(Chaim) A가 1970년에 착안했다.디니츠.[1]알고리즘은 ) 번으로 실행되며 최단 증강 경로를 사용한다는 점에서 O 2)번으로 실행되는 Edmonds-Karp 알고리즘과 유사하다.레벨 그래프의 개념과 블록 흐름의 도입으로 다이닉의 알고리즘이 그 성능을 달성할 수 있게 되었다.

역사

예핌 디니츠는 아델슨-벨스키의 알고리즘 클래스에서 수업 전 연습에 대응하여 이 알고리즘을 발명했다.당시 그는 포드-풀커슨 알고리즘에 관한 기본적인 사실들을 알지 못했다.[2]

디니츠는 자신의 알고리즘을 1969년 1월에 발명했다고 언급하는데, 이 알고리즘은 1970년에 Doklady Akademii Nauk SSSR에 발표되었다.1974년 하이파 테크니온시몬 이븐과 (당시 박사과정 학생) 알론 이타이는 디니츠의 알고리즘과 알렉산더 V. 카르자노프의 흐름을 차단하려는 관련 아이디어에 매우 호기심과 흥미를 느꼈다.그러나 그들이 이 두 논문을 해독하기는 어려웠는데, 각각 독레이디 아카데미 나우크 SSSR의 제약을 충족시키기 위해 4페이지로 제한되어 있다.심지어 포기하지 않았고, 3일간의 노력 끝에 계층화된 네트워크 유지보수 문제를 제외한 두 논문을 모두 이해할 수 있었다.이후 몇 년간 이븐은 '다이닉의 알고리즘'을 주제로 강연하면서 저자의 이름을 대중화하면서 잘못 발음했다.이븐과 이타이도 BFSDFS를 결합하여 이 알고리즘에 기여했는데, 이것이 현재 알고리즘이 보편적으로 제시되고 있는 방식이다.[3]

포드-풀커슨 알고리즘이 발명된 후 약 10년 동안, 비합리적인 에지 용량의 일반적인 경우 다항 시간 내에 종료되도록 할 수 있을지는 알 수 없었다.이로 인해 일반적인 경우에서 최대 흐름 문제를 해결할 알려진 다항식 시간 알고리즘이 부족하게 되었다.디니츠의 알고리즘과 Edmonds-Karp 알고리즘(1972년 간행)은 모두 독립적으로 Ford-Fulkerson 알고리즘에서 각각의 증강 경로가 최단 경로인 경우, 증가 경로의 길이는 감소하지 않고 알고리즘은 항상 종료된다는 것을 보여주었다.

정의

Let be a network with and the capacity and the flow of the edge , respectively.

잔여 용량은 다음과 같이 정의된 매핑 : V+ R이다.
  1. if (, v) E
  2. ( , v)= 이외의 경우.
잔차 그래프는 비가중 그래프 =(, ) , f, s, t ) {\G_c_{f},s이며 여기서,
={ ( , ) : : ( , )> {\V\V\\;u,.
증강 경로는 잔차 그래프 에서 s 경로 입니다
Define to be the length of the shortest path from to in . Then the level graph of is the graph ) 여기서
={ ( , v) f: ( v)= ()+ } \\colon \colon distdist}.
{s\displaystyle}fEL′과′{\displaystyle f'}는 그래프 G′)((V, EL′), s, t){\displaystyle G'=((V,E_{L}'),s,t)}t{\displaystyle지}흐름 – 블로킹 흐름은 s){(u, v):f′(u, v)<>요리 fEL(u, v)}{\displaystyle E_{나는}'=\{(u,v)\colon cm이다.;f' s s 경로가 없음[Note 1][4]

알고리즘.

다이닉 알고리즘

입력: 네트워크 =( , E), c, , ) G
출력: – t f
  1. 대해 e ) = 0 {\ 설정하십시오
  2. 에서 G 을 생성하십시오 ( )= f
  3. 에서 차단 흐름 f을(를) 찾으십시오
  4. 증가 흐름 을(를) f만큼 추가하고 2단계로 돌아가십시오.

분석

각 차단 흐름의 레이어 수가 매번 최소 1개씩 증가하므로 알고리즘에는 - V개의 차단 흐름이 있음을 알 수 있다.각 항목에 대해:

  • 레벨 그래프 은(는) ( 시간 내에 너비 우선 검색으로 구성할 수 있다.
  • 레벨 그래프 의 차단 흐름은 ( E) 시간에서[Note 2] 확인할 수 있다.

각 계층에 대한 총 실행 시간 + )= ) 그 결과 다이닉 알고리즘의 실행시간은 O( O 입니다[5]

동적 트리라는 데이터 구조를 사용하면 각 단계에서 차단 흐름을 찾는 실행 시간을 V V로 줄일 수 있으므로 Dinic 알고리즘의 실행 시간을 V로 개선할 수 있다

특례

단위 용량이 있는 네트워크에서, 훨씬 더 강한 시간 구속이 유지된다.각 차단 흐름은 시간에서 확인할 수 있으며, 위상 O OO(/ 3를 초과하지 않는 것을 알 수 있다따라서 알고리즘은 { / , / ) 번으로 실행된다.[6]

초당적 일치 문제에서 발생하는 네트워크에서는 위상 가 O O로 제한되므로 시간 바인딩으로 이어진다.결과 알고리즘은 Hopcroft-Karp 알고리즘으로도 알려져 있다.보다 일반적으로, 이 바운드는 모든 단위 네트워크에 대해 유지된다. 즉, 소스와 싱크를 제외한 각 꼭지점이 하나의 입력 용량 에지 또는 하나의 송신 용량 에지 중 하나를 갖는 네트워크, 그리고 다른 모든 용량은 임의의 정수다.[4]

다음은 다이닉의 알고리즘 시뮬레이션이다.레벨 그래프 에서 라벨이 빨간색으로 표시된 정점은( ( 입니다파란색으로 표시된 경로는 차단 흐름을 형성한다.

1. Dinic algorithm G1.svg Dinic algorithm Gf1.svg Dinic algorithm GL1.svg

차단 흐름은 다음과 같이 구성된다.

  1. 의 4단위가 있는{ 1,3, {\,3,t
  2. 6단위의 {s ,,
  3. 4단위의 {s,,

따라서 차단 유량은 14단위, flow f의 값은 14이다.블럭화 흐름의 각 증강 경로에는 3개의 가장자리가 있다는 점에 유의하십시오.

2. Dinic algorithm G2.svg Dinic algorithm Gf2.svg Dinic algorithm GL2.svg

차단 흐름은 다음과 같이 구성된다.

  1. 흐름 5단위의{ , ,,

따라서 차단 유량은 5단위로 f f의 값은 14 + 5 = 19이다.각 증강 경로에는 4개의 가장자리가 있다는 점에 유의하십시오.

3. Dinic algorithm G3.svg Dinic algorithm Gf3.svg Dinic algorithm GL3.svg

은(는) f 에서 도달할 수 없으므로 알고리즘은 종료되고 최대값 19의 흐름을 반환한다각 블럭 흐름에서 증가 경로의 에지 수가 최소 1개씩 증가한다는 점에 유의하십시오.

참고 항목

메모들

  1. ^ This means that the subgraph resulting from removing all saturated edges (edges with ) does not contain any path from to . In other terms, the blocking 흐름 에서 까지의 모든 가능한 경로에 포화 에지를 포함하도록 되어 있다.
  2. ^ 차단 흐름의 발견은 일련의 진전 및 후퇴 작업을 통해 경로당 () 스타일 로 구현될 수 있다.자세한 내용은 http://courses.csail.mit.edu/6.854/06/scribe/scribe11.pdf을 참조하십시오.
  1. ^ Yefim Dinitz (1970). "Algorithm for solution of a problem of maximum flow in a network with power estimation" (PDF). Doklady Akademii Nauk SSSR. 11: 1277–1280.
  2. ^ Ilan Kadar; Sivan Albagli (2009-11-27). "Dinitz's algorithm for finding a maximum flow in a network".
  3. ^ Yefim Dinitz. "Dinitz's Algorithm: The Original Version and Even's Version" (PDF). {{cite journal}}:Cite 저널은 필요로 한다. journal=(도움말)
  4. ^ a b 타르얀 1983, 페이지 102.
  5. ^ Yefim Dinitz (2006). "Dinitz' Algorithm: The Original Version and Even's Version" (PDF). In Oded Goldreich; Arnold L. Rosenberg; Alan L. Selman (eds.). Theoretical Computer Science: Essays in Memory of Shimon Even. Springer. pp. 218–240. ISBN 978-3-540-32880-3.
  6. ^ Even, Shimon; Tarjan, R. Endre (1975). "Network Flow and Testing Graph Connectivity". SIAM Journal on Computing. 4 (4): 507–518. doi:10.1137/0204043. ISSN 0097-5397.

참조