Kargerov algoritam

Извор: testwiki
Датум измене: 13. јануар 2024. у 12:04; аутор: imported>FelixBot (normativna kontrola)
(разл) ← Старија измена | Тренутна верзија (разл) | Новија измена → (разл)
Пређи на навигацију Пређи на претрагу
Graf sa dva presecanja. Tačkasta crvena linija seče tri grane grafa. Zelena isprekidana linija predstavlja minimalni rez grafa, presecajući samo dve grane.

U informatici i teoriji grafova, Kargerov algoritam je algoritam nasumične metode koji određuje minimalan rez povezanog grafa. Izmislio ga je Dejvid Karger i prvi put objavio 1993.[1]

Ideja algoritma je bazirana na konceptu skraćivanja grana (u,v) u neorijentisanom grafu G=(V,E). Neformalno govoreći, , skraćivanje broja grana spaja čvorove u i v u jedan, smanjujući ukupan broj čvorova u grafu za jedan. Sve ostale grane koje spajaju u ili v su "ponovo nakačene" za spojeni čvor, efektivno stvarajući multigraf. Kargerov osnovni algoritam iterativno skraćuje nasumično odabrane grane sve dok ne ostanu samo dva čvora; ti čvorovi predstavljaju rez u originalnom grafu. Ponavljajući ovaj osnovni algoritam dovoljan broj puta nalazimo, uz veliku verovatnoću, minimalni rez.

Globalni problem minimalnog reza

Rez (S,T) u neorijentisanom grafu G=(V,E) particioniše čvor V u dva neprazna, razdvojena seta ST=V. Isečak reza se sastoji od grana {uvE:uS,vT} koje se nalaze između dva dela. Veličina (ili težina) reza u ne-težinskom grafu je kardinalnost isečka, npr., broj grana izmedju dva dela,

w(S,T)=|{uvE:uS,vT}|.

Postoji 2|V| načina da se izabere za svaku najvišu tačku, bilo da pripada S ili T, ali dva od ovih izbora čine S ili T praznim, i samim tim ne povećavaju broj rezova. Među preostalim izborima, zamenjivanjem uloga S i T se ne menja rez, tako da se svaki rez broji dva puta; stoga, postoji 2|V|11 različitih rezova. Problem minimalnog reza je da nađe rez najmanje veličine od ovih rezova.

Za težinske grafove sa granama pozitivne težine w:E𝐑+ težina reza predstavlja sumu težine grana izmedju čvorova u svakom delu

w(S,T)=uvE:uS,vTw(uv),

što se i slaže sa ne-težinskom definicijom za w=1.

Rez se ponekad naziva i “globalni rez” kako bi se razlikovao od “s-t reza” za dati par temena, koji ima i dodatni zahtev(uslov) da sS i tT. Svaki globalni rez je s-t rez za neke s,tV. Prema tome, problem minimalnog reza moze biti rešen u polinomijalnom vremenu tako što ćemo da iterišemo(označimo) sve slučajeve s,tV i rešavajući rezultujući minimum s-t problema reza koristeći teoremu o maksimalnom protoku-minimalnom rezu i algoritam polinomijalnog vremena za maksimalni protok, kao što je Ford-Fulkersonov algoritam, iako ovaj pristup nije preporučljiv (optimalan). Postoji deterministički algoritam za globalni problem minimalnog reza koji se izvršava u vremenu O(mn+n2logn).[2]

Algoritam skraćivanja

Fundamentalna operacija Kargerovog algoritma je forma skraćivanja broja grana. Rezultat skraćivanja grane e={u,v} je novi čvor uv. Svaka grana {w,u} ili {w,v} za w{u,v} do krajnjih tačaka skraćene grane je zamenjena granom {w,uv} do novog čvora. Konačno, skraćeni čvorovi u i v sa svim svojim starim granama su uklonjeni. Rezultujući graf ne sadrži petlje. Rezultat skraćene grane e se označava kao G/e.

Označena grana je smanjena u jedan čvor.

Algoritam skraćivanja iznova i iznova smanjuje nasumično izabrane grane grafa sve dok ne ostanu samo dva čvora, a u tom trenutku postoji samo jedan rez.

Uspešan prolazak kroz graf sa 10 čvorova koristeći Kargerovog algoritam. Minimalan broj rezova je 3.
   procedura skraćivanje(G=(V,E)):
   dok |V|>2
       izaberi eE nasumično ravnomerno
       GG/e
   vrati jedini rez iz G 

Kada je graf predstavljen listom susedstva ili matricom povezanosti, operacija skraćivanja jedne grane može biti implementirana linearnim brojem ažuriranja glavne strukture, uz ukupno vreme izvršavanja O(|V|2). Alternativno, procedura može biti pregledana uz pomoć Kruskalovog algoritma za konsturisanje minimalnog razapinjućeg stabla gde su grane težine w(ei)=π(i) na osnovu nasumične permutacije π. Uklanjanjem najteže grane ovog stabla se dobijaju dve komponente koje opisuju rez. Na ovaj način, procedura skraćivanja može biti implementirana uz pomoć Kruskalovog algoritma u vremenu O(|E|log|E|).

Izbori nasumičnih grana uz pomoć Kargerovog algoritmu korespondira sa izvršavanjem Kruskalovog algoritma u grafu sa granama nasumičnog ranga sve dok ne ostanu samo dve komponente.

