
지난번에 온라인 이분 매칭 문제(online bipartite matching problem)에 대해서 알아 보았습니다. 그 문제는 다음과 같이 정의되었습니다.
처음에는 가용할 수 있는 택시 몇 대가 주어진다. 이후 시간이 흐르면서 승객이 한 명씩 들어오며, 그때마다 그 승객을 태울 수 있는 택시가 무엇인지 정해진다. 이 승객을 태울 수 있는 택시 중 이전에 승객을 한 명도 태우지 않은 택시 가운데 한 대를 골라 이 승객을 태우든지, 아니면 승객을 태우지 않을 것을 바로 결정해야 한다. 이 결정은 번복될 수 없다. 이때 목표는 승객을 최대한 많이 태우는 것이다.
저번 글에서 공부한 내용을 요약하면 다음과 같습니다.
- 승객이 매번 들어올 때마다 가능한 택시 중 아무 하나에 이 승객을 태우는 방법은 1/2의 경쟁비(competitive ratio)를 갖는다.
- 이 문제를 해결하는 어떤 결정론적 알고리즘(deterministic algorithm)도 1/2 보다 좋은 경쟁비를 가질 수 없다.
- 승객이 들어올 때 가능한 택시 중 하나를 균등한 확률(uniformly at random)로 선택하여 승객을 태우는 랜덤 알고리즘(randomized algorithm)도 1/2의 경쟁비를 갖는다.
그러면서 마지막에 다음의 질문을 제시하였습니다.
이 문제를 해결하는 1/2 보다 좋은 경쟁비를 갖는 랜덤 알고리즘이 존재하는가?
흥미롭게도 그러한 알고리즘이 존재합니다. 바로 랭킹 알고리즘(ranking algorithm)인데요. 결론부터 말씀드리면 이 알고리즘은
2020/03/14 - [온라인 알고리즘/Basic] - 온라인 알고리즘 (Online Algorithm)
온라인 알고리즘 (Online Algorithm)
일전에 유명한 온라인 문제 중 하나인 online bipartite matching을 다룬 적이 있었습니다. 당시에는 제 지식이 그렇게 깊지 않아서 제대로 설명하지 못했을뿐더러 잘못 전달한 내용도 있었습니다. 최
gazelle-and-cs.tistory.com
2020/11/07 - [온라인 알고리즘/Online matching] - 온라인 이분 매칭 (Online Bipartite Matching)
온라인 이분 매칭 (Online Bipartite Matching)
어떤 그래프에서 서로 정점을 공유하지 않는 간선의 부분집합을 우리는 매칭(matching)이라고 부릅니다. 매칭의 모양을 살펴보면, 각 정점이 최대 하나의 다른 정점과 짝지어진 꼴입니다. 이를 통
gazelle-and-cs.tistory.com
문제 정의
온라인 이분 매칭을 다시 한 번 정의해 보겠습니다. 이번에 다룰 알고리즘은 랜덤 알고리즘이므로 이 알고리즘을 상대하는 상대방은 무지각형 상대방(oblivious adversary)으로 두겠습니다. 다시 말해, 알고리즘이 시작하기 전에 어떤 입력이 어느 순서로 들어올지가 모두 정해진 상태입니다.
따라서 입력은 다음과 같은 이분 그래프(bipartite graph)
알고리즘은 매번 승객 정점과 그에 딸린 간선을 입력 받을 때마다 해당 승객 정점을 짝지을 것이지 말 것인지, 그리고 짝을 짓는다면 어느 택시 정점과 지을 것인지를 결정해야 합니다. 이 결정은 번복할 수 없습니다. 이때 택시는 최대 한 명의 승객을 태울 수 있다고 가정했으므로, 이번 승객 정점에 인접한(adjacent) 택시 정점 중에서 이미 이전 승객 정점과 짝이 지어진 정점과는 짝을 지을 수 없습니다. 이를 통해서 우리는 알고리즘이 출력하는 결과가
우리의 목표는
랭킹 알고리즘
이제 알고리즘을 소개하도록 하겠습니다.
알고리즘 1. Ranking algorithm
초기 입력: 택시 정점 집합
출력: 매칭
- 각
에 대해, 를 에서 균등한 확률(uniformly at random)로 고른다. - 매번
가 들어올 때마다, 에 인접하면서 아직 매칭에 참여하지 않은 택시 정점 중에서 가 가장 작은 와 짝을 짓는다. 만약 그러한 택시 정점이 존재하지 않으면 는 짝을 짓지 못한 상태로 남는다.
알고리즘이 어떻게 동작하는지를 간단히 살펴 보죠. 첫 번째 단계에서는 각 택시 정점
그 후, 알고리즘은 이번 승객 정점과 짝을 지을 수 있는 택시 정점 중
동작 예시
여러분의 이해를 돕기 위해 알고리즘이 어떻게 동작하는지를 구체적인 예시와 함께 설명하도록 하겠습니다. 다음 그림과 같은 입력이 주어진다고 하겠습니다. 이 입력에는 모든 정점이 매칭에 참여하는 완전 매칭(perfect matching)이 존재합니다.

