Kargerov algoritam

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 ) {\displaystyle (u,v)} u neorijentisanom grafu G = ( V , E ) {\displaystyle G=(V,E)} . Neformalno govoreći, , skraćivanje broja grana spaja čvorove u {\displaystyle u} i v {\displaystyle v} u jedan, smanjujući ukupan broj čvorova u grafu za jedan. Sve ostale grane koje spajaju u {\displaystyle u} ili v {\displaystyle 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 ) {\displaystyle (S,T)} u neorijentisanom grafu G = ( V , E ) {\displaystyle G=(V,E)} particioniše čvor V {\displaystyle V} u dva neprazna, razdvojena seta S T = V {\displaystyle S\cup T=V} . Isečak reza se sastoji od grana { u v E : u S , v T } {\displaystyle \{\,uv\in E\colon u\in S,v\in T\,\}} 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 ) = | { u v E : u S , v T } | . {\displaystyle w(S,T)=|\{\,uv\in E\colon u\in S,v\in T\,\}|\,.}

Postoji 2 | V | {\displaystyle 2^{|V|}} načina da se izabere za svaku najvišu tačku, bilo da pripada S {\displaystyle S} ili T {\displaystyle T} , ali dva od ovih izbora čine S {\displaystyle S} ili T {\displaystyle T} praznim, i samim tim ne povećavaju broj rezova. Među preostalim izborima, zamenjivanjem uloga S {\displaystyle S} i T {\displaystyle T} se ne menja rez, tako da se svaki rez broji dva puta; stoga, postoji 2 | V | 1 1 {\displaystyle 2^{|V|-1}-1} 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 R + {\displaystyle w\colon E\rightarrow \mathbf {R} ^{+}} težina reza predstavlja sumu težine grana izmedju čvorova u svakom delu

w ( S , T ) = u v E : u S , v T w ( u v ) , {\displaystyle w(S,T)=\sum _{uv\in E\colon u\in S,v\in T}w(uv)\,,}

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

Rez se ponekad naziva i “globalni rez” kako bi se razlikovao od “ s {\displaystyle s} - t {\displaystyle t} reza” za dati par temena, koji ima i dodatni zahtev(uslov) da s S {\displaystyle s\in S} i t T {\displaystyle t\in T} . Svaki globalni rez je s {\displaystyle s} - t {\displaystyle t} rez za neke s , t V {\displaystyle s,t\in V} . Prema tome, problem minimalnog reza moze biti rešen u polinomijalnom vremenu tako što ćemo da iterišemo(označimo) sve slučajeve s , t V {\displaystyle s,t\in V} i rešavajući rezultujući minimum s {\displaystyle s} - t {\displaystyle 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 ( m n + n 2 log n ) {\displaystyle O(mn+n^{2}\log n)} .[2]

Algoritam skraćivanja

Fundamentalna operacija Kargerovog algoritma je forma skraćivanja broja grana. Rezultat skraćivanja grane e = { u , v } {\displaystyle e=\{u,v\}} je novi čvor u v {\displaystyle uv} . Svaka grana { w , u } {\displaystyle \{w,u\}} ili { w , v } {\displaystyle \{w,v\}} za w { u , v } {\displaystyle w\notin \{u,v\}} do krajnjih tačaka skraćene grane je zamenjena granom { w , u v } {\displaystyle \{w,uv\}} do novog čvora. Konačno, skraćeni čvorovi u {\displaystyle u} i v {\displaystyle v} sa svim svojim starim granama su uklonjeni. Rezultujući graf ne sadrži petlje. Rezultat skraćene grane e {\displaystyle e} se označava kao G / e {\displaystyle 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
        )
      
    
    {\displaystyle G=(V,E)}
  
):
   dok 
  
    
      
        
          |
        
        V
        
          |
        
        >
        2
      
    
    {\displaystyle |V|>2}
  

       izaberi 
  
    
      
        e
        
        E
      
    
    {\displaystyle e\in E}
  
 nasumično ravnomerno
       
  
    
      
        G
        
        G
        
          /
        
        e
      
    
    {\displaystyle G\leftarrow G/e}
  

   vrati jedini rez iz 
  
    
      
        G
      
    
    {\displaystyle 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 ) {\displaystyle 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 ( e i ) = π ( i ) {\displaystyle w(e_{i})=\pi (i)} na osnovu nasumične permutacije π {\displaystyle \pi } . 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 | ) {\displaystyle 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 | ) {\displaystyle O(|E|)} vremenske i prostorne složenosti, ili u O ( | E | log | E | ) {\displaystyle O(|E|\log |E|)} vremenu i O ( | V | ) {\displaystyle O(|V|)} prostoru.[1]

