SlideShare a Scribd company logo
1 of 58
Download to read offline
서울시립대 알고리즘 소모임
네트워크 플로우
8주차
강의자 소개
2020 AL林 정기 스터디 2
이름 최문기
소속 서울시립대 컴퓨터과학부(16학번)
핸들 iknoom1107(BOJ) IKnoom(Codeforces) IKnoom(AtCoder)
ICPC 팀 ManManChiAnunTeam (2020 ICPC 서울 리저널 28등)
- 김정현, 최문기, 최연웅
2020 AL林 정기 스터디 3
유량 네트워크
유량 네트워크
2020 AL林 정기 스터디 4
유량 네트워크
2020 AL林 정기 스터디 5
간선에 용량(capacity)이라는 속성이 있는 방향 그래프
유량 네트워크
2020 AL林 정기 스터디 6
소스(source) : 유량이 시작하는 정점. 유일하게 유량이 발생하는 정점
싱크(sink) : 유량이 도착해야하는 정점
유량 네트워크
2020 AL林 정기 스터디 7
용량(capacity) : 각 간선에 대해서 흐를 수 있는 최대 유량. c(u, v)
유랑(flow) : 다음 속성을 만족하는 값. f(u, v)
용량의 제한(capacity constraint)
유량의 보존(conservation of flows)
유량 네트워크
2020 AL林 정기 스터디 8
용량의 제한(capacity constraint)
- 유량은 그 간선의 용량을 초과할 수 없다.
유량의 보존(conservation of flows)
- 소스와 싱크를 제외한 정점에는 들어오는 유량과 나가는 유량은 같다.
유량 네트워크
2020 AL林 정기 스터디 9
소스
싱크
유량 네트워크의 활용
2020 AL林 정기 스터디 10
• Traffic analysis
• Pipe network analysis
• Transportation networks
• Electrical distribution systems
... from wikipedia
2020 AL林 정기 스터디 11
최대 유량
최대 유량 문제(maximum flow problem)
2020 AL林 정기 스터디 12
value of flow
- 소스에서 싱크로 흘러가는 유량의 크기
- (소스에서 나오는 유량은 모두 싱크로 흘러가므로) 소스에서 나오는 유량의 합
최대 유량 문제(maximum flow problem)
- value of flow의 최댓값을 구하는 문제
- 이 값을 구하는 알고리즘을 최대 유량 알고리즘이라고 한다.
최대 유량 문제(maximum flow problem)
2020 AL林 정기 스터디 13
최대 유량 : 2
최대 유량 문제(maximum flow problem)
2020 AL林 정기 스터디 14
최대 유량 문제(maximum flow problem)
2020 AL林 정기 스터디 15
최대 유량 문제는 간단하지 않습니다.
- 어디로 흘리는가?
- 얼마나 흘리는가?
2020 AL林 정기 스터디 16
최대 유량 알고리즘
residual network
2020 AL林 정기 스터디 17
residual capacity
residual network
residual network
2020 AL林 정기 스터디 18
증가 경로(augmenting path)
- residual network에서 source에서 sink까지의 경로
residual capacity of p (p는 augmenting path)
-
residual network
2020 AL林 정기 스터디 19
포드-풀커슨 메소드(Ford–Fulkerson Method)
2020 AL林 정기 스터디 20
1. 증가 경로를 찾는다.
2. 증가 경로에 흘려보낸다.
그리디 알고리즘입니다.
포드-풀커슨 메소드(Ford–Fulkerson Method)
2020 AL林 정기 스터디 21
더 자세히는..
while (residual network에서 증가경로 p가 있는 동안) {
c = (증가 경로 p의 residual capacity)
for (증가 경로의 모든 간선 (u, v)에 대해서) {
f(u, v) += c // 정방향 간선 유량에 c를 더한다.
f(v, u) -= c // 역방향 간선 유량에 c를 뺀다.
}
}
포드-풀커슨 메소드(Ford–Fulkerson Method)
2020 AL林 정기 스터디 22
문제점
2020 AL林 정기 스터디 23
포드-풀커슨 메소드의 시간복잡도는 O(|E|f)
애드몬드 카프 알고리즘(Edmonds-Karp Algorithm)
2020 AL林 정기 스터디 24
포드-풀커슨 메소드에서 증가경로를 찾을 때
BFS로 찾으면 O(VE2)안에 찾을 수 있다.
포드-풀커슨 메소드에서 BFS로 증가경로를 찾는 알고리즘을
애드몬드 카프 알고리즘이라고 한다.
애드몬드 카프 알고리즘(Edmonds-Karp Algorithm)
2020 AL林 정기 스터디 25
BOJ 6086번 최대 유량 소스코드 http://boj.kr/5a590494c661405c81111be0fcade4ce
애드몬드 카프 알고리즘(Edmonds-Karp Algorithm)
2020 AL林 정기 스터디 26
애드몬드 카프 알고리즘(Edmonds-Karp Algorithm)
2020 AL林 정기 스터디 27
2020 AL林 정기 스터디 28
이분 매칭
BOJ #2188 축사배정
2020 AL林 정기 스터디 29
BOJ #2188 축사배정
2020 AL林 정기 스터디 30
1
2
3
4
5
1
2
3
4
5
이분 매칭(Bipartite Matching)
2020 AL林 정기 스터디 31
이분 매칭(Bipartite Matching)
- 이분 그래프에서 최대 매칭(Maximum Matching)을 찾는 문제
- 매칭(Matching) : 끝 점을 공유하지 않는 간선의 집합
이분 매칭(Bipartite Matching)
2020 AL林 정기 스터디 32
이분 매칭의 시간 복잡도는 O(VE)입니다. → O(|E|f)에서 f가 O(V)
이분 매칭을 해결하는 두가지 방법
- 최대 유량 알고리즘을 이용
- 이분 매칭을 위한 더 간단한 구현
1. 최대 유량 알고리즘을 이용
2020 AL林 정기 스터디 33
1
2
3
4
5
1
2
3
4
5
S E
∞
∞
∞
∞
∞
∞
∞
∞
∞
∞
1
1
1
1
1
1
1
1
1
2. 더 간단한 방법
2020 AL林 정기 스터디 34
이분 매칭은 더 간단하게 해결이 가능합니다.
http://boj.kr/8ba10f3e14d94066a6c7fa4aab431688
2. 더 간단한 방법
2020 AL林 정기 스터디 35
BOJ #2188 축사배정
2020 AL林 정기 스터디 36
1
2
3
4
5
1
2
3
4
5
BOJ #2188 축사배정
2020 AL林 정기 스터디 37
1
2
3
4
5
1
2
3
4
5
BOJ #2188 축사배정
2020 AL林 정기 스터디 38
1
2
3
4
5
1
2
3
4
5
BOJ #2188 축사배정
2020 AL林 정기 스터디 39
1
2
3
4
5
1
2
3
4
5
BOJ #2188 축사배정
2020 AL林 정기 스터디 40
1
2
3
4
5
1
2
3
4
5
BOJ #2188 축사배정
2020 AL林 정기 스터디 41
1
2
3
4
5
1
2
3
4
5
BOJ #2188 축사배정
2020 AL林 정기 스터디 42
1
2
3
4
5
1
2
3
4
5
BOJ #2188 축사배정
2020 AL林 정기 스터디 43
1
2
3
4
5
1
2
3
4
5
2020 AL林 정기 스터디 44
정당성
포드-풀커슨 메소드의 정당성
2020 AL林 정기 스터디 45
최대 유량 최소 컷 정리 (Max-flow min-cut theorem)
- https://en.wikipedia.org/wiki/Max-flow_min-cut_theorem
- 알고리즘 문제해결전략 997페이지
포드-풀커슨 메소드의 정당성을 증명함과 동시에
같은 알고리즘으로 최소 컷 문제도 해결할 수 있음을 보입니다.
애드몬드 카프의 시간복잡도 증명
2020 AL林 정기 스터디 46
Edmonds-Karp Algorithm이 VE^2인 이유
증가 경로를 많아야 VE번 찾는다는 것을 보이면 된다. (BFS 한번이 O(E)이기 때문)
정의 1. 간선의 capacity = (간선에 흐른 flow)인 간선을 포화 간선이라 정의한다. 그렇지 않은 간선을 비포화
간선이라고 정의한다.
정의 2. 비포화 간선들로 이루어진 그래프를 Residual Graph라고 정의한다.
애드몬드 카프의 시간복잡도 증명
2020 AL林 정기 스터디 47
Lemma 1. Residual Graph에서 현재의 source - sink 최단경로가 D라고 했을 때, 최단 경로를 D로 유지하는 동안 E번만 증가 경로를
찾는다.
증명. 한번 flow를 흘리면, Residual Graph의 간선 중 최소 하나가 포화 상태로 차 버리게 된다. 포화 상태로 차게 된다면, 최단 경로가 D
인 한 다시 그 간선을 보게 될 일은 없다. (역변을 타게 되면 최단 경로가 D+2 이상이 되는 고로, 그러한 경로는 찾지 않는다) 역변을 탈 일
이 없으니 간선은 비포화에서 포화로만 변하고, 모든 간선이 포화로 변하면 경로가 없게 된다. 고로 최단 경로를 고정했을 때 O(E) 개의
증가 경로만을 찾는다.
최단 경로의 길이는 V 이하이니 이러한 과정이 V번 일어난다. 고로, 많아야 VE번 증가 경로를 찾는다.
출처: https://koosaga.com/133 [구사과]
2020 AL林 정기 스터디 48
더 공부할 것들..
다수의 소스와 다수의 싱크가 있는 경우
2020 AL林 정기 스터디 49
소스 하나를 만들고 모든 소스에 용량을 ∞으로 연결합니다.
싱크 하나를 만들고 모든 싱크를 용량을 ∞으로 연결합니다.
정점을 한번 밖에 못 지나는 경우
2020 AL林 정기 스터디 50
출처 : https://kks227.blog.me/220804885235
인접 리스트로 구현
2020 AL林 정기 스터디 51
간선의 용량과 유량을 인접 행렬로 가지고 있으면 시간이 오래 걸릴 수 있습니다.
아래와 같이 간선 구조체를 만들 수 있습니다.
최소 컷 = 최대 유량
2020 AL林 정기 스터디 52
최소 컷(min-cut) : 두 정점을 분리하기 위한 최소 비용
출처 : https://kks227.blog.me/220808685331
최소 컷은 최대 유량과 동치이며
이에 대한 설명이 최대 유량 최소 컷 정리(max-flow min-cut theorem)입니다.
연습문제 : https://www.acmicpc.net/problem/14286
간선에 비용(cost)이 추가된 경우
2020 AL林 정기 스터디 53
간선에 비용(cost)가 추가되고
최소 비용으로 max flow를 구하고 싶다면
증가 경로(augmenting path)를 찾을 때 최단 경로로 찾으면 됩니다.
이를 MCMF(Min-Cost Max-Flow)라고 합니다.
연습문제 : https://www.acmicpc.net/problem/11408
더 빠른 알고리즘
2020 AL林 정기 스터디 54
더 빠른 최대 유량 알고리즘
- 디닉 알고리즘(Dinic’s Algorithm)
더 빠른 이분 매칭 알고리즘
- 호프크로프트 카프 알고리즘(Hopcroft-Karp Algorithm)
이분 매칭에 관한 정리
2020 AL林 정기 스터디 55
http://www.secmem.org/blog/2019/12/15/theorem-about-bipartite-matching/
- Minimum Vertex Cover (최소 버텍스 커버, 쾨닉의 정리)
- Maximum Independent Set
- Minimum Path Cover
- Maximum Anti-Chain
최소 버텍스 커버 제외하고 저도 잘 모릅니다..
서큘레이션
2020 AL林 정기 스터디 56
용량에 상한 뿐만 아니라 하한이 있는 경우(최소한 흘려야하는 유량)
이 하한을 demand라고 하고
이를 만족하는 해가 존재하는지를 판별하는 문제를 Circulation Problem
최대 플로우를 구하는 것을 Maximum Flow with Edge Demands라고 부릅니다.
저도 잘 모릅니다..
연습 문제
2020 AL林 정기 스터디 57
BOJ 6086 최대 유량
- https://www.acmicpc.net/problem/6086
BOJ 2188 축사배정
- https://www.acmicpc.net/problem/2188
참고 자료
2020 AL林 정기 스터디 58
https://koosaga.com/18
https://koosaga.com/133
https://kks227.blog.me/220804885235
https://kks227.blog.me/220807541506
https://kks227.blog.me/220808685331
알고리즘 문제해결 전략(구종만)
introduction to algorithms(CLRS)

