• Nie Znaleziono Wyników

Algorytmy i Struktury Danych, 11. ¢wiczenia

N/A
N/A
Protected

Academic year: 2021

Share "Algorytmy i Struktury Danych, 11. ¢wiczenia"

Copied!
5
0
0

Pełen tekst

(1)

Algorytmy i Struktury Danych, 11. ¢wiczenia

2009-01-05

1 Plan zaj¦¢

• skojarzenia w drzewach

• skojarzenia w dwudzielnych grafach regularnych

• grafy dwudzielne: najliczniejsze skojarzenia a minimalne pokrycie wierz- choªkowe

• algorytm Prima na MST

• zadanie 21.3-4. (ci¡g operacji makeset, nd-set i union w którym wszyst- kie operacje union poprzedzaj¡ pierwsz¡ operacj¦ ndset, czas O(m) przy kompresji ±cie»ek i ª¡czeniem wedªug rangi)

• problem 21-1 z Cormena

2 Algorytmy na drzewach

Naliczniejsze skojarzenie

Mo»emy obliczy¢ nast¦puj¡ce tablice:

• OP T [v] najlepsze rozwi¡zanie dla poddrzewa o korzeniu w v,

• OP T1[v] najlepsze rozwi¡zanie dla poddrzewa o korzeniu w v, ale zakªa- damy, »e v i pewien z jego synów jest poª¡czony kraw¦dzi¡ ze skojarzenia,

• OP T2[v]  najlepsze rozwi¡zanie dla podrzewa o korzeniu w v, ale zakªa- damy, »e v i »aden z jego synów nie jest poª¡czony kraw¦dzi¡ ze skojarze- nia.

Algorytm 1: MaxMatching(v)

for x ∈ child(v) do MaxMatching(x) ;

1

sumOpt = 0;

2

for x ∈ child(v) do sumOpt = sumOpt + OP T [x];

(2)

Naliczniejszy zbiór niezale»ny

Mo»emy obliczy¢ nast¦puj¡ce tablice:

• OP T [v] najlepsze rozwi¡zanie dla poddrzewa o korzeniu w v,

• OP T1[v] najlepsze rozwi¡zanie dla poddrzewa o korzeniu w v, ale zakªa- damy, »e v nale»y do zbioru niezale»nego,

• OP T2[v]  najlepsze rozwi¡zanie dla podrzewa o korzeniu w v, ale zakªa- damy, »e v nie nale»y do zbioru niezale»nego.

Algorytm 2: MaxIndependentSet(v)

for x ∈ child(v) do MaxIndependentSet(x) ;

1

OP T1[v] = 1; OP T2[v] = 0 ;

2

for x ∈ child(v) do

3

OP T1[v] = OP T1[v] + OP T2[x];

4

OP T2[v] = OP T2[v] + OP T [x];

5

OP T [v] = max(OP T1[v], OP T2[v]);

6

3 Skojarzenia w grafach dwudzielnych (regular- nych)

Znajdowanie skojarzenie w czasie O(E4)

Ka»dej kraw¦dzi przyznajemy wag¦ w(e), pocz¡tkowo wszystkie wagi s¡

równe 1. W kolejnych krokach prawdziwe b¦d¡ nast¦puj¡ce niezmienniki:

• dla ka»dej kraw¦dzi e, 0 ≤ w(e) ≤ 4

• dla ka»dego wierzchoªka v, Pu∈adj(v)w((v, u)) = 4.

Algorytm ko«czy dziaªanie, gdy dla ka»dej kraw¦dzi w(e) ∈ {0, 4}.

Do analizy zªo»ono±ci potrzebna jest funkcja potencjaªu:

Φ =X

e∈E

w(e)2

Dodatkowo wiemy, »e Φ0= n4/2, a Φkoniec = n42/2 = m4. Po znalezieniu cyklu C = S ∪ T , potencjaª zmienia si¦ o:

X

e∈S

((w(e)+1)2−w(e)2)+X

e∈T

((w(e)−1)2−w(e)2) = |S|+|T |+2(w(S)−w(T )) ≥ |C|

(3)

Algorytm 3: Matching(G) P ← ∅;

1

M ← ∅;

2

(C, P ) ←DFS-Cycle(G, P ) ;

3