승객 정점

세 번째로 들어온 승객 정점은 인접한 택시 정점들이 이미 각각 다른 승객 정점과 짝이 지어졌기 때문에 짝지어지지 않은 상태로 계속 남아있게 됩니다. 따라서 이 알고리즘은 3의 크기를 갖는 매칭을 출력합니다.
매번 균등한 확률로 선택하는 방법보다 좋은 경쟁비를 갖는 직관적인 이유
이전 글에서 각 승객 정점
이전 알고리즘이 멍청하게 동작하는 입력
, , , ,

균등한 확률로 선택하는 알고리즘이 이 입력에서 완전 매칭을 찾을 확률은 얼마일까요?
반면 같은 입력에 대해서 랭킹 알고리즘이 어떻게 동작할지 생각해 보겠습니다. 랭킹 알고리즘이 완전 매칭을 찾을 확률은 얼마일까요?
그렇다면 랭킹 알고리즘이
물론 랭킹 알고리즘이 이 입력에 대해서 균등하게 뽑는 알고리즘보다 좋다는 것을 보였다고 항상 좋다는 것을 보장할 수 있는 것은 아닙니다. 랭킹 알고리즘을 망가뜨리는 입력은 위 입력과 완전히 다른 모양일 수도 있죠. 그럼에도 랭킹 알고리즘이 랜덤 순열을 통해서 기존보다 좋은 성능을 보일 것이라는 점을 충분히 예측할 수 있겠습니다. 그리고 실제로 그렇기도 하고요. 이제부터는 랭킹 알고리즘이 좋은 경쟁비를 갖는다는 것을 엄밀히 증명해 보도록 하겠습니다.
선형 계획법으로 표현하기
랭킹 알고리즘은 온라인 매칭 분야에서 가장 유명한 알고리즘입니다. 따라서 이 알고리즘의 경쟁성을 증명하는 방법 또한 매우 다양한데요. 그중에서도 제가 이번에 소개할 방법([1])은 선형 계획법을 이용한 것입니다. 이 방법은 여러 다른 방법들에 비해 비교적 최근에 알려진 것이기도 하거니와, 개인적으로는 가장 이해하기 쉬운 방법이라고 생각하기 때문입니다.
임의의 정점
이때 첫 번째 제약 조건(constraint)은 임의의 택시 정점이 최대 한 명의 승객을 태울 수 있다는 것을 나타내고 있고, 두 번째 제약 조건은 임의의 승객이 최대 한 대의 택시에 탈 수 있다는 것을 나타냅니다.
많은 경우 우리는 마지막 정수 조건을 다음과 같이 완화하여 줍니다.
이렇게 바꾸어도 괜찮은 이유는 정수 조건이 있는 문제에서 가능한 해(feasible solution)가 모두 완화된 문제에서도 가능하기 때문입니다. 이는 다음의 정리로 귀결됩니다.
정리 1. 정수 계획법과 완화된 선형 계획법의 관계
[증명]
선형 계획법을 사용하면 좋은 점 중 하나는 쌍대성(duality)을 사용할 수 있다는 것입니다. 선형 계획법의 쌍대성에 대해 잘 모르시는 분은 아래를 참조하세요.
2019/07/15 - [수학적 도구/Linear programming] - [선형 계획법] 쌍대성(Duality)
[선형 계획법] 쌍대성(Duality)
Linear programming은 최적화 분야에서 잘 알려지고 연구되었으며 실제로도 많이 응용되는 기법입니다. 줄여서 LP라고도 하며, 우리말로는 선형계획법으로 불립니다. 이름이 뭔가 멋들어져서 괜스레
gazelle-and-cs.tistory.com
따라서 원 문제(primal program) P의 쌍대 문제(dual program) D를 구해 보면 다음과 같습니다.
쌍대성이 유용한 이유는 바로 쌍대 문제에 가능한 임의의 해에 대해, 그것의 목적 함수(objective function)의 값이 항상 원 문제에 가능한 임의의 해의 목적 함수 값의 상한(upper bound)을 이룬다는 점입니다. 증명은 생략합니다. 필요하신 분은 위 포스트를 참조하세요.
정리 2. 선형 계획법의 약한 쌍대성(weak duality)
원 문제 P에 가능한 임의의 해
분석
이제부터 선형 계획법을 활용하여 알고리즘을 분석해 보도록 하겠습니다. 앞에서 우리는 쌍대성을 활용하여 최적값의 적절한 상한을 쌍대 문제의 목적 함수로 표현할 수 있다고 하였습니다. 따라서 온라인 이분 매칭을 해결하는 어떤 알고리즘이 매칭과 함께 적절한 쌍대 변수를 함께 출력한다면 이 알고리즘의 경쟁성을 분석할 때 요긴할 것입니다. 다음 정리는 이 아이디어를 구체적으로 나타낸 것입니다.
정리 3. 쌍대성을 활용한 알고리즘의 경쟁성 분석
온라인 이분 매칭을 해결하는 어떤 알고리즘이 임의의 입력에 대해 매칭
- 어떤 상수
에 대해, ,
그러면 이 알고리즘은
[증명]
짝지어진 정점들에다 1의 값 분배하기
이 정리를 활용하기 위해서 우리도 알고리즘 1을 약간 수정하여
문제는 1의 값을 어떻게 "분배"하느냐에 달려있죠. 가장 쉽게 생각할 수 있는 것은

