최대 유량(Network Flow), 디닉(Dinic's) 알고리즘
·
PS/Algorithm
지난 글에 이어서 더 빠른 최대 유량 알고리즘인 디닉 알고리즘.에드몬즈-카프는 bfs를 활용하며 O(VE2) 안에 문제를 해결할 수 있다. 간선에 대한 지수시간이기 때문에 정점의 수와 무관하게 간선이 여러 개라면 bfs에서 너무 많은 시간을 소모하게 된다. 하지만 디닉은 정점에 대한 지수시간 O(V2E) 안에 문제를 해결한다.디닉 알고리즘의 순서는 이렇다.유량 그래프 = G, source = s, sink = t1. G의 레벨그래프 L을 만든다. a. s로부터 t까지의 bfs로 깊이는 각 정점의 레벨이 된다. b. t의 레벨이 정의되지 않으면 모든 작업을 멈춘다.2. L에서 다음 작업을 반복한다. a. dfs로 s→t의 증가경로를 찾는다. b. 증가경로의 최소 컷을 찾아 경로에 유량을 생성한다.3..