• Nie Znaleziono Wyników

Dowód poprawno±ci algorytmu Prefer-Opposite

N/A
N/A
Protected

Academic year: 2021

Share "Dowód poprawno±ci algorytmu Prefer-Opposite"

Copied!
7
0
0

Pełen tekst

(1)

Dowód poprawno±ci algorytmu Prefer-Opposite

Grzegorz Prusak, Katarzyna Mandziuk, Krzysztof Opolski Grudzie« 2012

W pracy [1] zaprezentowany zostaª algorytm generuj¡cy ci¡g de Bruijna. Niniejszy dokument, w oparciu o niektóre argumenty autora tego tekstu, przedstawia kompletny i bardziej zrozumiaªy dowód poprawno±ci algorytmu (Twierdzenie w cz¦±ci 1).

Prezentujemy tak»e zaproponowany przez profesora Ryttera alternatywny dowód (cz¦±¢ 2), który jest du»o bardziej obrazowy i korzysta tylko z jednego lematu z cz¦-

±ci 1.

Rozwa»amy znaki ze zbioru Σ = {0, 1}; a oznacza znak przeciwny do a.

Algorytm (nieznacznie zmodykowany celem uproszczenia dowodu) ma posta¢:

1. Przyjmij w = 0n−11. 2. Wypisz w.

3. Je±li w = x1x2. . . xn i sªowo v = x2x3. . . xnxn nie zostaªo jeszcze wypisane, przyjmij w = v i przejd¹ do 2.

4. Je±li w = x1x2. . . xn i sªowo v = x2x3. . . xnxn nie zostaªo jeszcze wypisane, przyjmij w = v i przejd¹ do 2.

5. Koniec.

Przykªad 1. Dla n = 4 algorytm wypisze nast¦puj¡ce sªowa:

0 0 0 1 0 0 1 0

0 1 0 1 1 0 1 0

0 1 0 0 1 0 0 1

0 0 1 1 0 1 1 0

1 1 0 1 1 0 1 1

0 1 1 1 1 1 1 0

1 1 0 0 1 0 0 0

0 0 0 0

Jak ªatwo zauwa»y¢, pojawiªy wszystkie sªowa binarne dªugo±ci 4 z wyj¡tkiem sªowa 1111. Poka»emy, »e podobnie b¦dzie dla dowolnego n > 1, a co za tym idzie, algorytmu Prefer-Opposite mo»na u»ywa¢ do generowania ci¡gu de Bruijna rz¦du n.

1 Dowód oparty na oryginalnej pracy

Przypadek n = 2 jest prosty do zwerykowania, dalej zakªadamy n > 3. B¦dziemy korzysta¢ z nast¦puj¡cych, ªatwych do zaobserwowania wªasno±ci algorytmu:

(2)

(W1) W wypisanym ci¡gu sªowa nie powtarzaj¡ si¦ (dowód: w punktach 3. i 4. spraw- dzamy, czy kandydat na kolejne sªowo nie byª wypisany).

(W2) Sªowo w które zostaªo wypisane i jest ró»ne od 0n−11, nie stoi na pocz¡tku wy- pisanego ci¡gu, istnieje zatem sªowo wypisane bezpo±rednio przed nim (b¦dziemy je nazywa¢ poprzednikiem sªowa w).

(W3) Je±li sªowo w postaci x1x2. . . xn−2aa zostaªo wypisane, to wcze±niej zostaªo wy- pisane sªowo x1x2. . . xn−2aa(dowód: z W2 istnieje poprzednik w, skoro zostaª dla niego wykonany krok 4. algorytmu, to warunek w kroku 3. nie byª speªniony).

(W4) Wypisane sªowa s¡ kolejnymi wierzchoªkami pewnej ±cie»ki w grae de Bruijna (którego wierzchoªki s¡ sªowami binarnymi dªugo±ci n).

Lemat 1. Sªowo 1n nie zostanie wypisane.

Dowód. Fragment grafu de Bruijna obejmuj¡cy wierzchoªki s¡siaduj¡ce z 1n ma posta¢:

01n−1 1n−10

1n

