tornyok Hanoi

Három rúd A, B és C pálcikafüggő kerül N-lemezek esetében a legkisebb a tetején, minden egyes következő lemez több, mint az előző, és az alján a legnagyobb. Másrészt rudak meghajtók nem visel.

Szükséges transzfer kerekek a tengely egy a C rudat, a rudat a B, mint egy kiegészítő, úgy, hogy a kerekek a C rúd elrendezve ugyanabban a sorrendben, amelyben található a lemezen egy, mielőtt.

Ha mozgatja akkor soha nem tesz egy nagyobb lemez egy kisebb.

rekurzív módszer

Annak érdekében, hogy elmozdulás a piramis, akkor először meg kell átadni semmit a legnagyobb lemez az első a tartórúd, akkor a váltás nagyon nagy lemez az első a harmadik terminál, és tolja a többi piramis a második, a harmadik rúd, hogy az első szár segédoldószerként.

Összesen kapott 2-N-1 átrendeződések.

nem-rekurzív módszerrel

Rudat, amelyen a kerekek az elején, hogy a 0 szám; rúd, amelyen azok át - száma 2; és ennek megfelelően, a maradék rúd - az 1. számú.

Legyen minden lemezek N. Mi számozni a lemezeket annak érdekében, hogy növelje a sugara a számok 0,1,2. N-1.

Mint ismeretes, a probléma megoldódik, és 2 N-1 mozog. Felsorolni mozog szám 1,2. 2 N-1.

Bármilyen pozitív egész szám I egyedülállóan képviseli formájában i = (2t + 1) * 2 k. ahol t és K - egész szám (azaz, mint a termék a páratlan számú néhány erejét két). Tehát, az i-edik során átvezetett lemez száma k egy rúd számú ((-1) n-k * t mod 3) a rúd száma ((-1) n-k * (t + 1) mod 3).

ha ppedstavit hogy a rudak, amelyet aztán a ruha meghajtók paspolozheny a yglah pavnostoponnego tpeygolnika, a legkisebb lemez minden páratlan swing mozog (vagy Petro azt pepvonachalnogo száma lemezek függ) stpelki óra.

Minden még mozog egyedileg meghatározni elemzést. Melyik vezetni kevesebb - és a sebességváltó (egyébként ellentmond a hipotézis). mert tpogat disk 0, és nem tudja, hogy még több kisebb is lehet.

Megjegyzés Két minták:
  1. Ha minden páratlan hody az átadása a legkisebb meghajtó.
  2. A legalább lemez mindig át ciklikusan vagy A-B-C-A-B-C-. (A slychae páros számú lemez) vagy A-C-B-A-C-B. (A slychae páratlan).

A posemy polychaem algoritmus:

1. Határozzuk meg a lemezek, otkyda bydet meg, hogyan mozog a legkisebb lemez (ez a lépés történik az elején, de csak egyszer).

2. Nézze meg a fordulat számot, ha páratlan - mozog a legkisebb lemez irányába az 1. igénypont szerinti. akkor is, ha - a lehető során egyetlen - hogy a legkisebb dvyh top meghajtók és mozgatni.

Írhatsz egy kicsit másképp:

Az N 1 vagy 2 k-1 carry
1. A bináris ábrázolása N megtalálják a jobbszélső nulla számjegyet. Mi számát jelöli a rangot t.

2. Legyen a számát a rudat, amelyen a lemezt a T i. Mozgás a rúd meghajtó t i a rúd (i + (- 1) T) mod 3.

Mellesleg, a száma stroke könnyen visszaállítani a helyzetét lemezeket a rúd: után az i-edik ütemű lemez száma j az interneten számát (-1) nj * ((i Div 2 j) - (i Div 2 j + 1)) mod 3 .

Kapcsolódó cikkek