while C 6= ∅ do

4

(S, T ) ←Euler-Split(C) ;

5 if w(E[S]) ≥ w(E[T ]) then

6

(N, H) ←Redistribute-Weights(S, T, 1)

7 else

8

(N, H) ←Redistribute-Weights(T, S, 1)

9

M ← M ∪ N ;

10

G ← G − (H ∪ N );

11

(C, P ) ←DFS-Cycle(G, P ) ;

12

return M

13

Algorytm Noga Alon'a

Lemat 1 Niech H 2rregularny graf dwudzielny. Graf H mo»na podzieli¢ na dwa grafy dwudzielne H1, H2, które s¡ rregularne. Mo»na to zrobi¢ w czasie O(|E|).

Wystarczy dla ka»dej kraw¦dzi e ∈ E z m(e) ≥ 2, przenie±¢ po bm(e)/2c kopii kraw¦dzi do H1 i H2. To co zostanie w H tworzy spójne skªadowe w których mo»na obliczy¢ cykle Eulera, z ka»dego cyklu poªow¦ kraw¦dzi przeno- simy do H1, poªow¦ do H2. Zªo»ono±¢ algorytmu jest liniowa wzgl¦dem liczby rozró»nialnych kraw¦dzi.

Lemat 2 W dwudzielnym grae regularnym G, doskonaªe skojarzenie mo»na obliczy¢ w czasie O(m log m).

Niech 2tb¦dzie najmniejsz¡ pot¦g¡ 2 speªniaj¡c¡ 2t≥ m(m = kn/2). Niech α = b2t/kc, β = 2t− kα(czyli α = 2t div k, β = 2t mod k). Niech M b¦dzie dowolnym doskonaªym skojarzeniem w G (M nie musi zawiera¢ kraw¦dzi z G).

Niech H b¦dzie grafem otrzymanym z G przez zamienienie ka»dej kraw¦dzi z G przez α kopii, i dodanie β kopii kraw¦dzi z M. Tak skonstruowany graf H jest 2tregularny. Niech H1, H2 rozbicie H na grafy 2t−1regularne. Jeden z tych grafów zawiera mniej zªych kraw¦dzi (takich które powstaªy z M), dokªadniej zawiera co najwy»ej nβ/4 < nk/4 zªych kraw¦dzi. Po t krokach znajdziemy skojarzenie w H, które nie zawiera »adnych zªych kraw¦dzi. Caªkowity czas dziaªania algorytmu to O(mt) = O(m log m).

4 Pokrycie wierzcholkowe

Pokrycie wierzchoªkowe  minimalny pozbiór wierzchoªków C ⊆ V , taki, »e dla

(4)

Dowód: (przez przepªywy) Dodajemy do grafu s i t (s poª¡czone z wierz- choªkami X, t poª¡czone z wierzchoªkami Y ), wszystkie kraw¦dzie z/do s, t, maj¡ przepustowo±¢ 1, oryginalne kraw¦dzie grafowe maj¡ przepustowo±¢ ∞.

|f | = |M |, a jako minimalne pokrycie bierzemy zbiór wierzchoªków s¡siaduj¡cy z kraw¦dziami ci¦cia. 

Dowód: Niech M maksymalne skojarzenie, w takim razie |C| ≥ |M|. Nale»y jeszcze udowodni¢, »e |M| ≥ |C|.

Niech C minimalne pokrycie wierzchoªkowe, mo»na pokaza¢, »e C∩X mo»na doskonale skojarzy¢ z Y −C (C∩X i Y −C musz¡ speªnia¢ twierdzenie Hall, ina- czej mo»na pokaza¢, mniejsze minimalne pokrycie), oraz C ∩Y mo»na doskonale skojarzy¢ z X − C, co w sumie daje skojarzenie o mocy |C|. 

Twierdzenie 2 (Hall, 1935) Niech G graf dwudzielny (o zbiorach wierzchoªków X i Y ). Peªne skojarzenie wierzchoªków X istnieje wtw, |S| ≤ |N(S)| dla dowolnego S ⊆ X.

Je±li graf ma skojarzenie doskonaªe, to warunek jest speªniony.

Niech dla ka»dego S ⊆ X, |S| ≤ |N(S)|, oraz istnieje x0 ∈ X, który nie jest skojarzony. Niech Z bedzie zbiorem wierzchoªków osi¡galnych z x0 przez