Verovatnoća uspešnosti algoritma za skraćivanje

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

Na primer, ciklični graf sa n {\displaystyle n} čvorova ima tačno ( n 2 ) {\displaystyle {\binom {n}{2}}} 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 {\displaystyle C} bude oznaka za ivice odredjenog minimalnog reza veličine k {\displaystyle k} . Algoritam skraćivanja vraća C {\displaystyle C} ako nijedna od nasumičnih grana ne pripada isečku od C {\displaystyle C} . U stvari, skraćivanje prve ivice izbegava C {\displaystyle C} , a to se događa sa verovatnoćom 1 k / | E | {\displaystyle 1-k/|E|} . Minimalni stepen G {\displaystyle G} je najmanje k {\displaystyle k} (u suprotnom najviša tačka najmanjeg stepena bi indicirala manji rez), tako da je | E | n k / 2 {\displaystyle |E|\geq nk/2} . Stoga, verovatnoća da algoritam skraćivanja izabere granu iz C {\displaystyle C} je

k | E | k n k / 2 = 2 n . {\displaystyle {\frac {k}{|E|}}\leq {\frac {k}{nk/2}}={\frac {2}{n}}.}

Verovatnoća p n {\displaystyle p_{n}} da algoritam skraćivanja na n {\displaystyle n} -čvorni graf izbegne C {\displaystyle C} zadovoljava rekurentnu jednačinu p n ( 1 2 n ) p n 1 {\displaystyle p_{n}\geq {\bigl (}1-{\frac {2}{n}}{\bigr )}p_{n-1}} , sa p 2 = 1 {\displaystyle p_{2}=1} , što se može proširiti

p n i = 0 n 3 ( 1 2 n i ) = i = 0 n 3 n i 2 n i = n 2 n n 3 n 1 n 4 n 2 3 5 2 4 1 3 = ( n 2 ) 1 . {\displaystyle p_{n}\geq \prod _{i=0}^{n-3}{\Bigl (}1-{\frac {2}{n-i}}{\Bigr )}=\prod _{i=0}^{n-3}{\frac {n-i-2}{n-i}}={\frac {n-2}{n}}\cdot {\frac {n-3}{n-1}}\cdot {\frac {n-4}{n-2}}\cdots {\frac {3}{5}}\cdot {\frac {2}{4}}\cdot {\frac {1}{3}}={\binom {n}{2}}^{-1}\,.}

Ponavljanje algoritma skraćivanja

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

Ponavljanjem algoritma skraćivanja T = ( n 2 ) ln n {\displaystyle T={\binom {n}{2}}\ln n} puta sa nezavisnim nasumičnim izborima i vraćanjem najmanjeg reza, verovatnoća da se ne nađe minimalan rez je

[ 1 ( n 2 ) 1 ] T 1 e ln n = 1 n . {\displaystyle {\Bigl [}1-{\binom {n}{2}}^{-1}{\Bigr ]}^{T}\leq {\frac {1}{e^{\ln n}}}={\frac {1}{n}}\,.}

