Kargerin algoritmi

Kokeneet kirjoittajat eivät ole vielä tarkistaneet sivun nykyistä versiota, ja se voi poiketa merkittävästi 28.5.2022 tarkistetusta versiosta . tarkastukset vaativat 3 muokkausta .
Kargerin algoritmi

Kaavio ja sen kaksi leikkausta. Punainen leikkaus ylittää kolme reunaa ja vihreä leikkaus kaksi. Jälkimmäinen on yksi tämän kaavion pienimmistä leikkauksista.
Nimetty David Karger [d]
tarkoitus löytää kaavion pienin leikkaus
Tietorakenne kaavio
Keskimääräinen aika
Muistin hinta -

Kargerin algoritmi tietojenkäsittelytieteessä ja graafiteoriassa on todennäköisyyspohjainen  algoritmi , jonka avulla voit löytää yhdistetyn graafin minimileikkauksen . David Kargerin keksimä algoritmi ja julkaistiin vuonna 1993 [1] .

Algoritmin idea perustuu reunan supistumiseen suuntaamattomassa graafissa. Reunan supistuksen aikana kaksi kärkeä yhdistetään yhdeksi, mikä vähentää graafin kärkien määrää yhdellä. Kaikki supistuneiden kärkien reunat yhdistetään äskettäin muodostettuun kärkipisteeseen, jolloin syntyy multigrafi . Kargerin algoritmi valitsee iteratiivisesti satunnaiset reunat ja suorittaa toiminnon, kunnes jäljellä on kaksi kärkeä, jotka ovat alkuperäisen graafin leikkaus. Jos algoritmia toistetaan tarpeeksi monta kertaa, niin minimileikkaus löytyy suurella todennäköisyydellä.

Kuvaus

Esimerkkejä

Päätehtävänä on löytää pullonkauloja eri verkostoista. Esimerkkejä:

Algoritmi

Kargerin algoritmin perustoiminto on eräänlainen reunan supistaminen . Tämän toiminnon suorittamiseksi mielivaltaiselle reunalle graafin ja pisteet yhdistetään yhdeksi . Jos kärkipiste poistetaan , jokainen näkymän reuna korvataan näkymän reunalla . Silmukat poistetaan, ja tämän toimenpiteen jälkeen graafi ei sisällä silmukoita. Kustannusfunktio määritellään uudelleen seuraavasti: .

Algoritmi on satunnaisen käytettävissä olevan reunan ja kärkien liiton ekvitodennäköinen valinta kuvatun operaation mukaisesti. Algoritmin tuloksena saadaan pistepari, jonka välissä oleva reunajoukko on graafin osa. Tämä leikkaus ei välttämättä ole minimaalinen, mutta todennäköisyys, että tämä leikkaus on minimaalinen, on huomattavasti suurempi kuin satunnaisesti valitulla leikkauksella.

Pseudokoodi

Kargerin algoritmi toista n − 2 kertaa satunnaisesti valitse reuna e kutista reuna e tuloksena on reunojen lukumäärä kahden viimeisen kärjen välillä

Todisteet

Lemma 1. .

Todiste. Huomaa, että jokainen leikkaus vastaa leikkausta . Anna , ja . Tällöin seuraavat erot ovat voimassa: , (edellyttäen, että ) ja . Siten .

Lemma 2. Todennäköisyys, että algoritmin tulos on pienin leikkaus, on suurempi tai yhtä suuri kuin .

Todiste. Antaa olla -th supistuneen reunan edellyttäen, että . Olkoon ja lisäksi -:nnen supistuksen jälkeiset kaaviot ja mikä tahansa kuvaajan pienin leikkaus . Sitten seuraava on totta:

Karger-Stein-algoritmi

Huomaa, että todennäköisyys, että pienintä leikkausta ei löydy toistoista, on . Siten on mahdollista mielivaltaisesti pienentää virheen todennäköisyyttä, mutta tämä pidentää algoritmin suoritusaikaa. Virheen todennäköisyysvakiolle riittää, että algoritmi suoritetaan kerran ja suoritusaika kasvaa arvoon . Kun vakiovirhetodennäköisyys on saavutettu, se pienenee eksponentiaalisesti funktiona . Toistaiseksi mahdolliset pienimmät leikkaukset on generoinut algoritmilla itsenäisesti kussakin kutsussa, mutta ensimmäisten reunaliitosten tuloksia voidaan käyttää useisiin ajoihin. Karger-Stein-algoritmin ideana on tunnistaa kussakin iteraatiossa kaksi supistusehdokasta ja jatkaa Karger-algoritmia rekursiivisesti jokaiselle niistä:

  1. Dana ja .
  2. Jos , etsi pienin leikkaus ja tulosta se, lopeta työ.
  3. Asenna .
  4. Asenna .
  5. Vedä kylkiluut sisään .
  6. Vedä kylkiluut sisään .
  7. Laske rekusiivisesti pienimmät leikkaukset ja .
  8. Tulosta pienin leikkaus tai .

Lause. Karger-Stein-algoritmilla on aika monimutkaisuus .

Todiste. Seuraava yksinkertaistettu rekursiivinen yhtälö kuvaa algoritmin ajoaikaa: for ja for . Rekursion syvyys on , koska syöttödatan kokoa pienennetään vakiomäärä kertoja. Olkoon rekursion tasolla . Huomaa, että rekursiotasolla algoritmi on suoritettava kerran ja kunkin rekursiivisen kutsun syötekaavion koko on . Siten jokaisen rekursiivisen kutsun suoritusaika on , ja rekursisyvyyden sisällä vaadittava suoritusaika on . Kokonaissuoritusaika on .

Lemma. .

Todiste.

Lause. Algoritmi laskee pienimmän leikkauksen todennäköisyydellä .

Todiste. Antaa olla pienin leikkaus kaaviossa ja . Silloin todennäköisyys, että se säilyy supistuksen jälkeen, on yhtä suuri kuin minimi:

Todennäköisyys, että tai joilla on sama pienin leikkaus kuin ja on vähintään . Karger-Stein-algoritmi onnistuu vain kahdessa tapauksessa: jos tai sisältää minimikokoleikkauksen ja algoritmin rekusiivinen kutsu onnistuu. Olkoon todennäköisyys, että algoritmi on onnistunut kuvaajalle . Silloin todennäköisyys, että algoritmi valmistuu onnistuneesti, on . Olkoon todennäköisyys, että algoritmi on onnistunut rekursiotasolla . Sitten todellakin jos ja . Tästä seuraa, että missä on rekursion syvyys.

Kun algoritmi on käynnistetty uudelleen kerran, saadaan suoritusaika ja virhetodennäköisyys .

Katso myös

Muistiinpanot

  1. Karger, David R. Globaalit min-leikkaukset RNC:ssä ja muut yksinkertaisen minimileikkausalgoritmin seuraukset  // SODA  :  päiväkirja. - 1993. - Voi. 93 . - s. 21-30 . - ISBN 0-89871-313-7 .
  2. Terminal-Set-Enhanced Community Detection sosiaalisissa verkostoissa . Haettu 24. elokuuta 2016. Arkistoitu alkuperäisestä 9. heinäkuuta 2016.
  3. Minimileikkausongelma . Haettu 24. elokuuta 2016. Arkistoitu alkuperäisestä 28. elokuuta 2016.
  4. Satunnaistetut algoritmit Osa 3 . Haettu 24. elokuuta 2016. Arkistoitu alkuperäisestä 28. toukokuuta 2016.

Linkit