2012-09-10 71 views
1

的二元溶液下面是從213頁的摘錄,在參考數字的二進制表示尾隨零的數目。塔式我讀<a href="http://books.google.co.in/books?id=pQRLfMngZ7sC" rel="nofollow"><em>Algorithms</em> by Robert Sedgewick</a></p> <p>河內

對於河內問題塔,對應 與n位數字的含義是一個簡單的任務算法。

  1. 移動的小圓盤的權利,如果n是奇數(左當n爲偶數)
  2. 進行的唯一合法的移動:我們可以通過以下兩個步驟,直到完成移動 堆一個釘住權不涉及小盤。

也就是說,在我們移動小的dsik後,另外兩個掛鉤包含兩個 磁盤,一個小於另一個。不涉及 小盤的唯一合法舉動是將小盤移動到較大盤上。每 其他移動涉及較小的磁盤出於同樣的原因,每個 其他數字是奇數,規則上的其他每個標記是最短的 。

即使在閱讀了各種有關goolged信息的參考資料之後,上述文字仍未進入我的腦海。

請幫助我一個簡單的例子,例如磁盤N = 3。Disk3最大,Disk1最小,他們需要從PegA移到PegB。

Disk1 
Disk2 
Disk3 
-------  ------------   ------------ 
Peg A   Peg B     Peg C 

回答

3

這裏首先要注意的是,在這個算法中,第一個掛鉤被認爲是最後一個掛鉤的右側,而最後一個掛鉤被認爲是第一掛鉤的左側。

應用迭代列出的兩個步驟將導致磁盤被一個掛鉤向右移動。

在這種情況下n = 3n是奇數,所以這兩個動作是:

  1. 移動Disk1一個PEG右。
  2. 作出不涉及Disk1的唯一合法舉動。

通過重複這些動作給以下解決方案:

  1. Disk1: PegA -> PegB(移動Disk1一個PEG右)
  2. Disk1: PegB -> PegCDisk2: PegA -> PegC(不涉及Disk1只有合法的移動)(移動Disk1一個PEG右)
  3. Disk3: PegA -> PegB(只有合法的舉動不涉及Disk1
  4. Disk1: PegC -> PegA(移動Disk1一個PEG右)
  5. 不涉及Disk1
  6. Disk1: PegA -> PegBDisk2: PegC -> PegB(只有合法的移動(移動Disk1一個PEG右)

當他寫道:「與對應n位數字「,Sedgewick指的是您在解決方案的步驟k中移動的磁盤是對應於最低有效位二進制表示k。即對於n = 3

step | bits | disk 
------------------ 
    1 | 001 | 1 
    2 | 010 | 2 
    3 | 011 | 1 
    4 | 100 | 3 
    5 | 101 | 1 
    6 | 110 | 2 
    7 | 111 | 1 
+0

是什麼筆者通過聲明表示「每隔此舉涉及的每一個其他數爲奇數,並且對規則的所有其他商標是最短的同樣的理由,更小的磁盤」 ? – venkysmarty

+0

@venkysmarty查看更新的答案。他只是說,由於每個奇數中的最小有效位是1,而每秒鐘數是奇數,所以每秒鐘的移動都會涉及到磁盤1. – verdesmarald

+0

感謝您的詳細解釋。我在這裏還有另一個問題:「在我們移動小dsik後,另外兩個釘子包含兩個磁盤,一個小於另一個。」作者在這裏的意思是,如果我們有N = 4另外兩個釘包含超過2個磁盤,在這裏? – venkysmarty

0

那麼這個特定問題的解決方案是:移動Disk1Peg B,移動Disk2Peg C,移動Disk1Peg C,移動Disk3Peg B,移動Disk1Peg A,移動Disk2Peg B,移動Disk1Peg B 。完成。

相關問題