Ukupno vreme odradjivanja za T {\displaystyle T} ponavljanja za graf sa n {\displaystyle n} čvorova i m {\displaystyle m} grana je O ( T m ) = O ( n 2 m log n ) {\displaystyle O(Tm)=O(n^{2}m\log n)} .

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 {\displaystyle t} čvorova.

   procedura skraćivanje(
  
    
      
        G
        =
        (
        V
        ,
        E
        )
      
    
    {\displaystyle G=(V,E)}
  
, 
  
    
      
        t
      
    
    {\displaystyle t}
  
):
   dok 
  
    
      
        
          |
        
        V
        
          |
        
        >
        t
      
    
    {\displaystyle |V|>t}
  

       izaberi
  
    
      
        e
        
        E
      
    
    {\displaystyle e\in E}
  
 nasumično ravnomerno
       
  
    
      
        G
        
        G
        
          /
        
        e
      
    
    {\displaystyle G\leftarrow G/e}
  

   vrati 
  
    
      
        G
      
    
    {\displaystyle G}
  

Verovatnoća p n , t {\displaystyle p_{n,t}} da ova procedura skraćivanja izbegne određen rez C {\displaystyle C} u n {\displaystyle n} -čvornom grafu je

p n , t i = 0 n t 1 ( 1 2 n i ) = ( t 2 ) / ( n 2 ) . {\displaystyle p_{n,t}\geq \prod _{i=0}^{n-t-1}{\Bigl (}1-{\frac {2}{n-i}}{\Bigr )}={\binom {t}{2}}{\Bigg /}{\binom {n}{2}}\,.}

Ovaj izraz je Ω ( t 2 / n 2 ) {\displaystyle \Omega (t^{2}/n^{2})} i postaje manji nego od 1 2 {\displaystyle {\frac {1}{2}}} oko t = 1 + n / 2 {\displaystyle t=\lceil 1+n/{\sqrt {2}}\rceil } . Verovatnoća da je grana iz C {\displaystyle 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
        )
      
    
    {\displaystyle G=(V,E)}
  
):
   ako 
  
    
      
        
          |
        
        V
        
          |
        
        <
        6
      
    
    {\displaystyle |V|<6}
  
:
       vrati minrez(
  
    
      
        V
      
    
    {\displaystyle V}
  
)
   u suprotnom:
       
  
    
      
        t
        
        
        1
        +
        
          |
        
        V
        
          |
        
        
          /
        
        
          
            2
          
        
        
      
    
    {\displaystyle t\leftarrow \lceil 1+|V|/{\sqrt {2}}\rceil }
  

       
  
    
      
        
          G
          
            1
          
        
        
      
    
    {\displaystyle G_{1}\leftarrow }
  
 skrati(
  
    
      
        G
      
    
    {\displaystyle G}
  
, 
  
    
      
        t
      
    
    {\displaystyle t}
  
)
       
  
    
      
        
          G
          
            2
          
        
        
      
    
    {\displaystyle G_{2}\leftarrow }
  
 skrati(
  
    
      
        G
      
    
    {\displaystyle G}
  
, 
  
    
      
        t
      
    
    {\displaystyle t}
  
)
       vrati min {brziminrez(
  
    
      
        
          G
          
            1
          
        
      
    
    {\displaystyle G_{1}}
  
), brziminrez(
  
    
      
        
          G
          
            2
          
        
      
    
    {\displaystyle G_{2}}
  
)}


Analiza

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

P ( n ) = 1 ( 1 1 2 P ( 1 + n 2 ) ) 2 {\displaystyle P(n)=1-\left(1-{\frac {1}{2}}P\left({\Bigl \lceil }1+{\frac {n}{\sqrt {2}}}{\Bigr \rceil }\right)\right)^{2}}

sa rešenjem P ( n ) = O ( 1 log n ) {\displaystyle P(n)=O\left({\frac {1}{\log n}}\right)} . Vreme trajanje(izvršavanja) funckije brziminrez zadovoljava

