UnisquadsU
로그인
홈
이용약관·개인정보처리방침·콘텐츠정책·© 2026 Unisquads
이용약관·개인정보처리방침·콘텐츠정책
© 2026 Unisquads. All rights reserved.

최대 유량 (r1)

이 문서의 과거 버전 (r1)을 보고 있습니다. 수정일: 2026.02.25 01:32

최대 유량

정의

그래프 이론에서, 소스(source)에서 싱크(sink)로 흐를 수 있는 최대 유량을 계산하는 문제

관련 알고리즘

포드-풀커슨 알고리즘

에드몬즈-카프 알고리즘

디닉 알고리즘

입력

방향 그래프, 각 간선의 용량, 소스 정점, 싱크 정점

출력

소스에서 싱크로 흐를 수 있는 최대 유량의 값

응용 분야

네트워크 흐름

교통 체계

파이프라인 설계

상세 정보

핵심 정리

최대 유량 최소 컷 정리

시간 복잡도 (에드몬즈-카프)

O(VE²)

참고 문제

BOJ 6086: 최대 유량

BOJ 17412: 도시 왕복하기 1

1. 개요

최대 유량 문제는 그래프 이론과 조합 최적화의 중요한 문제 중 하나이다. 이 문제는 소스라고 불리는 시작 정점에서 싱크라고 불리는 도착 정점으로, 각 간선에 주어진 용량 제한을 넘지 않으면서 흘려보낼 수 있는 물질이나 데이터의 최대 양을 찾는 것이다. 입력은 방향 그래프, 각 간선의 용량, 소스 정점, 싱크 정점으로 구성되며, 출력은 계산된 최대 유량의 값이다.

이 문제를 해결하는 대표적인 알고리즘으로는 포드-풀커슨 알고리즘이 있다. 이 알고리즘은 잔여 용량이 있는 경로(증가 경로)를 반복적으로 찾아 유량을 흘려보내는 기본적인 방법론을 제공한다. 보다 효율적인 알고리즘으로는 에드몬즈-카프 알고리즘과 디닉 알고리즘이 있다. 에드몬즈-카프 알고리즘은 포드-풀커슨 방법에 너비 우선 탐색을 적용하여 증가 경로를 찾음으로써 성능을 보장하며, 디닉 알고리즘은 계층 그래프를 구성하고 차단 유량을 찾는 방식으로 더욱 빠른 동작을 한다.

최대 유량 문제는 순수 이론을 넘어 다양한 실용적인 분야에 응용된다. 대표적으로 통신 네트워크에서의 데이터 패킷 라우팅, 도로나 철도 같은 교통 체계의 수송량 분석, 그리고 원유나 가스를 운반하는 파이프라인 설계 등에 활용된다. 또한 이 문제는 이분 매칭이나 프로젝트 선택 문제 같은 다른 조합 최적화 문제를 해결하는 데에도 핵심적인 도구로 사용된다.

2. 기본 개념

2.1. 유량 네트워크

유량 네트워크는 최대 유량 문제를 정의하는 기본적인 수학적 모델이다. 이는 방향 그래프로 표현되며, 그래프의 각 간선에는 음수가 아닌 용량이라는 값이 주어진다. 또한 그래프에는 유량이 시작되는 지점인 소스 정점과 유량이 도착하는 지점인 싱크 정점이 반드시 하나씩 존재한다. 유량 네트워크에서의 유량은 소스에서 싱크로 흐르는 물질의 양을 추상화한 것으로, 각 간선을 통해 흐르는 유량은 해당 간선의 용량을 초과할 수 없으며, 각 정점(소스와 싱크 제외)에서는 들어오는 유량의 합과 나가는 유량의 합이 같아야 한다는 제약 조건을 따른다.

최대 유량 문제의 목표는 이러한 제약 조건을 모두 만족시키면서 소스에서 싱크로 흐를 수 있는 유량의 총량을 최대화하는 것이다. 이 문제는 그래프 이론, 조합 최적화, 운용 과학의 중요한 주제이며, 네트워크 흐름 이론의 핵심을 이룬다. 문제를 해결하기 위한 대표적인 알고리즘으로는 포드-풀커슨 알고리즘과 그 개선판인 에드몬즈-카프 알고리즘, 그리고 디닉 알고리즘 등이 널리 알려져 있다.