Zaªó»my, »e sªowo 1n zostaªo wypisane jako k-te z kolei. Z W1 i W2 wnioskujemy, »e poprzednim wypisanym sªowem (pozycja k − 1) byªo sªowo 01n−1. Zastosowanie W3 do sªowa 1npokazuje, »e jeszcze wcze±niej (pozycja l < k − 1) pojawiªo si¦ sªowo 1n−10. Ale sªowo 1n−10ma poprzednik, jest nim 1nlub 01n−1. St¡d jedno z tych sªów wyst¦puje na pozycji l − 1, czyli pojawia si¦ wi¦cej ni» jeden raz. Uzyskana sprzeczno±¢ dowodzi, »e sªowo 1n nie mo»e zosta¢ wypisane.

Lemat 2. Je±li a = x1x2. . . xn−1c oraz b = x1x2. . . xn−1c zostaªy wypisane i s¡ ró»ne od 0n−11, to dla dowolnego s ∈ Σ zostaªo wypisane sªowo vs= sx1x2. . . xn−1 i jest ono poprzednikiem a lub poprzednikiem b.

Dowód. Z W2 sªowa a i b maj¡ poprzedniki, które z W1 s¡ ró»ne, musz¡ wi¦c mie¢

posta¢:

tx1. . . xn−1

tx1. . . xn−1

Jednym z tych sªów jest vs.

(3)

Lemat 3. Algorytm zako«czy si¦; ostatnie dwa sªowa na wyj±ciu to 10n−1 oraz 0n. Dowód. Istnieje sko«czenie wiele sªów binarnych dªugo±ci n, za± na mocy W1 ka»de sªowo jest wypisywane co najwy»ej raz. St¡d algorytm si¦ zako«czy.

Niech w = x1x2. . . xn b¦dzie ostatnim wypisanym sªowem. Zaªó»my, »e w 6= 0n. Warunki w kroku 3. i 4. algorytmu byªy dla tego sªowa faªszywe, zatem sªowa

p = x2x3. . . xn0 q = x2x3. . . xn1 pojawiªy si¦ nie pó¹niej ni» w.

Je±li w = 10n−1, to p = 0n. Wtedy sªowo p ma poprzednik; ªatwo zauwa»y¢, »e musi nim by¢ 10n−1= w. Ale sªowo w nie mo»e si¦ pojawi¢ wi¦cej ni» raz.

St¡d w 6= 10n−1. Poniewa» zaªo»yli±my, »e w 6= 0n, wynika st¡d, »e x2x3. . . xn 6=

0n−1. Tym samym q = x2x3. . . xn1 6= 0n−11; zachodzi te» p 6= 0n−11. Do sªów p i q stosuje si¦ wi¦c lemat 2, w szczególno±ci sªowo w jest poprzednikiem p lub q. Ale w nie mo»e pojawi¢ si¦ w wypisanym ci¡gu wi¦cej ni» raz.

Uzyskana sprzeczno±¢ pokazuje, »e w = 0n. Jego poprzednikiem jest 10n−1.

Lemat 4. Je±li sªowo x1x2. . . xn−2bb zostaªo wypisane, to dla dowolnego c ∈ Σ sªowo vc= cx1x2. . . xn−2b tak»e zostaªo wypisane.

Dowód. Z lematu 3 wiemy, »e sªowa 10n−1 oraz 0n zostaªy wypisane. Wystarczy wi¦c rozpatrzy¢ przypadek x1x2. . . xn−2b 6= 0n−1.

Zaªó»my, »e sªowo x1x2. . . xn−2bb si¦ pojawiªo. Wtedy z W3 wyst¡piªo tak»e sªowo x1x2. . . xn−2bb. Te dwa sªowa s¡ ró»ne od 0n−11, mo»emy wi¦c zastosowa¢ do nich lemat 2, by wywnioskowa¢, »e vc zostaªo wypisane.

Lemat 5. Sªowo w = x1x2. . . xn−10 zostaªo wypisane.

Dowód. Skoro (z lematu 3) sªowo 0n zostaªo wypisane, to na mocy lematu 4 wypisane zostaªy te» sªowa xn−10n−1, xn−2xn−10n−2, . . . , x1x2. . . xn−10 = w.

Twierdzenie. Dowolne sªowo w ∈ Σn ró»ne od 1n zostaªo wypisane dokªadnie raz.

