문제

bipartite 그래프 $ g= (v_1 \ 컵 v_2, e) $ 및 세트 $ V '\(v_1 \ 컵 v_2) $ . $ x $ > <$ x $ vertices에서만 사용하는 $ g $ 에서 $ V '$ ?

도움이 되었습니까?

해결책

SET $ V_I '= V_I \ CAP V'$ 을 설정하십시오. $ V_1 '$ 에서 $ k $ 정점을 사용하여 최대 매칭을 찾아서 해결할 수 있습니다. $ v_2 '$ $ v_2'$ 에서 대부분의 $ v_2 '$ >>> $ k \ in [0, x] $ . 이것은 최대 흐름 에서이 차례로 발견 될 수 있습니다.

이 최대 일치를 찾으려면 최대 흐름의 일반적인 감소를 수정합니다. $ s $ 소스와 $ t $ 싱크가되도록하십시오. $ l $ $ R $ 보조 정점이되도록하십시오. $ s $ 에서 $ l $ 용량 $ k $ , $ r $ $ t $ $ XK $ . 다른 모든 모서리는 $ 1 $ 을 가질 것입니다. $ l $ 모든 $ x \ in v_1 '$ 에서 $ $ x \ v_1 \ setminus v_1 '$ 에 대한 $ . $ y \ v_2 '$ 에서 $ r $ , 모든 $ y \ \ \ setminus v_2 '$ $ t $ . $ (x, y) \ e $ 에서 $ x $ 에서 $ y $ . 이제 최대 흐름은 $ v_1 '$ $ k $ 정점을 사용하여 최대 일치를 제공합니다. SPAN 클래스="수학 컨테이너"> $ XK $ $ V_2 '$ .

$ \ mathcal {o} (x \ cdot m) $ 에서 문제를 해결할 수 있습니다. 여기서 $ m $ 은 최대 흐름의 복잡성입니다. 최대 흐름 문제는 매우 유사하므로 우리는 이것을 향상시킬 수 있습니다.

$ \ mathcal {$ 1 $ 을 유지하면서 $ 1 $ 에 의한 모든 가장자리의 용량을 늘릴 수 있습니다. o} (| e |) $ . 먼저 $ V '$ 에서 정점을 사용하지 않는 최대 일치를 계산합니다. 그런 다음 $ S $ 에서 $ L $ $ x $ . 그런 다음 모든 단계에서 $ r $ 에서 $ T $ 에서 용량을 줄이는 용량을 증가시킵니다. $ s $ 에서 $ L $ 에서 최대 흐름을 유지하면서 $ l $ 생성 된 가장 큰 일치를 출력하십시오. 복잡성은 $ \ mathcal {o} (| E | \ sqrt {| v |} + x \ cdot | e |) $ 을 찾으려면 Dinic을 사용한다면 초기 Bipartite 일치.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 cs.stackexchange
scroll top