More Related Content

More from Moonki Choi

2020 여름방학 정기스터디 6주차
2020 여름방학 정기스터디 6주차2020 여름방학 정기스터디 6주차
2020 여름방학 정기스터디 6주차Moonki Choi
 
2020 여름방학 정기스터디 5주차
2020 여름방학 정기스터디 5주차2020 여름방학 정기스터디 5주차
2020 여름방학 정기스터디 5주차Moonki Choi
 
2020 겨울방학 정기스터디 3주차
2020 겨울방학 정기스터디 3주차2020 겨울방학 정기스터디 3주차
2020 겨울방학 정기스터디 3주차Moonki Choi
 
2020 겨울방학 정기스터디 2주차
2020 겨울방학 정기스터디 2주차2020 겨울방학 정기스터디 2주차
2020 겨울방학 정기스터디 2주차Moonki Choi
 
2020 2학기 정기스터디 2주차
2020 2학기 정기스터디 2주차2020 2학기 정기스터디 2주차
2020 2학기 정기스터디 2주차Moonki Choi
 
2020 2학기 정기스터디 1주차
2020 2학기 정기스터디 1주차2020 2학기 정기스터디 1주차
2020 2학기 정기스터디 1주차Moonki Choi
 
2020 1학기 정기스터디 2주차
2020 1학기 정기스터디 2주차2020 1학기 정기스터디 2주차
2020 1학기 정기스터디 2주차Moonki Choi
 