Dowód. Niech w = x1x2. . . xn−1xn.

Z uwagi na lemat 5 wystarczy rozpatrzy¢ przypadek xn= 1.

Poniewa» w 6= 1n, to istnieje pozycja i taka, »e xi jest ostatnim wyst¡pieniem znaku 0 w w.

Z lematu 5 sªowo 1n−10zostaªo wypisane. Na mocy lematu 1 jego poprzednikiem jest 01n−1= xixi+1. . . xn−11i. Z kolei (i−1)-krotne zastosowanie lematu 4 do tego sªowa po- zwala wywnioskowa¢, »e pojawiªy si¦ te» sªowa xi−1xi. . . xn−11i−1, xi−2xi−1. . . xn−11i−2, . . . , x1x2. . . xn−11 = w.

Z poczynionych obserwacji wynika, »e wypisane przez algorytm sªowa to wierzchoªki

±cie»ki w grae de Bruijna o pocz¡tku w 0n−11 i ko«cu w 0n. ‘cie»ka omija wierzchoªek 1n, ale wiadomo, »e po 01n−1 nast¦puje w niej 1n−10. St¡d przez drobn¡ modykacj¦

mo»na uczyni¢ j¡ scie»k¡ Hamiltona, a po poª¡czeniu 0n i 0n−11 cyklem Hamiltona w grae de Bruijna.

(4)

01n−1 1n−10

1n

01n−1 1n−10

1n

Šatwo teraz stwierdzi¢, »e rozwa»ana modykacja algorytmu polegaªa jedynie na przeniesieniu pierwszego wypisanego sªowa (0n) na koniec ci¡gu wyj±ciowego (kolejno±¢

pozostaªych sªów nie ulegªa zmianie - w obu wariantach sprawdzenie, czy wyst¡piªo ju»

0n jest wykonywane dopiero na samym ko«cu).

2 Interpretacja grafowa

Niech G b¦dzie skierowanym grafem eulerowskim, a T (skierowanym) ukorzeniownym drzewem rozpinaj¡cym G o nast¦puj¡cej wªasno±ci: ka»da kraw¦d¹ jest zwrócona w kie- runku korzenia.

Przyjmijmy, »e out(v) oznacza zbiór kraw¦dzi wychodz¡cych z wierzczhoªka v.

Rozwa»my nast¦puj¡cy (niedeterministyczny) algorytm (A):

V isited ← ∅

P ref ← E(G) \ E(T ) v ←korze« T

while out(v) 6⊆ V isited do C ← out(v) \ V isited if C ∩ P ref 6= ∅ then

e ←dowolny element zbioru C ∩ P ref else

e ←dowolny element zbioru C end if

wypisz e

V isited ← V isited ∪ {e}

v ←nast¦pnik kraw¦dzi e end while

Próbuje on zachªannie generowa¢ cykl Eulera, bior¡c do niego najpierw kraw¦dzie le»¡ce poza drzewem T .

Lemat 6. Dowolny przebieg algorytmu (A) wypisuje cykl Eulera grafu G.

Dowód. Zauwa»my najpierw, »e algorytm zako«czy si¦, gdy v b¦dzie korzeniem T (bo wszystkie kraw¦dzie wychodz¡ce z v nale»¡ do V isited, ale stopie« wej±ciowy v jest równy wyj±ciowemu, czyli jest to wierzchoªek, z którego algorytm ruszaª).

Poka»emy przez indukcj¦ po k - odlegªo±ci w T wierzchoªka w od korzenia T , »e wszystkie kraw¦dzie wychodz¡ce z w zostaªy odwiedzone.

(5)

Baza (k = 0): wiemy, »e algorytm zako«czyª si¦ w korzeniu, a to oznacza, »e wszystkie kraw¦dzie wychodz¡ce z korzenia zostaªy wypisane.

Krok: Niech w b¦dzie odlegªe od korzenia T o k + 1. Je±li nie wszystkie kraw¦dzie wychodz¡ce z w zostaªy odwiedzone, to nie zostaªa odwiedzona ta kraw¦d¹ wychodz¡ca z w, która le»y w T (bo algorytm najpierw wybiera spo±ród kraw¦dzi wychodz¡cych, które nie le»¡ w T ). Tym samym nie zostaªa odwiedzona pewna kraw¦d¹ wchodz¡ca do ojca w (odlegªego od korzenia o k). Ale algorytm wychodziª z ojca w tyle razy, ile do niego wchodziª, czyli istnieje kraw¦d¹ wychodz¡ca z ojca w, która nie zostaªa odwiedzona. To daje sprzeczno±¢ z zaªo»eniem indukcyjnym.

