1 GRAFY ZWIZANE Z WIEAMI HANOI I TRÓJKT SIERPISKIEGO 1
Wprowadzenie do kombinatoryki algorytmicznej
Wersja wst¦pna
Wojciech Rytter & Bartosz Szreder
1 Grafy zwi¡zane z wie»ami Hanoi i trójk¡t Sierpi«skiego
Mamy sobie n kr¡»ków (ka»dy o innym rozmiarze) na trzech wie»ach. Pocz¡tkowo wszystkie le»¡ na jednej wie»y, w kolejno±ci od najwi¦kszego u doªu do najwi¦kszego u góry. Trzeba je przeªo»y¢ na jak¡± inn¡ wie»¦, ale nie mo»na stawia¢ wi¦kszego kr¡»ka na mniejszym.
Ustalmy przykªadowo, »e n = 3. Konguracja to trójka (a1, a2, a3), oznaczaj¡ca poªo»e- nie tych trzech kr¡»ków (ai ∈ {1, 2, 3} dla i = 1 . . . n). Niech pocz¡tkowa konguracja b¦dzie (1, 1, 1), a ko«cowa (3, 3, 3). Budujemy graf H3 = (V, E), gdzie V zbiór konguracji, kra- w¦dzie nieskierowane to dozwolone ruchy. Wida¢, »e graf ma 3n wierzchoªków dla dowolnego n.
Problem: znale¹¢ najkrótsz¡ ±cie»k¦ z konguracji pocz¡tkowej do ko«cowej.
1.1 Zwi¡zek wie» Hanoi z trójk¡tem Pascala i trójk¡tem Sierpi«skiego Je±li nk ≡ 1 (mod 2), to wierzchoªek z trójk¡ta Pascala zostaje, w p.p. usuwamy go. Przy- datny fakt (tw. Lucasa): niech W (m) to zbiór pozycji zawieraj¡cych jedynk¦ w zapisie binarnym liczby m. Zachodzi
n k
≡ 1 (mod 2) ⇔ W (k) ⊆ W (n)
Pocz¡tkowe iteracje tworzenia trójk¡ta Sierpi«skiego.
333
133 233
123 213
223 323 313 113
221 112
321 121 212 312
311 131 232 322
111 211 231 331 332 132 122 222
Graf H3. Mo»na te» deniowa¢ rekurencyjnie Hn (dla dowolnego n > 2):
1 GRAFY ZWIZANE Z WIEAMI HANOI I TRÓJKT SIERPISKIEGO 2
Hn−1(3)
Hn−1(1) Hn−1(2)
1.1.1 dodatek: twierdzenie Lucasa
Twierdzenie 1. Niech p liczba pierwsza, m = (mr, mr−1, . . . , m0) i k = (kr, kr−1, . . . , m0) liczby zapisane w systemie liczbowym o podstawie p. Zachodzi
m k
≡
r
Y
i=0
mi ki
(mod p)
1.2 Najkrótsze ±cie»ki i cykle Hamiltona w grafach Hanoi Typy ruchów:
• α przekªadam najmniejszy kr¡»ek na nast¦pny dr¡»ek (zgodnie z ruchem wskazówek zegara)
• β przekªadam najmniejszy kr¡»ek na poprzedni dr¡»ek (przeciwnie do ruchu wskazówek zegara)
• γ inny ruch (jest wyznaczony jednoznacznie) Najkrótsza ±cie»ka
• nparzyste: αγαγαγ . . .
• nnieparzyste: βγβγβγ . . .
Jak zapiszemy ci¡g przeªo»e« kolejnych kr¡»ków, to wyjd¡ pozycje najmniej znacz¡cego za- palonego bitu w reprezentacjach binarnych kolejnych liczb od 1 do 2n− 1.
cie»ka Hamiltona β2γα2γβ2γα2γ . . . Cykl Hamiltona
ci¡g ruchów: (δγ)3, gdzie δ = (β2γα2γ)k, gdzie k tak dobrane, »eby dªugo±¢ tej scie»ki byªa 3n−1 (licz¡c odwiedzane wierzchoªki). Budowanie cyklu Hamiltona nale»y zacz¡¢ od odpowied- niego wierzchoªka nie od naro»nika, tylko od jednego z dwóch w¦zªów le»¡cych na kraw¦dzi ª¡cz¡cej dwa podgrafy Hn−1.
Uwaga Warto±¢ k w powy»szym wykªadniku nie musi by¢ caªkowita, np. dla przykªadowego H3 mamy z grubsza k ≈ 32, co przekªada si¦ na δ = β2γα2γβ2.
Dªuga ±cie»ka
Dla ka»dego 2n− 1 6 M 6 3n− 1 istnieje prosta ±cie»ka z konguracji 1+ do 3+ maj¡ca dokªadnie M konguracji (taka »e »adna konguracja si¦ nie powtarza).
Najkrótsza ±cie»ka z dowolnej konguracji
Dªugo±¢ najkrótszej ±cie»ki z konguracji (a1, a2, . . . an) do 3+ wynosi X
ai6=3
2i−1
1 GRAFY ZWIZANE Z WIEAMI HANOI I TRÓJKT SIERPISKIEGO 3
1.3 Algorytm wyznaczania nast¦pnego ruchu
Dla n-tego ruchu mo»emy znale¹¢ wie»¦ pocz¡tkow¡ i docelow¡, odpowiednio z nast¦puj¡cych wzorów:
pocz¡tkowa: (n&(n − 1)) mod 3 docelowa: ((n|(n − 1)) + 1) mod 3
Gdzie & i | to bitowe operatory AND i OR i przy zaªo»eniu, »e wszystkie kr¡»ki zaczynaj¡ na wie»y o numerze 0 i docelowo traaj¡ na wie»¦ o numerze 1 albo 2 w zale»no±ci od tego, czy liczba kr¡»ków jest parzysta czy nie.
1.4 Algorytm wyznaczania konguracji
Je±li chcemy si¦ dowiedzie¢ jaki jest ukªad kr¡»ków po n-tym ruchu, mo»emy zastosowa¢
nast¦puj¡cy algorytm. Zapisujemy n wierszy o dªugo±ciach kolejno 1 . . . n w taki sposób, »e wiersz o dªugo±ci n ma konstrukcj¦ 21 . . . 1
| {z }
n−1
, wiersz o dªugo±ci n − 1: 12 . . . 2
| {z }
n−2
itd., czyli kolejne wiersze na zmian¦:
• zaczynaj¡ si¦ dwójk¡ i s¡ dopeªniane jedynkami,
• zaczynaj¡ si¦ jedynk¡ i s¡ dopeªniane dwójkami.
Ponadto najdªu»szy wiersz zaczyna si¦ od dwójki i wiersze s¡ wyrównane do prawej strony.
Nast¦pnie zapisujemy liczb¦ n w postaci binarnej i usuwamy te wiersze, które odpowiadaj¡
bitowi zgaszonemu. Na ko«cu sumujemy warto±ci ( mod 3) pozostaªych wierszy w kolejnych kolumnach 1 . . . n i otrzymujemy ukªad kr¡»ków na wie»ach ponumerowanych kolejno 0, 1, 2.
Przykªad n = 23 = 101112
2 1
1 2 1
2 1 1 1
1 2 2 2 0
2 1 1 1 1 1
2 1 3 3 6 mod 3
2 1 0 0 0 ukªad
Drugi algorytm wyznaczania konguracji W algorytmi obliczania konguracji mamy:
a[1, 2, . . . , n] - konguracja n, wie»e 0, 1, 2, a[i] pozycja i-tego kr¡»ka Przenosimy wszystkie kr¡»ki z wie»y 0 na 2 optymalnie
bit[1, 2, . . . , n] - binarna reprezentacja m, bit[n] = najbardziej znaczacy bit Nast¦puj¡cy algorytm oblicza konguracj¦ po m ruchach
a[n] := 2bit[n];
x := a[n] − 1;
for i = n − 1 downto 1 do if bit[i + 1] = bit[i] then { x := −x; a[i] := a[i + 1]; } else a[i] := (a[i + 1] + x) mod 3
2 WICEJ NI 3 WIEE 4
2 Wi¦cej ni» 3 wie»e
Mamy n kr¡»ków i m > 4 wie»e. Algorytm Frame-Stewart:
1. Rekurencyjnie przenie± stos n − i najmniejszych kr¡»ków z pocz¡tkowej wie»y do tymcza- sowej wie»y T , u»ywaj¡c wszystkich m wie».
2. Przenie±¢ pozostaªy stos i najwi¦kszych kr¡»ków z pocz¡tkowej wie»y na docelow¡ wie»¦, u»ywaj¡c m − 1 wie» (wszystkich poza wie»¡ T ).
3. Rekurencyjnie przenie± stos n − i najmniejszych kr¡»ków z wie»y T na wie»¦ docelow¡, u»ywaj¡c wszystkich m wie».
Niech warto±¢ F S(n, m) oznacza minimaln¡ liczb¦ ruchów potrzebn¡ do przeniesienia wszyst- kich n kr¡»ków z wie»y pocz¡tkowej do wie»y ko«cowej, maj¡c do dyspozycji m wie». Korzystaj¡c z powy»szego algorytmu otrzymujemy wzór:
F S(n, m) =
( 2n− 1 dla m = 3
16p<nmin {2F S(n − p, m) + F S(p, m − 1)} dla m > 4
Problem z tym algorytmem jest taki, »e nie ma »adnego dowodu, »e dziaªa (ale wygl¡da, jakby dziaªa¢ miaª). Eksperymentalnie sprawdzono jego poprawno±¢ dla m = 4 i n 6 30.
W algorytmie Frame-Stewart obliczane jest minimalne p, dla którego opªaca si¦ wykona¢
operacj¦ przeniesienia najmniejszych n − p kr¡»ków na tymczasowy stos. Obliczanie jest wyko- nywane niejako naiwnie, poprzez szukanie minimum po kolejnych p = 1 . . . n − 1. W przypadku 4 wie» Hanoi odpowiednie p mo»na znale¹¢ bezpo±rednio.
Obserwacja 1. Dla n = 3 . . . 5 (czyli dla trzech kolejnych) mamy p = 2, dla n = 6 . . . 9 (czyli dla czterech kolejnych) mamy p = 3 itd. Warto±ci n dla pierwszych wyst¡pie« danej warto±ci p to odpowiednio 3, 6, 10, 15 . . . czyli ∆k = k+12 = k(k+1)2 dla kolejnych warto±ci k.
Twierdzenie 2. Dla n = ∆k= k+12
zachodzi F S(n, 4) = (k − 1)2k+ 1.
Dowód. Dowód indukcyjny. atwo sprawdzi¢, »e zachodzi F (∆1, 4) = 1i F S(∆2, 4) = 5, zatem jest dobrze. We¹my jakie± F S(∆i, 4)dla i > 2. Z wcze±niejszej obserwacji wynika, »e dla liczby kr¡»ków n = ∆i, ∆i + 1, . . . , ∆i+ i = ∆i+1− 1zachodzi p = i. Zatem
F S(∆i, 4) = 2 · F S(∆i− i, 4) + F S(i, 3)
= 2 · F S(∆i−1, 4) + 2i− 1
= 2 · (i − 2)2i−1+ 1 + 2i− 1
= (i − 2)2i+ 2i+ 1
= (i − 1)2i+ 1
Wniosek 1. Dla problemu 4 wie» Hanoi z liczb¡ kr¡»ków n, górne ograniczenie na liczb¦ ruchów wynosi 2c·√n.
Dolne ograniczenie na liczb¦ ruchów (z pracy Mario Szegedy)
Mario Szegedy udowodniª, »e dla 4 wie» minimalna liczba ruchów xn speªnia:
2c·
√n
6 xn6 2c0·
√n
dla pewnych staªych c, c0.
Dowód opiera si¦ na zaªo»eniu, »e pomi¦dzy konguracj¡ pocz¡tkow¡ a ko«cow¡ ka»dy kr¡-
»ek przemieszcza si¦ przynajmniej raz. Pierwsze przemieszczenie nazywamy aktywacj¡ kr¡»ka.
Dzi¦ki takiemu podej±ciu mo»na przeprowadzi¢ dowód indukcyjny po liczbie wie». Wsz¦dzie dalej zakªadamy, »e liczba kr¡»ków n > 2.
2 WICEJ NI 3 WIEE 5
2.1 Dla trzech wie»
We¹my dowoln¡ pocz¡tkow¡ konguracj¦ n kr¡»ków i sekwencj¦ ruchów S, po których ka»dy kr¡»ek jest aktywny (co nie znaczy, »e ka»dy kr¡»ek ruszyª si¦ tylko jeden raz). Powiedzmy,
»e najwi¦kszy kr¡»ek jest aktywowany w ruchu i-tym. W takim razie zarówno w ruchu (i − 1)- szym oraz (i + 1)-szym wszystkie pozostaªe kr¡»ki znajduj¡ si¦ na jednej wie»y. Podzielmy sekwencj¦ ruchów S na trzy cz¦±ci S = S1SiS2, gdzie Si oznacza ruch i-ty, S1 oznacza preks S, skªadaj¡cy si¦ z wszystkich ruchów wykonanych przed ruchem i-tym oraz S2 oznacza suks S, skªadaj¡cy si¦ z wszystkich ruchów wykonanych po ruchu i-tym.
W zale»no±ci od konguracji pocz¡tkowej, przedostatni co do wielko±ci kr¡»ek nie musi zosta¢
aktywowany przed ruchem i-tym jego pierwszy ruch mo»e wyst¦powa¢ zarówno w S1 jak i S2. Bez straty ogólno±ci przyjmijmy, »e przedostatni co do wielko±ci kr¡»ek aktywowany jest gdzie±
w S2. Oznacza to, »e sekwencja ruchów S2 zawiera rozwi¡zanie dla problemu 3 wie» Hanoi dla n − 2 najmniejszych kr¡»ków, czyli |S2| > 2n−2 (2n−2− 1 ruchów to standardowe rozwi¡zanie problemu wie» Hanoi dla n − 2 kr¡»ków, a +1 poniewa» jeszcze ruszyli±my przedostatni co do wielko±ci kr¡»ek).
Z tego wynika, »e |S| > 2n−2+ 1poniewa» S zawiera przynajmniej jeden ruch wi¦cej, ni» S2
jest to ruch i-ty. S1 mo»e by¢ puste.
Dolna granica dla problemu 4 wie»
Niech Hk0(n)b¦dzie minimaln¡ liczb¡ ruchów potrzebnych do aktywacji n kr¡»ków na k wie»ach, minimum bierzemy po wszystkich konguracjach. Wiemy »e dla 3 wie» zachodzi:
H30(n) = 2n−2+ 1
Fakt zachodzenia ( ∀ x ∈ A, y ∈ B x < y) zapisujemy jako A < B.
Stwierdzenie 1.
Je±li mamy na 4 wie»ach zbiór M1 skªadaj¡cy si¦ z m1 kr¡»ków i zbiór M2 skªadaj¡cy si¦ z m2
kr¡»ków, wszystkie kr¡»ki z M2 na tej samej wie»y, oraz M1 < M2 to aktywacja wszystkich z M2
wymaga min{H40(m1), 2m2−2} ruchów.
Dowód. Je±li w czasie aktywacji M2 wsystkie kr¡»ki z M1 staj¡ si¦ aktywne to musimy wykona¢
co najmniej H40(m1) ruchów, w przeciwnym przyp. jedne z kr¡»ków z M1 blokuje ci¡gle t¦ sam¡
wie»¦ dla M2 i do aktywacji M2 musimy wykona¢ co najmniej H30(M − 2) 6 2m2−2 ruchów.
Zacznijmy od oczywistego faktu rachunkowego.
Stwierdzenie 2.
Je±li funkcja f speªnia
∀k>1f (k) > 2 · min{f (k − 1), ∆}, f (1) = c0 > 0 to zachodzi
f (k) > min{2k· c0, ∆}
Twierdzenie 3. H40(n) > 2c·
√n dla pewnej staªej c > 0 Dowód. Ustalmy n i niech α = 8 ·√
n. Niech
f (k) = H40(k · α), ∆ = 2
√n−2
Udowodnimy, »e f, ∆ speªniaj¡ zaªo»enia Stwierdzenia 2.
Na jednej z wie» znajduje si¦ zbiór Y co najmniej α4 = 2 ·√
nspo±ród α najwi¦kszych kr¡»ków.
Poza tym mamy zbiór M1 skªadaj¡cy si¦ z (k − 1)α najmniejszych kr¡»ków. Niech M20 ∪ M200 = Y
gdzie M10 < M200 b¦dzie rozbiciem Y na dwie poªowy. Musimy uaktywni¢ M10 a nast¦pnie M100, za ka»dym razem zgodnie ze Stwierdzeniem 1 wykonujemy co najmniej min{f(k − 1), 2m2−2} ruchów. W sumie dwa razy tyle. Teraz teza wynika ze Stwierdzenia 2.
2 WICEJ NI 3 WIEE 6
2.2 Cykle Hamiltona w grae 4 wie»
Grafy dla 4 wie» s¡ skomplikowane i maj¡ du»¡ liczb¦ cykli Hamiltona.
14
44
34 24
21
11
31 41
32
22
12 42
23
33
43 13
Graf dla 2 kr¡»ków i 4 wie», graf ten ma 6 · 34= 486 cykli Hamiltona.
W ka»dym maªym K4 do cyklu Hamiltona mo»emy wybra¢ 3 lub 2 kraw¦dzie. Zacznijmy od przypadku, gdy w ka»dym K4 bierzemy po 2 kraw¦dzie (przykªad na rysunku 1). Jest a = 6 takich cykli (przykªadowy graf mo»emy odbi¢ symetrycznie lewo-prawo, dodatkowo na 3 sposoby mo»emy wybra¢, które kraw¦dzie wybierzemy z górnej K4). Teraz popatrzmy na dwie kraw¦dzie wychodz¡ce z wierzchoªka maªego K4 (np. 42-41-43). Mo»emy je ±ci¡gn¡¢ do kraw¦dzi 42-43, natomiast opuszczony wierzchoªek mo»emy odwiedzi¢ wybieraj¡c 3 kraw¦dzie w ±rodkowym K4
(mo»emy to zrobi¢ na b = 2 sposoby). W grae mo»emy ±ci¡gn¡¢ i = 0 . . . 4 kraw¦dzi, mo»emy je wybra¢ na 4i
sposobów. Zatem liczba cykli to
4
X
i=0
a ·4 i
· bi = a · (1 + b)4= 6 · 34= 486
Pozostaje pokaza¢, »e cykli nie ma wi¦cej. We¹my dowolny cykl (np. ten z rysunku 2) i rozwa»my K4, w którym wybrano 3 kraw¦dzie (np. ±rodkowe). Rozwa»my wierzchoªek 21, który nie ª¡czy K4 z reszt¡ grafu (zatem kraw¦dzie 21-24 i 21-23 nie s¡ wybrane). Teraz poka»emy,
»e kraw¦d¹ 24-23 musi by¢ wybrana do cyklu; z tego wynika, »e mo»emy dokona¢ na niej operacji odwrotnej do ±ci¡gni¦cia, zatem ka»dy cykl powstaje za pomoc¡ operacji ±ci¡gni¦cia kraw¦dzi.
Dla maªego K4 jeden z jego nie±rodkowych wierzchoªków nazwiemy typu A, je±li prowadzi do niego kraw¦d¹ cyklu, która ª¡czy K4 z reszt¡ grafu. Je±li 24-23 nie byªa wybrana, to wierz- choªki 24 i 23 musz¡ mie¢ po 2 wybrane kraw¦dzie w swoich K4, zatem wierzchoªki 34, 14, 43 i 13 s¡ typu A. Poniewa» 41 jest typu A, to albo 41-43 musi by¢ wybrana, albo 41-42-43 musz¡ by¢
wybrane. W obu przypadkach 42 nie mo»e by¢ wierzchoªkiem typu A. Analogicznie 32 nie mo»e by¢ typu A. Zatem lewy K4 ma co najwy»ej jeden wierzchoªek typu A, a to jest niemo»liwe.
2 WICEJ NI 3 WIEE 7
14
44
34 24
21
11
31 41
32
22
12 42
23
33
43 13
Rysunek 1: Przykªad cyklu Hamiltona pierwszego typu.
14
44
34 24
21
11
31 41
32
22
12 42
23
33
43 13
Rysunek 2: Cykl Hamiltona drugiego typu, który wchodz¡c do ka»dego K4 przechodzi go w caªo±ci.
2 WICEJ NI 3 WIEE 8
14
44
34 24
21
11
31 41
32
22
12 42
23
33
43 13
Rysunek 3: Przykªad innego cyklu Hamiltona.
14
44
34 24
21
11
31 41
32
22
12 42
23
33
43 13
Rysunek 4: Jeszcze inny cykl Hamiltona.
3 GENEROWANIE OBIEKTÓW KOMBINATORYCZNYCH (KOMBINACJE, PERMUTACJE. . . )9
3 Generowanie obiektów kombinatorycznych (kombinacje, per- mutacje. . . )
Niech K(n, k) podzbiór k-elementowy zbioru n-elementowego. Chcemy je generowa¢ np.
leksykogracznie, tzn. je±li zapiszemy wygenerowan¡ kombinacj¦ jako ci¡g binarny, gdzie bi = 0 oznacza nienale»enie elementu i-tego do kombinacji, a bi = 1 jego nale»enie, to generujemy wszystkie ci¡gi binarne n-elementowe o dokªadnie k zapalonych jedynkach.
Najmniejsza odlegªo±¢ Hamminga pomi¦dzy tak wygenerowanymi kombinacjami wynosi 2.
Je±li stworz¦ graf taki, »e ka»dy w¦zeª jest to»samy z jedn¡ kombinacj¡, a kraw¦dzie przebiegaj¡
mi¦dzy wierzchoªkami, mi¦dzy którymi dla ich ci¡gów odlegªo±¢ Hamminga wynosi 2, to w takim grae ±cie»ka Hamiltona wygeneruje wszystkie kombinacje. Powiedzmy, »e chcemy mie¢ jeszcze troch¦ ciekawszy graf, tzn. kraw¦dzie istniej¡ tylko pomi¦dzy tymi wierzchoªkami, »eby w ci¡gach je reprezentuj¡cych zamieniaªy si¦ tylko s¡siednie bity. Np. dla K(4, 2):
1100 1010
0110
1001
0101 0011
Jak wida¢ w takim grae nie ma cyklu Hamiltona, bo istniej¡ w¦zªy o stopniu 1. Mo»emy wi¦c szuka¢ ±cie»ki Hamiltona, ale okazuje si¦, »e ona te» istnieje tylko w niektórych grafach (poza szczególnymi przypadkami: k = 1 ∨ k = n − 1).
Lemat 1. Graf K(n, k) jest dwudzielny.
Dowód. Graf dwudzielny nie ma cykli o nieparzystej dªugo±ci. Aby wychodz¡c z jakiego± wierz- choªka v mo»na byªo do niego wróci¢, nale»y wykona¢ parzyst¡ liczb¦ zamian (czyli przej±¢
po kraw¦dziach), poniewa» ka»da zamiana zmienia o 2 odlegªo±¢ Hamminga.
Twierdzenie 4. Istnieje ±cie»ka Hamiltona w grae K(n, k) wtedy i tylko wtedy, gdy n jest parzyste i k jest nieparzyste (oprócz specjalnego przypadku k = 1 ∨ k = n − 1).
Dowód. Poni»szy dowód obejmuje konstrukcj¦ ±cie»ki Hamiltona dla grafów z podanej klasy, nie obejmuje pokazania, »e w grafach dla pozostaªych warto±ci n i k cykl Hamiltona nie istnieje.
Graf K(n, k) = G(V, E) jest dwudzielny V = V1∪ V2. Dla takich grafów |V1| − |V2| ∈ {−1, 1}. Niech K(n, k) = A(n, k) ∪ B(n, k) ∪ C(n, k) ∪ D(n, k) gdzie:
• A(n, k)indukowany przez 11(0 + 1)∗, A(n, k) ≡ G(n − 2, k − 2)
• B(n, k)indukowany przez 00(0 + 1)∗, B(n, k) ≡ G(n − 2, k)
• C(n, k)indukowany przez 10(0 + 1)∗, C(n, k) ≡ G(n − 2, k − 1)
• D(n, k)indukowany przez 01(0 + 1)∗, D(n, k) ≡ G(n − 2, k − 1)
Scie»ka Hamiltona ma posta¢ 1+0+ ∗→ 0+1+. Graf K(n, k) ma dwa wierzchoªki o stopniu 1, które b¦d¡ punktami pocz¡tkowymi/ko«cowymi ±cie»ki Hamiltona. Scie»ka Hamiltona ma posta¢
1+0+ ∗→ 0+1+.
Poniewa» podgrafy A i B s¡ izomorczne z mniejszymi grafami K, to przez indukcj¦ istnieje w nich ±cie»ka Hamiltona. Przej±cie z podgrafu A do B b¦dzie przebiega¢ przez ±cie»k¦ Hamiltona podgrafu C ∪ D. cie»ka Hamiltona przebiegaj¡ca przez A ma posta¢ 111∗0+ i ko«czy si¦
na 110+1∗, czyli zaczynamy z wszystkimi jedynkami po lewej stronie, a ko«czymy z wszystkimi poza dwoma ostatnimi po prawej. W ten sposób mo»emy przej±¢ do podgrafu C∪D. Analogicznie wychodzimy z C ∪ D do B (rysunek 5).
3 GENEROWANIE OBIEKTÓW KOMBINATORYCZNYCH (KOMBINACJE, PERMUTACJE. . . )10
11 1∗0+
11 0+1∗
10 10+1∗
01 01+0∗
00 1+0∗
00 0∗1+
Cn, k∪ Dn, k A
B
Rysunek 5: Schemat ±cie»ki Hamiltona w grae K.
Grzebie« to drzewo o maksymalnym stopniu wierzchoªka co najwy»ej 3 z dodatkow¡ wªa- sno±ci¡ wszystkie wierzchoªki stopnia 3 le»¡ na jednej ±cie»ce (±cie»ka gªówna). Je±li v jest wierzchoªkiem na ±cie»ce gªównej, to z¦bem grzebienia nazywamy najdªu»sz¡ ±cie»k¦, która prze- cina ±cie»k¦ gªówn¡ tylko raz i dokªadnie w w¦¹le v. Je±li stopie« deg(v) < 3, to z¡b skªada si¦
z pojedynczego wierzchoªka v (jest trywialny), w przeciwnym przypadku ma przynajmniej dwa wierzchoªki.
Obserwacja 2. Podgrafy C(n, k) i D(n, k) s¡ rozpinane przez grzebienie.
Poniewa» w¦zªy z podgrafu C reprezentuj¡ ci¡gi 10w, a w¦zªy z podgrafu D reprezentuj¡ ci¡gu 01w dla odpowiednich w ∈ (0 + 1)∗, to mo»emy zbudowa¢ graf z grzebieni rozpinaj¡cych C i D w taki sposób, »e istnieje kraw¦d¹ 10w ←→ 01w dla odpowiednich w i nie naruszy to wªasno±ci mówi¡cej o odlegªo±ci Hamminga równej 2 pomi¦dzy ci¡gami binarnymi reprezentowanymi przez s¡siaduj¡ce wierzchoªki.
100111 101011 110011
101101 110101 111001
101110 110110 111010 111100
011110 011101 011011 010111 001111
Rysunek 6: Przykªadowy grzebie« rozpinaj¡cy graf K(6, 4). W¦zªy ±cie»ki gªównej zaznaczone s¡ kolorem niebieskim.
4 CIGI GRAYA CIEKI HAMILTONA W KOSTCE N-WYMIAROWEJ 11
Pozostaje zatem znalezienie ±cie»ki Hamiltona od 1010+1∗ do 0101+0∗ w grae zbudowanym ze sklejonych grzebieni rozpinaj¡cych podgrafy C i D. Wierzchoªki {01, 10}10+1∗i {01, 10}01+0∗ s¡ punktami ko«cowymi grzebieni dla (odpowiednio) C i D. Algorytm generowania ±cie»ki Ha- miltona zaczyna od pierwszego punktu ko«cowego grzebienia rozpinaj¡cego C i ko«czy na dru- gim punkcie ko«cowym grzebienia D. Przechodzenie odbywa si¦ nast¦puj¡co: w danym w¦¹le v b¦d¡cym na ±cie»ce gªównej grzebienia C zejd¹ w dóª z¦ba, przejd¹ do odpowiadaj¡cego z¦ba grzebienia dla D, przejd¹ w gór¦ z¦ba do ±cie»ki gªównej D, przemie±¢ si¦ do kolejnego w¦zªa na ±cie»ce gªównej itd. a» do wyl¡dowania na punkcie ko«cowym ±cie»ki gªównej grzebienia dla D. Poniewa» mamy zaªo»enie, »e
4 Ci¡gi Graya ±cie»ki Hamiltona w kostce n-wymiarowej
Ci¡g Graya rz¦du n oznaczamy przez G(n) lista wszystkich ci¡gów binarnych dªugo±ci n, ka»dy ci¡g wyst¦puje dokªadnie raz, odlegªo±¢ Hamminga mi¦dzy kolejnymi obiektami wynosi 1 (minimalna).
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
Rysunek 7: Cykl Hamiltona w hiperkostce 4-wymiarowej. Dla czytelno±ci pomini¦to kraw¦dzie ª¡cz¡ce dwa sze±ciany (poza kraw¦dziami nale»¡cymi do cyklu).
Algorytm rekurencyjny:
G(0) = ∅; G(n) = 0 G(n − 1); 1 G(n − 1)R
Ten algorytm rekurencyjnie znajduje ±cie»ki Hamiltona w hiperkostkach coraz mniejszych wy- miarów.
Algorytm iteracyjny:
• co drugi krok (poczynaj¡c od pierwszego) zamieniamy ostatni bit,
• w pozostaªych krokach zmieniamy bit przed ostatni¡ (na prawo) jedynk¡.
Algorytm za pomoc¡ wzoru na k-ty element ci¡gu G(n) (konwertuj¡c liczby na zapisy binarne):
g(k) = k ⊕ k 2
5 GENERACJA KOMBINACJI POPRZEZ WYMIANY DWÓCH BITÓW 12
5 Generacja kombinacji poprzez wymiany dwóch bitów
Kolejne ci¡gi w kodzie Graya z k jedynkami daj¡ generacj¦ k-podzbiorów z minimalnymi zmia- nami.
G(n, k) = 0 G(n − 1, k); 1 G(n − 1, k − 1)R
Jak z tego zrobi¢ algorytm, w którym jedna iteracja jest w pami¦ci O(n) i czasie O(1)?
Opiszemy zupeªnie inny algorytm. Niech π b¦dzie ci¡giem zerojedynkowym reprezentuj¡cym k-kombinacje n elementów.
Wprowadzamy wektor aktywno±ci A[1..n]: A[i] = 1 gdy pozycja i aktywna. Oznaczmy przez last(A) ostatni¡ (najbardzej na prawo) pozycj¦ aktywn¡. Je±li takiej pozycji nie ma, to last(A) = ∅.
Niech operacja UaktywnijP o(k) oznacza uaktywnienie wszystkich pozycji wi¦kszych od k.
Algorytm Generyczny KombinacjePrzezZamiany;
π :=jakakolwiek kombinacja n po k;
U aktywnijP o(0);
repeat forever
wypisz kombinacj¦ π;
k := last(A); k = max{i : A[i] = 1}
if k = ∅ then STOP;
W ci¡gu π wymie« π[k] z przeciwnym bitem na jakiejkolwiek pozycji na prawo;
A[k] := 0;
U aktywnijP o(k);
Rozwa»amy inny algorytm, w którym wykonujemy jedn¡ zamian¦ bitów, a mi¦dzy zamienianymi pozycjami s¡ same zera. Chcemy mie¢ tak¡ sztywniejsz¡ wersj¦ poprzedniego algorytmu, w której pozycja na prawo od k, z któr¡ jest wymieniany bit jest jak najw¦»ej wyspecykowana.
Niech P ierwJed(k) oznacza pozycj¦ pierwszej jedynki w π na prawo od k, je±li na prawo nie ma jedynki to P ierwJed(k) = n + 1. ¡damy, aby algorytm speªniaª ponadto nast¦puj¡cy niezmiennik:
Niezmiennik: Na prawo od k jest co najwy»ej jeden blok jedynek, algorytm zaczyna i ko«czy si¦ w sytuacji z jednym blokiem jedyenk.
Algorytm KombinacjePrzezZamiany;
π := [1k0n−k]; UaktywnijP o(0);
repeat forever
wypisz kombinacj¦ π;
k := last(A); k := last(A); {k = max{ i : A[i] = 1}
if k = ∅ then STOP;
if π[k] = 1 then
wymie« π[k] z bitem na pozycji P ierwJed[k] − 1 else wymie« π[k] z bitem na pozycji P ierwJed[k];
A[k] := 0; UaktywnijP o(k);
6 GENERACJE PREFIKSOWE 13
Poniewa» algorytm jest dosy¢ sztywny mo»na go zaimplementowa¢ tak by jedna iteracja byªa w czasie O(1) (pami¦¢ liniowa, wektor A).
6 Generacje preksowe
Oznaczmy przez shiftk operacj¦ cyklicznego przesuni¦cia k-tego preksu, polega ona na przesuni¦ciu elementu k-tego na pocz¡tek ci¡gu.
Opiszemy kilka algorytmow generacji permutacji, kombinacji, permutacji multizbiorów, ci¡gów reprezentuj¡cych drzewa binarne. W tych algorytmach istotne b¦dzie jaki jest pierwszy obiekt (start), a czasami równie» jaki ostatni (finish).
Generacja permutacji
Oznaczmy permutacje przez π (tablica od 1 do n). W tym przypadku start = [1, 2, . . . , n].
Algorytm Permutacje;
π := [1, 2, . . . n];
k := n + 1;
repeat forever
if (k 6 n) AND (π[k] = k) then k := k − 1;
elsewypisz permutacj¦ π; k := n if k = 1 then STOP;
π := shif tk(π); Dla n = 4 algorytm wygeneruje:
1234 4123 3412 2341 3124 4312 2431 1243 2314 4231 1423 3142
2134 4213 3421 1342 3214 4321 1432 2143 1324 4132 2413 3241
Generacja kombinacji
Oznaczmy kombinacj¦ typu n, k równie» przez π (tablica od 1 do n). Jest to ci¡g zerojedynkowy maj¡cy k jedynek i n − k zer. W tym przypadku start = 1∗0∗, f inish = 1∗0∗1.
Potrzebna nam funkcja pierwszego skoku w ci¡gu, oznaczmy j¡ przez P ozSkoku(π) = min{k : π[k] > π[k − 1]lub k = |π| + 1 } gdzie |π| oznacza dªugo±¢ ci¡gu. Na przykªad P ozSkoku([1, 1, 0, 0, 1, 0, 0]) = 5
Algorytm Kombinacje π := [1k0n−k];
repeat forever
wypisz kombinacj¦ π;
k := P ozSkoku(π); if k = n then STOP;
j := min{k + 1, n}; π := shif tj(π);
6 GENERACJE PREFIKSOWE 14
Dla k = 3, n = 6 algorytm wygeneruje:
111000 011100 101100 110100 011010 101010 010110 001110 100100 110010 011001 101001 010101 001101 100101 010011 001011 000111 100011 110001
Zauwa»my, »e w pierwszym wierszu mamy suks 0, w drugim suks 1. Je±li obetniemy ostatnie zero to otrzymamy ci¡g dla n = 5, k = 3; je±li obetniemy ostatnie 1 to otrzymamy ci¡g dla n = 5, k = 2, ale zaczynaj¡cy si¦ w generacji w drugiej kombinacji.
Inaczej mówi¡c w obu przypadkach mamy rekurencj¦, z tym »e w przypadku ci¡gów z suksem 1mamy rekurencyjny ci¡g, ale cyklicznie przesuni¦ty. Zauwa»my, »e w jednej iteracji zmieniamy co najwy»ej 4 bity. Mo»na jedn¡ iteracj¦ zaimplementowa¢ tak, by dziaªala w czasie O(1) i pami¦ci O(1).
Niech −→
A oznacza ci¡g, w który, pierwszy element staje si¦ ostatnim, tzn. przykªadowo:
A −→
A 0011 0101 0101 0110 0110 1001 1001 0011
Ten algorytm rekurencyjnie generuje ci¡g binarny wszystkich kombinacji wedªug schematu Rt, s= Rt, s−10;−−−−→
Rt−1, s1. Podobne do generacji koleksykogracznej (leksykogracznej patrz¡c od ko«ca ci¡gu)
colexk, t= colexk, t−10; colexk−1, t1
6.1 Generacja ci¡gów zrównowa»onych, korzystaj¡c z shift
Tak naprawd¦ generacja pewnych ksztaªtów drzew binarnych. B¦dzie to generacja analo- giczna w pewnym sensie do kodów Graya w drzewach binarnych b¦dziemy zmienia¢ tylko staª¡
liczb¦ pointerów generuj¡c kolejny element ci¡gu. Drzewa zwykle zapisuje si¦ w postaci ci¡gu nawiasowego, tutaj zmieniamy ( na 1 i ) na 0.
Sposób reprezentacji drzewa za pomoc¡ takiego ci¡gu:
1
1 1
1 0 0
0 0
0
Przej±cie w porz¡dku preorder daje ci¡g 111000100 zawsze jest jedno zero wi¦cej. Zwykle b¦dziemy z tego zapisu odcina¢ pierwsz¡ cyfr¦ (jedynk¦ korze«) i ostatni¡ (zero skrajnie lewy li±¢), nie trac¡c »adnej informacji. B¦dziemy generowa¢ ci¡gi o takiej wªasno±ci, »e dowolny preks ci¡gu ma co najwy»ej o jedno zero wi¦cej ni» jedynek.
6 GENERACJE PREFIKSOWE 15
Algorytm Ci¡gi zrównowa»one π := [01n−10n−1];
repeat forever wypisz ci¡g π;
k := P ozSkoku(π); if k = |π| + 1 then STOP;
if shiftk+1(π)poprawny then π := shiftk+1(π); else π := shiftk(π);
Dla n = 4 algorytm wygeneruje:
0111000 1011000 1101000
0110100 1010100 0101100 1001100 1100100
0110010 1010010 0101010 1001010 0101010 1001010 1100010 1110000
W kolejnych wierszach (pomijaj¡c ostatni) mamy suksy 1000, 100, 10.
1 011 1000 2 101 1000 3 110 1000 4 0110 100 5 1010 100 6 0101 100 7 1001 100 8 1100 100 9 01100 10 10 10100 10 11 01010 10 12 10010 10 13 11000 10 14 1110000
Zauwa»my »e w jednej iteracji zmieniamy O(1) bitów. Mo»na jedn¡ iteracj¦ zaimplementaowa¢
tak by dziaªala w czasie O(1) i pami¦ci O(1).
Algorytm generuje ksztaªty drzew binarnych, dla ka»dego drzewa binarnego doª¡czamy do ka»- dego li±cia dwóch synów sztuczne dwa li±cie, oraz do ka»dego w¦zªa z jednym synem dodat- kowego sztucznego syna. Przechodzimy drzewo preorder i wypisujemy 1 gdy mamy oryginalny w¦zeª, oraz 0 gdy sztuczny. Pierwsz¡ jedynk¦ i ostatnie zero obcinamy. W ten sposób mamy odpowiednio±¢ mi¦dzy zrównowa»onymi ci¡gami i drzewami binarnymi. Operacja przesuni¦cia preskowego zmienia w drzewie O(1) pointerów typu ojciec ↔ syn.
Generacja anagramów permutacje multizbiorów
Mamy alfabet skªadaj¡cy si¦ z m liter {1, 2, . . . , m}. Przypu±¢my, »e mamy fi kopii litery i dla 1 6 i 6 m. Taki zbiór liter nazywamy multizbiorem M . Anagramem dla M jest dowolny ci¡g (sªowo) zawieraj¡ce fi razy liter¦ i dla ka»dego i. Oznaczmy przz Anag(M) zbiór wszystkich ana- gramów Chcemy wygenerowa¢ wszystkie anagramy z Anag(M) poprzez cykicznie przesuwanie preksów.
7 GWIAZDOWE GENEROWANIE PERMUTACJI 16
Niech max(M) oznacza leksykogracznie maksymalny anagram, tzn.
max(M ) = mfm(m − 1)fm−1. . . 2f21f1
Na przykªad dla M = {1, 1, 2, 3, 3, 4, 4, 4} mamy max(M) = 4 4 4 3 3 2 1 1 Niech n b¦dzie dªugo±ci¡ anagramu.
Algorytm Anagramy π := shif tn(max(M ));
repeat forever
wypisz anagram π;
k := P ozSkoku(π); if k = |pi| + 1 then STOP;
if k = n lub π[k − 1] < π[k + 1]
then π := shiftk(π) else π := shiftk+1(π)
Przykªad:
przypu±¢my, »e M = {1, 1, 2, 2, 3}. Wtedy max(M) = 3 2 2 1 1 i algorytm wygeneruje nast¦puj¡cy ci¡g anagramów:
13221 31221 23121 12321 21321 32121
13212 31212 13122 11322 31122 23112 12312 21312 12132 21132 32112 23211
22311
12231 21231 22131
12213 21213 21213 12123 11223 21123 22113 32211 W kolejnych wierszach mamy suksy 21, 2, 3211, 311, 31, 3.
7 Gwiazdowe generowanie permutacji
Rozwa»amy tylko transpozycje pewnego elementu z pierwszym, graf takich transpozycji jest gwiazd¡.
Zaªó»my, »e numerujemy pozycje permutacji π od zera. Interesuje nas generacja ci¡gu pozycji, które wymieniamy kolejno z elem. na pozycji 0. Niech En b¦dzie ci¡giem dla wygenerowania wszytkich permutacji n-elementowych. Chcemy »eby En byª preksem En+1, czyli otrzymujemy niesko«czony ci¡g E∞.
Poni»ej wypisujemy ci¡g E5 generuj¡cy wszystkie permutacje zbioru 5-elementowego. Pozycje permutacji numerujemy od zera. W i-tym kroku zaminiamy π[E5[i]] z π[0].
1 2 1 2 1 3 2 1 2 1 2 3 1 2 1 2 1 3 2 1 2 1 2 4 3 1 3 1 3 2 1 3 1 3 1 2 3 1 3 1 3 2 1 3 1 3 1 4 1 2 1 2 1 3 2 1 2 1 2 3 1 2 1 2 1 3 2 1 2 1 2 4 3 1 3 1 3 2 1 3 1 3 1 2 3 1 3 1 3 2 1 3 1 3 1 4 1 2 1 2 1 3 2 1 2 1 2 3 1 2 1 2 1 3 2 1 2 1 2
Zauwa»my, »e drugi wiersz (wyrazy od 25-ego do 48-ego) jest kopi¡ pierwszego wiersza po prze- kodowaniu
1 → 3, 2 → 1, 3 → 2
Opiszemy jak gwiazdowo generowa¢ permutacje zbioru {1, 2, . . . , n}, ci¡g E wymienianych po- zycji w trakcie algorytmu jest generowany. Oznaczmy
ρ!(k) = max{j : k | j!}
8 GENERACJA CIGÓW LYNDONA I CIGÓW DE BRUIJNA 17
Na przykªad ρ!(12) = 3, ρ!(44) = 2, ρ!(13) = 1. Wykorzystamy tablic¦ (ci¡g kontrolny) B[1 . . . n], pocz¡tkowo b¦d¡cy identyczno±ci¡.
Algorytm Generacja gwiazdowa permutacji Pocz¡tkowo B[i] = i dla ka»dego i > 1;
wyj¡tkowo numerujemy pozycje π od zera;
π := [1, 2, . . . n]; wypisz(π); for i := 1 to n! − 1 do
k := ρ!(i);
wymie« π[0] z elementem π[B[k]];
wypisz(π); En[i] := B[k];
odwró¢ kolejno±¢ elementów B[1..k − 1]
8 Generacja ci¡gów Lyndona i ci¡gów de Bruijna
Dla uproszczenia rozwa»amy tylko teksty binarne.
Sªowem (ci¡giem) de Bruijna rz¦du n jest ci¡g binarny o dªugo±ci 2n, w którym (traktowanym jako ci¡g cykliczny) ka»dy ci¡g binarny dªugo±ci n wyst¦uje dokªadnie raz.
Sªowa Lyndona sa zwartymi reprezentacjami liniowymi sªów cyklicznych. Dla sªowa x niech y b¦dzie minimalnym cyklicznym przesuni¦ciem x. Wtedy pierwiastek pierwotny z sªowa y jest sªowem Lyndona. Sªowo jest ci¡giem Lyndona wtwg.mo»e powsta¢ w ten sposób.
(Pierwiastek pierwotny y to najkrótszy preks z sªowa y taki, »e y jest naturaln¡ pot¦g¡ z.) Denicja równowa»na, sªowo jest Lyndona je±li jest leksykogracznie najmniejsze ze swoich prze- suni¦¢ cyklicznych (równowa»nie, najmniejsze ze swoich suksów).
Dla danego n przez ext(x, n) oznaczmy rozszerzenie okresowe sªowa x do dªugo±ci n, oraz przez LastZero(x) oznaczamy najdªu»szy preks sªowa x ko«cz¡cy si¦ zerem. Na przykªad
ext(00111, 13) = 00111 00111 001, LastZero(0010111) = 0010.
Nast¦puj¡cy algorytm generuje wszytkie sªowa Lyndona o dªugo±ci co najwy»ej n Algorytm FM (Fredricksona-Maiorany)
Generacja slow Lyndona;
x := '0' ; wypisz x;
while x <> '1' do
x := LastZero(ext(x,n)) ;
zamien ostatni symbol x na jedynke;
wypisz x;
Niech
L0 < L1< L2< . . . Ls
b¦dzie leks. posortowan¡ sekwencj¡ wszystkich binarnych sªów Lyndona o dªugo±ci b¦d¡cej dzielnikiem n. Niech Ln oznacza konkatenacj¦
Ln = L0· L1· L2· L3. . . Ls
8 GENERACJA CIGÓW LYNDONA I CIGÓW DE BRUIJNA 18
Przykªad. Dla n = 4 algorym FM wygeneruje:
0 0001 001 0011 01 011 0111 1 L4 = 0 0001 0011 01 0111 1 Powiemy, »e Lk jest maªe gdy |Lk| < n, w pp. jest du»e.
Z poprawno±ci algorytmu FM (Fredricksona-Maiorany) wynikaj¡ wªasno±ci:
1. L0 = 0, L1 = 0n−11, Ls−1= 01n−1, Ls = 1;
2. je±li Lk= βα oraz α zawiera zero, to β jest preksem Lk+1
3. Je±li Lk jest maªe i k > 0 to
• Lk−1 jest du»e;
• Lk−1 ko«czy si¦ co najmniej n − |Lk|jedynkami;
• Lk−1 jest bezpo±rednio wygenerowane przed Lk w algorytmie FM.
Twierdzenie Fredricksona-Maiorany (przypadek szczególny-rozgrzewka)
Je±li n jest liczb¡ pierwsz¡ to Lnzawiera (cyklicznie) ka»de binarne sªowo x dªugo±ci n.
Dowod.
Przypadek 1: x ∈ 1∗0∗. Wtedy x jest podsªowem Ls−1LsL0L1 = 1n0n.
Zaªó»my, zatem (do ko«ca dowodu) »e nie zachodzi przypadek 1. Sªowo x jest cyklicznie rów- nowa»ne pewnemu sªowu Lr (równemu minimalnemu cyklicznemu przesuni¦ciu x). Wtedy dla pewnych α, β
x = αβ, Lr = βα Ustalmy do ko«ca dowodu α, β.
Przypadek 2: (α zawiera zero.) Wtedy β jest preksem Lr+1, zatem x jest podslowem LrLr+1 którego preksem jest βαβ.
Przypadek 3: (α ∈ 1+.) Zaªó»my »e nie zachodzi przypadek 2. Wtedy β /∈ 0+. Istnieje zatem taki indeks k »e β jest preksem Lkale β nie jest preksem Lk−1. Niech γ b¦dzie preksem Lk−1 o dªugo±ci β. Zapiszmy Lk−1 = γ δ. Udowodnimy:
Fakt. δ ∈ 1+.
Dowód nie wprost.
Przypu±¢my, »e δ zawiera 0, wtedy zgodnie z algorytmem Fredricksona-Maiorany nast¦pne leksykogracznie sªowo Lyndona ma preks γ. Wiemy, »e β 6= γ. Natomiast nast¦pnym sªowem z denicji jest Lk, które ma preks β 6= γ, o tej samej dªugo±ci co γ. Sprzeczno±¢.
Z powy»szego faktu wynika »e δ = α, poniewa» s¡ to sªowa tej samej dªugo±ci skªadaj¡ce si¦ z samych jedynek. Zatem x jest podsªowem Lk−1Lk jako δβ, w konsekwencji x jest podsªowem caªego sªowa Ln(Koniec dowodu).
Twierdzenie Fredricksona-Maiorany (przypadek ogólny, dowolne n) Ln zawiera (jako sªowo cykliczne) ka»de binarne sªowo x dªugo±ci n.
Dowód
8 GENERACJA CIGÓW LYNDONA I CIGÓW DE BRUIJNA 19
Przypadek 1: x ∈ 1∗0∗.
Dowód bez zmian (w stosunku do dowodu przypadku szczególnego).
Zaªó»my, zatem (do ko«ca dowodu) »e nie zachodzi przypadek 1.
W przypadkach 2-4 zakªadamy, »e sªowo x jest pierwotne. Zakªadamy równie» »e x nie jest równe »adnemu Lr. Wtedy x jest cyklicznie równowa»ne pewnemu sªowu Lr (równemu minimalnemu cyklicznemu przesuni¦ciu x). Wtedy dla pewnych niepustych α, β
x = αβ, Lr= βα
Niech Lk b¦dzie leksykograf. pierwszym du»ym sªowem o preksie β.
Przypadek 2: (α /∈ 1+.) Dowód bez zmian.
Przypadek 3: (α ∈ 1+, Lk−1 jest du»e) Dowód bez zmian.
Przypadek 4: (α ∈ 1+, Lk−1 jest maªe.) Rozwa»amy podprzypadki A-C:
(A) (|β| < |Lk−1|) Wtedy Lk−2 jest du»ym sªowem o preksie β co przeczy temu »e Lk jest najwcze±niejsze. Zatem przypadek niemo»liwy.
(B) (Lk−1 ko«czy si¦ co najmniej |α| jedynkami) i αβ = x jest podsªowem Lk−1Lk.
(C) (Lk−1 ko«czy si¦ mniej ni» |α| jedynkami) Z denicji operacji okresowego rozszerzania wynika, »e Lk−1 jest okresem β. Jednocze±nie Lk−2 (du»e sªowo) ko«czy si¦ co najmniej n − |Lk−1| ≥ |α|jedynkami (gdy» |beta| ≥ |Lk−1|oraz |α| = n − β|). Zatem αβ = x jest podsªowem Lk−2Lk−1Lk.
Przypadek 5: (sªowo x nie jest pierwotne)
Wtedy dla pewnych k > 1, r, α, β mamy: x = (αβ)k, Lr = βα.
Je±li α /∈ 1+ to poniewa» sªowo Lr jest maªe i rozszerzenie okresowe zostaje zaburzone dopiero w sotatnim α to Lr+1 jest du»e i ma preks (βα)k−1β jako preks. Zatem x jest podsªowem LrLr+1.
Je±li α ∈ 1+to Lr−1 ko«czy si¦ na α (ma dostatecznie du»o jedynek), a poniewa» (z rozszerzenia okresowego) Lr+1 ma preks (βα)k−1 to x jest podsªowem Lr−1LrLr+1.
(Koniec dowodu)
Kilka wzorów
Niech zapisy Lyn(n), P ierw(n) oznaczaj¡ liczb¦ binarnych sªów Lyndona oraz liczb¦ sªów pier- wotnych (nierozkªadalnych) dªugo±ci n. Niech µ b¦dzie funkcj¡ Mobiusa, speªnia ona wzór reku- rencyjny:
X
d | n
µ(d) = [n = 1].
Niech φ b¦dzie funkcj¡ Eulera (ile jest liczb mniejszych od n wzgl¦dnie pierwszych z n). Przyj- mujemy φ(1) = 1.
U»ytecznym narz¦dziem kombinatoryczznym jest formuªa Mobiusa:
∀ n f (n) = X
d | n
g(d) ⇒ ∀ n g(n) = X
d | n
µ(n/d) f (d)
Mamy te» wzory:
2n = X
d | n
P ierw(d), n = X
d | n
φ(d).
9 GRAFY SZACHOWE 20
Z formuªy inwersyjnej Mobiusa i powy»szego wzoru wynikaj¡ wzory:
P ierw(n) = X
d | n
µ(n/d) 2d; Lyn(n) = 1 n
X
d | n
µ(n/d) 2d
Je±li Ln = L0· L1 · L2· L3. . . Ls jest rozkªadem na sªowa Lyndona o dªugo±ci dziel¡cej n to oznaczmy ||Ln|| = s + 1.Inaczej mówi¡c ||Ln|| jest liczb¡ sªów dªugo±ci n cyklicznie nierówno- wa»nych (liczba naszyjników binarnych z dokªadno±ci¡ do obrotu). Korzystaj¡c z poprzenich wzorów mo»na udowodni¢, »e:
||Ln|| = 1 n
X
d | n
φ(n/d) 2d.
Na przykªad:
Lyn(6) = 9, Lyn(3) = 2, Lyn(2) = 1, Lyn(1) = 2
|L6| = Lyn(1) + Lyn(2) + Lyn(3) + Lyn(6) = 14.
|L6| = 1
6 (φ(1) 26+ φ(2) 23+ φ(3) 22+ φ(6) 21) = 1
6 (1 · 26+ 1 · 23+ 2 · 22+ 2 · 21).
Sªuszno±¢ tych wzorów mo»na prz±ledzi¢ na przykªadzie:
L6 = 0 000001 000011 000101 000111 001 001011 001101 001111 01 01010111 011 011111 1
9 Grafy szachowe
Rozwa»amy grafy pi¦ciu gur szachowych: S skoczek, K Król, H hetman, W Wie»a, G
goniec Przez Fn,m oznaczmy graf gury F na szachownicy n × m, gdy n = m b¦dziemy pisa¢
Fn. Zajmiemy si¦ (mi¦dzy innymi) liczeniem nast¦puj¡cych parametrów dla grafów szachowych:
• γ(G) liczba dominacji grafu G, minimalna liczba gur które bij¡ wszystkie pola;
• α(G) liczba niezale»no±ci, maksymalna liczba gur które si¦ nawzajem nie bij¡;
• ω(G) liczba klikowa (rozmiar najliczniejszej kliki);
• χ(G) liczba chromatyczna grafu G.
Poza tym zajmiemy si¦ istnieniem cyklu (±cie»ki) Hamiltona.
Graf hetmana
Mamy 92 zbiory niezale»ne rozmiaru 8 w grae hetmana H8. Nie ma ogólnego wzoru na liczb¦
zbiorów niezale»nych w Hn, natomiast ogólnie zachodzi:
α(Hn) = n dla n > 5
Uzasadnienie: Poni»sze rysunki pokazuj¡, »e mo»emy dla n > 6 rozmie±ci¢ n hetmanów na- wzajem niezale»nych. Nast¦pnie zauwa»my, »e przek¡tne s¡ wolne, zatem mo»na rozszerzy¢
na szachownic¦ o boku o jeden wi¦kszym.
Wariacje problemu niebij¡cych si¦ hetmanów.
Na cylindrycznej szachownicy 8 × 8 o±miu niezale»nych hetmanów si¦ nie ustawi.
Niech HS b¦dzie skrzy»owaniem skoczka z hetmanem, wtedy na szachownicy 8 × 8 nie ma 8 niezale»nych gur HS, natomiast na szachownicy 10 × 10 mo»na ustawi¢ 10 takich niezale»nych (niebij¡cych si¦) gur HS.
9 GRAFY SZACHOWE 21
Rysunek 8: Schemat ustawienia n niezale»nych hetmanów dla szachownicy o boku 6k lub 6k + 4.
Rysunek 9: Schemat dla szachownicy o boku 6k + 2.
Zajmiemy si¦ teraz liczb¡ dominacji γ(n) = γ(Hn), dla maªych warto±ci mamy γ[2 . . . 13] = [1, 1, 2, 3, 3, . . .]
Niech diag(n) b¦dzie minimaln¡ liczb¡ hetmanów, które dominuj¡ szachownic¦ n × n i które s¡ tylko na gªównej przek¡tnej. Mówimy »e zbiór liczb naturalnych X jest jedno-parzysty, gdy elementy X s¡ tej samej parzysto±ci. X jest bez±rodkowy je±li
∀a, b∈X a 6= b ⇒ a + b 2 ∈ X/
Niech mid(n) b¦dzie moc¡ maksymalnego jednoparzystego i bez±rodkowego podzbioru [n]. Za- chodzi nast¦puj¡cy fakt:
diag(n) = n − mid(n)
Zauwa»my, »e γ(n) = diag(n) dla n 6 9, natomiast diag(10) > γ(n).
Nie potramy policzy¢ szybko warto±ci γ(n), natomiast mamy konstrukcj¦, która przybli»a do- brze warto±¢ γ.
1
2(n − 1) 6 γ(n) 6 2 3n
+ n mod 3
9 GRAFY SZACHOWE 22
Uzasadnienie.
• Górna granica: mo»emy zaªo»y¢, »e n podzielne przez 3. Dzielimy plansz¦ na 9 takich samych cz¦±ci, w lewej dolnej cz¦±ci umieszczamy n3 hetmanów nast¦puj¡co: jeden w dol- nym lewym rogu, pozostaªe na gªównej odwrotnej przek¡tnej przesuni¦tej o jeden w gór¦.
W prawej górnej cz¦±ci umieszczamy hetmany na gªównej odwrotej przek¡tnej.
• Dolna granica: argument kombinatoryczny, rachunki.
Liczba chromatyczna Wiadomo, »e 8 6 χ(H9) 6 9, tzn. istnieje kolorowanie za pomoc¡ 9 kolorów, patrz rysunek. Czy istnieje za pomoc¡ 8? Oczywi±cie 8 to dolna granica. Prawdopo- dobnie (ale nie wiadomo na pewno)
χ(Hn) ∈ {n, n + 1, n + 2}
6 3 7 3 1 5 9 4 9 1 5 8 4 7 3 2 5 4 9 7 3 2 6 8 2 7 3 4 6 1 5 9 3 6 2 5 7 9 4 1 7 5 1 9 2 3 8 6 1 9 4 7 8 6 2 3 8 3 6 2 9 4 1 5
Rysunek 10: Kolorowanie grafu hetmana na szachownicy 8 × 8 za pomoc¡ 9 kolorów.
Dwa niezale»ne hetmany Ustawiamy dwa hetmany losowo na szachownicy n × n. Niech pn oznacza prawdopododobie«stwo, »e si¦ nie atakuj¡. Wtedy lim pn = 13. A co z trzema hetmanami?
Graf skoczka
Mamy α(Sn, n) =n
2
. Natomiast nie ma sensownego wzoru na γ(Sn, n).
S
S S S S
S
S S S
S S S
Rysunek 11: γ(S8) = 12
Zajmiemy si¦ istnieniem i konstrukcj¡ cyklu Hamiltona w Sn, m.
Twierdzenie 5 (Schwenk). Zaªó»my m 6 n. Wtedy istnieje cykl Hamiltona na Sn, m wtedy i tylko wtedy gdy nie zachodzi »aden z nast¦puj¡cych warunków.
1. n 6 2 lub m 6 2;
10 RELOKACJA (PRZESUWANIE) NA GRAFIE - UOGÓLNIENIE GRY PITNASTKA23
2. n, m obie nieparzyste;
3. m = 3, n < 10;
4. m = 4.
Dowód. Je±li m 6 2, to szachownica nie jest do±¢ szeroka na istnienie cyklu z niektórych wierzchoªków grafu skoczka wychodzi tylko jedna kraw¦d¹. Punkt (2) jest oczywisty je±li obie wspóªrz¦dne szachownicy s¡ nieparzyste, to ª¡czne pole te» jest nieparzyste. A poniewa» graf skoczka jest dwudzielny (przeskoki pomi¦dzy czarnymi i biaªymi polami), to nie mo»e istnie¢
cykl o dªugo±ci nieparzystej.
Udowodnienie nieistnienia cyklu Hamiltona dla pozostaªych z wy»ej wymienionych przypad- ków jest nietrywialne.
Reszta dowodu jest konstruktywna polega na konstrukcji cyklu w czasie liniowym je±li istnieje.
Jeden dowód Parberry'ego (ale tylko dla parzystych n, m) poprzez dzielenie na cztery (prawie)
¢wiartki. Drugi dowód z oryginalnej pracy Schwenka przez dodawania 4 kolumn lub czterech wierszy.
Mamy 9862 cykli na S6 oraz 13 267 364 410 532 cykli na S8.
Twierdzenie 6. Na szachownicy skoczka m × n b¦d¡cej torusem zawsze jest cykl Hamiltona.
Twierdzenie 7. Na szachownicy skoczka m×n (n kolumn) b¦d¡cej cylindrem (ostatnia kolumna s¡siaduje z pierwsz¡) jest cykl Hamiltona wtw. gdy nie zachodzi zaden z warunków:
1. m = 1 oraz n > 1
2. m ∈ {2, 4} oraz n parzyste Graf króla
Mamy
γ(Kn, n) = n + 2 3
W szczególno±ci
γ(K7) = γ(K8) = γ(K9) = 0 Równie» ªatwo si¦ liczy α(Kn, n) i χ(Kn, n).
10 Relokacja (przesuwanie) na grae - uogólnienie gry Pi¦tnastka
Mamy plansz¦ n × n, oznaczamy j¡ przez Gn. Graf Gn jest gridem rz¦du n. W prawym dolnym rogu jest puste pole, pozotaªe zawieraj¡ liczby od 1 do n2− 1. Konguracja jest permutacj¡ π tych liczb. Z jednej konguracji mo»emy przej±¢ do innej przesuwaj¡c liczb¡ na s¡siednie wolne pole.
Twierdzenie 8. Z konguracji π mo»emy otrzyma¢ konguracj¦ identyczno±ciow¡ wtedy i tylko wtedy, gdy π ma znak dodatni (parzysta liczba transpozycji, permutacja parzysta). Je±li mo»na otrzyma¢, to wystarczy i czasami trzeba Θ(n3) ruchów.
S¡ dwa dowody tego faktu, oba konstruktywne. Jeden Aarona Archera, drugi Parberry'ego, z tym »e ten drugi sprowadza problem do n = 3 i wtedy korzysta z dowodu Aarona Archera.
R.M. Wilson uogólniª ten probem na dowolne grafy nieskierowane. W dowodzie Aarona Archera korzystamy z nast¦puj¡cego faktu kombinatorycznego.
Twierdzenie 9. Zbiór wszystkich permutacji cyklicznych postaci (k, k + 1, k + 2) generuje do- kªadnie zbiór wszystkich permutacji parystych zbioru [n].
10 RELOKACJA (PRZESUWANIE) NA GRAFIE - UOGÓLNIENIE GRY PITNASTKA24
10.1 notatki z wykªadu Marka Cygana
Twierdzenie 10 (Wilson). Je±li G jest prostym grafem dwuspójnym, ró»nym od cyklu oraz ró»nym od grafu Θ0:
to ka»d¡ permutacj¦ parzyst¡ da si¦ osi¡gn¡¢. Gdy graf jest niedwudzielny, to mo»na wszystkie permutacje.
Mamy graf G (ró»ny od cyklu i ró»ny od Θ0) etykietowany {1, . . . , n − 1} ∪ {∅}. Γ(x) zbiór permutacji powstaªych z marszrut z x do x. Zbiór ten stanowi pewn¡ podgrup¦ grupy permutacji:
• ª¡czno±¢ zªo»enie marszrut (P1◦ P2) ◦ P3 = P1◦ (P2◦ P3),
• element odwrotny: marszruta odwrotna (zapuszczona do tyªu).
• element neutralny: pusta marszruta.
Poj¦cia
• G graf dwuspójny. Niech β(G) = m − n + 1. Je±li β(G) = 1, to graf jest cyklem. Je±li β(G) = 2, to graf jest Θ-grafem. Dla β(G) > 3 krok indukcyjny.
• ci¡gni¦cie (zwini¦cie ªa«cuchow kraw¦dzi w pojedyncze kraw¦dzie) grafu G w graf G0 (potencjalnie dostaniemy multigraf):
przed po
ci¡gni¦cie Θ-grafu to
ci¡gni¦cie grafu dla β = 3:
Lemat 2. Niech G0 ±ci¡gni¦ty dwuspójny graf o β(G) > 3. Istnieje kraw¦d¹ w G0, po usuni¦ciu której graf pozostaje dwuspójny oraz jest ró»ny od Θ0 po rozci¡gni¦ciu.
Grupa H dziaªaj¡ca na zbiorze X jest tranzytywna, je±li potra przeprowadzi¢ ka»dy element na ka»dy element. Grupa Γ(x) dziaªaj¡ca na V \{x} jest tranzytywna, je±li umiemy wstawi¢ ka»dy element V \{x} pojedynczo wsz¦dzie.
Twierdzenie 11. Γ(x) jest tranzytywna ⇔ gdy graf G jest dwuspójny.
10 RELOKACJA (PRZESUWANIE) NA GRAFIE - UOGÓLNIENIE GRY PITNASTKA25
Grupa H dziaªaj¡ca na zbiorze X jest 2-tranzytywna, je±li potra przeprowadzi¢ dowoln¡
par¦ ró»nych elementów z X na dowoln¡ par¦ ró»nych elementów z X.
Lemat 3. Rozwa»my zbiór X, |X| > 3; we¹my dowolne u, v ∈ X. Zbiór 3-cykli postaci (uvx) dla x ∈ X\{u, v} generuje alt(X) permutacje parzyste.
Lemat 4. Niech Σ b¦dzie zbiorem 3-cykli na zbiorze X |X| > 3. Oznaczmy przez Σ∗ grup¦
generowan¡ przez Σ. Nastepuj¡ce warunki s¡ równowa»ne:
1. Σ∗= alt(X)
2. Σ∗ jest tranzytywna
Lemat 5. Niech H b¦dzie 2-tranzytywn¡ grup¡ permutacji (niekoniecznie wszystkich permutacji!
mo»e by¢ podzbiór permutacji, które stanowi¡ grup¦), która zawiera co najmniej jeden 3-cykl.
Wtedy alt(X) ⊆ H.
Z powrotem do kroku indukcyjnego twierdzenia pocz¡tkowego Mamy graf G, dwu- spójny, β(G) > 3. Z którego± lematu dostajemy ucho do usuni¦cia (ªa«cuch pomi¦dzy dwoma wierzchoªkami x, y ∈ V ), otrzymuj¡c graf H. Wiemy, »e graf H jest dwuspójny, β(H) > 2, H jest ró»ny od Θ0 (z zaªo»enia), zatem mo»emy skorzysta¢ z zaªo»enia indukcyjnego: mamy permutacje parzyste w H, czyli mamy 3-cykl.
Nasza para (y, z), gdzie z to dowolny wierzchoªek w H ró»ny od x i y. Bierzemy (a, b):
• bwsadzamy na z,
• je±li a jest na uchu, to kr¦cimy cyklem, a traa do y
• w p.p. a jest w G, to umiemy przeªo»y¢ (z, a) na (z, y), bo z zaªo»enia indukcyjnego H jest 2-tranzytywna
10.2 Algorytm rozwi¡zywania pi¦tnastki rozmiaru 3 × 3
Idea algorytmu opiera si¦ na zdeniowaniu 5 operacji, b¦d¡cych ci¡gami elementarnych ru- chów, jakie mo»na wykonywa¢ przesuwaj¡c s¡siedni element na puste pole. Z operacji tych zostanie zbudowane rozwi¡zanie postawionego problemu. Poni»szy diagram przedstawia jak po- szczególne operacje zmieniaj¡ stan ªamigªówki:
1. operacja A1 a b c d e f g h 0
⇒
a e f
d b c
g h 0
2. operacja B1 a b c d e f g h 0
⇒
a c b
d f e g h 0
3. operacja A2 a b c d e f g h 0
⇒
a b c g h f d e 0
4. operacja B2 a b c d e f g h 0
⇒
a b c e d f h g 0
5. operacja C a b c d e f g h 0
⇒
a c b d e f h g 0
10 RELOKACJA (PRZESUWANIE) NA GRAFIE - UOGÓLNIENIE GRY PITNASTKA26
Operacje A2 i B1 s¡ symetryczne do (odpowiedno) A1 i B1. Zauwa»my, »e za pomoc¡ operacji A1, B1, A2 i B2 mo»emy przesun¡¢ dowolny klocek z prawego górnego kwadratu 2 × 2 do lewego dolnego kwadratu 2 × 2 i odwrotnie. Jest tak, poniewa» zªo»enie operacji A1 i B1 powoduje cykliczne obracanie elementów w prawym górnym kwadracie 2 × 2, a zªo»enie operacji A2 i B2 powoduje analogiczny skutek w lewym dolnym kwadracie 2×2. W takim razie, dowolny element z prawego górnego kwadratu 2×2 mo»emy przenie±¢ w miejsce o wspóªrz¦dnych (2, 2) za pomoc¡
ci¡gu operacji A1 i B1. Analogicznie mo»emy robi¢ z lewym dolnym kwadratem 2×2 i operacjami A2 i B2. Algorytm skªada si¦ z nast¦puj¡cych kroków:
1. Przesuwamy klocek z numerem jeden w lewy górny róg i wracamy pustym miejscem w prawy dolny róg.
2. Mamy nast¦puj¡c¡ sytuacj¦: 1 b c d e f
g h 0 Korzystaj¡c z operacji A1, B1, A2 i B2 przerzu- camy elementy z prawego górnego kwadratu 2 × 2 do lewego dolnego kwadratu 2 × 2 i od- wrotnie, tak aby uzyska¢ w prawym górnym kwadracie 2×2 elementy ze zbioru {2, 3, 5, 6}, a w lewym dolnym kwadracie 2 × 2 elementy ze zbioru {4, 5, 7, 8}. Zauwa»my, »e w ta- kim ukªadzie elementów na pozycji o wspóªrz¦dnych (2, 2) musi znajdowa¢ si¦ element o warto±ci 5.
3. Zauwa»my, »e prawy górny kwadrat 2 × 2 mo»e mie¢ jedn¡ z sze±ciu postaci:
2 3
5 6 6 2
5 3 3 6
5 2 2 65 3 3 2
5 6 6 3
5 2
Trzy górne mo»liwo±ci wymagaj¡ parzystej liczby zamian elementów, a trzy dolne wyma- gaj¡ nieparzystej liczby zamian do osi¡gni¦cia porz¡dku (2, 3, 5, 6). Zauwa»my, »e mo»emy przechodzi¢ cyklicznie mi¦dzy trzema górnymi stanami stosuj¡c kilkakrotnie poni»sze ruchy (nazwijmy je operacj¡ D):
1 2 3 d 5 6 g h 0
⇒
1 2 3 d 5 6 g 0 h
⇒
1 2 3 d 0 6 g 5 h
⇓ 1 3 6
d 2 0 g 5 h
⇐
1 3 0 d 2 6 g 5 h
⇐
1 0 3 d 2 6 g 5 h
⇓ 1 3 6 d 0 2 g 5 h
⇒
1 3 6 d 5 2 g 0 h
⇒
1 3 6 d 5 2 g h 0
Analogicznie mo»na przechodzi¢ mi¦dzy dolnymi stanami. Symetryczna sytuacja ma miej- sce w lewym dolnym kwadracie 2 × 2. Zauwa»my, »e mamy cztery mo»liwe przypadku:
I. W prawym górnym kwadracie 2 × 2 jest parzysta permutacja i w lewym dolnym kwadracie 2 × 2 jest parzysta permutacja.
II. W prawym górnym kwadracie 2 × 2 jest parzysta permutacja i w lewym dolnym kwadracie 2 × 2 jest nieparzysta permutacja.
11 SKOJARZENIA I SYSTEMY RÓNYCH REPREZENTANTÓW 27
III. W prawym górnym kwadracie 2 × 2 jest nieparzysta permutacja i w lewym dolnym kwadracie 2 × 2 jest parzysta permutacja.
IV. W prawym górnym kwadracie 2 × 2 jest nieparzysta permutacja i w lewym dolnym kwadracie 2 × 2 jest nieparzysta permutacja.
W takim razie w przypadkach II i III ukªadanka nie ma rozwi¡zania, poniewa» permutacja dla caªego kwadratu 3 × 3 jest nieparzysta. W przypadku I mo»emy doprowadzi¢ prawy górny kwadrat 2 × 2 do porz¡dku (2, 3, 5, 6) za pomoc¡ operacji D i lewy dolny kwadrat do porz¡dku (4, 5, 7, 8) za pomoc¡ operacji symetrycznej do D. W przypadku IV stosu- jemy operacj¦ C, która zmienia parzysto±¢ permutacji w prawym górnym kwadracie 2 × 2 i w lewym dolnym kwadracie 2 × 2, daj¡c w efekcie przypadek I. Ostatecznie osi¡gamy ukªadank¦ uªo»on¡ w porz¡dku (1, 2, 3, 4, 5, 6, 7, 8).
11 Skojarzenia i systemy ró»nych reprezentantów
G = (V, E) graf. M ⊆ V to skojarzenie, jesli »adne dwie kraw¦dzie w M nie maj¡ wspól- nego ko«ca. Zwykle szukamy najwi¦kszego skojarzenia. Skojarzenie, które pokrywa wszystkie wierzchoªki to skojarzenie doskonaªe.
11.1 System Ró»nych Reprezentantów
I = hS1, S2, . . . , Smi rodzina, niepustych sko«czonych zbiorów. Niech I0 ⊆ I, oznaczmy przez SI0 podsystem hSi: i ∈ I0i. Przez SI0 ∪ SI00 oznaczmy podsystem hSi: i ∈ I0 ∪ I00i. Podsystem SI0 jest krytyczny gdy | Pi∈I0 Si| = |I0|. Czy istnieje taki wektor ha1, . . . , ami parami ró»nych elementów, »e ai ∈ Si dla i = 1, . . . , m?
Twierdzenie 12 (Hall). Rodzina zbiorów I posiada SRR gdy speªniony jest tzw. warunek Halla:
(∀I0⊆I)
X
i∈I0
Si
>
I0 . Fakt.
1. Je±li dwa podsystemy s¡ krytyczne to ich suma te».
2. Je±li system speªnia warunek Halla oraz krotno±¢ ka»edgo elementu jest 1, to wybieraj¡c dowolny element z ka»dego zbioru otrzymujemy SRR (system ró»nych reprezententów).
Dowód. Udowodnimy, »e je±li system hS1, S2, . . . Sni speªnia warunek Halla, oraz a ∈ S1 ∩ S2, to system speªnia warunek Halla po usuni¦ciu a z S1 lub a z S2. Przypu±¢my, »e tak nie jest.
Przykªadowo, niech
|S1− a, S3, S4, S5, S6| < 5, |S1− a, S3, S4, S7, S8| < 5 Wtedy podystemy hS3, S4, S5, S6i, hS3, S4, S7, S8i s¡ krytyczne oraz
S1− a ⊆ S3∪ S4∪ . . . ∪ S8
No ale na mocy wcze±niejszego faktu mamy, »e moc sumy podsystemów hS3, S4, S5, S6i, hS3, S4, S7, S8i jest mniejsza równa 6 (suma indeksów), nawet jak dodamy element a to |S1∪S2. . . S8| 6 6+1 = 7, co przeczy oryginalnemu zaªo»eniu o warunku Halla. Zatem system sprowadza si¦ do rodziny zbiorów, w której ka»dy element wyst¦puje tylko raz, a zatem system posiada SRR.
12 NAJLICZNIEJSZE SKOJARZENIE 28
Mo»na to rozumowanie wyrazi¢ algorytmem niewielomianowym:
Algorytm
Zakªadamy, »e zachodzi warunek Halla;
while istnieje element a nale»¡cy do dwóch ró»nych zbiorów do usu« a z jednego z tych dwóch zbiorów tak aby warunek Halla zachodzil (to jest zawsze mo»liwe)
Usu« z ka»dego zbioru wszystkie elementy poza jednym dowolnym elementem wypisz otrzymany system jako SRR dla wej±ciowego systemu.
11.2 Oszacowania na liczb¦ SRR
Zaªó»my, »e mini|Si| = t i speªniony jest warunek Halla.
Teza 1. I posiada
t! SRR gdy t 6 m
t!
(t−m)! SRR gdy t > m 11.3 Grafy regularne
G = (V, E) dwudzielny, regularny stopnia ∆ > 3. Chcemy znale¹¢ skojarzenie doskonaªe.
algorytm
• przypisz ka»dej kraw¦dzi w grae wag¦ 1
• while podgraf rozpi¦ty na kraw¦dziach z dodatnimi wagami nie jest lasem do
C := dowolny cykl (elementarny)
M1, M2 doskonaªe skojarzenia na C
if waga M1 > waga M2then od wagi ka»dej kraw¦dzi z M1odejmij 1, do wagi ka»dej kraw¦dzi z M2 dodaj 1
else symetrycznie odejmujemy z M2 i dodajemy do M1
Niezmiennik p¦tli: suma wag kraw¦dzi wychodz¡cych z wierzchoªka wynosi ∆.
12 Najliczniejsze skojarzenie
G = (V, E) graf prosty, spójny. M ⊂ E skojarzenie, gdy »adne dwie kraw¦dzie nie maj¡
wspólnego ko«ca. Znale¹¢ M o najwi¦kszej liczno±ci. Wi¦kszo±¢ algorytmów znajduj¡cych naj- wi¦ksze skojarzenie dziaªa przez szukanie ±cie»ek powi¦kszaj¡cych gdy taka nie istnieje, sko- jarzenie jest najwi¦ksze.
G = (W, K, E) graf dwudzielny, gdzie W to wiersze {1, 2, . . . , w}, K kolumny {1, 2, . . . , k}
(reprezentacja macierzowa). Zakªadamy bez straty ogólno±ci |W | > |K|. Budujemy drzewa rozpi- naj¡ce ukorzenione w wierszach. Silne drzewo rozpinaj¡ce to takie drzewo rozpinaj¡ce, w którym ka»da kolumna-li±¢ musi by¢ synem korzenia. Je±li T to silne drzewo rozpinaj¡ce, to niech Q(T ) oznacza zbiór kolumn-li±ci.
Nie ka»dy graf dwudzielny ma silne drzewo rozpinaj¡ce. Modykujemy graf G → Ga:
• Ga= (W ∪ {0}, K, Ea)
• Ea= E ∪ {(0, j) : j ∈ K}
Korzeniem silnego drzewa rozpinaj¡cego T b¦dzie zawsze zero. Kolumn¦ h nazwiemy kandyda- tem, gdy: