Gomory – Hu strom - Gomory–Hu tree
v kombinatorická optimalizace, Gomory – Hu strom[1] neorientovaného grafu s kapacitami je vážený strom to představuje minimum s-t řezy pro všechny s-t páry v grafu. Strom Gomory – Hu může být sestaven v |PROTI | − 1 maximální průtok výpočty.
Definice
Nechat G = ((PROTIG, EG), C) být neorientovaný graf s C(u,proti) je kapacita okraje (u,proti).
- Označte minimální kapacitu s-t snížit o λSvatý pro každého s, t ∈ PROTIG.
- Nechat T = (PROTIG, ET) být strom, označit sadu hran v s-t cesta PSvatý pro každého s, t ∈ PROTIG.
Pak T se říká, že je Gomory – Hu strom z G, pokud pro každého s, t ∈ PROTIG
- λSvatý = mine∈PSvatý C(SE, TE),
kde
- SE, TE ⊆ PROTIG jsou dvě spojené komponenty T∖{E}, a tudíž (SE, TE) pro muže s-t zastřihnout G.
- C(SE, TE) je kapacita výřezu G.
Algoritmus
Algoritmus Gomory – Hu
- Vstup: Vážený neorientovaný graf G = ((PROTIG, EG), C)
- Výstup: Strom Gomory – Hu T = (PROTIT, ET).
- 1 set PROTIT = {PROTIG} a ET = ∅.
- 2. Vyberte některé X∈PROTIT s | X | ≥ 2, pokud je X existuje. V opačném případě přejděte ke kroku 6.
- 3. Pro každou připojenou komponentu C = (PROTIC, EC) v T∖X. Nechat SC = ∪protiT∈VC protiT. Nechat S = { SC | C je připojená součást v T∖X}.
- Smluvte komponenty, které chcete vytvořit G' = ((PROTIG', EG'), C'), kde
- PROTIG' = X ∪ S.
- EG' = EG|X × X ∪ {(u, SC) ∈ X×S | (u,proti)∈EG pro některé proti∈SC} ∪ {(SC1, SC2) ∈ S ×S | (u,proti)∈EG pro některé u∈SC1 a proti∈SC2}.
- C' : PROTIG'×PROTIG'→R+ je kapacitní funkce definovaná jako,
- pokud (u,SC)∈EG|X × S., C'(u,SC) = Σv∈SC: (u, v) ∈EGC(u,proti),
- pokud (SC1,SC2)∈EG|S × S, C'(SC1,SC2) = Σ(u, v) ∈EG: u∈SC1∧v∈SC2 C(u,proti),
- C'(u,proti) = C(u,proti) v opačném případě.
- 4. Vyberte dva vrcholy s, t ∈ X a najít minimum s-t střih (A',B') v G'.
- Soubor A = (∪SC∈A'∩S SC) ∪ (A' ∩ X) a B = (∪SC∈B'∩S SC) ∪ (B' ∩ X).
- 5. Nastavit PROTIT = (PROTIT∖X) ∪ {A ∩ X, B ∩ X}.
- Pro každého E = (X, Y) ∈ ET dělat
- Li Y ⊂ A, nastavit E' = (A ∩ X, Y), jinak nastaveno E' = (B ∩ X, Y).
- Soubor ET = (ET∖{E}) ∪ {E'} a w(E') = w(E).
- Soubor ET = ET ∪ {(A∩X, B∩X)}.
- Soubor w((A∩X, B∩X)) = C'(A', B').
- Přejděte na krok 2.
- 6. Vyměňte každý {proti} ∈ PROTIT podle proti a každý ({u},{proti}) ∈ ET od (u,proti). Výstup T.
Analýza
Za použití submodulární vlastnost kapacitní funkce C, jeden má
- C(X) + C(Y) ≥ C(X ∩ Y) + C(X ∪ Y).
Pak je možné ukázat, že minimální s-t zastřihnout G„je také minimum s-t zastřihnout G pro všechny s, t ∈ X.
Ukázat to pro všechny (P, Q) ∈ ET, w(P,Q) = λpq pro některé p ∈ P, q ∈ Q v celém algoritmu využívá jeden následující lemma,
- Pro všechny i, j, k v PROTIG, λik ≥ min (λij, λjk).
Lemma může být znovu použita opakovaně, aby se ukázalo, že výstup T uspokojuje vlastnosti stromu Gomory – Hu.
Příklad
Následuje simulace Gomoryho-Huova algoritmu, kde
- zelená kruhy jsou vrcholy T.
- Červené a modrý kruhy jsou vrcholy G'.
- Šedá jsou zvoleny vrcholy s a t.
- Červené a modrý zbarvení představuje s-t střih.
- přerušovaný hrany jsou s-t cut-set.
- A je množina vrcholů zakroužkovaných dovnitř Červené a B je množina vrcholů zakroužkovaných dovnitř modrý.
G' | T | |
---|---|---|
| ||
1. | ||
| ||
2. | ||
| ||
3. | ||
| ||
4. | ||
| ||
5. | ||
| ||
6. | ||
|
Implementace: Sekvenční a paralelní
Gusfieldův algoritmus lze použít k nalezení stromu Gomory-Hu bez jakékoli kontrakce vrcholů ve stejné složitosti běhového času, což zjednodušuje implementaci konstrukce stromu Gomory-Hu.[2]
Andrew V. Goldberg a K. Tsioutsiouliklis implementovali algoritmus Gomory-Hu a Gusfieldův algoritmus a provedli experimentální vyhodnocení a srovnání.[3]
Cohen a kol. reportovat výsledky dvou paralelních implementací Gusfieldova algoritmu pomocí OpenMP a MPI.[4]
Související pojmy
v rovinné grafy, strom Gomory – Hu je duální na minimální hmotnost základ cyklu, v tom smyslu, že řezy stromu Gomory – Hu jsou dvojí ve srovnání se sbírkou cyklů v duální graf které tvoří základ cyklu minimální hmotnosti.[5]
Viz také
Reference
- ^ Gomory, R. E.; Hu, T. C. (1961). "Toky více terminálových sítí". Časopis Společnosti pro průmyslovou a aplikovanou matematiku. 9 (4): 551–570. doi:10.1137/0109047.
- ^ Gusfield, Dan (1990). "Velmi jednoduché metody pro analýzu toku párů v síti". SIAM J. Comput. 19 (1): 143–155. doi:10.1137/0219009.
- ^ Goldberg, A. V .; Tsioutsiouliklis, K. (2001). "Algoritmy řezaných stromů: experimentální studie". Journal of Algorithms. 38 (1): 51–83. doi:10.1006 / jagm.2000.1136.
- ^ Cohen, J .; L. A. Rodrigues; F. Silva; R. Carmo; A. Guedes; E. P. Duarte Jr. (2011). "Paralelní implementace Gusfieldova algoritmu řezaného stromu". Přednášky v informatice (LNCS). 7016. Springer. 7016 (11. mezinárodní konference Algoritmy a architektury pro paralelní zpracování (ICA3PP)): 258–269. doi:10.1007/978-3-642-24650-0_22. ISBN 978-3-642-24649-4. ISSN 0302-9743.
- ^ Hartvigsen, D .; Mardon, R. (1994). "Problém min. Řezu všech párů a problém minimálního základu cyklu na rovinných grafech". SIAM J. Diskrétní matematika. 7 (3): 403–418. doi:10.1137 / S0895480190177042..
- B. H. Korte, Jens Vygen (2008). „8.6 Gomory – Hu stromy“. Kombinatorická optimalizace: Teorie a algoritmy (Algorithms and Combinatorics, 21). Springer Berlin Heidelberg. str.180 –186. ISBN 978-3-540-71844-4.