Minsta flaskhalsspännande träd
Inom matematik är ett minimum flaskhalsspannträd (MBST) i en oriktad graf ett spännträd där den dyraste kanten är så billig som möjligt. En flaskhalskant är den högst viktade kanten i ett spännträd. Ett spannträd är ett minsta flaskhalsspännande träd om grafen inte innehåller ett spännträd med en mindre flaskhalskantvikt. För en riktad graf är ett liknande problem känt som Minimum Bottneck Spanning Arborescence (MBSA) .
Definitioner
Oriktade grafer
I en oriktad graf G ( V , E ) och en funktion w : E → R , låt S vara mängden av alla spännande träd Ti . Låt B ( Ti ) vara den maximala viktkanten för varje spännträd Ti . Vi definierar en delmängd av minsta flaskhalsspännande träd S ′ så att för varje T j ∈ S ′ och T k ∈ S har vi B ( T j ) ≤ B ( T k ) för alla i och k .
Grafen till höger är ett exempel på MBST, de röda kanterna i grafen bildar en MBST av G ( V , E ) .
Riktade grafer
En arborescens av graf G är ett riktat träd av G som innehåller en riktad väg från en specificerad nod L till varje nod i en delmängd V ′ av V \{ L } . Nod L kallas roten till arborescens. En arborescens är en spännande arborescens om V ′ = V \{ L } . MBST i detta fall är en spännande arborescens med minsta flaskhalskant. En MBST i detta fall kallas en Minimum Bottleneck Spanning Arborescence (MBSA).
Grafen till höger är ett exempel på MBSA, de röda kanterna i grafen bildar en MBSA av G ( V , E ) .
Egenskaper
En MST (eller minimum spanning tree ) är nödvändigtvis en MBST, men en MBST är inte nödvändigtvis en MST.
Camerinis algoritm för oriktade grafer
Camerini föreslog en algoritm som användes för att erhålla ett minsta flaskhalsspannträd (MBST) i en given oriktad, ansluten, kantviktad graf 1978. Den delar upp kanterna till hälften i två uppsättningar. Kanternas vikt i en uppsättning är inte mer än i den andra. Om ett spännträd finns i subgrafen som enbart består av kanter i mindre kanter, beräknar den sedan en MBST i subgrafen, en MBST för subgrafen är exakt en MBST av den ursprungliga grafen. Om ett spännträd inte finns, kombinerar det varje frånkopplad komponent till en ny supervertex, och beräknar sedan en MBST i grafen som bildas av dessa superhörn och kanter i de större kanterna. En skog i varje frånkopplad komponent är en del av en MBST i originalgraf. Upprepa denna process tills två (super) hörn finns kvar i grafen och en enda kant med minsta vikt mellan dem ska läggas till. En MBST hittas som består av alla kanter som hittats i tidigare steg.
Pseudokod
Proceduren har två ingångsparametrar. G är en graf, w är en viktuppsättning av alla kanter i grafen G .
funktion MBST(graf G , vikter w ) E ← uppsättningen kanter av G om | E | = 1 returnera sedan E annat A ← halvkanter i E vars vikter inte är mindre än medianvikten B ← E - A F ← skog av G B om F är ett spännträd returnera MBST( G B , w ) returnera annars MBST (( GA ) η , w ) { F
I ovanstående ( GA ) är η subgrafen sammansatt av superhörn (genom att betrakta hörn i en frånkopplad komponent som en) och kanter i A .
Körtid
Algoritmen körs i O ( E ) tid, där E är antalet kanter. Denna gräns uppnås enligt följande:
- uppdelning i två uppsättningar med medianfyndande algoritmer i O ( E )
- hitta en skog i O ( E )
- med tanke på halvkanter i E i varje iteration O ( E + E /2 + E /4 + ··· + 1) = O ( E )
Exempel
I följande exempel används gröna kanter för att bilda en MBST och streckade röda områden indikerar superhörn som bildas under algoritmstegen.
MBSA-algoritmer för riktade grafer
Det finns två algoritmer tillgängliga för riktade grafer: Camerinis algoritm för att hitta MBSA och en annan från Gabow och Tarjan.
Camerinis algoritm för MBSA
För en riktad graf fokuserar Camerinis algoritm på att hitta den uppsättning kanter som skulle ha sin maximala kostnad som flaskhalskostnaden för MBSA. Detta görs genom att dela upp uppsättningen av kanter E i två uppsättningar A och B och bibehålla uppsättningen T som är den uppsättning där det är känt att G T inte har en spännande arborescens, vilket ökar T med B närhelst den maximala arborescensen för G ( B ∪ T ) är inte en sträckande arborescens av G , annars minskar vi E med A . Den totala tidskomplexiteten är O ( E log E ).
Pseudokod
funktion MBSA( G , w , T ) är E ← uppsättningen kanter av G if | E − T | > 1 sedan A ← UH(ET) B ← ( E − T) − A F ← BUSH( G BUT ) om F är en spännande arborescens av G då S ← F MBSA(( G BUT ), w , T ) annars MBSA (G, w , TUB );
- T representerar en delmängd av E för vilken det är känt att GT inte innehåller någon spännande arborescens rotad vid nod "a". Till en början är T tomt
- UH tar (E−T) uppsättning kanter i G och returnerar A ⊂ (E−T) så att:
- W a ≥ W b , för a ∈ A och b ∈ B
- BUSH(G) returnerar en maximal arborescens av G rotad vid nod "a"
- Slutresultatet blir S
Exempel
Gabow och Tarjan-algoritm för MBSA
Gabow och Tarjan tillhandahöll en modifiering av Dijkstras algoritm för en källas kortaste väg som producerar en MBSA. Deras algoritm körs i O ( E + V log V ) tid om Fibonacci-hög används.
Pseudokod
För en graf G(V,E) är F en samling av hörn i V . Inledningsvis F = { s } där s är startpunkten för grafen G och c ( s ) = -∞ 1 funktion MBSA-GT( G , w, T ) 2 repeat |V| gånger 3 Välj v med minimum c ( v ) från F ; 4 Ta bort det från F ; 5 för ∀ kant( v, w ) gör 6 om w ∉ F eller ∉ Träd , lägg till w till F; 8 c ( w ) = c ( v,w ); 9 p ( w ) = v ; 10 annars 11 om w ∈ F och c(w) > c(v, w) så är 12 c ( w ) = c ( v, w ); 13 p ( w ) = v ;
Exempel
Följande exempel visar hur algoritmen fungerar.
Ett annat tillvägagångssätt som föreslagits av Tarjan och Gabow med gränsen för O ( E log * V ) för glesa grafer, där det är mycket likt Camerinis algoritm för MBSA, men snarare än att partitionera uppsättningen av kanter i två uppsättningar per varje iteration, K ( i ) introducerades där i är antalet delningar som har skett eller med andra ord iterationstalet, och K ( i ) är en ökande funktion som betecknar antalet partitionerade uppsättningar som man ska ha per iteration. K ( i ) = 2 k ( i − 1) med k (1) = 2 . Algoritmen hittar λ * där det är värdet på flaskhalskanten i vilken MBSA som helst. Efter att λ * har hittats är eventuell spännande arborescens i G ( λ * ) en MBSA där G ( λ * ) är grafen där alla dess kantkostnader är ≤ λ * .