PROBLEM STEINERJEVEGA DREVESA Računalništvo 3, 1. 6. 2010

Download Report

Transcript PROBLEM STEINERJEVEGA DREVESA Računalništvo 3, 1. 6. 2010

PROBLEM
STEINERJEVEGA
DREVESA
Računalništvo 3, 1. 6. 2010
Problem Steinerjevega drevesa


Problem Steinerjevega drevesa je
problem minimilizacije
Začetki obravnavanja tega problema
segajo v 17. stoletju Pierre Fermat;
problem je znan kot Geometrijski
Fermatov problem

Najdi točko p v trikotniku, tako da bo
vsota razdalj med p in oglišči minimalna.
Problem Steinerjevega drevesa


Kasneje s posplošitvijo Simpsonov problem
 Najdi točko p v ravnini, tako da bo vsota
razdalj med p in n podanimi točkami
minimalna.
Leta 1934 Jarnik in Kossler predstavita
podoben problem
 Najdi najkrajše drevo, ki poveže n točk v
ravnini.
Problem Steinerjevega drevesa



Courant in Robbins s kombinacijo
Fermatovega in Jarnik/Kossler-jevega
problema predstavita Steinerjev problem
Problem je poimenovan po velikem
švicarskem matematiku Jakob Steiner
[1796-1863]
Problem Steinerjevega drevesa ima
veliko načinov uporabe, kot je učinkovita
organizacija električnih omrežij,
načrtovanje večkratno usmerjenih
sistemov, planiranje instalacije omrežij...
Problem Steinerjevega drevesa
Če nam mreža predstavlja
graf G (tako, da so vozlišča
tam, kjer se sekajo navpične
in vodoravne črte).
Podmnožico T v V(G) nam
predstavljajo modro označena
vozlišča. Naša naloga je
povezati te točke tako, da bo
cena najmanjša.
Problem Steinerjevega
drevesa
Rešitev, ki je prikazana na
sliki, smo dobili z dodajanjem
vmesnih točk iz V(G). Tem
dodanim točkam rečemo
Steinerjeve točke.
Steinerjeve točke in vozlišča
iz množice T (terminali), nam
predstavljajo Steinerjevo
drevo S.
Problem Steinerjevega drevesa
Definicija problema Steinerjevega drevesa
Vhodni podatki:
Podan imamo neusmerjen graf G, teža
c : E(G)  R in množico točk T  V (G )
Naloga:
Najdi Steinerjevo drevo S za
T v G, katerega teža c(E(S)) je
minimalna.
Problem Steinerjevega drevesa

Poznamo dva posebna primera
Steinerjevega drevesa
T  V (G ) - vpeto drevo
 T  V (G) - najkrajša pot med dvema

vozliščema

Za oba primera poznamo algoritem
polinomske časovne zahtevnosti, medtem
ko je splošni poblem NP-težak
Problem Steinerjevega drevesa
Poznamo še izpeljanke problema


problem Evklidskega Steinerjevega drevesa
(tudi problem Geometrijskega Steinerjevega
drevesa)
problem Manhattanovega Steinerjevega drevesa




iščeta v mreži minimalno skupno dolžino povezav podanih točk
od osnovnega Steinerjevega problema se razlikuje v tem, da je
dovoljena uporaba le ravnih povezav
med seboj se pa razlikujeta po tem, da je v problemu
Manhattenovega dovoljena uporaba le vodoravnih in navpičnih
povezave
problem Manhattenovega Steinerjevega drevesa je zelo pomemben
za načrtovanje elektronskih komponent (VLSI vezja), ki morajo biti
povezane samo vodoravno in navpično
Dreyfus-Wagner algoritem


Dreyfus-Wagner algoritem s pomočjo dinamičnega
programiranja izračuna optimalno Steinerjevo
drevo za vse podmnožice T, začenši z množico z
dvema elementoma
Algoritem reši problem Steinerjevega drevesa
eksaktno vendar v splošnem za to potrebuje
eksponentno količino časa.
Dreyfus-Wagner algoritem

Algoritem uporablja naslednji rekurzivni formuli

Lema: Naj bo (G, c, T) problem Steinerjevega drevesa. Za
vsak U  T in x V (G ) \ U definiramo:
p(U ) : min c( E(S )) : S Steinerjevo drevo za U v G
c( E ( S )) : S Steinerjevo drevo za U  {x} v G 
q(U  {x}, x) : min 

katerega
listi
so
elementi
U



Potem imamo za vse U  V (G ), U  2 in x V (G ) \ U :
q(U  {x}, x) : min p(U '{x})  p((U \ U ' )  {x}
0U 'U


min p(U )  razdalja(G ,c ) ( x, y ) ,

y

U


p(U  {x})  min 

min
q
(
U

{
y
},
y
)

razdalja
(
x
,
y
)
( G ,c )
 yV (G ) \U



Dreyfus-Wagner algoritem
q(U  {x}, x) : min p(U '{x})  p((U \ U ' )  {x}
0U 'U
Za vse možne množice U‘, ki
so podmnožice v U, tako da U‘
ni trivialna podmnožica v U. Za
vsako podmnožico izračunamo
minimalno dolžino poti od
elementov iz U‘ in elementa x
in prištejemo minimalno dolžino
poti elemenot U\U‘ in elementa
x. Element x priključimo s
pomočjo podmnožice, ki nam
da najmanšjo vrednost.
Element x mora imeti že po
definicji več kot 2 povezavi z
elementi iz U.
Dreyfus-Wagner algoritem


