Kargerův algoritmus

Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od verze recenzované 28. května 2022; kontroly vyžadují 3 úpravy .
Kargerův algoritmus

Graf a jeho dva řezy. Červený řez překračuje tři okraje a zelený řez dva. Ten je jedním z minimálních řezů tohoto grafu.
Pojmenoval podle David Karger [d]
účel nalezení nejmenšího řezu grafu
Datová struktura graf
Průměrný čas
Náklady na paměť -

Kargerův algoritmus - v informatice a teorii grafů je pravděpodobnostní  algoritmus , který vám umožňuje najít minimální řez spojeného grafu . Algoritmus vynalezený Davidem Kargerem a publikováno v roce 1993 [1] .

Myšlenka algoritmu je založena na kontrakci hran v neorientovaném grafu. Při kontrakci hrany se dva vrcholy spojí do jednoho, čímž se počet vrcholů grafu sníží o jeden. Všechny hrany kontrahovaných vrcholů jsou spojeny s nově vytvořeným vrcholem a generují multigraf . Kargerův algoritmus iterativně vybírá náhodné hrany a provádí operaci, dokud nezůstanou dva vrcholy, které jsou výřezem z původního grafu. Pokud se algoritmus opakuje dostatečně často, pak lze s vysokou pravděpodobností nalézt minimální řez.

Popis

Příklady

Hlavním úkolem je najít úzká místa v různých sítích. Příklady:

Algoritmus

Základní operací Kargerova algoritmu je forma zkracování hran . Chcete-li provést tuto operaci na libovolné hraně , jsou vrcholy grafu a sloučeny do jednoho . Pokud je vrchol odstraněn , pak je každá hrana pohledu nahrazena hranou pohledu . Smyčky jsou odstraněny a po této operaci graf neobsahuje žádné smyčky. Nákladová funkce je nově definována následovně: .

Algoritmus je ekvipravděpodobná volba náhodné dostupné hrany a sjednocení vrcholů podle popsané operace. Výsledkem algoritmu je dvojice vrcholů, množina hran mezi nimiž je výřez grafu. Tento řez nemusí být minimální, ale pravděpodobnost, že tento řez je minimální, je výrazně větší než u náhodně vybraného řezu.

Pseudokód

Kargerův algoritmus opakování n − 2x náhodně vybrat hranu e zmenšit hranu e výsledek počet hran mezi posledními dvěma vrcholy

Důkazy

Lemma 1 .

Důkaz. Všimněte si, že každý střih odpovídá střihu . Nechte , a . Pak platí tyto rozdíly: , (za předpokladu, že ) a . Tedy .

Lemma 2. Pravděpodobnost, že výsledkem algoritmu je nejmenší řez, je větší nebo rovna .

Důkaz. Nechť je -tá stažená hrana za předpokladu, že . Dále nechť a být grafy po -té kontrakci a být jakýmkoli nejmenším řezem grafu . Pak platí následující:

Karger-Steinův algoritmus

Všimněte si, že pravděpodobnost, že nenajdete nejmenší řez s opakováním, je . Je tedy možné libovolně snížit pravděpodobnost chyby, ale prodlouží se tím doba provádění algoritmu. Pro konstantu pravděpodobnosti chyby stačí spustit algoritmus jednou a doba provádění se prodlouží na . Jakmile je dosaženo konstantní pravděpodobnosti chyby, bude exponenciálně klesat jako funkce . Doposud byly možné nejmenší řezy generovány algoritmem nezávisle na každém volání, ale výsledky sloučení první hrany lze použít pro mnoho běhů. Myšlenkou algoritmu Karger-Stein je identifikovat dva kandidáty na kontrakci v každé iteraci a rekurzivně pokračovat v Kargerově algoritmu pro každého z nich:

  1. Dana a .
  2. Pokud najdete nejmenší řez a vytiskněte jej, dokončete práci.
  3. Nainstalujte .
  4. Nainstalujte .
  5. Vytáhněte žebra do .
  6. Vytáhněte žebra do .
  7. Vypočítejte rekusivně nejmenší řezy a .
  8. Výstup nejmenšího řezu nebo .

Teorém. Algoritmus Karger-Stein má časovou složitost .

Důkaz. Následující zjednodušená rekurzivní rovnice popisuje dobu běhu algoritmu: for a for . Hloubka rekurze je , protože velikost vstupních dat je redukována konstantním počtem opakování. Nechť na úrovni rekurze . Všimněte si, že na úrovni rekurze je nutné spustit algoritmus jednou a velikost vstupního grafu pro každé rekurzivní volání je . Doba provedení každého rekurzivního volání je tedy , a doba provedení požadovaná v rámci hloubky rekurze je . Celková doba provedení je .

Lemma. .

Důkaz.

Teorém. Algoritmus vypočítá nejmenší řez s pravděpodobností .

Důkaz. Dovolit být nejmenší řez v grafu a . Pravděpodobnost, že bude zachována i po kontrakcích, je pak rovna minimu:

Pravděpodobnost, že nebo bude mít stejný nejmenší řez jako a je alespoň . Algoritmus Karger-Stein uspěje pouze ve dvou případech: pokud nebo obsahuje minimální velikost řezu a rekuzivní volání algoritmu je úspěšné. Nechť pravděpodobnost, že algoritmus je úspěšný pro graf . Pak je pravděpodobnost, že algoritmus bude úspěšně dokončen, . Nechť je pravděpodobnost, že je algoritmus úspěšný na úrovni rekurze . Pak skutečně pokud a . Z toho vyplývá, že , kde je hloubka rekurze.

Po restartování algoritmu jednou dostaneme čas provedení a pravděpodobnost chyby .

Viz také

Poznámky

  1. Karger, David R. Global Min-cuts in RNC, and Other Ramifications of a Simple Min-Cut Algorithm  // SODA  :  journal. - 1993. - Sv. 93 . - str. 21-30 . - ISBN 0-89871-313-7 .
  2. Terminal-Set-Enhanced Community Detection in Social Networks . Získáno 24. srpna 2016. Archivováno z originálu 9. července 2016.
  3. Problém minimálního řezu . Získáno 24. 8. 2016. Archivováno z originálu 28. 8. 2016.
  4. Randomizované algoritmy, část třetí . Získáno 24. 8. 2016. Archivováno z originálu 28. 5. 2016.

Odkazy