Kargers algoritm

Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från versionen som granskades den 28 maj 2022; kontroller kräver 3 redigeringar .
Kargers algoritm

Grafen och dess två snitt. Det röda snittet korsar tre kanter och det gröna snittet två. Det senare är en av de minimala snitten i denna graf.
Döpt efter David Karger [d]
ändamål hitta det minsta snittet i en graf
Datastruktur Graf
Snittid
Minneskostnad -

Kargers algoritm - inom datavetenskap och grafteori är en probabilistisk  algoritm som låter dig hitta minimisnittet för en sammankopplad graf . Algoritm uppfann av David Karger och publicerades 1993 [1] .

Idén med algoritmen är baserad på kantkontraktion i en oriktad graf. Under kantkontraktion slås två hörn samman till en, vilket minskar antalet grafhörn med en. Alla kanter på de sammandragna hörnen är anslutna till den nybildade vertexen, vilket genererar en multigraf . Kargers algoritm väljer iterativt slumpmässiga kanter och utför operationen tills två hörn återstår, som är ett snitt av den ursprungliga grafen. Om algoritmen upprepas tillräckligt många gånger, kan minimisnittet hittas med hög sannolikhet.

Beskrivning

Exempel

Huvuduppgiften är att hitta flaskhalsar i olika nätverk. Exempel:

Algoritm

Den grundläggande operationen av Kargers algoritm är en form av kantkontraktion . För att utföra den här operationen på en godtycklig kant slås grafens hörn och samman till en . Om en vertex tas bort ersätts varje vykant med en vykant . Slingorna tas bort, och efter denna operation innehåller grafen inga slingor. Kostnadsfunktionen omdefinieras enligt följande: .

Algoritmen är ett lika sannolikt val av en slumpmässig tillgänglig kant och en förening av hörn enligt den beskrivna operationen. Resultatet av algoritmen är ett par hörn, vars uppsättning kanter är en sektion av grafen. Detta snitt kanske inte är minimalt, men sannolikheten att detta snitt är minimalt är betydligt större än för ett slumpmässigt valt snitt.

Pseudokod

Kargers algoritm upprepa n − 2 gånger slumpmässigt välj kant e krympkant e resultat antal kanter mellan de två sista hörnen

Bevis

Lemma 1. .

Bevis. Observera att varje inskärning motsvarar en inskärning . Låt , och . Då är följande skillnader giltiga: , (förutsatt att ) och . Alltså .

Lemma 2. Sannolikheten att resultatet av algoritmen är det minsta snittet är större än eller lika med .

Bevis. Låt vara den -: e sammandragna kanten förutsatt att . Vidare, låt och vara graferna efter den -e sammandragningen, och vara vilket minsta snitt av grafen som helst . Då är följande sant:

Karger-Stein algoritm

Observera att sannolikheten för att inte hitta det minsta snittet med upprepningar är . Således är det möjligt att godtyckligt minska sannolikheten för ett fel, men detta kommer att öka exekveringstiden för algoritmen. För felsannolikhetskonstanten räcker det att köra algoritmen en gång och exekveringstiden ökar till . När den konstanta felsannolikheten har uppnåtts kommer den att minska exponentiellt som en funktion av . Hittills har de möjliga minsta nedskärningarna genererats av algoritmen oberoende av varje anrop, men resultaten från de första kantsammanslagningarna kan användas för många körningar. Tanken med Karger-Stein-algoritmen är att identifiera två kontraktionskandidater varje iteration och fortsätta Karger-algoritmen rekursivt för var och en av dem:

  1. Dana och .
  2. Om , hitta det minsta snittet och mata ut det, avsluta jobbet.
  3. Installera .
  4. Installera .
  5. Dra revbenen i .
  6. Dra revbenen i .
  7. Beräkna rekusivt de minsta snitten och .
  8. Mata ut det minsta snittet eller .

Sats. Karger-Stein-algoritmen har tidskomplexitet .

Bevis. Följande förenklade rekursiva ekvation beskriver körtiden för algoritmen: för och för . Rekursionsdjupet är , eftersom storleken på indata minskas med ett konstant antal gånger. Låt på nivån av rekursion . Observera att på rekursionsnivån är det nödvändigt att köra algoritmen en gång och storleken på indatagrafen för varje rekursivt anrop är . Sålunda är exekveringstiden för varje rekursivt anrop , och exekveringstiden som krävs inom rekursionsdjupet är . Den totala exekveringstiden är .

Lemma. .

Bevis.

Sats. Algoritmen beräknar det minsta snittet med sannolikhet .

Bevis. Låta vara det minsta snittet i grafen och . Då är sannolikheten att den kommer att bevaras efter sammandragningar lika med minimum:

Sannolikheten att eller har samma minsta snitt som och är minst . Karger-Stein-algoritmen kommer endast att lyckas i två fall: om eller innehålla en minimistorlek , och det återkommande anropet av algoritmen lyckas. Låt sannolikheten att algoritmen är framgångsrik för grafen . Då är sannolikheten att algoritmen kommer att slutföras framgångsrikt . Låt vara sannolikheten att algoritmen är framgångsrik på rekursionsnivån . Då verkligen om och . Det följer att , var är rekursionsdjupet.

Efter att ha startat om algoritmen en gång får vi exekveringstiden och felsannolikheten .

Se även

Anteckningar

  1. Karger, David R. Globala Min-cuts in RNC, and Other Ramifications of a Simple Min-Cut  Algorithm // SODA  :  journal. - 1993. - Vol. 93 . - S. 21-30 . - ISBN 0-89871-313-7 .
  2. Terminal-Set-Enhanced Community Detection i sociala nätverk . Hämtad 24 augusti 2016. Arkiverad från originalet 9 juli 2016.
  3. Minsta snittproblem . Hämtad 24 augusti 2016. Arkiverad från originalet 28 augusti 2016.
  4. Randomiserade algoritmer del tre . Hämtad 24 augusti 2016. Arkiverad från originalet 28 maj 2016.

Länkar