이 모델은 단순히 이론적인 문제를 넘어 다양한 실생활 문제를 모델링하는 데 유용하게 적용된다. 예를 들어, 도로나 철도 같은 교통 체계에서 최대 수송량을 분석하거나, 컴퓨터 네트워크에서의 데이터 패킷 라우팅, 석유나 가스 파이프라인 설계, 그리고 물류 시스템의 효율화 등에 활용될 수 있다. 이러한 응용 분야에서 각 간선은 도로, 통신 회선, 파이프라인 등을 나타내고, 용량은 해당 경로를 통해 단위 시간당 이동할 수 있는 최대량을 의미한다.

유량 네트워크와 최대 유량 문제는 최대 유량 최소 절단 정리라는 강력한 정리에 의해 뒷받침된다. 이 정리는 소스에서 싱크로 흐를 수 있는 최대 유량의 값이, 소스와 싱크를 분리하는 모든 절단 중 최소 용량을 가진 절단의 용량과 정확히 일치함을 보여준다. 이는 최대 유량 문제를 다른 관점에서 바라볼 수 있는 이론적 토대를 제공하며, 여러 알고리즘의 정당성을 증명하는 데 핵심적인 역할을 한다.

2.2. 최대 유량 최소 절단 정리

최대 유량 최소 절단 정리는 최대 유량 문제에서 가장 중요한 정리 중 하나이다. 이 정리는 어떤 유량 네트워크에서 소스에서 싱크로 흐를 수 있는 최대 유량의 값이, 소스와 싱크를 분리하는 모든 절단 중 최소 절단 용량과 같다는 것을 보여준다. 즉, 네트워크의 전체적인 흐름 용량은 가장 취약한 연결 지점의 용량에 의해 결정된다는 강력한 통찰을 제공한다.

이 정리는 최대 유량 문제를 해결하는 포드-풀커슨 알고리즘의 이론적 기반이 된다. 알고리즘은 잔여 네트워크를 통해 증가 경로를 찾아 유량을 보내는 과정을 반복하는데, 더 이상 증가 경로가 존재하지 않을 때, 소스에서 도달 가능한 정점들의 집합과 그 외의 정점들로 이루어진 절단이 바로 최소 절단이 된다. 이때 이 절단을 가로지르는 간선들은 모두 포화 상태가 되어 최대 유량을 제한하는 병목 현상을 일으킨다.

이 정리의 중요성은 최적화 문제를 다른 관점에서 바라볼 수 있게 해준다는 데 있다. 최대 유량을 구하는 문제는 최소 절단을 찾는 문제와 동치이며, 이는 선형 계획법의 강한 쌍대성 원리의 한 예시로도 볼 수 있다. 이 원리는 네트워크 흐름 이론을 넘어 조합 최적화 전반에 걸쳐 광범위하게 적용되는 핵심 개념이다.

실제 응용에서는 최대 유량 값 자체뿐만 아니라, 정리를 통해 찾아낸 최소 절단이 네트워크의 취약점을 진단하는 데 활용된다. 예를 들어, 통신망에서 대역폭을 최대화하거나, 교통 체계에서 정체를 유발하는 핵심 경로를 식별하거나, 물류 시스템에서 병목을 찾아내는 데 이 정리가 사용될 수 있다.

3. 알고리즘

3.1. 포드-풀커슨 알고리즘

포드-풀커슨 알고리즘은 최대 유량 문제를 해결하는 가장 기본적인 알고리즘이다. 이 알고리즘은 소스에서 싱크로 흐르는 유량을 단계적으로 증가시키는 방식으로 작동한다. 핵심 아이디어는 소스에서 싱크까지의 증가 경로를 반복적으로 찾아, 그 경로를 따라 흐를 수 있는 최대한의 유량을 흘려보내는 것이다. 이때 증가 경로는 아직 용량이 남은 정방향 간선이나 유량이 흐르고 있는 역방향 간선을 통해 구성할 수 있다.

