Table of Contents
Edmonds-Karp Algorithm : 상세한 효율성 분석
Edmonds-Karp 알고리즘은 유량 네트워크에서 최대 흐름을 컴퓨팅하기위한 Ford-Fulkerson 방법의 특정 구현입니다. 원래 Ford-Fulkerson 방법은 augmenting 경로 (생각적 인 경우의 만료 시간)에 대한 임의 검색을 사용하면서 Edmonds-Karp는 BFS 기반 검색을 시행하고, 가장 짧은 낙하 경로 (선택적 인 숫자의 관점에서)를 보장하는 데있어 이론적 인 네트워크의 흐름을 보장하는 것입니다. 이 네트워크는 네트워크의 흐름을 보장하는 것이 매우 중요합니다.
알고리즘 설명 및 키 속성
지시 그래프 G = (V, E) 소스 ]], 싱크 ]t], 용량 함수 ]c: E → R+, Edmonds-Karp 알고리즘은 다음과 같이 진행합니다.
- 흐름을 초기화 f(e) = 0 모든 가장자리에 대 한.
- 잔여 그래프 Gf]]](현재 흐름과 같은 용량을 가진 뒤쪽 가장자리를 포함)를 구성합니다.
- Gf]]] ]]]에서 ]]]] ] (위에 측정)에 가장 짧은 지시 경로를 찾을 수 있습니다.
- 경로가 존재하지 않는 경우, 종결; 현재 흐름은 최대입니다.
- 그렇지 않으면, 병목 용량을 경로 (최소 잔여 용량)에 따라 결정합니다.
- 경로와 업데이트 잔여 용량을 따라 그 양에 의해 Augment 흐름.
- 단계 2에서 반복
BFS의 사용은 각 낙하 경로가 발견 된 것은 잔류한 그래프에서 가장 짧은 경로입니다. 중요한 속성은 다음과 같습니다. ]에서 (엣지에서) 거리 (]에서 ]]t]]]]]에 O(E)[FLT::5]]])를 감소시키고 엄격하게 증가하지 않습니다. 이 경계는 바로 단지 통합을 이끌어 낼 수 있습니다.
공정성 분석
각 BFS의 실행 시간은 O(V + E)]이며, 이는 O(E)]을 간단히 합니다. 핵심 도전은 연산의 수를 경계하고 있습니다. 각 연산은 최소 1개의 가장자리(병목)을 포화하고 각 가장자리는 최소 1LTLTLT(LT:3])[LT:0LT:0]]]의 길이를 LT:3]의 길이를 LT:3로 증가합니다.]]의 길이:3]]]]]
더 정확하게, 표준 분석은 가장 큰 ]O(VE)]에서, 그래서 전체 시간은 O(V E2)]](또는 ]]O(V E * (V+E))]]]입니다. [LT:7]][LT:7]]][LT:7]]]]]]]]]]]]]]]]]]]]]]]]]][]]]]]]]]]]]]]]]]][[[[[[[[[[[[[]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]
다른 Max Flow Algorithms와 비교
Dinic의 알고리즘
Dinic의 알고리즘은 BFS를 사용하여 레벨 그래프를 구성하지만, 레벨 그래프에서 DFS를 통해 단일 위상에서 여러 번의 경로가 가능합니다. 이것은 BFS의 수를 가장 V(수채의 레벨이 각 단계 증가합니다)에서 실행합니다. 전체 복잡성은 O(V2 E)[FLT:]]][FLT:]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]][FLT:]]]]]]]]]]]]]]
푸시-레벨 알고리즘
일반적인 알고리즘이나 가장 높은 라벨 변형과 같은 푸시 라벨 방법, ]O(V2 √E) 또는 O(V3))을 달성한다. 이 알고리즘은 유효 라벨링을 유지하기 위해 로컬로 흐르는 흐름을 밀어서 작업한다. 이 알고리즘은 더 복잡하지만, 종종 더 빠른 실행을 실행하기 위해 더 많은 알고리즘이 적용되고, 특히 큰 그래픽을 위해 사용되는 다이캐스팅을 위해 더 높은 효율을 갖는다.
또 다른 중요한 변형은 capacity scaling 알고리즘을 사용하여 Ford-Fulkerson 메소드에 스케일링 매개 변수를 추가하고 O(E2 log U)]를 출력하는 U]는 최대 용량입니다. 이것은 또한 미분리이지만 Push-relabel보다 단순합니다.
왜 에드몬드-Karp 여전히 매트
이 글은 여러분의 의견에 대한 답변을 제공해 드립니다. 이 글은 여러분의 의견을 듣고, 여러분의 의견을 듣고, 여러분의 의견을 듣고, 여러분의 의견을 듣고, 여러분의 의견을 듣고, 여러분의 의견을 듣고, 여러분의 의견을 듣고, 여러분의 의견을 듣고, 여러분의 의견을 듣고, 여러분의 의견을 듣고, 여러분의 의견을 듣고, 여러분의 의견을 듣고, 여러분의 의견을 듣고, 여러분의 의견을 듣고, 여러분의 의견을 듣고, 여러분의 의견을 듣고, 여러분의 의견을 듣고, 여러분의 의견을 듣고, 그리고 여러분의 의견을 듣고, 그리고 여러분의 의견을 듣고, 그리고 여러분의 의견을 듣고, 그리고 여러분의 의견을 듣고, 그리고 여러분의 의견을 주시기 바랍니다.
Practical Implications 및 사용 사례
실제 애플리케이션에서 알고리즘 선택은 문제 제약에 크게 의존합니다. 예를 들어:
- Bipartite matching: Edmonds-Karp는 홉크프-Karp 알고리즘을 사용하여 용량이 단위이고 네트워크는 비스듬한가요? 실제로 홉크프-Karp는 O(E √V) 시간; 그러나, 엣지 용량에 대한 Edmonds-Karp는 벡터의 크기]]에 의해 턴트(FLT:7)를 갖는 것이 턴트(FLT:3)이다.
- Traffic engineering[: 통신 및 도로 네트워크에서, 흐름은 종종 크고 그래프 비소. Dinic 또는 Push-relabel는 더 나은 사기 때문에 선호됩니다.
- Image segmentation: 컴퓨터 비전을 위한 그래프 컷 알고리즘은 종종 최대 흐름/분-컷 계산에 의존합니다. Boykov-Kolmogorov 알고리즘은 특수한 augmenting-path 메서드를 사용하여 이러한 그리드와 같은 그래프를 위한 일반적인 알고리즘을 종종 변형하지만 Edmonds-Karp는 더 작은 문제로 사용될 수 있습니다.
- 교육 및 프로토 타이핑: 단순성 및 정정이 원시 속도에 따라 퍼지는 경우, Edmonds-Karp는 안전한 선택입니다. 이 행동은 예측할 수 있으며, 디버깅은 BFS가 구현하기 쉽습니다.
교육과정
임의 그래프에서 벤치 마크는 Edmonds-Karp가 종종 가장자리 용량이 작을 때 연습의 거의 라인 시간에서 실행되는 것을 보여줍니다 (O(1)). 연고의 수는 작을 수 있기 때문에, 최대 유량 값에 의해 경계됩니다. 그러나, 고용량 네트워크의 경우, 알고리즘은 괜찮을 수 있습니다. 예를 들어, 용량이 큰 네트워크가 고려; 많은 흐름 값에, 이러한 강력한 경우를 더 많은 것을 얻을 수 있습니다.
계획
Edmonds-Karp를 구현할 때, 주의적인 잔여 그래프 관리는 필수적입니다. 앞으로와 뒤로 가장자리를 모두 대표하면 쉽게 낙관과 백 트랙을 할 수 있습니다. 포인터를 역 가장자리 (또는 역 가장자리 지수 저장)로 통합하여 애드 자크니티 목록을 사용하여 업데이트를 단순화합니다. BFS는 또한 낙관 경로 재구성을 위해 사전 명령을 기록해야합니다. 메모리 사용은 O(LT + E]) [FLT:]] [[FLT:]]]]] [V[F]]]]]] [FLT:]]]] [F]]]]]] [F]]]]]]] [[F]]]]]]]]]]]]]]]] [[[[[[[[[[[[[[[[[[F]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]
최적화는 다음과 같습니다:
- BFS가 ]t]에 도달 할 수 없는 경우 조기 종료.
- integer capacities를 사용하여 뜨점 문제를 피하기 위해 흐름을 흘렸습니다.
- 그래프가 많은 평행한 가장자리 (일반적으로 더 적은)가 있는 경우에 다수 augmentations를 모으기.
매우 큰 네트워크를 위해, 거리가 증가적으로 업데이트하는 동적 BFS를 사용 고려, 그러나이 자주 Edmonds-Karp에 대한 상당한 이득없이 복잡성을 추가.
Original Ford-Fulkerson 방법과의 관계
Jack Edmonds and Richard Karp는 1972 년 알고리즘을 발표했으며 BFS를 사용하여 다공성 시간 최대 흐름 알고리즘을 생성했습니다. 그 이전에 Ford-Fulkerson Method (1956)는 경로 선택 규칙을 지정하지 않았으며, 가난한 선택이 exponential time으로 이어질 수 있다고 알려져 있습니다. Edmonds와 Karp의 일은 네트워크 흐름을 위해 강력하고 다공성 알고리즘의 개발에서 기초 단계였습니다. [[LT]AlFactor [Factor]: Aletics and Karp의 work is a successfuls in the production.
확장 및 변리
Edmonds-Karp의 발레는 다음과 같습니다 :
- 용량 스케일링 버전: 짧게 경로에 따라 항상 낙하의 대신, 알고리즘은 스케일링 매개 변수 Δ]로 작동하며 잔여 용량 ≥ Δ과 가장자리를 고려합니다. 이 수율은 O(E2 로그 U)] 알고리즘을 생성합니다.
- 단위 용량 최적화: 모든 용량이 1일 때, BFS 기반 낙하 경로 알고리즘은 Hopcroft–Karp 알고리즘을 전문으로 하고, 후자는 BFS/DFS를 사용하여 ]O(E √V)]를 달성할 수 있도록 주의적인 변경 BFS/DFS를 사용합니다.
- Integrality: 자연적으로 Capacities가 필수적인 경우의 알고리즘을 유지하고, combinatorial 문제를 위해 적합하게 만듭니다.
관련 기사
Edmonds-Karp 알고리즘은 최대 흐름 문제를 해결하기위한 신뢰할 수있는 잘 서있는 방법입니다. O (V E2) 최악의 케이스 시간 복잡성은 매우 큰 또는 밀도 네트워크에 대한 실제적이지만, 그것의 단순성 및 polynomial 실행 시간의 명확한 증거는 알고리즘 텍스트 북에 그 자리에 시멘트를두고 있습니다. 실제 시스템의 경우 고성능을 필요로하는, Dinicrelabel의 또는 기초 도구는 일반적으로 선호하는 문제입니다. 그러나, 특히, 또는 기본 도구는 기본 도구의 기본 설정에 대한 올바른 문제입니다.
고급 플로우 알고리즘에 대한 추가 읽기는 에서 찾을 수 있습니다 Wikipedia article] 그리고 고전적인 textbook Algorithms에 대한 소개. 흐름 알고리즘 성능의 더 깊은 분석에 대해서는 NetworkX 흐름 구현 노트를 참조하십시오.