Wiadomo, »e ci¡g de Bruijna rz¦du n mo»na uto»samia¢ z cyklem Eulera w grae de Bruijna, w którym wierzchoªki s¡ sªowami dªugo±ci n − 1, za± kraw¦d¹ od sªowa x1x2. . . xn−1 do sªowa x2x3. . . xn odpowiada sªowu x1x2. . . xn−1xn(oznaczmy taki graf przez Bn).

Wiemy z cz¦±ci 1, »e algorytm Prefer-Opposite nie wypisze sªowa 1n; sugeruje to rozwa»enie grafu Bfn, który okre±limy jako Bn bez p¦tli na wierzchoªku 1n−1 (ta p¦tla odpowiada pomini¦temu sªowu).

Zdeniujemy Tn, ukorzenione drzewo rozpinaj¡ce wBfn. Niech jego korzeniem b¦dzie 0n−1, za± zbiorem kraw¦dzi

n(x1x2. . . xn−20, x2x3. . . xn−200) : x1x2. . . xn−2∈ Σn−2, x1x2. . . xn−26= 0n−2o

n(x1x2. . . xn−21, x2x3. . . xn−211) : x1x2. . . xn−2∈ Σn−2, x1x2. . . xn−26= 1n−2o n1n−1, 1n−20o.

Przykªad 2. Drzewo T4 w grae Bf4 ma posta¢:

000

001

011

111

110 100 010

101 0001

0010

0101 1010

1001

0110

1101 0000

0100

0011

1011

0111 1110

1100 1000

Tn jest rzeczywi±cie drzewem; z ka»dego wierzchoªka oprócz 0n−1 wychodzi jedna kraw¦d¹ wskazuj¡ca na ojca. Jasne jest te», »e Bfn jest grafem eulerowskim. Ma zatem sens mówienie o uruchomieniu algorytmu (A) dla grafu i drzewa T .

(6)

Przykªad 3. Kolejne kraw¦dzie odwiedzane przez algorym (A) dla grafu Bf4 z drzewem T4 (na pocz¡tku algorytm mo»e wybra¢ spo±ród dwóch kraw¦dzi, zaªó»my »e wybraª 0001):

000

001

011

111

110 100 010

101 0001 1

0010

2

0101

3

1010

4

1001

6

0110

8

1101

9

0000 15

0100

5

0011

7

1011

10

0111

11

12 1110

1100

13

1000

14

Lemat 7. Kraw¦dzie wypisane przez taki bieg algorytmu (A) dla grafu Bfn i drzewa Tn, który najpierw wypisuje 0n−11 odpowiadaj¡ kolejnym sªowom wypisanym przez algorytm Prefer-Opposite startuj¡cy od sªowa 0n−11.

Dowód. W tym rozumowaniu uto»samiamy kraw¦dzie Bfn i sªowa które reprezentuj¡.

Algorytm (A) zaczyna w korzeniu Tn, czyli 0n−1. ›adna kraw¦d¹ wychodz¡ca z tego wierzchoªka nie le»y w Tn, zatem algorytm mo»e wybra¢ dowoln¡ z nich. Rozwa»amy zatem taki bieg algorytmu (A), który wybiera najpierw kraw¦d¹ 0n−11 (pierwsze sªowo wypisane przez algorytm Prefer-Opposite).

Zaªó»my teraz, »e algorytm (A) wypisaª kraw¦d¹ x1x2. . . xni »e do tej pory wszystkie wypisane przez niego kraw¦dzie pokrywaªy si¦ ze sªowami, które wypisaª algorytm Prefer- Opposite z odpowiednio dobranym sªowem startowym.