Najbolja poznata implementacija je O(|E|) vremenske i prostorne složenosti, ili u O(|E|log|E|) vremenu i O(|V|) prostoru.[1]

Verovatnoća uspešnosti algoritma za skraćivanje

U grafu G=(V,E) sa n=|V| čvorova, algoritam skraćivanja vraća minimalan rez sa polinomijalno malom verovatnoćom (n2)1. Svaki graf ima 2n11 rezova,[3] među kojima najviše može biti (n2) minimalnih rezova. Stoga, verovatnoća uspešnosti ovog algoritma je mnogo bolja od verovatnoće odabiranja reza nasumično, što je najviše (n2)/(2n11)

Na primer, ciklični graf sa n čvorova ima tačno (n2) minimalnih rezova, gledavši na svaki izbor od po 2 grane. Procedura skraćivanja nalazi svaku od navedenih sa jednakom verovatnoćom.

Kako bi generalno postavili verovatnoću uspešnosti, neka C bude oznaka za ivice odredjenog minimalnog reza veličine k. Algoritam skraćivanja vraća C ako nijedna od nasumičnih grana ne pripada isečku od C. U stvari, skraćivanje prve ivice izbegava C, a to se događa sa verovatnoćom 1k/|E|. Minimalni stepen G je najmanje k (u suprotnom najviša tačka najmanjeg stepena bi indicirala manji rez), tako da je |E|nk/2. Stoga, verovatnoća da algoritam skraćivanja izabere granu iz C je

k|E|knk/2=2n.

Verovatnoća pn da algoritam skraćivanja na n-čvorni graf izbegne C zadovoljava rekurentnu jednačinu pn(12n)pn1, sa p2=1, što se može proširiti

pni=0n3(12ni)=i=0n3ni2ni=n2nn3n1n4n2352413=(n2)1.

Ponavljanje algoritma skraćivanja

10 ponavljanja procedure skraćivanja. Peto ponavljanje nalazi minilani rez veličine 3.

Ponavljanjem algoritma skraćivanja T=(n2)lnn puta sa nezavisnim nasumičnim izborima i vraćanjem najmanjeg reza, verovatnoća da se ne nađe minimalan rez je

[1(n2)1]T1elnn=1n.

Ukupno vreme odradjivanja za T ponavljanja za graf sa n čvorova i m grana je O(Tm)=O(n2mlogn).

Karger-Štajnov algoritam

Nastavak (produžetak) Kargerovog algoritma usled -{David Karger}- i -{Clifford Stein}- dostiže unapređenje za nivo više.[4]

Osnovna ideja je da se izvršava procedura skraćivanja sve dok graf ne dostigne t čvorova.

   procedura skraćivanje(G=(V,E), t):
   dok |V|>t
       izaberieE nasumično ravnomerno
       GG/e
   vrati G

Verovatnoća pn,t da ova procedura skraćivanja izbegne određen rez C u n-čvornom grafu je

pn,ti=0nt1(12ni)=(t2)/(n2).

Ovaj izraz je Ω(t2/n2) i postaje manji nego od 12 oko t=1+n/2. Verovatnoća da je grana iz C skraćena raste kako se približava kraju. Ovo motiviše ideju prebacivanja na sporiji algoritam posle određenog broja skraćivanja (koraka skraćivanja).

   procedura brziminrez(G=(V,E)):
   ako |V|<6:
       vrati minrez(V)
   u suprotnom:
       t1+|V|/2
       G1 skrati(G, t)
       G2 skrati(G, t)
       vrati min {brziminrez(G1), brziminrez(G2)}


Analiza

Verovatnoća P(n) da će algoritam pronaći određeni isečak C je zadata rekurentnom relacijom

P(n)=1(112P(1+n2))2

sa rešenjem P(n)=O(1logn). Vreme trajanje(izvršavanja) funckije brziminrez zadovoljava

T(n)=2T(1+n2)+O(n2)

sa rešenjem T(n)=O(n2logn). Kako bi se dostigla verovatnoća greške O(1/n), algoritam može biti ponavljan O(logn/P(n)) puta, za sveukupno vreme T(n)lognP(n)=O(n2log3n). Ovo je unapredjenje u odnosu na Kargerov originalni algoritam.

Pronalaženje svih minimalnih rezova

Teorema: Sa velikom verovatnoćom možemo naći sve minimalne rezove u vremenu O(n2ln3n).

Dokaz: Pošto znamo da je P(n)=O(1lnn), stoga nakon izvršavanja ovog algoritmaO(ln2n) puta, verovatnoća da se minimalni rez ne pronađe je

Pr[neuspelo nalaženje odredjenog min-reza]=(1P(n))O(ln2n)(1clnn)3ln2nce3lnn=1n3.

Postoji najmanje (n2) minimalnih rezova, otuda je verovatnoća za ne-nalaženje bilo kog minimalnog reza

Pr[neuspelo nalaženje bilo kog min-reza](n2)1n3=O(1n).

Verovatnoća za neuspeh u pronalaženju je izuzetno mala kada je n dovoljno veliko.∎

Poboljšanje

Kako bi se odredio minimalni rez mora se proći kroz sve grane grafa bar jednom, što se obavlja za u O(n2) vremenu u gustom grafu. Karger-Štajnov algoritam za određivanje minimalnog reza se izvršava u O(n2lnO(1)n) vremenu, što je približno gore navedenom.

Референце

Шаблон:Reflist

Шаблон:Normativna kontrola