사실
우리가 지금 고려하는 알고리즘은 내부 시행에 따라 결과가 바뀌는 랜덤 알고리즘입니다. 그러니 분배하는 것도 랜덤하게 해 보죠. 랭킹 알고리즘에서 랜덤성이 활용된 곳은 각 택시 정점
알고리즘 2. Ranking algorithm with dual variables
초기 입력: 택시 정점 집합
출력: 매칭, 벡터
- 각
에 대해, 를 에서 균등한 확률(uniformly at random)로 고른다. - 각
에 대해, - 매번
가 들어올 때마다, 에 인접하면서 아직 매칭에 참여하지 않은 택시 정점 중에서 가 가장 작은 와 짝을 짓고 , 로 설정한다. 만약 그러한 택시 정점이 존재하지 않으면 는 짝을 짓지 못한 상태로 남으며 으로 둔다.
추가된 단계는 붉은색 굵은 글씨로 표시하였습니다. 이는 분석을 위해서 추가한 것이므로 실제로는 알고리즘 1만 구현하는 것으로 충분합니다.
알고리즘 2를 통해서 출력되는 벡터
정리 4. 쌍대성을 활용한 랜덤 알고리즘의 경쟁성 분석
온라인 이분 매칭을 해결하는 어떤 랜덤 알고리즘이 임의의 입력에 대해 매칭
- 어떤 상수
에 대해, ,
그러면 이 알고리즘은
[증명] 정리 3의 증명과 비슷합니다. 이번에는
적절한 분배 함수 의 성질
알고리즘 2가 출력하는
는 에서 로 간다. 는 단조 증가 함수(non-decreasing function)이다 이다.
성질 A가 필요한 이유는 알고리즘 2에서
두 번째 조건 증명
위와 같은 성질을 만족하는
이제
그러면 다음의 두 정리들을 증명할 수 있습니다. 첫 번째 정리는 고려하는 간선의 택시 정점
정리 5. 택시 정점 가 짝지어질 조건
[증명] 만약
반대로
알고리즘 2에서
반대로 고려하는 간선의 승객 정점
정리 6. 승객 정점 가 짝지어질 조건
[증명] 만약
어떤 승객 정점이 막 들어와서 아직 짝을 찾기 전에,
승객이 들어오는 순서에 따라 귀납적으로 보일 것입니다. 첫 번째 승객이 들어왔을 때는
먼저
이번에는
따라서
정리 5와 6을 통해 우리는 적절한 분배 함수
가장 좋은
마치며
이것으로 온라인 이분 매칭을 해결하는
온라인 이분 매칭은 조합론적 온라인 알고리즘 분야에서 가장 유명한 문제로 다양한 변종(variant)이 존재합니다. 게다가 최근 온라인 이분 매칭을 확장한 여러 흥미로운 결과도 많이 나왔습니다. 개인적으로도 온라인 매칭을 주로 연구하는 중인데, 재미있는 논문도 많이 있고 정리해 봄직한 주제도 좀 있습니다. 기회가 되면 최신 동향도 적어 보도록 하겠습니다.
궁금하신 점이 있으시거나, 글에 오류가 있으면 알려 주세요. 고맙습니다. :)
참조
[1] Nikhil R. Devanur, Kamal Jain, and Robert D. Kleinberg. "Randomized primal-dual analysis of ranking for online bipartite matching." In Proceedings of the twenty-fourth annual ACM-SIAM symposium on Discrete algorithms, pp. 101-107. Society for Industrial and Applied Mathematics, 2013.
각주
[ㄱ] 사실
[ㄴ]
'온라인 알고리즘 > Online matching' 카테고리의 다른 글
온라인 분수 이분 매칭 (Online Fractional Bipartite Matching) (3) | 2024.02.03 |
---|---|
온라인 메트릭 이분 매칭 (Online Metric Bipartite Matching) (0) | 2022.02.26 |
온라인 가중치 이분 매칭 (Online Weighted Bipartite Matching) (0) | 2021.02.14 |
온라인 이분 매칭 (Online Bipartite Matching) (0) | 2020.11.07 |
검색 엔진 회사가 검색어로 수익을 내는 방법 (Ad-Auctions Problem) (0) | 2020.10.25 |