Algorytmika Problemów Trudnych
Wykªad 6 Tomasz Krawczyk
krawczyk@tcs.uj.edu.pl
Kraków, semestr letni 2019/20
plan wykªadu
Techniki Konstrukcji Algorytmów Parametryzowanych i Wykªadniczych:
I Programowanie Dynamiczne.
I Zasada wª¡cze« i wyª¡cze«.
I Color Coding.
Programowanie Dynamiczne
Programowanie dynamiczne jest to technika projektowania algorytmów (zazwyczaj optymalizacyjnych) oparta na podziale zadania na podproblemy wzgl¦dem pewnych parametrów.
Z optymalnych rozwi¡za« podproblemów dla maªych parametrów mo»na otrzyma¢
rozwi¡zania dla parametrów wi¦kszych.
W odró»nieniu od techniki Dziel i Zwyci¦»aj rozwi¡zywane podproblemy nie musz¡ by¢
rozª¡czne.
Problem Drzewa Steinera
Problem Drzewa Steinera:
Wej±cie: Graf wa»ony G = (V , E) z wagami w : E → R
≥0, zbiór wierzchoªków K, rzeczywista liczba dodatnia W .
Wyj±cie: TAK wtedy i tylko wtedy, gdy istnieje podgraf spójny H grafu G taki, »e K ⊂ V (H) oraz w(H) 6 W , gdzie w(H) to sumaryczna waga kraw¦dzi w H.
Uwagi:
I Je»eli instancja problemu drzewa Steinera ma rozwi¡zanie, to istnieje
rozwi¡zanie H b¦d¡ce poddrzewem w G (rozwi¡zanie takie zwie si¦ drzewem
Steinera dla zbioru terminali K).
Drzewo Steinera Programowanie Dynamiczne
Zaªo»enie:
I Ka»dy terminal K ma stopie« 1 w grae G.
Dla ka»dego oryginalnego terminala t w grae G dodajemy nowy terminal t
0, kraw¦d¹ {t, t
0} , ustawiamy wag¦ kraw¦dzi {t, t
0} na 0, i ustawiamy
K = (K \ {t}) ∪ {t
0} . Algorytm:
Parametry: D ⊆ K, v ∈ V \ K.
Dla ka»dego D ⊆ T oraz dla ka»dego v ∈ V \ T algorytm oblicza T [D, v], gdzie:
T [D, v] = drzewo Steinera o minimalnej wadze ª¡cz¡ce wszystkie wierzchoªki ze zbioru D ∪ {v},
w kolejno±ci po rosn¡cych rozmiarach zbioru D, zgodnie z nast¦puj¡cymi reguªami:
I dla zbiorów jednoelementowych D = {t} oraz v ∈ V \ K ustaw
T [{t}, v] = dist(t, v), gdzie dist(t, v) to dªugo±¢ najkrótszej ±cie»ki z t do v w G,
I dla pozostaªych (co najmniej dwuelementowych) podzbiorów D ⊂ K ustaw:
T [D, v] = min
∅6=D0(D,w ∈V \K
T [D
0, w] + T [D \ D
0, w] + dist(v, w).
Drzewo Steinera Programowanie Dynamiczne
Mamy wykaza¢, »e:
T [D, v] = min
∅D0(D,w ∈V \K
T [D
0, w] + T [D \ D
0, w] + dist(v, w).
Wyka»emy najpierw:
T [D, v] ≥ min
∅6=D0(D,w ∈V \K
T [D
0, w] + T [D \ D
0, w] + dist(v, w).
I Niech H b¦dzie minimalnym drzewem Steinera dla zbioru D ∪ {v} o wadze T [D, v]. Zaªó»my, »e v jest korzeniem H.
I Niech w b¦dzie wierzchoªkiem z V (H), który jest najbli»ej wierzchoªka v i który ma co najmniej dwoje dzieci w H (taki wierzchoªek istnieje, gdy» terminale maj¡
stopie« 1 w G oraz |D| ≥ 2). Mo»e si¦ zdarzy¢, »e w = v.
I Niech w
0b¦dzie jednym z dzieci w w H i niech D
0b¦d¡ tymi terminalami t z D, których jedyna ±cie»ka w H prowadz¡ca z t do u zawiera w
0.
I Drzewo H dzielimy wtedy na ±cie»k¦ z v do w, drzewo Steinera o minimalnej wadze dla zbioru terminali D
0∪ { w}, drzewo Steinera o minimalnej wadze dla (D \ D
0) ∪ {w}. St¡d otrzymujemy:
T [D, v] = T [D
0, w] + T [D \ D
0, w] + dist(v, w), co dowodzi:
T [D, v] ≥ min
∅6=D0(D,w ∈V \K
T [D
0, w] + T [D \ D
0, w] + dist(v, w).
Drzewo Steinera Programowanie Dynamiczne
Mamy wykaza¢, »e:
T [D, v] = min
∅D0(D,w ∈V \K
T [D
0, w] + T [D \ D
0, w] + dist(v, w).
Pozostaªo wykaza¢, »e:
T [D, v] 6 min
∅6=D0(D,w ∈V \K
T [D
0, w] + T [D \ D
0, w] + dist(v, w).
I Powy»sza nierówno±¢ wynika st¡d, »e kraw¦dzie najkrótszej ±cie»ki z v do w, wraz z kraw¦dziami drzewa Steinera dla zbioru terminali D
0∪ { w} oraz kraw¦dziami drzewa Steinera dla zbioru terminali (D \ D
0) ∪ { w} stanowi¡
podgraf spójny zawieraj¡cy D ∪ {v}. Ich sumaryczna waga jest wi¦c wi¦ksza
b¡d¹ równa T [D, v].
Drzewo Steinera Programowanie Dynamiczne
Czas dziaªania algorytmu:
I Warto±¢ T [D, v] obliczamy iteruj¡c si¦ po wszystkich wªa±ciwych podzbiorach D oraz wszystkich wierzchoªkach z V \ K, co mo»emy zrobi¢ w czasie
2
|D|n operacji I Sumaryczny czas dziaªania algorytmu to
n
2X
D⊆K
2
|D|= 3
|K|n
2.
Wniosek:
Problem obliczania minimalnego Drzewa Steinera jest w klasie FPT je»eli parametrem
jest liczba terminali.
Zasada Wª¡cze« i Wyª¡cze«
Niech U b¦dzie zbiorem, zwanym uniwersum, za± A
1, . . . , A
nb¦d¡ podzbiorami U.
Zasada wª¡cze« i wyª¡cze« pozwala nam obliczy¢ moc zbiorów S
ni=1A
ioraz T
ni=1A
i, zgodnie z nast¦puj¡cymi wzorami:
| S
ni=1
A
i| = P
∅6=X ⊆[n]
(− 1)
|X |+1| T
i∈X
A
i|,
| T
ni=1
A
i| = P
X ⊆[n]
(− 1)
|X || T
i∈X
( U \ A
i)|, przy czym zakªada si¦, »e T
i∈X
( U \ A
i) = U dla X = ∅.
I Pierwsza z to»samo±ci dowodzona jest na Matematyce Dyskretnej.
I Druga wynika z równo±ci:
n
\
i=1
A
i= U \ [
ni=1
( U \ A
i)
i z zastosowania pierwszej to»samo±ci.
Drzewo Steinera Zasada Wª¡cze« i Wyª¡cze«
Na kolejnych slajdach poka»emy algorytm, który w czasie 2
|K|poly(n) rozwi¡»e problem drzewa Steinera w grae niewa»onym.
Algorytm korzysta z zasady wª¡cze« i wyª¡cze« oraz programowania dynamicznego.
W tym celu najpierw zdeniujemy:
I drzewa uporz¡dkowane,
I spacery rozgaª¦ziaj¡ce si¦ w grae G.
Drzewo Steinera Zasada Wª¡cze« i Wyª¡cze«
Par¦ (T , root), gdzie T jest drzewem a root wierzchoªkiem w T , nazywamy drzewem ukorzenionym z korzeniem w wierzchoªku root.
Maj¡c dane drzewo ukorzenione (T , root) w sposób naturalny wprowadzamy w drzewie T relacje bycia ojcem oraz bycia dzieckiem.
Trójk¦ (T , root, {π
v: v ∈ V (T )}), gdzie (T , root) jest drzewem ukorzenionym, za±
dla ka»dego wierzchoªka v ∈ V (T ) drzewa π
vjest liniowym porz¡dkiem dzieci v, nazywamy drzewem uporz¡dkowanym.
Niech T b¦dzie drzewem a G b¦dzie grafem. Odwzorowanie f : V (T ) → V (G) nazywamy homomorzmem z drzewa T w graf G je»eli dla ka»dej kraw¦dzi {u, v} w T , para {f (u), f (v)} jest kraw¦dzi¡ w G.
Innymi sªowy, homomorzm f z T w G mapuje wierzchoªki T w wierzchoªki G tak, »e
ka»da kraw¦d¹ z T przechodzi w kraw¦d¹ G.
Drzewo Steinera Zasada Wª¡cze« i Wyª¡cze«
Niech G b¦dzie grafem, v
0wierzchoªkiem z G, za± l liczb¡ naturaln¡.
Spacerem rozgaª¦ziaj¡cym si¦ o pocz¡tku w v
0i dªugo±ci l w grae G nazywamy par¦
(( T , root, {π
v: v ∈ V (T )}), f ), gdzie:
I ( T , root, {π
v: v ∈ V (T )}) jest drzewem uporz¡dkowanym takim, »e |E(T )| = l (drzewo t ma l kraw¦dzi i l + 1 wierzchoªków).
I f jest homomorzmem z drzewa T w graf G speªniaj¡cym warunek f (root) = v
0.
Spacery rozgaª¦ziaj¡ce po grae G mo»na wygodnie interpretowa¢ jako:
I spacery, w którym ka»dy spacerowicz (pocz¡tkowo tylko 1) mo»e si¦ dowolnie wiele razy rozdziela¢ na ka»dym etapie spaceru,
I spacery z psem na smyczy.
Drzewo Steinera Zasada Wª¡cze« i Wyª¡cze«
Spacer z psem na smyczy po grae G:
I Rozwa»my algorytm DFS dziaªaj¡cy na drzewie T , który rozpoczyna si¦ w wierzchoªku root, i w którym dzieci ka»dego wierzchoªka v drzewa T s¡
odwiedzane zgodnie z kolejno±ci¡ zadan¡ przez π
v,
I Spacer z psem to spacer po grae G b¦d¡cy obrazem dziaªania algorytmu DFS opisanego powy»ej na drzewie T .
I Dla ka»dej kraw¦dzi drzewa T algorytm DFS przechodzi przez t¦ kraw¦d¹ dokªadnie dwa razy:
I
je»eli algorytm DFS idzie od wierzchoªka v do dziecka u wierzchoªka v w drzewie T , pies przemieszcza si¦ od wierzchoªka f (v) do wierzchoªka f (u) w grae G i rozwija smycz,
I
je»eli algorytm DFS (przy wychodzeniu z rekursji) idzie od dziecka u wierzchoªka v do wierzchoªka v w T , pies przemieszcza si¦ z f (u) do f (v) i zwija smycz.
I Tym samym, pies rozpoczyna i ko«czy w v
0, biega wzdªu» kraw¦dzi G, rozwija i zwija smycz dokªadnie l razy.
Innymi sªowy:
I spacery rozgaª¦ziaj¡ce si¦ o pocz¡tku w v
0i dªugo±ci l w grae G odpowiadaj¡
spacerom z psem po grae G rozpoczynaj¡ce si¦ i ko«cz¡ce w v
0, w których
smycz jest rozwijana i zwijana dokªadnie l razy.
Drzewo Steinera Zasada Wª¡cze« i Wyª¡cze«
Zaªó»my, »e K = {v
1, . . . , v
k, v
k+1} jest zbiorem wierzchoªków terminalnych.
Obserwacja:
W grae G istnieje drzewo Steinera dla zbioru terminali K o liczbie kraw¦dzi l wtedy i tylko wtedy, gdy w G istnieje spacer z psem dªugo±ci l rozpoczynaj¡cy si¦ w v
k+1i odwiedzaj¡cy wszystkie pozostaªe wierzchoªki terminalne v
1, . . . , v
k.
Dowód:
I drzewo Steinera dla K o liczbie kraw¦dzi l mo»na w sposób oczywisty
przeksztaªci¢ w rozgaª¦ziaj¡cy si¦ spacer dªugo±ci l rozpoczynaj¡cy si¦ w v
k+1i odwiedzaj¡cy wszystkie wierzchoªki v
1, . . . , v
k,
I rozgaª¦ziaj¡cy si¦ spacer dªugo±ci l rozpoczynaj¡cy si¦ w v
k+1i odwiedzaj¡cy
wszystkie wierzchoªki v
1, . . . , v
kgwarantuje istnienie drzewa Steinera dla zbioru
{ v
1, . . . , v
k+1} liczno±ci l.
Drzewo Steinera Zasada Wª¡cze« i Wyª¡cze«
Jak sprawdzi¢, czy w grae G istnieje rozgaª¦ziaj¡cy si¦ spacer dªugo±ci l rozpoczynaj¡cy si¦ w v
k+1i odwiedzaj¡cy wszystkie wierzchoªki v
1, . . . , v
k.
Niech:
U = rozgaª¦ziaj¡ce si¦ spacery dªugo±ci l zaczynaj¡ce si¦ w v
k+1, A
i= spacery z U odwiedzaj¡ce wierzchoªek v
i.
Wtedy:
T
ki=1
A
i= rozgaª¦ziaj¡ce si¦ spacery dªugo±ci l zaczynaj¡ce si¦ w v
k+1i odwiedzaj¡ce wszystkie wierzchoªki v
1, . . . , v
k.
A zatem, problem istnienia drzewa Steinera zostaª sprowadzony do przetestowania, czy
zbiór T
ki=1A
ijest niepusty.
Drzewo Steinera Zasada Wª¡cze« i Wyª¡cze«
Korzystaj¡c z zasady wª¡cze« i wyª¡cze«:
|
\
k i=1A
i| = X
X ⊆[k]
(− 1)
|X || \
i∈X
( U \ A
i)|
moc zbioru T
ki=1A
imo»emy obliczy¢ w czasie 2
kpoly(n) o ile tylko w czasie wielomianowym od n potramy obliczy¢ moc zbioru T
i∈X( U \ A
i) dla ka»dego X ⊆ [k].
Zauwa»my, »e T
i∈X( U \ A
i) to zbiór wszystkich spacerów z psem dªugo±ci l zaczynaj¡cych si¦ w v
k+1, które nie odwiedzaj¡ wierzchoªków {v
i: i ∈ A
i} .
Innymi sªowy, s¡ to spacery rozgaª¦ziaj¡ce si¦ dªugo±ci l rozpoczynaj¡ce si¦ w v
k+1na
grae G indukowanym przez zbiór wierzchoªków V \ {v
i: i ∈ X }.
Drzewo Steinera Zasada Wª¡cze« i Wyª¡cze«
Ostatecznie, aby rozwi¡za¢ problem w czasie 2
kpoly(n) wystarczy wykaza¢, »e w czasie poly(n) mo»emy zliczy¢ rozgaª¦ziaj¡ce si¦ spacery dªugo±ci l w grae G rozpoczynaj¡ce si¦ w wierzchoªku v.
Oznaczmy przez:
T [v, l] − liczba spacerów dªugo±ci l na grae G o pocz¡tku w v.
Warto±ci T [v, l] mo»emy policzy¢ programowaniem dynamicznym. Istotnie:
I dla ka»dego v ∈ V (G) mamy T [v, 0] = 1, I dla ka»dego v ∈ V (G) oraz v ∈ V (G) mamy:
T [v, l] = X
u ∈ N(v), l
1+ l
2= l − 1
T [u, l
1] · T [v, l
2],
gdzie N(u) to zbiór s¡siadów v w G. Istotnie, ka»dy rozgaª¦ziaj¡cy si¦ spacer S dªugo±ci l rozpoczynaj¡cy si¦ w v zawiera w sobie dwa rozgaª¦ziaj¡ce si¦
spacery, pierwszy dªugo±ci l
1w pierwszym wierzchoªku odwiedzanym przez psa
innym ni» v, drugi dªugo±ci l
2rozpoczynaj¡cy si¦ w wierzchoªku v w momencie
pierwszego powrotu psa do v.
Color coding
Technika Color coding konstrukcji algorytmów parametryzowanych:
I jest szczególnie przydatna przy wyszukiwaniu pewnej maªej struktury w wi¦kszej strukturze,
I opiera si¦ na losowym kolorowaniu du»ej struktury i wykazaniu, »e z pewnym niezerowym prawdopodobie«stwem maªa struktura pokoloruje si¦ w sposób, który umo»liwi szybkie jej wyszukanie.
Uwagi:
I Algorytmy oparte na technice Color Coding, pomimo i» z natury s¡ algorytmami randomizowanymi, zazwyczaj mo»na zdezorganizowa¢ (sprawi¢, by byªy deterministyczne).
I Technika ta jest do±¢ mocna, aby wykaza¢, »e problem jest w klasie FPT.
Niestety, algorytmy, które bazuj¡ na tej metodzie w praktyce dziaªaj¡ wolno.
Najdªu»sze cie»ki w Grae
Problem Najdªu»szej cie»ki:
Wej±cie: : Graf G oraz parametr k.
Wyj±cie: : TAK wtedy i tylko, gdy w G istnieje ±cie»ka dªugo±ci k.
Problem Najdªu»szej Indukowanej cie»ki:
Wej±cie: : Graf G oraz parametr k.
Wyj±cie: : TAK wtedy i tylko, gdy w G istnieje ±cie»ka indukowana dªugo±ci k.
Problem Najdªu»szej Indukowanej cie»ki jest W[1]-trudny.
Poka»emy, »e Problem Najdªu»szej cie»ki jest w klasie FPT.
Najdªu»sza cie»ka w Grae - Color Coding
Poka»emy najpierw algorytm randomizowany dla Problemu Najdªu»szej cie»ki dziaªaj¡cy w czasie (2e)
kn
O(1).
Algorytm ten jest algorytmem Monte Carlo (z jednostronnym bª¦dem):
I je»eli w G jest ±cie»ka dªugo±ci k, algorytm odpowie TAK z prawdopodobie«stwem co najmniej
1e,
I je»eli w G nie ma ±cie»ki dªugo±ci k, algorytm zawsze odpowie NIE.
Najdªu»sza cie»ka w Grae - Color Coding
Algorytm LONGEST PATH:
I Niech (G, k) b¦dzie instancj¡ wej±ciow¡,
I Przypisz ka»demu wierzchoªkowi v ∈ V (G) kolor wylosowany w sposób jednostajny ze zbioru {1, . . . , k} = [k],
I Zwerykuj deterministycznie, czy G ma ró»nobarwn¡ ±cie»k¦: zwró¢ TAK/NIE je»eli taka ±cie»ka istnieje/nie istnieje.
Uwagi:
I Je»eli w G nie istnieje ±cie»ka dªugo±ci k, algorytm zwraca zawsze NIE.
I Poka»emy algorytm programowania dynamicznego werykuj¡cy istnienie ró»nobarwnej ±cie»ki w czasie O(2
k) n.
I Wyka»emy, »e je»eli w grae G istnieje ±cie»ka dªugo±ci k, to
prawdopodobie«stwo jej poprawnego pokolorowania jest wi¦ksze od
e1k. Prawdopodobie«stwo bª¦du jest wi¦c mniejsze od (1 −
e1k) .
I Powtarzaj¡c algorytm LONGEST PATH e
krazy, prawdopodobie«stwo bª¦du mo»emy ograniczy¢ do
1e:
P(algorytm pomyli si¦ w e
kpróbach ) 6 (1 − 1
e
k)
ek6 e
−1 ek·ek