알고리즘의 구체적인 단계는 다음과 같다. 먼저, 모든 간선의 초기 유량을 0으로 설정한다. 그런 다음, 깊이 우선 탐색이나 너비 우선 탐색과 같은 방법을 사용하여 소스에서 싱크까지의 증가 경로를 탐색한다. 경로가 발견되면, 그 경로를 구성하는 모든 간선 중에서 추가로 흘려보낼 수 있는 유량의 최소값, 즉 잔여 용량을 계산한다. 이 값을 해당 경로를 따라 흘려보내 유량을 증가시키고, 흐름의 보존을 위해 역방향 간선의 유량도 함께 조정한다. 더 이상 증가 경로를 찾을 수 없을 때까지 이 과정을 반복한다.

포드-풀커슨 알고리즘은 구현이 비교적 간단하고 개념을 이해하기 쉽다는 장점이 있다. 그러나 알고리즘의 수행 시간은 찾은 증가 경로에 따라 크게 달라질 수 있으며, 최악의 경우 유량의 크기에 비례하는 시간이 소요될 수 있다는 단점이 있다. 특히 간선의 용량이 정수이 아닌 유리수일 경우 알고리즘이 종료되지 않을 수도 있다.

이러한 한계를 극복하기 위해 포드-풀커슨 알고리즘의 개선판이 개발되었다. 대표적인 예로, 증가 경로 탐색에 너비 우선 탐색을 사용하여 수행 시간을 다항 시간으로 보장하는 에드몬즈-카프 알고리즘이 있다. 또한, 레벨 그래프와 차단 유량 개념을 도입하여 더 효율적인 디닉 알고리즘도 널리 사용된다.

3.2. 에드몬즈-카프 알고리즘

에드몬즈-카프 알고리즘은 최대 유량 문제를 해결하는 알고리즘 중 하나이다. 이 알고리즘은 포드-풀커슨 알고리즘의 기본적인 틀을 따르지만, 너비 우선 탐색을 사용하여 증가 경로를 찾는 방식을 채택함으로써 성능을 크게 개선했다. 포드-풀커슨 알고리즘의 시간 복잡도가 유량의 크기에 의존하는 데 반해, 에드몬즈-카프 알고리즘은 정점의 수와 간선의 수에 의해 결정되는 다항 시간 복잡도를 가진다.

구체적으로, 이 알고리즘은 매 단계에서 소스 정점에서 시작하여 싱크 정점에 도달할 수 있는 최단 경로(간선의 개수가 가장 적은 경로)를 너비 우선 탐색으로 찾는다. 찾은 경로를 따라 흘려보낼 수 있는 최대 잔여 용량을 계산하여 유량을 증가시키고, 잔여 네트워크를 갱신한다. 이 과정을 더 이상 싱크로 가는 경로가 발견되지 않을 때까지 반복한다. 최단 경로를 사용하기 때문에 각 증가 경로는 최소한 하나의 간선을 포화 상태로 만들며, 같은 길이의 최단 경로는 최대 O(VE)번만 사용될 수 있음이 증명되어 있다.

에드몬즈-카프 알고리즘의 시간 복잡도는 O(VE²)이다. 여기서 V는 정점의 개수, E는 간선의 개수를 의미한다. 이는 포드-풀커슨 알고리즘의 비효율적인 경우에 비해 훨씬 예측 가능하고 효율적인 성능을 보장한다. 이러한 특성 덕분에 네트워크 흐름 모델링, 교통 체계 분석, 파이프라인 설계 등 다양한 실용적인 문제에 널리 적용된다.

이 알고리즘은 잭 에드몬즈와 리처드 카프에 의해 1972년 발표되었다. 이후 디닉 알고리즘과 같은 더 빠른 최대 유량 알고리즘이 개발되었지만, 에드몬즈-카프 알고리즘은 개념이 직관적이고 구현이 비교적 간단하여 교육적 목적과 중간 규모의 문제 해결에 여전히 유용하게 쓰인다.

3.3. 디닉 알고리즘

