Ugrás a tartalomra

Hanoi tornyai lépésszámláló

Hanoi tornyai lépésszámláló

A legenda szerint a szerzetesek másodpercenként egy korongot tesznek át.

Minimális lépésszám

18 446 744 073 709 551 615

2⁶⁴ − 1

Időtartam

584,5 milliárd év

20 számjegy

64 korong áthelyezéséhez legalább 18 446 744 073 709 551 615 lépés kell; másodpercenként 1 lépéssel ez 584,5 milliárd év.

64 korong áthelyezéséhez legalább 18 446 744 073 709 551 615 lépés kell; másodpercenként 1 lépéssel ez 584,5 milliárd év.

Hogyan számolunk?

A feladat: n különböző méretű korongot kell átrakni az első rúdról a harmadikra úgy, hogy egyszerre csak egy korongot mozgatunk, és nagyobb korong soha nem kerülhet kisebbre.

T(n) = 2 · T(n − 1) + 1,   T(1) = 1  ⇒  T(n) = 2n − 1

Indoklás: a legnagyobb korong átrakásához előbb a fölötte lévő n − 1 korongot a középső rúdra kell vinni (T(n − 1) lépés), majd a legnagyobbat áttenni (1 lépés), végül az n − 1 korongot ráépíteni (újabb T(n − 1) lépés). Ennél kevesebb lépés nem lehetséges.

A lépésszámot pontos egész aritmetikával számoljuk: 64 korongnál 18 446 744 073 709 551 615 lépés, ami másodpercenként egy lépéssel kb. 584,5 milliárd év (365,25 napos évvel) – az Univerzum mai korának (~13,8 milliárd év) több mint negyvenszerese.

A Hanoi tornyai a matematika egyik legismertebb fejtörője: három rúd, és az egyiken egymásra rakott, felfelé egyre kisebb korongok. A feladat egyszerűnek tűnik, a szükséges lépések száma azonban robbanásszerűen nő. A lépésszámláló pontosan kiszámolja a minimális lépésszámot bármennyi (legfeljebb 1000) korongra, megbecsüli, mennyi ideig tartana a megoldás a választott tempóban, és legfeljebb 8 korongig animációval meg is mutatja az optimális megoldást.

A szabályok

  • Egyszerre csak egy korongot szabad áthelyezni.
  • Mindig csak egy rúd legfelső korongját mozgathatjuk.
  • Nagyobb korong soha nem kerülhet kisebbre.
  • A cél: az összes korongot átvinni az első rúdról a harmadikra.

Hogyan használd?

  1. Add meg a korongok számát (a csúszka 64-ig, a mező 1000-ig enged).
  2. Állítsd be a tempót: hány lépést teszel meg másodpercenként.
  3. Olvasd le a lépésszámot és az időtartamot; nagyon nagy számoknál a teljes, minden jegyet tartalmazó érték lenyitható.
  4. A szemléltetésnél válassz 1–8 korongot, és indítsd el az animációt, vagy lépkedj egyenként.

Miért pontosan 2n − 1 lépés?

Gondolkodjunk visszafelé. A legnagyobb korongot csak akkor tudjuk áttenni, ha fölötte nincs semmi, és a célrúd üres – vagyis a többi n − 1 korongnak a középső rúdon kell lennie. Ehhez T(n − 1) lépés kell, utána 1 lépés a legnagyobb korong, majd újabb T(n − 1) lépés, hogy a kisebbeket ráépítsük. Így T(n) = 2 · T(n − 1) + 1, és mivel T(1) = 1, teljes indukcióval T(n) = 2n − 1. Ennél rövidebb megoldás nem létezik, mert a fenti gondolatmenet minden lépése elkerülhetetlen.

A lépésszám minden új koronggal megduplázódik (plusz egy): 3 korongnál 7, 10 korongnál 1023, 20 korongnál már 1 048 575 lépés.

A legenda és a 64 korong

A fejtörőhöz egy 19. századi legenda is tartozik: egy templomban szerzetesek 64 aranykorongot raknak át a szabályok szerint, másodpercenként egyet, és amikor végeznek, eljön a világvége. A kalkulátor szerint ehhez 18 446 744 073 709 551 615 lépés kell, ami másodpercenként egy lépéssel kb. 584,5 milliárd év – az Univerzum mai korának (kb. 13,8 milliárd év) több mint negyvenszerese. Nyugodtan alhatunk.

A számolás pontossága

A 264 − 1 már nem fér el pontosan a szokásos lebegőpontos számokban, ezért a kalkulátor tetszőleges pontosságú egészekkel dolgozik: 1000 korongnál is mind a 302 számjegyet pontosan megkapod. Az időtartamot évekre a 365,25 napos (Julián-) évvel számoljuk, és a magyar nagyságrendneveket használjuk (milliárd = 109, billió = 1012).

Gyakori kérdések

Van egyszerű szabály az optimális megoldáshoz?

Igen. Ha a korongokat az A rúdról a C rúdra visszük, páratlan számú korongnál a legkisebb korong körbe jár az A → C → B → A irányban, páros számúnál az A → B → C → A irányban. Minden második lépésben a legkisebb korong lép, a köztes lépésekben pedig mindig csak egyetlen szabályos lépés van, amely nem a legkisebb korongot mozgatja.

Mire jó ez a fejtörő?

Kiváló bevezetés a rekurzív gondolkodásba és az exponenciális növekedés megértésébe, a pszichológiában pedig a tervezési és végrehajtó funkciók vizsgálatára is használják.

További kalkulátorok és eszközök

Összes eszköz