Je±li x2x3. . . xn = 1n−1 to algorytm (A) pójdzie kraw¦dzi¡ 1n−10, bo to jedyna kraw¦d¹ wychodz¡ca z 1n−1 w grae Bfn. Algorytm Prefer-Opposite, na mocy lematu 1 nie mo»e wypisa¢ 1n, wi¦c równie» wypisze 1n−10(nie zatrzyma si¦, bo przed 1n−10musi sta¢ 01n−1, zatem sªowo 1n−10 jeszcze nie wyst¡piªo).

Je±li x2x3. . . xn= 0n−1, to algorytm (A) powróciª do korzenia. Je±li jest to pierwszy powrót, to (A) przejdzie po p¦tli (wypisuj¡c 0n) i zatrzyma si¦ w korzeniu (bo wyko- rzystaª wszystkie kraw¦dzie wychodz¡ce z korzenia). Algorytm Prefer-Opposite wypisze najpierw 0n (0n−11 ju» wypisaª, nie mo»e powtórzy¢ tego sªowa), a potem zatrzyma si¦, bo wypisaª oba sªowa 0n i 0n−11.

Dalej zakªadamy, »e x2x3. . . xn6= 0n−1i x2x3. . . xn6= 1n−1. To oznacza, »e wierzcho- ªek x2x3. . . xn nie jest korzeniem Tn i ma dwie kraw¦dzie wychodz¡ce w Bfn, z których dokªadnie jedna (x2x3. . . xnxn) le»y w Tn.

Je±li kraw¦d¹ x2x3. . . xnxnnie wyst¡piªa, to algorytm (A) wypisze j¡ (bo x2x3. . . xnxn

jako jedna z co najwy»ej dwóch rozwa»anych nie le»y w Tn), podobnie algorytm Prefer- Opposite wypisze to sªowo, bo jeszcze nie wyst¡piªo i jest preferowane.

(7)

Je±li kraw¦d¹ x2x3. . . xnxn wyst¡piªa, ale kraw¦d¹ x2x3. . . xnxn nie wyst¡piªa, to algorytm (A) wypisze t¦ ostatni¡; algorytm Prefer-Opposite równie» wypisze to sªowo, bo jeszcze si¦ nie pojawiªo.

Je±li dla dowolnego c ∈ Σ kraw¦d¹ x2x3. . . xnc wyst¡piªa, to algorytm (A) si¦ za- trzyma, podobnie jak algorytm Prefer-Opposite.

Powy»sze obserwacje pokazuj¡, »e bieg obu algorytmów b¦dzie taki sam.

Poª¡czenie dwóch powy»szych lematów pokazuje, »e algorytm Prefer-Opposite wy- pisuje cykl Eulera w grae Bfn, a to jest dokªadnie teza twierdzenia z cz¦±ci 1. W tym dowodzie korzystali±my jedynie z lematu 1.

Literatura

[1] Abbas Alhakim, A Simple Combinatorial Algorithm for de Bruijn Sequences

Cytaty

Powiązane dokumenty

Z konstrukcji tabeli wynika, »e oba jej skladniki nale»¡ do U(n 0 ) ⊆ U, czyli warunek drugi te» jest speªniony.. Trzeci przypadek

• Zadania z cz¦±ci drugiej równie» nale»y przygotowa¢ wcze±niej i b¦d¡ one rozwi¡zywane

Zdrowie – według definicji Światowej Organizacji Zdrowia – to stan pełnego fizycznego, umysłowego i społecznego dobrostanu.. W ostatnich latach definicja ta została uzupełniona o

Z uwagi na delikatność zagadnienia proponuję, żebyście drogie kobietki przeczytały tekst znajdujący się w ćwiczeniówce na stronach 27-28 i rozwiązały test znajdujący się

have contributed: the formation of coherent structures, the transient lifetimes of the turbulent state, the possible transition to persistent turbulence in spatially extended

Ze względu na popularność w rodzinie Pannewitzów imienia Wolfram, prawdopodobnym kandyda- tem wydaje się być zarówno aktywny w latach 1284-1327 rycerz z księstwa żagańskiego

The ability to incorporate online sensor data derived during the production process into resource/reserve models and the subsequent near real-time optimisation of short-term or

na pozna- niu placówek oświatowo-wychowawczych o nieczęsto spotykanym pro- filu pracy, realizujących zadania zasługujące na szczególną uwagę (np. 26 Ibidem, Protokół z