디닉 알고리즘은 최대 유량 문제를 해결하는 효율적인 알고리즘 중 하나이다. 예피트니 디닉이 1970년에 고안한 이 알고리즘은 포드-풀커슨 알고리즘의 한계를 개선하고, 에드몬즈-카프 알고리즘보다 더 나은 시간 복잡도를 가진다. 이 알고리즘의 핵심 아이디어는 레벨 그래프를 구축하고, 이를 통해 차단 유량을 반복적으로 찾아내는 것이다.

알고리즘은 먼저 너비 우선 탐색을 사용하여 소스 정점으로부터 각 정점까지의 최단 거리를 계산하여 레벨 그래프를 생성한다. 이 레벨 그래프는 소스에서 싱크까지의 증가 경로 중 가장 짧은 경로들만을 포함한다. 이후 깊이 우선 탐색을 수행하여 레벨 그래프 상에서 가능한 모든 경로를 따라 차단 유량을 한꺼번에 흘려보낸다. 이 과정을 싱크에 도달할 수 있는 경로가 존재하지 않을 때까지 반복한다.

디닉 알고리즘의 시간 복잡도는 정점의 수를 V, 간선의 수를 E라고 할 때 O(V²E)이다. 특히 이분 그래프와 같은 특수한 그래프 구조에서는 O(√V E)의 더 빠른 성능을 보인다. 이는 에드몬즈-카프 알고리즘의 O(V E²) 복잡도에 비해 큰 그래프에서 유리한 경우가 많다. 구현이 비교적 간단하면서도 효율적이기 때문에 실전 프로그래밍 대회나 실제 네트워크 흐름 시뮬레이션에서 널리 사용된다.

4. 응용 분야

4.1. 네트워크 라우팅

최대 유량 문제는 네트워크 라우팅 분야에서 중요한 기초가 된다. 네트워크 라우팅은 데이터 패킷이 출발지에서 목적지까지 효율적으로 전달되도록 경로를 결정하는 과정이다. 통신 네트워크는 라우터와 링크로 구성된 그래프로 모델링할 수 있으며, 각 링크는 대역폭이라는 용량 제한을 가진다. 최대 유량 알고리즘은 네트워크의 특정 출발지와 목적지 사이를 흐를 수 있는 총 데이터 처리량의 이론적 상한을 계산하는 데 사용된다. 이를 통해 네트워크의 병목 현상을 식별하고, 전체 처리량을 극대화할 수 있는 라우팅 정책을 설계하는 데 도움을 준다.

특히 멀티커모디티 네트워크나 트래픽 엔지니어링에서 최대 유량 개념은 광범위하게 적용된다. 네트워크 관리자는 포드-풀커슨 알고리즘이나 에드몬즈-카프 알고리즘과 같은 방법을 사용해 네트워크의 최대 전송 용량을 분석한다. 이 분석 결과는 부하 분산이나 장애 조치 경로 설정과 같은 고급 라우팅 프로토콜을 구현하는 근거가 된다. 예를 들어, 한 경로에 장애가 발생했을 때 대체 경로로 트래픽을 분산시키면서도 전체 네트워크의 처리 능력을 최대한 유지하는 방안을 찾는 것이다.

이러한 원리는 물리적 통신망을 넘어서 가상 회선이나 소프트웨어 정의 네트워킹 환경에서도 유효하다. SDN 컨트롤러는 네트워크의 전역적인 토폴로지와 링크 상태 정보를 바탕으로 최대 유량 계산을 수행하여 중앙 집중식으로 최적의 라우팅 테이블을 생성할 수 있다. 결과적으로 최대 유량 문제에 대한 해법은 네트워크 자원을 효율적으로 활용하고, 서비스 품질을 보장하며, 네트워크 혼잡을 완화하는 다양한 라우팅 기법의 수학적 토대를 제공한다고 볼 수 있다.

4.2. 이분 매칭

