Bài toán: Phiên bản 4 tương tự Phiên bản 2 gồm hai đống đĩa, nhưng có 5
cọc, tức là có thêm một cọc số 4 mà các đĩa màu khác nhau có thể sử dụng cọc này trong quá trình chuyển. Đĩa trắng có thể sử dụng các cọc 0, 1, 2, và 4 để chuyển từ cọc 0 sang cọc 2, trong khi đó các đĩa đen có thể sử dụng các cọc 2, 3, 0 và 4 để chuyển từ cọc 2 sang cọc 0.
Phiên bản 4 về bản chất tương tự bài toán tháp Hà Nội với bốn cọc, thường gọi là bài toán Reve (Reve’s puzzle), do đó sử dụng các công thức truy hồi cho bài toán bốn cọc trình bày trong Mục 1.2, có thể tìm được thuật toán giả định tối ưu cho bài toán này và ta có
Định lí 6 [12] Số bước chuyển M n4( ) giả định là tối ưu trong phiên bản 4 là
4( ) ( ) 2 ( 1) 2,
M n =R n + R n− +
trong đó ( )R n là số bước chuyển giả định là tối ưu trong bài toán tháp Hà Nội cho bốn cọc, được tính theo công thức trong Định lí 2 Chương 1, Mục 1.2.
Các bước thực hiện: Có thể xây dựng một thuật toán cho Phiên bản 4 dựa
trên thuật toán di chuyển tối thiểu như trong bài toán của Reve.
Tương tự bài toán Tháp Hà Nội cổ điển, ta mô tả thuật toán một cách đệ quy. Đối với n>0, đầu tiên tính toán giá trị .k Chuyển một cách hồi qui (recurcively move) các đĩa n k− trên đỉnh tháp từ cọc ban đầu đến một trong hai cọc tạm thời; sau đó di chuyển các đĩa k ở dưới đến cọc đích, sử dụng thuật toán Tháp Hà Nội tiêu chuẩn với ba cọc; và sau đó chuyển n k− đĩa đỉnh từ cọc tạm thời đến cọc đích. Giá trị k được chọn để số lần chuyển là ít nhất. Ta biết rằng, k ={ 2 }n , xem, thí dụ, [4], trong đó { }x biểu thị số nguyên gần x nhất.
Thuật toán của phiên bản 4:
Thuật toán cho Phiên bản 4, mà chúng ta giả sử là tối ưu, sử dụng thủ tục
Reve(n) để tạo ra các bước chuyển trong lời giải giả định tối ưu. Ngoài ra thủ
tục không thực hiện nếu n là không dương. Ta luôn giả sử rằng k là số nguyên gần 2n nhất.
procedure Reve(n, stack, from, via, to, extra)
Reve(n-k, stack, from, to, via, extra); Hanoi(n, n-k+1, stack, from, extra, to); Reve(n-k, stack, via, from, to, extra);
Sử dụng H-thủ tục trong Phiên bản 3, ta cũng sẽ có một phiên bản Reve. Thí dụ, ta có thủ tục R_HAHR (n) dưới đây. Lưu ý rằng vì chỉ có hai đống đĩa trong bài toán này nên không có vòng lặp (loop) trong chu trình này.
procedure R_HRHA(n)
R_HAHR(n-k);
Hanoi(n, n-k+1, 0, 0, 4, 1); Reve(n-k, 0, 2, 0, 1, 4);
Hanoi(n, n-k+1, 1, 2, 4, 0); Reve(n-k, 1, 3, 2, 0, 4);
Cuối cùng, ta có thể xây dựng thủ tục R_HAHA là của Stockmeyer - Lunnon [12] cho Phiên bản 4. Nó là một biến thể của thủ tục Turtle 2 ở trên.
procedure R_HAHA(n) R_HAHR(n-k); Hanoi(n-1, n-k+1, 0, 0, 4, 1); Reve(n-k, 0, 2, 0, 1, 4); Move(n, 0, 0, 4); Hanoi(n, n-k+1, 1, 2, 4, 0); Move(n, 0, 4, 2); Reve(n-k, 0, 1, 2, 0, 4); Hanoi(n-1, n-k+1, 0, 1, 4, 2); R_HARA(n-k);
Ta phân tích một cách rất sơ lược thủ tục này như sau. Giả sử R n( ) là số lần chuyển trong lời giải tối ưu của bài toán Reve, như được thể hiện trong chu trình Reve. Ta thấy rằng
( ) 2 ( ) 2k 1.
R n = R n k− + −
Phương trình truy hồi có nghiệm là
( ) ( ) ( 1) 1 1 2 ( )2 1 2 k k k k R n = k − − + −n − + , với k là số nguyên gần 2n nhất.
Mỗi qui trình như R_HAHR thực hiện các bước chuyển trong bài toán Reve trên mỗi một trong hai đống đĩa, với tổng số 2R n( ) lần chuyển. Trong thủ tục
R_HAHA, các đĩa trong đống 1 thực hiện tổng cộng R n( ) lần chuyển, trong khi đó các đĩa trong đống 0 thực hiện tổng cộng 4R n k( − +) 2k lần chuyển. Có thể chỉ ra rằng, biểu thức cuối cùng bằng 2 (R n− +1) 2. Như vậy lời giải
KẾT LUẬN
Luận văn đã trình bày tổng quan về bài toán tháp Hà Nội với đĩa màu. Những vấn đề được thực hiện trong luận văn là:
1) Tìm hiểu và trình bày các thuật toán và chương trình giải các phiên bản khác nhau của bài toán tháp Hà Nội với đĩa màu.
2) Khai thác các chương trình và phần mềm giải và hiển thị các thuật toán giải bài toán tháp Hà Nội với đĩa màu.
3) Chứng minh các Định lí nêu trong Đề cương về số bước chuyển đĩa tối ưu và số lời giải tối ưu.
TÀI LIỆU THAM KHẢO
[1] Dudeney H. E. (1907), The Reve’s Puzzle, The Canterbury Puzzles (and
other curious problems), Thomas Nelson and Sons, Ltd., London.
[2] Dunkel O. (1941), Editorial note concerning advanced problem 3918,
Amer. Math. Monthly 48, 219.
[3] Frame J. S. (1941), Solution to advanced problem 3918, Amer. Math.
Monthly 48 , 216-217.
[4] Hinz A. M. (2013), Sandi Klavzˇar, Uroš Milutinovic´, Ciril Petr, The
Tower of Hanoi–Myths and Maths, Springer, Basel.
[5] Lucas E. (1889), Nouveaux Jeux Scientifiques de M. E’duard Lucas, 301-303.
[6] Lucas E. (1889), Jeux Scientifiques, Primière Série, No3, La Tour d’Hanoi, Chambon & Baye/ Éduard Lucas, Paris.
[7] Lucas E. (1895), L’Arithméique Amusante: Introduction aux Récréations
Mathematicques, Gauthier-Villars, Paris, pp. 179-183.
[8] Majumdar A. A. K. (2012), (2013) A classical Tower of Ha noi: Problems
and its Generalizations, Vol. 1, Vol. 2, Lambert.
[9] Stewart B. M. (1939) , Advanced problem 3918, Amer. Math. Monthly 46, 363.
[10] Stewart B. M. (1941), Solution to advanced problem 3918, Amer. Math.
Monthly 48, 217-219.
[11] Stockmeyer P. K. (1994), Variations on the four–post Tower of Hanoi puzzle, Congr. Numer. 102, 3–12. (Proceedings of the 25th Southeastern International Conference on Combinatorics, Graph Theory and Computing).
[12] P. K. Stockmeyer, Lunnon F. (2010), New variations on the Tower of Hanoi, Congressus Numerantium 201, 277-287.
[13] Symposium La “Tour d’Hanoi”−un casse−tete mathématique
d’E’duard Lucas (1842-1891), Institute Henri Poincaré, Paris 2009.
[14] Workshop on the Tower of Hanoi and Related Problems, September 18 – September 22, 2005, Maribor, Slovenia.