min p(U )  razdalja(G ,c ) ( x, y ) ,

 yU

p(U  {x})  min 

q(U  { y}, y )  razdalja(G ,c ) ( x, y ) 
 ymin
V ( G ) \U



Vrednost poti je enaka minimumu od
(minimuma seštevka c(E(U)) in
najkrajše razdalje med elementom iz
U in elementom x) in od (minimuma
seštevka razdalje med x in y, ki ni
element U in vrednost q(U  { y}, y ) ,
ki smo jo že spoznali.
Dreyfus-Wagner algoritem


Vhodni podatki: Neusmerjeni graf G, teže c : E(G)  R in množico
T  V (G ) .
Izhodni podatki: Dolžina p(T) za optimalno Steinerjevo drevo za množico
T v G.
1. If |T| ≤ 1 then set p(T) := 0 and stop.
Izračunaj razdalja(G,c)(x,y) za vsak x, y V (G )
set p({x,y}) := razdalja(G,c)(x,y) za vsak x, y V (G )
2. For k:=2 to |T| - 1 do
For vsakU  T z |U|=k in vsak x  V (G ) \ U do:
p(U '{x})  p((U \ U ' )  {x}
Set q(U  {x}, x) : 0min
U 'U
For vsakU  T z |U|=k in vsak x  V (G ) \ U do:
min  p(U )  razdalja (G ,c ) ( x, y )

 yU

Set p(U  {x})  min 



min
q
(
U

{
y
},
y
)

razdalja
(
x
,
y
)
( G ,c )
 yV (G )\U

Dreyfus-Wagner algoritem

Dreyfus-Wagner algoritem pravilno določi dolžino za
optimalno Steinerjevo drevo v času O(3tn + 2tn2 + n3),
kjer je n=|V(G)| in t=|T|.

Dokaz: Pravilnost sledi iz leme.


Prvi del algoritma je sestavljen z reševanjem vseh parov najkrajše
poti, ki je rešljiv v O(mn + n2log(n)).
Prva rekurzija v drugem delu zahteva časovno zahtevnost O(3tn),
ker je potrebno preveriti 3t možnosti razdelitve T v U', U\U' in T\U.
Druga rekurija v drugem delu pa zahteva O(2tn2) časa.
Dreyfus-Wagner algoritem

Algoritem nam izračuna ceno za optimalno
Steinerjevo drevo za vse podmnožice T.
Algoritem nam poda točno rešitev s pomočjo
dinamičnega programiranja.

Algoritem nam vrne kot rešitev najcenejšo pot,
vendar nam ne vrne Steinerjevega drevesa, to
lahko dosežemo z nadgradnjo algoritma.
Problem Steinerjevega drevesa
Ker se ne moremo nadejati na algoritem, ki bo problem rešil
v točnem polinomskem času se upremo na
aproksimacijske algoritme, ki znajo aproksimirati problem
optimalnega Steinerjevega drevesa za T v G z
minimalnim vpetim drevesom v podgrafu metričnega
zaprtja (graf dopolnimo do polnega, povezave med
vozlišči, ki ne obstajajo, dobijo vrednost najcenejše
povezave med njimi) z G za T.
Izrek: Naj bo G povezan graf z težo c:E(G)→R+ in naj bo
(G’, c’) metrično zaprtje (graf dopolnimo, do polnega
grafa). Naj bo T≤V(G). Če je S optimalno Steinerjevo
drevo za T v G, in M minimalno vpeto drevo v G’[T] (glede
na c’), potem velja c’(E(M)) ≤2c(E(S)).
Kou-Markowsky-Berman
algoritem


1.)
2.)
3.)
Vhodni podatki: Neusmerjeni graf G,
teže c: E(G) → R+ in množico T≤V(G).
Izhodni podatki: Steinerjevo drevo S.
Izračunamo metrično zaprtje (G’, c’) in
najkrajšo pot Pst za vse s, t Є T.
Najdemo najmanjše vpeto drevo M v G’[T]
(glede na c’).
set E(S) := U{x, y}ЄE(M)E(Pxy) in V(S) := UeЄE(S)e
Dokler obstaja cikel C v S izvajaj:
izbriši katerokoli povezavo iz cikla eЄE(C) iz S
Problem Steinerjevega
drevesa
Poznamo še druge aproksimacijske algoritme, ki so
še bolj natančni. Algoritem, ki je zalo učinkovi za
izračun optimalnega Steinerjevega drevesa in je
zelo učinkovit posebaj za izračun problema
Manhattanovega Steinererjevega drevesa je razvil
Warme, Winter in Zachariasen [1999].
Problem Steinerjevega drevesa ima veliko načinov
uporabe, kot je učinkovita organizacija električnih
omrežij, načrtovanje večkratno usmerjenih
sistemov, planiranje instalacije omrežij...
Problem Steinerjevega drevesa
Zgled: imamo graf G predstavljen z mrežo in 4 točke
iz T (kot kaže spodnja slika).
Problem Steinerjevega drevesa
Vpeto drevo preko točk iz T. Skupna cena je
enaka 3x3=9
Problem Steinerjevega drevesa
Rešitev Steinerjeva drevesa s pomočjo
Steinerjevih točk, nam da skupno ceno
povezav enako 7.