hanoi aisd1

background image

Piotr Koprowicz

Algorytmy i struktury danych 1

Projekt 2 - Problemu wie Hanoi dla k wie

Wst p

“W wielkiej wi tyni Benares w Hanoi, pod kopuł , która zaznacza rodek wiata,

znajduje si płytka z br zu, na której umocowane s trzy diamentowe igły, wysokie na łokie

i cienkie jak talia osy. Na jednej z tych igieł, w momencie stworzenia wiata, Bóg umie cił 64

kr ki ze szczerego złota. Najwi kszy z nich le y na płytce z br zu, a pozostałe jeden na

drugim, id c malej co od najwi kszego do najmniejszego. Jest to wie a Brahma. Bez

przerwy, we dnie i w nocy, kapłani przekładaj kr ki z jednej diamentowej igły na drug

przestrzegaj c niewzruszonych praw Brahma. Prawa te chc , aby kapłan na słu bie brał tylko

jeden kr ek na raz i aby umieszczał go na jednej z igieł w ten sposób, by nigdy nie znalazł

si pod nim kr ek mniejszy. Wówczas, gdy 64 kr ki zostan przeło one z igły, na której

umie cił je Bóg w momencie stworzenia wiata, na jedn z dwóch pozostałych igieł, wie a,

wi tynia, bramini rozsypi si w proch i w jednym oka mgnieniu nast pi koniec wiata.”

W standardowym algorytmie rozwi zuj cym problem wie Hanoi do przeło enia

wszystkich kr ków potrzebna jest 2

n

-1 ilo kroków, gdzie n to ilo kr ków.

Rozwa my, co by si stało, gdyby my mieli do dyspozycji k wie .

Opis algorytmu dla k wie

Rozwa my algorytm dla liczby wie wi kszej lub równej 3.

Niech n b dzie ilo ci kr ków, a k ilo ci wie .

Dla 3 kr ków wykonujemy tradycyjny algorytm wie Hanoi.

Załó my teraz, i liczba wie jest wi ksza od 3. Wówczas wprowadzamy logiczny podział

liczby wie na dwie cz ci:

1.

Pierwsze 3 wie e

2.

Liczba wie równa k-3

Do póki n>= k wtedy stosujemy nast puj c sekwencj :

Przekładamy tradycyjnym algorytmem n-k+3 kr ków, a te, które zostały przekładamy na

wie e z drugiej cz ci logicznej, w nast puj cym porz dku: najwi kszy na czwarty i nastepne

kolejno na odpowiadaj ce im wie e, przy czym na ka dej b dzie co najwy ej jeden kr ek

Po tej czynno ci kr ki z kolejnych wie , zaczynaj c od wie y 5, przekładamy na 4.

Kiedy n<k wtedy stosujemy nast puj ce kroki:

1.

Wszystkie kr ki, poza najwi kszym przesuwamy na inne wie e w ustalonym

porz dku, przy czym na ka dej wie y b dzie co najwy ej 1 kr ek.

background image

2.

Przesuwamy ostatni na czwart wie

3.

Pozostałe kr ki przekładamy na t wie , na której jest najwi kszy zaczynaj c od

kr ka o 1 mniejszego od najwi kszego i na kr ku najmniejszym ko cz c.

W ten sposób wszystkie kr ki zostan przeło one na pierwsz wie z drugiej cz ci

logicznej.

Badanie działania algorytmu

Zbadajmy algorytm dla ustalonej liczby kr ków:

Ilo kr ków – 8

Ilo

kr ków

Ilo wie

Ilo

kroków

1

Niemo liwe

2

Niemo liwe

3

255

4

253

5

91

6

45

7

29

8

21

9

15

8

10

15

Z powy szych rozwa a wynika, i zwi kszenie liczby wie zdecydowanie wpływa na ilo

potrzebnych kroków do przeniesienia wszystkich kr ków, co obrazuje poni szy wykres (

1

):

ilosc kroków przy ustalonej liczbie kr ków - 8

0

50

100

150

200

250

300

1

2

3

4

5

6

7

8

9

10

11

12

ilosc wie

ilo

sc

k

ro

ko

w

background image

Zobaczmy co si dzieje, gdy ilo wie jest ustalona, a zwi kszamy ilo kr ków:

Ilo wie – 5

Ilo kr ków

Ilo

wie

Ilo kroków

1

1

2

3

3

5

4

7

5

15

6

25

7

49

8

91

9

179

10

5

349

Wida wyra nie, i przy ustalonej liczbie wie , dodanie do liczby kr ków nast pnego

wydłu a ilo potrzebnych kroków. Zale no t ilustruje poni szy wykres(

2

):

ilo kroków przy ustalonej liczbie wie - 5

0

100

200

300

400

1

2

3

4

5

6

7