최대 유량 문제는 이분 매칭 문제를 해결하는 데 효과적으로 활용된다. 이분 매칭은 이분 그래프에서 각 정점이 최대 하나의 간선에만 연결되도록 간선을 선택하는 문제이다. 이 문제는 최대 유량 문제로 변환하여 해결할 수 있다. 변환 방법은 이분 그래프의 왼쪽 집합 모든 정점을 연결하는 새로운 소스 정점을 추가하고, 오른쪽 집합 모든 정점을 연결하는 새로운 싱크 정점을 추가한다. 그리고 기존 이분 그래프의 모든 간선 방향을 왼쪽에서 오른쪽으로 설정하고, 용량을 1로 부여한다. 소스와 싱크에 연결된 새로운 간선의 용량 또한 1로 설정한다.

이렇게 구성된 유량 네트워크에서 최대 유량을 계산하면, 그 값이 원래 이분 그래프에서 가능한 최대 매칭의 크기와 일치한다. 네트워크 상에서 용량 1의 간선을 통해 1의 유량이 흐르는 것은 해당 간선이 매칭에 선택되었음을 의미한다. 한 정점에서 나가는 유량의 합은 최대 1이므로, 각 정점은 최대 하나의 매칭에만 포함될 수 있는 이분 매칭의 조건을 자연스럽게 만족시킨다.

이러한 변환을 통해 에드몬즈-카프 알고리즘이나 디닉 알고리즘과 같은 최대 유량 알고리즘을 사용하여 이분 매칭 문제를 효율적으로 풀 수 있다. 이 접근법은 단순 매칭을 넘어서, 각 정점이 연결될 수 있는 상대의 수에 제한이 있는 경우나 간선에 가중치가 부여된 최대 가중 이분 매칭 문제 등으로도 확장 적용될 수 있다.

4.3. 프로젝트 선택 문제

프로젝트 선택 문제는 최대 유량 문제를 활용하여 해결할 수 있는 대표적인 응용 사례이다. 이 문제는 서로 의존 관계가 있는 여러 개의 프로젝트가 주어졌을 때, 선택할 프로젝트들의 총 이익을 최대화하는 방법을 찾는 것이다. 각 프로젝트는 일정한 이익 또는 손실을 가질 수 있으며, 특정 프로젝트를 선택하기 위해서는 선행되어야 하는 다른 프로젝트가 있을 수 있다.

이 문제는 최대 유량 문제로의 환원을 통해 해결된다. 먼저, 소스와 싱크를 포함한 유량 네트워크를 구성한다. 각 프로젝트는 하나의 정점으로 표현된다. 이익을 내는 프로젝트는 소스에서 해당 정점으로 향하는 간선으로, 손실을 내는 프로젝트는 해당 정점에서 싱크로 향하는 간선으로 연결되며, 간선의 용량은 해당 이익 또는 손실의 절대값으로 설정된다. 또한 프로젝트 간의 의존 관계는, 프로젝트 A가 프로젝트 B의 선행 조건일 경우 정점 A에서 정점 B로 향하는 용량이 무한대인 간선을 추가하여 모델링한다.

이렇게 구성된 네트워크에서 최소 절단을 찾거나, 포드-풀커슨 알고리즘 등을 사용하여 최대 유량을 계산함으로써 문제의 해를 구할 수 있다. 최종적으로 선택해야 할 프로젝트 집합은 계산 결과로부터 도출된다. 이 접근법은 조합 최적화 문제를 네트워크 흐름 문제로 변환하는 강력한 예시이며, 자원 할당이나 스케줄링과 같은 실용적인 의사 결정 문제에 널리 적용된다.

5. 관련 문서

  • 위키백과 - 최대 유흐 문제

  • 위키백과 - 포드-풀커슨 알고리즘

  • 위키백과 - 에드먼즈-카프 알고리즘

  • 위키백과 - 디닉 알고리즘

  • 위키백과 - 최소 컷

  • 위키백과 - 그래프 이론

  • 위키백과 - 네트워크 흐름

  • 위키백과 - MCMF (최소 비용 최대 유량)

  • GeeksforGeeks - Max Flow Problem Introduction

  • CP-Algorithms - Maximum flow - Ford-Fulkerson and Edmonds-Karp

리비전 정보

버전r1
수정일2026.02.25 01:32
편집자unisquads
편집 요약AI 자동 생성