2020 1학기 정기스터디 1주차
2020 1학기 정기스터디 1주차2020 1학기 정기스터디 1주차
2020 1학기 정기스터디 1주차Moonki Choi
 

More from Moonki Choi (8)

2020 여름방학 정기스터디 6주차
2020 여름방학 정기스터디 6주차2020 여름방학 정기스터디 6주차
2020 여름방학 정기스터디 6주차
 
2020 여름방학 정기스터디 5주차
2020 여름방학 정기스터디 5주차2020 여름방학 정기스터디 5주차
2020 여름방학 정기스터디 5주차
 
2020 겨울방학 정기스터디 3주차
2020 겨울방학 정기스터디 3주차2020 겨울방학 정기스터디 3주차
2020 겨울방학 정기스터디 3주차
 
2020 겨울방학 정기스터디 2주차
2020 겨울방학 정기스터디 2주차2020 겨울방학 정기스터디 2주차
2020 겨울방학 정기스터디 2주차
 
2020 2학기 정기스터디 2주차
2020 2학기 정기스터디 2주차2020 2학기 정기스터디 2주차
2020 2학기 정기스터디 2주차
 
2020 2학기 정기스터디 1주차
2020 2학기 정기스터디 1주차2020 2학기 정기스터디 1주차
2020 2학기 정기스터디 1주차
 
