Karger algoritmusa

Az oldal jelenlegi verzióját még nem ellenőrizték tapasztalt közreműködők, és jelentősen eltérhet a 2022. május 28-án felülvizsgált verziótól ; az ellenőrzések 3 szerkesztést igényelnek .
Karger algoritmusa

A grafikon és két vágása. A piros vágás három élt keresztez, a zöld pedig kettőt. Ez utóbbi ennek a grafikonnak az egyik minimális vágása.
Valaki után elnevezve David Karger [d]
célja a grafikon legkisebb metszetének megtalálása
Adatstruktúra grafikon
Átlagos idő
A memória költsége -

Karger algoritmusa a számítástechnikában és a gráfelméletben egy valószínűségi  algoritmus , amely lehetővé teszi egy összefüggő gráf minimális metszésének megtalálását . Az algoritmust David Karger találta ki és 1993 -ban jelent meg [1] .

Az algoritmus ötlete egy irányítatlan gráf élösszehúzódásán alapul . Az élösszehúzás során két csúcs összevonódik egybe, ami eggyel csökkenti a gráf csúcsok számát. Az összehúzott csúcsok összes éle kapcsolódik az újonnan kialakított csúcshoz, így multigráfot generál . A Karger-algoritmus iteratív módon kiválasztja a véletlenszerű éleket, és addig hajtja végre a műveletet, amíg két csúcs marad, amelyek az eredeti gráf egy metszete. Ha az algoritmust elégszer megismételjük, akkor a minimális vágás nagy valószínűséggel megtalálható.

Leírás

Példák

A fő feladat a szűk keresztmetszetek megtalálása a különböző hálózatokban. Példák:

Algoritmus

A Karger-algoritmus alapművelete az élösszehúzódás egyik formája . Ahhoz, hogy ezt a műveletet tetszőleges élen hajtsuk végre , a és a gráf csúcsait egyesítjük . Ha egy csúcsot eltávolítunk , akkor minden nézet élét egy nézet él helyettesíti . A ciklusok eltávolításra kerülnek, és a művelet után a gráf nem tartalmaz ciklusokat. A költségfüggvény újradefiniálása a következőképpen történik: .

Az algoritmus egy véletlenszerűen elérhető él és csúcsok uniójának ekvivalens választása a leírt művelet szerint. Az algoritmus eredménye egy csúcspár, amelyek közötti élhalmaz a gráf egy szakasza. Lehet, hogy ez a vágás nem minimális, de annak a valószínűsége, hogy ez a vágás minimális, lényegesen nagyobb, mint egy véletlenszerűen kiválasztott vágásnál.

Pszeudokód

Karger algoritmusa ismétlés n − 2 - szer véletlenszerűen válassza ki az élt e zsugorítja az élt e eredmény az élek száma az utolsó két csúcs között

Bizonyíték

1. lemma .

Bizonyíték. Vegye figyelembe, hogy minden bevágás egy bevágásnak felel meg . Hagyjuk , és . Ekkor a következő eltérések érvényesek: , (feltéve, hogy ) és . Így .

2. lemma. Annak a valószínűsége, hogy az algoritmus eredménye a legkisebb vágás, nagyobb vagy egyenlő, mint .

Bizonyíték. Legyen a -edik összehúzott él, feltéve, hogy . Továbbá legyen és a -edik összehúzódás utáni grafikonok , és a gráf bármely legkisebb metszete . Akkor a következő igaz:

Karger-Stein algoritmus

Vegye figyelembe, hogy annak a valószínűsége, hogy nem találja meg a legkisebb vágást az ismétlésekkel, . Így tetszőlegesen csökkenthető a hiba valószínűsége, de ez megnöveli az algoritmus végrehajtási idejét. A hibavalószínűségi állandóhoz elég egyszer lefuttatni az algoritmust, és a végrehajtási idő -ra nő . Az állandó hibavalószínűség elérése után exponenciálisan csökken a függvényében . Eddig a lehetséges legkisebb vágásokat az algoritmus külön-külön generálta minden híváson, de az első élösszevonások eredményei számos futtatásra felhasználhatók. A Karger-Stein algoritmus ötlete az, hogy minden iterációban azonosítson két összehúzódási jelöltet, és mindegyiknél rekurzívan folytassa a Karger algoritmust:

  1. Dana és .
  2. Ha , keresse meg a legkisebb vágást és adja ki, fejezze be a munkát.
  3. Telepítse .
  4. Telepítse .
  5. Húzza be a bordákat .
  6. Húzza be a bordákat .
  7. Számítsa ki rekuszív módon a legkisebb vágásokat és .
  8. Adja ki a legkisebb vágást vagy .

Tétel. A Karger-Stein algoritmus időben bonyolult .

Bizonyíték. Az alábbi egyszerűsített rekurzív egyenlet írja le az algoritmus futási idejét: for and for . A rekurziós mélység , mivel a bemeneti adatok mérete konstans számú alkalommal csökken. Legyen a rekurzió szintjén . Vegye figyelembe, hogy rekurziós szinten az algoritmust egyszer kell futtatni, és minden rekurzív hívás bemeneti gráfjának mérete . Így minden rekurzív hívás végrehajtási ideje , a rekurziós mélységen belül szükséges végrehajtási idő pedig . A teljes végrehajtási idő .

Lemma. .

Bizonyíték.

Tétel. Az algoritmus kiszámítja a legkisebb vágást valószínűséggel .

Bizonyíték. Legyen a legkisebb vágás a grafikonon és . Ekkor annak a valószínűsége, hogy az összehúzódások után megmarad , egyenlő a minimummal:

Annak a valószínűsége, hogy vagy azonos a legkisebb vágással, mint és legalább . A Karger-Stein algoritmus csak két esetben lesz sikeres: ha vagy tartalmaz egy minimális méretű vágást , és az algoritmus rekuszív hívása sikeres. Legyen annak a valószínűsége, hogy az algoritmus sikeres lesz a gráf esetében . Ekkor annak a valószínűsége, hogy az algoritmus sikeresen befejeződik, . Legyen annak a valószínűsége, hogy az algoritmus sikeres lesz a rekurzió szintjén . Akkor valóban , ha és . Ebből következik, hogy hol van a rekurziós mélység.

Az algoritmus egyszeri újraindítása után megkapjuk a végrehajtási időt és a hiba valószínűségét .

Lásd még

Jegyzetek

  1. Karger, David R. Global Min-cuts in RNC, and Other Rafinations of a Simple Min-Cut Algorithm  // SODA  :  Journal. - 1993. - 1. évf. 93 . - P. 21-30 . - ISBN 0-89871-313-7 .
  2. Terminálkészlettel továbbfejlesztett közösségi észlelés a közösségi hálózatokban . Letöltve: 2016. augusztus 24. Az eredetiből archiválva : 2016. július 9..
  3. Minimális vágási probléma . Letöltve: 2016. augusztus 24. Az eredetiből archiválva : 2016. augusztus 28..
  4. Véletlenszerű algoritmusok harmadik rész . Letöltve: 2016. augusztus 24. Az eredetiből archiválva : 2016. május 28..

Linkek