T ( n ) = 2 T ( 1 + n 2 ) + O ( n 2 ) {\displaystyle T(n)=2T\left({\Bigl \lceil }1+{\frac {n}{\sqrt {2}}}{\Bigr \rceil }\right)+O(n^{2})}

sa rešenjem T ( n ) = O ( n 2 log n ) {\displaystyle T(n)=O(n^{2}\log n)} . Kako bi se dostigla verovatnoća greške O ( 1 / n ) {\displaystyle O(1/n)} , algoritam može biti ponavljan O ( log n / P ( n ) ) {\displaystyle O(\log n/P(n))} puta, za sveukupno vreme T ( n ) log n P ( n ) = O ( n 2 log 3 n ) {\displaystyle T(n)\cdot {\frac {\log n}{P(n)}}=O(n^{2}\log ^{3}n)} . 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 ( n 2 ln 3 n ) {\displaystyle O(n^{2}\ln ^{3}n)} .

Dokaz: Pošto znamo da je P ( n ) = O ( 1 ln n ) {\displaystyle P(n)=O\left({\frac {1}{\ln n}}\right)} , stoga nakon izvršavanja ovog algoritma O ( ln 2 n ) {\displaystyle O(\ln ^{2}n)} puta, verovatnoća da se minimalni rez ne pronađe je

Pr [ neuspelo nalaženje odredjenog min-reza ] = ( 1 P ( n ) ) O ( ln 2 n ) ( 1 c ln n ) 3 ln 2 n c e 3 ln n = 1 n 3 {\displaystyle \Pr[{\text{neuspelo nalaženje odredjenog min-reza}}]=(1-P(n))^{O(\ln ^{2}n)}\leq \left(1-{\frac {c}{\ln n}}\right)^{\frac {3\ln ^{2}n}{c}}\leq e^{-3\ln n}={\frac {1}{n^{3}}}} .

Postoji najmanje ( n 2 ) {\displaystyle {\binom {n}{2}}} minimalnih rezova, otuda je verovatnoća za ne-nalaženje bilo kog minimalnog reza

Pr [ neuspelo nalaženje bilo kog min-reza ] ( n 2 ) 1 n 3 = O ( 1 n ) . {\displaystyle \Pr[{\text{neuspelo nalaženje bilo kog min-reza}}]\leq {\binom {n}{2}}\cdot {\frac {1}{n^{3}}}=O\left({\frac {1}{n}}\right).}

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 ( n 2 ) {\displaystyle O(n^{2})} vremenu u gustom grafu. Karger-Štajnov algoritam za određivanje minimalnog reza se izvršava u O ( n 2 ln O ( 1 ) n ) {\displaystyle O(n^{2}\ln ^{O(1)}n)} vremenu, što je približno gore navedenom.

Референце

  1. ^ а б Karger, Dejvid (1993). „Globalni minimalni rezovi u RNC-u i Other Posledice Jednostavnog Algoritma Za Minamalne Rezove”. Proc. 4th Annual ACM-SIAM Symposium on Discrete Algorithms. 
  2. ^ Stoer, Mechthild; Wagner, Frank (1997). „A simple min-cut algorithm”. Journal of the ACM. 44 (4): 585—591. S2CID 15220291. doi:10.1145/263867.263872. 
  3. ^ Patrignani, Maurizio; Pizzonia, Maurizio (2001), „The complexity of the matching-cut problem”, Ур.: Brandstädt, Andreas; Le, Van Bang, Graph-Theoretic Concepts in Computer Science: 27th International Workshop, WG 2001, Boltenhagen, Germany, June 14ÔÇô16, 2001, Proceedings, Lecture Notes in Computer Science, 2204, Berlin: Springer, стр. 284—295, MR 1905640, doi:10.1007/3-540-45477-2_26 .
  4. ^ Karger, David R.; Stein, Clifford (1996). „A new approach to the minimum cut problem”. Journal of the ACM. 43 (4): 601—640. S2CID 5385337. doi:10.1145/234533.234534.