2020 1학기 정기스터디 2주차
2020 1학기 정기스터디 2주차2020 1학기 정기스터디 2주차
2020 1학기 정기스터디 2주차
 
2020 1학기 정기스터디 1주차
2020 1학기 정기스터디 1주차2020 1학기 정기스터디 1주차
2020 1학기 정기스터디 1주차
 

2020 2학기 정기스터디 8주차

  • 2. 강의자 소개 2020 AL林 정기 스터디 2 이름 최문기 소속 서울시립대 컴퓨터과학부(16학번) 핸들 iknoom1107(BOJ) IKnoom(Codeforces) IKnoom(AtCoder) ICPC 팀 ManManChiAnunTeam (2020 ICPC 서울 리저널 28등) - 김정현, 최문기, 최연웅
  • 3. 2020 AL林 정기 스터디 3 유량 네트워크
  • 4. 유량 네트워크 2020 AL林 정기 스터디 4
  • 5. 유량 네트워크 2020 AL林 정기 스터디 5 간선에 용량(capacity)이라는 속성이 있는 방향 그래프
  • 6. 유량 네트워크 2020 AL林 정기 스터디 6 소스(source) : 유량이 시작하는 정점. 유일하게 유량이 발생하는 정점 싱크(sink) : 유량이 도착해야하는 정점
  • 7. 유량 네트워크 2020 AL林 정기 스터디 7 용량(capacity) : 각 간선에 대해서 흐를 수 있는 최대 유량. c(u, v) 유랑(flow) : 다음 속성을 만족하는 값. f(u, v) 용량의 제한(capacity constraint) 유량의 보존(conservation of flows)
  • 8. 유량 네트워크 2020 AL林 정기 스터디 8 용량의 제한(capacity constraint) - 유량은 그 간선의 용량을 초과할 수 없다. 유량의 보존(conservation of flows) - 소스와 싱크를 제외한 정점에는 들어오는 유량과 나가는 유량은 같다.
  • 9. 유량 네트워크 2020 AL林 정기 스터디 9 소스 싱크
  • 10. 유량 네트워크의 활용 2020 AL林 정기 스터디 10 • Traffic analysis • Pipe network analysis • Transportation networks • Electrical distribution systems ... from wikipedia
  • 11. 2020 AL林 정기 스터디 11 최대 유량
  • 12. 최대 유량 문제(maximum flow problem) 2020 AL林 정기 스터디 12 value of flow - 소스에서 싱크로 흘러가는 유량의 크기 - (소스에서 나오는 유량은 모두 싱크로 흘러가므로) 소스에서 나오는 유량의 합 최대 유량 문제(maximum flow problem) - value of flow의 최댓값을 구하는 문제 - 이 값을 구하는 알고리즘을 최대 유량 알고리즘이라고 한다.
  • 13. 최대 유량 문제(maximum flow problem) 2020 AL林 정기 스터디 13 최대 유량 : 2
  • 14. 최대 유량 문제(maximum flow problem) 2020 AL林 정기 스터디 14
  • 15. 최대 유량 문제(maximum flow problem) 2020 AL林 정기 스터디 15 최대 유량 문제는 간단하지 않습니다. - 어디로 흘리는가? - 얼마나 흘리는가?
  • 16. 2020 AL林 정기 스터디 16 최대 유량 알고리즘
  • 17. residual network 2020 AL林 정기 스터디 17 residual capacity residual network
  • 18. residual network 2020 AL林 정기 스터디 18 증가 경로(augmenting path) - residual network에서 source에서 sink까지의 경로 residual capacity of p (p는 augmenting path) -
  • 19. residual network 2020 AL林 정기 스터디 19
  • 20. 포드-풀커슨 메소드(Ford–Fulkerson Method) 2020 AL林 정기 스터디 20 1. 증가 경로를 찾는다. 2. 증가 경로에 흘려보낸다. 그리디 알고리즘입니다.
  • 21. 포드-풀커슨 메소드(Ford–Fulkerson Method) 2020 AL林 정기 스터디 21 더 자세히는.. while (residual network에서 증가경로 p가 있는 동안) { c = (증가 경로 p의 residual capacity) for (증가 경로의 모든 간선 (u, v)에 대해서) { f(u, v) += c // 정방향 간선 유량에 c를 더한다. f(v, u) -= c // 역방향 간선 유량에 c를 뺀다. } }
  • 23. 문제점 2020 AL林 정기 스터디 23 포드-풀커슨 메소드의 시간복잡도는 O(|E|f)
  • 24. 애드몬드 카프 알고리즘(Edmonds-Karp Algorithm) 2020 AL林 정기 스터디 24 포드-풀커슨 메소드에서 증가경로를 찾을 때 BFS로 찾으면 O(VE2)안에 찾을 수 있다. 포드-풀커슨 메소드에서 BFS로 증가경로를 찾는 알고리즘을 애드몬드 카프 알고리즘이라고 한다.
  • 25. 애드몬드 카프 알고리즘(Edmonds-Karp Algorithm) 2020 AL林 정기 스터디 25 BOJ 6086번 최대 유량 소스코드 http://boj.kr/5a590494c661405c81111be0fcade4ce
  • 26. 애드몬드 카프 알고리즘(Edmonds-Karp Algorithm) 2020 AL林 정기 스터디 26
  • 27. 애드몬드 카프 알고리즘(Edmonds-Karp Algorithm) 2020 AL林 정기 스터디 27
  • 28. 2020 AL林 정기 스터디 28 이분 매칭
  • 29. BOJ #2188 축사배정 2020 AL林 정기 스터디 29
  • 30. BOJ #2188 축사배정 2020 AL林 정기 스터디 30 1 2 3 4 5 1 2 3 4 5
  • 31. 이분 매칭(Bipartite Matching) 2020 AL林 정기 스터디 31 이분 매칭(Bipartite Matching) - 이분 그래프에서 최대 매칭(Maximum Matching)을 찾는 문제 - 매칭(Matching) : 끝 점을 공유하지 않는 간선의 집합
  • 32. 이분 매칭(Bipartite Matching) 2020 AL林 정기 스터디 32 이분 매칭의 시간 복잡도는 O(VE)입니다. → O(|E|f)에서 f가 O(V) 이분 매칭을 해결하는 두가지 방법 - 최대 유량 알고리즘을 이용 - 이분 매칭을 위한 더 간단한 구현
  • 33. 1. 최대 유량 알고리즘을 이용 2020 AL林 정기 스터디 33 1 2 3 4 5 1 2 3 4 5 S E ∞ ∞ ∞ ∞ ∞ ∞ ∞ ∞ ∞ ∞ 1 1 1 1 1 1 1 1 1
  • 34. 2. 더 간단한 방법 2020 AL林 정기 스터디 34 이분 매칭은 더 간단하게 해결이 가능합니다. http://boj.kr/8ba10f3e14d94066a6c7fa4aab431688
  • 35. 2. 더 간단한 방법 2020 AL林 정기 스터디 35
  • 36. BOJ #2188 축사배정 2020 AL林 정기 스터디 36 1 2 3 4 5 1 2 3 4 5
  • 37. BOJ #2188 축사배정 2020 AL林 정기 스터디 37 1 2 3 4 5 1 2 3 4 5
  • 38. BOJ #2188 축사배정 2020 AL林 정기 스터디 38 1 2 3 4 5 1 2 3 4 5
  • 39. BOJ #2188 축사배정 2020 AL林 정기 스터디 39 1 2 3 4 5 1 2 3 4 5
  • 40. BOJ #2188 축사배정 2020 AL林 정기 스터디 40 1 2 3 4 5 1 2 3 4 5
  • 41. BOJ #2188 축사배정 2020 AL林 정기 스터디 41 1 2 3 4 5 1 2 3 4 5
  • 42. BOJ #2188 축사배정 2020 AL林 정기 스터디 42 1 2 3 4 5 1 2 3 4 5
  • 43. BOJ #2188 축사배정 2020 AL林 정기 스터디 43 1 2 3 4 5 1 2 3 4 5
  • 44. 2020 AL林 정기 스터디 44 정당성
  • 45. 포드-풀커슨 메소드의 정당성 2020 AL林 정기 스터디 45 최대 유량 최소 컷 정리 (Max-flow min-cut theorem) - https://en.wikipedia.org/wiki/Max-flow_min-cut_theorem - 알고리즘 문제해결전략 997페이지 포드-풀커슨 메소드의 정당성을 증명함과 동시에 같은 알고리즘으로 최소 컷 문제도 해결할 수 있음을 보입니다.
  • 46. 애드몬드 카프의 시간복잡도 증명 2020 AL林 정기 스터디 46 Edmonds-Karp Algorithm이 VE^2인 이유 증가 경로를 많아야 VE번 찾는다는 것을 보이면 된다. (BFS 한번이 O(E)이기 때문) 정의 1. 간선의 capacity = (간선에 흐른 flow)인 간선을 포화 간선이라 정의한다. 그렇지 않은 간선을 비포화 간선이라고 정의한다. 정의 2. 비포화 간선들로 이루어진 그래프를 Residual Graph라고 정의한다.
  • 47. 애드몬드 카프의 시간복잡도 증명 2020 AL林 정기 스터디 47 Lemma 1. Residual Graph에서 현재의 source - sink 최단경로가 D라고 했을 때, 최단 경로를 D로 유지하는 동안 E번만 증가 경로를 찾는다. 증명. 한번 flow를 흘리면, Residual Graph의 간선 중 최소 하나가 포화 상태로 차 버리게 된다. 포화 상태로 차게 된다면, 최단 경로가 D 인 한 다시 그 간선을 보게 될 일은 없다. (역변을 타게 되면 최단 경로가 D+2 이상이 되는 고로, 그러한 경로는 찾지 않는다) 역변을 탈 일 이 없으니 간선은 비포화에서 포화로만 변하고, 모든 간선이 포화로 변하면 경로가 없게 된다. 고로 최단 경로를 고정했을 때 O(E) 개의 증가 경로만을 찾는다. 최단 경로의 길이는 V 이하이니 이러한 과정이 V번 일어난다. 고로, 많아야 VE번 증가 경로를 찾는다. 출처: https://koosaga.com/133 [구사과]
  • 48. 2020 AL林 정기 스터디 48 더 공부할 것들..
  • 49. 다수의 소스와 다수의 싱크가 있는 경우 2020 AL林 정기 스터디 49 소스 하나를 만들고 모든 소스에 용량을 ∞으로 연결합니다. 싱크 하나를 만들고 모든 싱크를 용량을 ∞으로 연결합니다.
  • 50. 정점을 한번 밖에 못 지나는 경우 2020 AL林 정기 스터디 50 출처 : https://kks227.blog.me/220804885235
  • 51. 인접 리스트로 구현 2020 AL林 정기 스터디 51 간선의 용량과 유량을 인접 행렬로 가지고 있으면 시간이 오래 걸릴 수 있습니다. 아래와 같이 간선 구조체를 만들 수 있습니다.
  • 52. 최소 컷 = 최대 유량 2020 AL林 정기 스터디 52 최소 컷(min-cut) : 두 정점을 분리하기 위한 최소 비용 출처 : https://kks227.blog.me/220808685331 최소 컷은 최대 유량과 동치이며 이에 대한 설명이 최대 유량 최소 컷 정리(max-flow min-cut theorem)입니다. 연습문제 : https://www.acmicpc.net/problem/14286
  • 53. 간선에 비용(cost)이 추가된 경우 2020 AL林 정기 스터디 53 간선에 비용(cost)가 추가되고 최소 비용으로 max flow를 구하고 싶다면 증가 경로(augmenting path)를 찾을 때 최단 경로로 찾으면 됩니다. 이를 MCMF(Min-Cost Max-Flow)라고 합니다. 연습문제 : https://www.acmicpc.net/problem/11408
  • 54. 더 빠른 알고리즘 2020 AL林 정기 스터디 54 더 빠른 최대 유량 알고리즘 - 디닉 알고리즘(Dinic’s Algorithm) 더 빠른 이분 매칭 알고리즘 - 호프크로프트 카프 알고리즘(Hopcroft-Karp Algorithm)
  • 55. 이분 매칭에 관한 정리 2020 AL林 정기 스터디 55 http://www.secmem.org/blog/2019/12/15/theorem-about-bipartite-matching/ - Minimum Vertex Cover (최소 버텍스 커버, 쾨닉의 정리) - Maximum Independent Set - Minimum Path Cover - Maximum Anti-Chain 최소 버텍스 커버 제외하고 저도 잘 모릅니다..
  • 56. 서큘레이션 2020 AL林 정기 스터디 56 용량에 상한 뿐만 아니라 하한이 있는 경우(최소한 흘려야하는 유량) 이 하한을 demand라고 하고 이를 만족하는 해가 존재하는지를 판별하는 문제를 Circulation Problem 최대 플로우를 구하는 것을 Maximum Flow with Edge Demands라고 부릅니다. 저도 잘 모릅니다..
  • 57. 연습 문제 2020 AL林 정기 스터디 57 BOJ 6086 최대 유량 - https://www.acmicpc.net/problem/6086 BOJ 2188 축사배정 - https://www.acmicpc.net/problem/2188
  • 58. 참고 자료 2020 AL林 정기 스터디 58 https://koosaga.com/18 https://koosaga.com/133 https://kks227.blog.me/220804885235 https://kks227.blog.me/220807541506 https://kks227.blog.me/220808685331 알고리즘 문제해결 전략(구종만) introduction to algorithms(CLRS)