±cie»ki alternuj¡ce. Poniewa» M jest najliczniejszym skojarzeniem, nie w±ród nich ±cie»ek rozszerzaj¡cych. Niech S = Z ∩ A, T = Z ∩ B. Ka»dy wierzchoªek w T jest skojarzony z pewnym wierzchoªkiem z S −{x0}, oraz ka»dy wierzchoªek z S − {x0} jest skojarzony z pewnym wierzchoªkiem z T . Wi¦c |T | = |S| − 1, ale T = N(S), st¡d |N(S)| = |S| − 1  sprzeczno±¢.

5 Algorytm Prima

Algorytm 4: MST-Prim(G, w, r) for u ∈ V do

1

key[u] = ∞;

2

π[i] = N IL;

3

key[r] = 0;

4

Q = V ;

5

while Q 6= ∅ do

6

u =Extract-Min(Q) ;

7

for v ∈ adj(u) do

8

if v ∈ Q and w(u, v) < key[v] then

9

π[v] = u;

10

key[v] = w(u, v)

11 12 13 14

(5)

6 Problem 211, Minimum oline

Dany ci¡g operacji INSERT (x) (x ∈ 1, . . . , n, ka»da warto±¢ jest dodawana co najwy»ej 1 raz). oraz EXT RACT − MIN. Nale»y obliczy¢ rezultaty poszcze- gólnych operacji EXT RACT − MIN (nale»y pami¦ta¢, »e caªy ci¡g operacji jest z góry dany).

Przykªad:

4, 8, E, 3, E, 9, 2, 6, E, E, E, 1, 7, E, 5 Rozwi¡zanie: Rozbijamy ci¡g wywoªa« na podci¡gi jednorodne:

I1, E, I2, . . . , Im, E, Im+1

Algorytm 5: O-Line-Minimum for i ∈ 1, . . . , n do

1

wyznacz j takie, »e i ∈ Kj ;

2

if j 6= m + 1 then

3

extracted[j]=i ;

4 niech l b¦dzie najmniejsz¡ warto±ci¡ wieksz¡ ni» j, dla której

5 zbiór Klistnieje ;

Kl= Kj∪ Kl (zbiór Kj zostaje zniszczone) ;

6 7 8

7 Problem oline LCA

(w nowym wydaniu Cormena, problem na numer 213)

Dane jest drzewo T , oraz ci¡g P , zapyta« postaci LCA(x, y)  pytanie o naj- ni»szego wspólnego przodka w¦zªów x i y.

Algorytm 6: LCA(u) Make-Set(u) ;

1

ancestor[Find-Set(u)]=u ;

2

for v ∈ adj(u) do

3

LCA(v) ;

4

UNION(u, v) ;

5

ancestor[Find-Set(u)]=u ;

6

color[(u)]=CZARNY ;

7

for v : {u, v} ∈ P do

8

if color[v]=CZARNY then

9

najni»szym wspólnym przodkiem u i v jest ancestor[Find-Set(v)]

10 11 12

Cytaty

Powiązane dokumenty

zbioru wierzchołków V oraz zbioru kraw dzi E⊂V×V. Graf prosty nie zawiera kraw dzi postaci {u,u} oraz pomi dzy ka d par wierzchołków istnieje co najwy ej jedna kraw d ...

Zaproponuj wydajną implementację d-kopca w tablicy i dokonaj analizy złożoności obliczeniowych operacji kolejki priorytetowej: Ini, Min, DeleteMin, Insert i DecreaseKey.. W jaki

Algorytmy i Struktury

Wstarczy tak dªugo jak drzewo zawiera w¦zeª z lewym synem, wykonujemy na nim (i lewym synie) praw¡

Dodatkowo ka»dy w¦zeª ma dodatkowy atrybut suma oznaczaj¡cy sum¦ warto±ci z

[r]

Komunikaty o bª¦dach kompilacji mo»na zobaczy¢ wykonuj¡c polecenie:. show errors

c) zapisującą do pliku tekstowego losowe struktury typu tosoba oraz znaki przejścia do nowej linii (’\n’); otwarcie i zamknięcie pliku zrealizować wewnątrz