8

9

10

ilosc kr kow

ilo

sc

k

ro

ko

w

Wnioski cz ciowe: Zwi kszanie ilo ci kr ków zwi ksza ilo kroków, natomiast

zwi kszanie liczby wie zmniejsza ilo kroków,ale tylko dopóki ilo

wie nie b dzie równa k

0 ,

gdzie k

0

>=n+1. Po osi gni ciu liczby n

0

ilo

kroków b dzie stała.

background image

Analiza algorytmu dla 3 słupków

Wie Hanoi z n kr kami oznaczmy przez h

n

. Z przeprowadzonych testów

mo na zauwa y , e: h

1

=2

1

−1 ; h

2

=2

2

−1 ; h

3

=2

3

−1 ; ... , gdzie pot ga jest równa

indeksowi liczby h . Na tej podstawie mo na przypuszcza , e h

n

=2n−1 dla dowolnej

liczby kr ków n. Z rekurencyjnego algorytmu rozwi zywania problemu wie Hanoi

wynika nast puj ca zale no rekurencyjna mi dzy liczbami:

h

n =

>

+

=

1

dla

,

1

2h

1

n

dla

,

1

1

-

n

Powy sz zale no mo emy sprawdzi indukcyjnie.

Wiemy, e: h1 = 2

1

−1 = 1 ,

załó my, e h

n

= 2

n

−1 ,

a zatem

h

n+1

= 2(h

n

) + 1 = 2(2

n

−1) + 1 =2

n+1

−1

Udowodnili my zatem, e zło ono algorytmu wynosi O(2

n

)

Analiza algorytmu dla 4 słupków


Ilo przeło e dla 4 słupków wyra a si wzorem:

>

+

=

=

=

+

4

,

3

2

,

3

..

1

,

1

2

1

n

a

a

n

n

a

n

n

n

sprawd my wzór dla 5 kr ków:

29 = h

5

= 2h

4

+ 3 = 2(2h

3

+ 3) + 3 = 2 ( 2 (2*3 - 1) + 3) + 3 = 2 (2*5 + 3) + 3 = 29

Powy sz zale no mo emy sprawdzi indukcyjnie.

Wiemy, e:

h

5

= 2h

4

+ 3 = 29

Załó my, e

h

n

= 2

n

- 3,

a zatem

h

n+1

= 2h

n

+ 3 = 2 (2

n

- 3) + 3 = 2

n+1

- 3.

Udowodnili my zatem, e zło ono algorytmu wynosi O(2

n

), dla n>4

background image

Analiza algorytmu dla 5 słupków


Ilo przeło e dla 5 słupków wyra a si wzorem:

>

+

=

>

+

=

=

=

)

(

4

,

1

2

)

(

4

,

6

2

,

4

..

1

,

1

2

1

1

parzyste

n

n

n

a

a

e

nieparzyst

n

n

n

a

a

n

n

a

n

n

n

n

n

sprawd my wzór dla 6 kr ków:

25 = h

6

= 2*h

5

– 6+1 = 2*(2*h

4

- 5 + 6) - 6 + 1 = 2*(2*(2*4-1)

- 5 + 6) - 6 + 1 =

= 2*(2*(7) + 1) -5 =2*(15) – 5 = 25

a wi c powy sza zale no jest prawdziwa, co mo na udowodni indukcyjnie.

Wnioski ko cowe:

„Tradycyjny” algorytm wie Hanoi, a wi c dla 3 słupków jest algorytmem

optymalnym i ma zło ono O

(2

n

).

Zwi kszanie ilo ci kr ków zwi ksza ilo kroków (wykres

2

), natomiast

zwi kszanie liczby wie zmniejsza ilo kroków ,ale tylko dopóki ilo wie nie b dzie równa

k

0 ,

gdzie k

0

>=n+1. (wykres

1

). Po osi gni ciu liczby k

0

ilo kroków b dzie stała.

Prezentowane rozwi zanie nie nale y do optymalnych, jednak nie znaleziono

algorytmu, który dokonałby przeło enia wszystkich kr ków w minimalnej liczbie ruchów.

Akceptowane b d wszystkie rozwi zania, które dadz wynik nie gorszy od naszego i b d

miały nie gorsz zło ono .


Wyszukiwarka

Podobne podstrony:
aisd1
aisd1 id 53506 Nieznany (2)
Wieze Hanoi
Hanoi Opracowanie ULM
hanoi
hanoi, wisisz, wydzial informatyki, studia zaoczne inzynierskie, podstawy programowania, l6
aisd1
sajgonki prosto z hanoi
2015 01 21 HANOI JANE znów przeprasza
2013 02 15 Morderczo piękna Hanoi Jane Fonda blog Pandorra
2010 05 18 Hanoi Jane

więcej podobnych podstron