Dựa trên các bài báo của các tác giả nước ngoài, Luận văn Bài toán Tháp Hà Nội với chuyển động xoay vòngcó mục đích trình bày các tính chất cơ bản của bài toán Tháp Hà Nộivới hạn chế đặ
Trang 1ĐẠI HỌC THÁI NGUYÊN TRƯỜNG ĐẠI HỌC KHOA HỌC
Trang 2MỤC LỤC
Trang
Mục lục……… 1
Lời nói đầu……… 2
Chương 1 Một số cải biên của bài toán Tháp Hà Nội…… … 4
1.1 Lịch sử bài toánTháp Hà Nội ……… 4
1.2 Một số phát triển và cải biên của bài toán Tháp Hà Nội ……
1.3 Tài liệu về bài toán Tháp Hà Nội
15 26 Chương 2 Bài toán Tháp Hà Nội với chuyển động xoay vòng 28
2.1 Các tính chất cơ bản của bài toán Tháp Hà Nội xoay vòng 28
2.2 Thuật toán lặp cho bài toán Tháp Hà Nội xoay vòng 45
2.3 Bài toán Tháp Hà Nội với hạn chế chuyển động các đĩa 52
Kết luận……… 64
Tài liệu tham khảo……… 65
Trang 3LỜI NÓI ĐẦU
Bài toánTháp Hà Nộiđược nhà toán họcPháp EdouardLucas nghĩ ra năm 1882
(xem [17]) và phổ biếnvào năm 1883dưới dạng một trò chơi, là một bài toán thường được giới thiệu trong các sách về các trò chơi toán học và sử dụng trong các giáo trình Tin học như một ví dụ điển hình về thuật giải đệ qui, lập trình căn bản và độ phức tạp tính toán
Trò chơi Tháp Hà Nộikhông chỉ thú vị ở chỗ nó mang tên Hà Nội, thủ đô của
Việt Nam mà nó còn hấp dẫn các nhà nghiên cứu Toán học và Công nghệ thông tin bởi nó liên quan đến nhiều vấn đề của Toán – Tin học như giải thuật
đệ qui, hệ đếm, tam giác Pascal, thảm Sierpinski, Fractal, lý thuyết đồ thị và chu trình Hamilton, ôtômát hữu hạn, độ phức tạp tính toán, Các bài toán Tháp Hà Nộimở rộng hoặc cải biên gợi ý cho nhiều nghiên cứu mới trong toán học và khoa học máy tính
Đã có hai cuốn sách chuyên khảo đầu tiênviết về Bài toán Tháp Hà Nội:The Tower of Hanoi –Myths and Maths[16]của Andreas M Hinz, Sandi Klavžar, Uroš Milutinović, Ciril Petrxuất bản năm 2013 và cuốn sách hai tập Classical Tower of Hanoi Problem and Its Generalizations[18] của A.A.K Majumdar
xuất bản năm 2012 – 2013.Chỉ tính riêng số bài báo nghiên cứu về bài toán Tháp Hà Nội trong lĩnh vực Toán học và Tin học đã có đến gần 500 bài với khoảng 250 bài với đầu đề có cụm từ "The Tower of Hanoi", đăng trên gần
200 tạp chí khoa học có uy tín(xem thống kê Tài liệu trong [7], [16] và [22], tiếc rằng hình như chưa có bài nghiên cứu nào của người Việt Nam về bài toán Tháp Hà Nội) Đó là chưa kể đến những bài viết về sử dụng bài toán Tháp Hà Nội trong khoa học giáo dục,sinh – y học hoặc những cuốn sách về tin học hay toán trò chơi, trong đó có trình bày về trò chơi Tháp Hà Nội
Trang 4Sau hơn 100 năm, bài toánTháp Hà Nội đã có những cải biên và tổng quát hóa (trò chơi Tháp Hà Nội với nhiều cọc, trò chơi Tháp Hà Nội với các đĩa màu, trò chơi Tháp Hà Nội với hạn chế hướng chuyển đĩa, trò chơi Tháp Hà Nội song song, ) Những cải biên và tổng quát hóa này dẫn đến những vấn đề toán học thú vị, thậm chí dẫn tới nhiều bài toán hiện nay chưa có lời giải
Dựa trên các bài báo của các tác giả nước ngoài, Luận văn Bài toán Tháp Hà Nội với chuyển động xoay vòngcó mục đích trình bày các tính chất cơ bản của
bài toán Tháp Hà Nộivới hạn chế đặt lên chuyển động – một biến thể của bài toán Tháp Hà Nội,đặc biệt là mô tả giải thuật lặp để giải quyết bài toánTháp
Hà Nội xoay vòng
Luận văn gồm Phần mở đầu, hai chương và Tài liệu tham khảo
Chương 1Một số cải biên của bài toánTháp Hà Nội
Chương 1 giới thiệu tổng quan về lịch sử phát triển trò chơi Tháp Hà Nội và một số biến thể của bài toán Các tư liệu trong Chương này được bổ sung chi tiết và thời sự hơn so với [3] và [5]
Chương 2Bài toán Tháp Hà Nội với chuyển động xoay vòng
Chương 2trình bày các tính chất,lời giải bài toán bằng giải thuật lặp của bài toán Tháp Hà Nộivới chuyển động xoay vòng
Luận văn được hoàn thành dưới sự hướng dẫn tận tìnhcủa PGS TS Tạ Duy Phượng, Viện Toán học Đặc biệt Thầy đã cung cấp nhiều tài liệu và biên tập
kĩ luận văn Em xin bày tỏ lòng biết ơn sâu sắc nhất đối với Thầy
Tôi xin được cảm ơn khoa Toán – Tin trường Đại học Khoa học – Đại học Thái Nguyên và Trường Trung học Phổ thông Hòn Gai –Thành phốHạLong
đã quan tâm giúp đỡ, tạo điều kiện thuận lợi cho tôi thực hiện kế hoạch học tập
Xin được cảm ơn người thân, đồng nghiệp, bạn bè đã cổ vũ động viên tôi trong suốt quá trình học cao học và làm luận văn
Trang 5Hạ Long, 10.4.2015
Trần Thị Hồng Nhung
CHƯƠNG I MỘT SỐ CẢI BIÊN CỦA BÀI TOÁN THÁP HÀ NỘI
1.1 Lịch sử Bài toán Tháp Hà Nội
Dưới đây là những tư liệu quí về trò chơiTháp Hà Nội: Bìa của hộp đựngtrò chơi Tháp Hà Nội(được làm bằng gỗ),sản xuất lần đầu tiên tại Paris năm 1883
và hai tờ hướng dẫn qui tắc chơi (xem: http://vi.wikipedia.org/wiki)
Trên tờ bìa có hình tháp 10 tầng, cây tre, người Annam và dòng chữ: La Tour d’Hanoϊ, Veritable casse-téte Annamite Jeu, rapporté du Tonkin par le professeur N Claus (de Siam) du college Mandarin Li-Sou-Stian - Tháp Hà
Nội, Trò chơi trí tuệ của người Annam, được mang về từ Bắc Kì bởi giáo sư
N Claus (ở Siam), trường trung học Li-Sou-Stian
Trang 6Bìa của hộp đựng trò chơi Tháp Hà Nội đƣợc bán lần đầu tại Paris, 1883
Năm 1884, de Parvile (xem [16], trang 2-3) đã tiết lộ:Giáo sư N Claus chính
là ẩn danh(nikname) của nhà toán học EduardLucas(N Claus de Siam là đảo
từ của E Lucas d’Amiens, Amiens là quê của E Lucas Li-Sou-Stian là đảo
từ của Sant Louis, trường trung học ở Paris, nơi Ông dạy học vào những năm đó)
Dựa trên phân tích hình vẽ trên hộp đựng trò chơi, “bờ thành của tháp được
mô tả tỉ mỉ đến từng chi tiết, người nông dân Annam vẽ rất thực, ”, có người cho rằng, thật sự đã có người bạn của E Lucas mang các thông tin và trò chơi này từ Hà Nội về Paris Cũng không hẳn là không có lí!
Dưới đây là tờ hướng dẫn thứ nhất giới thiệu trò chơi Tháp Hà Nội được sản xuất lần đầu tiên tại Paris và bản dịch:
THÁP HÀ NỘI
Trang 7Trò chơi trí tuệ của người Annam Trò chơi được đem về từ Đông Kinh bởi Giáo sư N CLAUS (DE SIAM) Trường trung học Li-Sou-Stian!
Trò chơi này lần đầu được tìm thấytrong cuốn sách có minh họa tiếng Quan thoại FER-FER-TAM-TAM, sẽ được xuất bảntrong tương lai gần, bởi chính phủ bảo hộ Tháp Hà Nội có các đĩa, nhỏ dần, có số lượng thay đổi, mà chúng tôi làm bằng gỗ, có lỗ ở giữa Ở Nhật Bản, Trung Quốc, và ở Đông Kinh (Tonkin-Bắc Kì), chúng được làm bằng sứ
Trò chơi có mục đích là dỡ bỏ từng đĩa, và đặt vào cột bên cạnh, theo các quy tắc nhất định Vui và bổ ích, dễ học và dễ chơi trong thành phố, ngoài nông thôn, trên chuyến du lịch, nó được tạo ra để mang đến kiến thức khoa học, giống mọi trò chơi kỳ thú và mới lạ của giáo sư N CLAUS (của SIAM) Chúng tôi trao giải thưởng 1000 franc, 100 nghìn franc, một triệu franc, và nhiều hơn, cho ai hoàn thành, bằng việc dùng tay di chuyển Tháp Hà Nội với
64 đĩa, theo qui tắc của trò chơi Chúng tôi nói ngay là cần số lần di chuyển là18 446 744 073 709 551 615, nhiều hơn năm tỷ thế kỷ!
Trang 9Theo một truyền thuyết Ấn Độ, những người dân của thành Brahma đã tiếp nối nhau trong một thời gian dài để thay đổi Đền Bernares, di chuyển 64 đĩa vàng của Tòa tháp Brahma Khi công việc hoàn thành, Tòa tháp và thành Brahma sẽ đổ, và lúc đó là thời điểm kết thúc của vũ trụ!
PARIS, BẮC KINH, TOKYO và SÀI GÒN Trong các hiệu sách và tiểu thuyết
1883 Bản quyền đã giữ
Dưới đây là tờ hướng dẫn thứ hai trò chơi Tháp Hà Nội được sản xuất lần đầu
tại Paris năm 1883và bản dịch:
Luật chơi và cách chơi trò chơiTHÁP HÀ NỘI
Đế đặt nằm ngang; các cọc thẳng đứng Các đĩa đặt theo thứ tự từ lớn đến nhỏ
từ thấp lên cao, tạo nên một tòa tháp Trò chơi đòi hỏi di chuyển các đĩa, bằng cách đặt chúng vào cọc bên cạnh, mỗi lần chuyển một đĩa, theo luật sau
I Sau mỗi lần chuyển, các đĩa đều nằm trên một, hai, hoặc ba cọc, theo thứ tự
từ lớn đến nhỏ, từ thấp đến cao
II Đĩa trên cùng của một trong ba cọc được đặt vào cọc trống
III Đĩa trên cùng của một trong ba cọc đĩa được đặt lên một trong hai cọc khác, nếu đĩa này nhỏ hơn các đĩa của cọc đó
Trò chơi có thể dễ dàng tự khám phá, bằng việc giải quyết dần từ 3, 4, và 5 đĩa
Trò chơi luôn giải được và đòi hỏi thời gian chơi lâu khoảng gấp đôi mỗi khi cho thêm một đĩa vào tòa tháp Bất kì ai giải được cho tám đĩa, ví dụ, chuyển các đĩa từ cọc 1 sang cọc 2, cũng sẽ biết cách giải cho chín đĩa Chỉ cần chuyển tám đĩa sang cọc 3, rồi chuyển đĩa thứ chín sang cọc 2, và mang tám đĩa từ cọc 3 về cọc 2 Bây giờ, khi thêm một đĩa vào trò chơi, tổng số di chuyển tăng gấp đôi, cộng với một, so với trước
Trang 11Với tháp hai đĩa ba lần chuyển là đủ Số đĩa Số lần chuyển
Với tốc độ một di chuyển mất một giây, cần bốn phút để chuyển tám đĩa
Các biến thể của trò chơi: Có thể thay đổi đến vô cùng điều kiện của bài
toán Tháp Hà Nội như sau:Khi bắt đầu, xếp các đĩa theo thứ tự bất kỳ lên một, hai, hay cả ba cọc Sau đó cần xây dựng lại tòa tháp trên một cọc định trước Với 64 đĩa, số lần di chuyển là khổng lồ, số này dài 50 chữ số Xem thêm chi tiết trong chương nói về Baguenaudier (trò chơi tháo vòng) ở:
TOÁN HỌC GIẢI TRÍ bởi Mr Édouard Lucas giáo sư toán học cao cấp tại Lycée Saint-Louis
Hai tập nhỏ, trong hai màu Paris, 1883, bởi GAUTHER-VILLARS, máy in của Académie des Sciences và Ecole Polytechnique
Tất nhiên, không ai nghi ngờ tác giả của trò chơi
Tháp Hà Nộichính là E Lucas, nhà toán học nổi
tiếng người Pháp với nhiều công trình toán học
quan trọng nhưdãy Lucas, thuật toán
Lucas-Lehmer tìm số nguyên tố Mersenne, Việc dùng
nickname dưới dạng đảo ngữ và cách viết các tác
phẩm khoa học mang hình thức văn học nhằm
hấp dẫn độc giả có lẽ là mốt thời thượng thời bấy
giờ
Trang 12Dưới đây là bản chụp tờ bìa cuốn sách Số học vui(L’Arithmetic
Amusante,[17]) của E.Lucas xuất bản tại Paris năm 1895 (sau khi Ông mất), trong đó có bốn trang (trang 179-183) viết về Tháp Hà Nội
Trong L’Arithmetic Amusante (LA TOUR D’HANOI, Chapitre quatrième:
Les projections géométriques, trang 179), E Lucas viết: “Một người bạn của chúng tôi, N CLAUS (de Siam), Giáo sư trường trung học Li-Sou-Stian, đã xuất bản vào năm 1884 một trò chơi, được gọi là Trò chơi Tháp Hà Nội, một trò chơi trí tuệ của người Annam,…”
Trang 16Trò chơi Tháp Hà Nội được phổ biến tại Paris năm 1883 đã được đón nhận
rộng rãi vì sự đơn giản và hấp dẫn của nó E Lucas đã tỏ ra rất thực tế khi Ông cho sản xuất trò chơi Tháp Hà Nội với 8 đĩa, số đĩa vừa đủ để trò chơi không quá đơn giản và chóng chán (để chuyển hết 8 đĩa từ cọc nguồn sang cọc đích, không nhầm lẫn, cần 255 bước), cũng như không quá phức tạp (như trong trường hợp 64 đĩa, phải mất 5 tỉ năm)
Rất có thể, theo E Lucas, trò chơi Tháp Hà Nội “đã xuất hiện ở Đông Á từ thế kỷ 19 hoặc trước đó Các đĩa được làm bằng sứ ở Trung Quốc, Nhật Bản
và Đông Kinh (Tonkin-Bắc Kì)” Tuy nhiên, cho tới nay, các nhà lịch sử và khảo cổ vẫn chưa tìm thấy các thư tịch viết về truyền thuyết 64 đĩa vàng với
ba cọc kim cương tại tháp Brahma của Ấn Độ cũng như các đĩa sứ của trò chơi Tháp Hà Nội tại Trung Quốc, Nhật Bản và Việt Nam.Có lẽ cũng chưa ai nhìn thấy cuốn sách FER-FER-TAM-TAM mà Lucas đã nhắc tới Những tài liệu cũ nhất về trò chơi vẫn là các hộp đựng các đĩa và các cọc sản xuất tại Pháp năm 1883 và những năm sau đó
Hiện nay chưa thể khẳng định được truyền thuyết về tháp Brahma là có thật hay do chính E Lucas nghĩ ra (xem[16] và các tư liệu khác) Cũng có thể, dựa theo hình mẫu những ngôi tháp cổ đã từng tồn tại trong vùng đất phật giáo linh thiêng gần Hà Nội, hay cũng có thể vì lí do nào đó khác, thí dụ như việc
Trang 17Pháp chiếm được thành Hà Nội đã là sự kiện thời sự tràn ngập báo chí ở Paris thời bấy giờ(xem [16], trang 6), nhân đó mà Edouard Lucas đã phổ biến trò
chơi với tên gọi Tháp Hà Nộiở Paris năm 1883 dưới ẩn danh (under the
nickname) là giáo sư N Claus?
Lịch sử trò chơi Tháp Hà Nội vẫn còn nhiều điều bí ẩn và vẫn được nhiều tác giả quan tâm (xem [16],…)
Bài toánTháp Hà Nội thú vị và có nội dung toán – tin học nghiêm túc đến mức nó đã được viết thành hai cuốn sách chuyên khảo (xem [16] và [18]) Bài toánTháp Hà Nội được dùng làm đề tài của một số luận án Tiến sĩ và nhiều
luận văn cao học Hai hội thảo khoa học quốc tế với têngọi Workshop on the Tower of Hanoi and Related Problems, Slovenia, 2005, [27] và SymposiumLa
“Tour d’Hanoi”-un casse-tete mathématique d’E’duardLucas (1842-1891),
Institute Henri Poicaré, Pháp, 2009 [24] đã được tổ chức Nhiều công trình khoa học và các kết quả mới thường xuyên được đăng trên các tạp chí lớn và được thông báo trên các Hội nghị khoa học Quốc tế về Toán - Tin học
Workshop on the Tower of Hanoi and
1.2 Một số phát triển và cải biên của bài toán Tháp Hà Nội
Bài toán Tháp Hà Nội có khá nhiều phát triển và cải biên rất thú vị Mỗi cải biên và qui tắc chơi mới lại làm trò chơi Tháp Hà Nội thêm phong phú và lại xuất hiện thêm nhiều vấn đề toán – tin học mới Đây chính là nguyên nhân trò
Trang 18chơi này luôn sống động, mới mẻ và hấp dẫn, mặc dù nó đã được phát minh cách đây 130 năm
Dưới đây chúng tôi sơ lược liệt kê một số cải biên của trò chơi Tháp Hà Nội
1.2.1Bài toán Tháp Hà Nội với nhiều cọc
Một mở rộng tự nhiên của bài toán
Tháp Hà Nộicổ điển là Bài toán Tháp
Hà Nội với bốn (hoặc nhiều)
cọc.Chính tác giả của bài toán Tháp Hà
Nội, E Lucas cũng là người đầu tiên
xét bài toán với nhiều cọc vào năm
1889 (xem [16], trang 211) Bài toán Tháp Hà Nội với bốn cọc Năm 1902-1903 Henry Ernest
Dudeney đã viết hai bài báo về bài
toán Tháp Hà Nội với bốn cọc Trong
hai trang đầu tiên của cuốn sách nổi
tiếng The Canterbury Puzzles and
Other Curious Problems xuất bản tại
London năm 1907 và tại New York
năm 1908 (xem [10]), Ông đã viết về
bài toán này trò chơi Tháp Hà Nội với
bốn cọc (dưới dạng các quân cờ) và
số đĩa là 8, 10 hoặc 21 và gọi là The
Reve's puzzle-câu đố của Reve)
Dưới đây là trang 1 và trang 2 trong cuốn sách của H E Dudeney nói về The Reve's puzzle Trong hình vẽ có bốn chiếc ghế (4 cọc), trên một ghế có 8 quân cờ xếp chồng lên nhau
Trang 19Trong phần lời giải (trang 131-132), Dudeney đã khẳng định (không chứng minh) rằng số lần chuyển cần thiết tương ứng với 8, 10 hoặc 21 đĩa là 33, 49
Trang 20hoặc 321 Hơn nữa, Ông còn xét trường hợp với số đĩa là số tam giác, tức là
t là số tam giác thứ kvà giả
sử M n( )là số lần chuyển tối thiểu cần thiết để chuyển xong n đĩa Dudeney
tuyên bố mà không chứng minh rằng
Tuy nhiên Dudeney không cho một thuật toán nào cho phép tìm ra các số này,
và cũng không có một gợi ý nào cho trường hợp số đĩa không phải là số tam giác, thí dụ khi n 8
Dưới đây là lời giải bài toán The Reve’s Puzzle của H E Dudeney
Trang 21Bài toán tổng quát với p 3 cọc, p là số bất kì với số đĩa n bất kì được B
M Stewart đề xuất năm 1939 (Problem 3918 trong tạp chí The Americal Mathematical Montly [20]) Lời giải độc lập của bài toán này đã được B M
Trang 22Stewart [21] và J S Frame [15] trình bày cũng trong tạp chí này năm 1941 Các thuật toán của Stewart và Frame cùng với một số thuật toán cải biên khác
đã được chứng minh là tương đương theo nghĩa số lần chuyển đĩa là bằng nhau (xem [16]) Vì vậy người ta thường gọi chung thuật toán của hai Ông
hoặc các thuật toán tương đương là thuật toán Frame- Stewart
Giả sử n là số đĩa và p là số cọc được đánh số từ 0 đến p 1 Để giải bài toán Tháp Hà Nội với p cọc, ta thực hiện các bước sau:
Bước 1 Với số l, 1 l n, chuyển lđĩa trên cùng từ cọc 1 tới cọc 4, mất ( )
p
S l lần chuyển Được phép sử dụng tất cả các cọc trong khi chuyển
Bước 2 Giữ nguyên cọc 4 chứa l đĩa trên cùng Chuyển n l đĩa tới cọc đích, sử dụng n 1 cọc còn lại (vì cọc 4 đang được dùng để chứa l đĩa nhỏ nhất), mất S p 1(n l) lần chuyển
Bước 3 Cuối cùng, chuyển l đĩa trên cùng từ cọc 3 tới cọc 4, mất S l lần p( )chuyển nữa Được phép sử dụng tất cả các đĩa
Như vậy, tổng cộng cần 2S l p( ) S p 1(n l lần chuyển )
Bài toán đặt ra là, cần tính số l để tổng này là nhỏ nhất
Thuật toán Frame-Stewart với cách chọn l như trên cho phép tìm ra một (một
vài) giá trị i sao cho
Trang 23Như vậy, B M Stewart và J S Frame đã đề xuất thuật toán giải cho bài toán Tháp Hà Nội với số cọc bất kì Thuật toán này trùng với lời giải của H
E Dudeney trong các trường hợp riêng nêu trên Ta cũng lưu ý rằng, khác với trường hợp bài toán với ba cọc, lời giải cho bài toán với bốn cọc có thể là không duy nhất Hơn nữa, như ta đã biết, số lần chuyển đĩa cho bài toán ba cọc là S n3( ) 2n 1, nên S n3( ) sẽ tăng theo hàm mũ Tuy nhiên, trong trường hợp số cọc p 4, phân tích thuật toán Frame- Stewart, Stockmeyernăm 1994 phát hiện ra rằng, độ phức tạp của thuật toán là dưới mũ (sub-exponential), cỡ
2 n
n cho k 4
Như vậy, ý tưởng cơ bản của thuật toán Frame-Stewart cho bài toán bốn cọc
là như sau: Chia n đĩa thành hai phần, phần trên gồm l đĩa có kích thước nhỏ, phần dưới chứa n l đĩa có kích thước lớn Chuyển l đĩa trên cùng từ cọc thứ nhất sang cọc thứ tư bằng cách giải bài toán ba cọc với l đĩa nhỏ Tiếp tục giải bài ba cọc với n l đĩa lớn Sau đó lại giải bài toán ba cọc với l
đĩa để chuyển l đĩa về cọc đã chứa n l đĩa lớn và bài toán đã giải xong Tuy nhiên, Otto Dunkel [11], tổng biên tập của tạp chí The Americal Mathematical Montlykhi cho đăng hai lời giải của Frame và Stewart đã chỉ ra
rằng: Chứng minh tính tối ưu của Frame và Stewart chỉ áp dụng được cho các thuật toán của một lược đồ chung mô tả bởi Frame và Stewart mà thôi Nói
cách khác, Frame và Stewart mới chỉ chứng minh được rằng:trong số tất cả các giá trị có thể của l (theo thuật toán của hai Ông) phải có ít nhất một giá trị i làm cực tiểu số lần chuyển Hai ông chưa chứng minh rằng mọi thuật
toán tối ưu bắt buộc phải có dạng trên Và điều này cho tới nay vẫn chưa chứng minh được Vì vậy lời giải của Frame và Stewart cần phải coi một cách
đúng đắn là lời giải giả định là tối ưu (presumed optimal solution), chứ chưa
chứng minh được là lời giải tối ưu Từ 1941 đến nay, rất nhiều người khác đã nghiên cứu thuật toán này Gần đây một số tác giả đề nghị một số thuật toán
Trang 24hồi qui tương đương với thuật toán Frame –Stewart, nhưng tính tối ưu của thuật toán vẫn chưa được chứng minh
Đây là một ví dụ tiêu biểu cho thấy:từ một bài toán đơn giản, có thể giải được, nhưng bằng cách nới lỏng một số ràng buộc của nó thì lại trở thành khó hơn rất nhiều do xuất hiện những vấn đề mới (sự tồn tại, tính duy nhất,
tính tối ưu của nghiệm)
Việc chưa chứng minh được tính tối ưu của thuật toán Frame –Stewartcho bài toán với bốn hoặc nhiều cọc là tối ưu không suy ra rằng không tồn tại thuật toán tìm (tất cả) các nghiệm tối ưu
Mặc dù chưa khẳng định được số lần chuyển đĩa tối ưu, nhưng thuật toán Frame-Stewart và các cải biên của nó cũng đã cho "lời giải được giả định là tối ưu" (presumed-optimal solution) cho phép lập trình giải bài toán Tháp Hà Nội với số cọc bất kì Tính tối ưu của thuật toán Frame-Stewart đã được kiểm tra trên máy tính cho số đĩa nhỏ hơn 30 (xem [16], trang179)
1.2.2Bài toán Tháp Hà Nội với cấu hình ban đầu bất kì
Bài toán Tháp Hà Nộivới ba cọc và n đĩa đã được E Lucas cải biên ngay khi phổ biến cách chơi vào năm 1883 (xem [16], trang 131) Đó là trò chơi Tháp
Hà Nội với cấu hình ban đầu bất kì: Ngay khi bắt đầu chơi (hoặc tiếp tục sau
khi trò chơi bị gián đoạn), có thể coi các đĩa ở vị trí bất kì (không nhất thiết tất cả các đĩa phảinằm trên một cọc, mà có thể ở trên các cọc khác nhau, miễn
là tuân theo qui tắc đĩa ở trên nhỏ, đĩa nằm dưới to) Một phân bố các đĩa
được đặt trên các cọc ở vị trí bất kì thỏa mãn nguyên tắc “trên nhỏ, dưới to”
được gọi là một cấu hìnhhợp lệ
Xuất hiện các bài toán sau đây:
1) Tìm đường đi tối ưu từ một cấu hình hợp lệ tới một cấu hình hoàn hảo (tất
cả các đĩa trên nhỏ dưới to cùng nằm trên một cọc)
Trang 252) Làm thế nào để xác định được cấu hình hợp lệ đang xét nằm trên đường đi tối ưu (từ một cấu hình hợp lệ hoàn hảo trên cọc nguồn đến một cấu hình hoàn hảo trên cọc đích thông qua cấu hình hợp lệ)
3) Tìm đường đi tối ưu từ một cấu hình hợp lệ này sang một cấu hình hợp lệ khác
Bài toán này đã được nhiều tác giả quan tâm (xem [16], Chương 3)
1.2.3 Bài toán Tháp Hà Nộixoay vòng
Atkinson [9] là người đầu tiên nghiên
cứu bài toán Tháp Hà Nội xoay vòng
(Cyclic Tower of Hanoi): Ba chiếc cọc
được đặt trên ba đỉnh của một tam
giác đều và các đĩa bị hạn chế chuyển
động chỉ theo một hướng (theo chiều
quay của kim đồng hồ hoặc ngược
lại)
Sau đó khá nhiều các tác giả khác đã nghiên cứu sâu hơn bài toán này Bài toánTháp Hà Nội xoay vòngvà các mở rộng của nó sẽ được trình bày kĩ trong Chương 2
1.2.4Bài toán Tháp Hà Nội với các đĩa màu (ColourTowers of Hanoi)
Một biến thể khác của trò chơi Tháp Hà
Nội là trò chơi với các đĩa màu, lần đầu
tiên được Lucas đề xuất năm 1889 (xem
[16], trang 212): Xét trò chơi với 5 cọc
và bốn nhóm đĩa màu khác nhau Mỗi
nhóm có bốn đĩa kích thước khác nhau
Hình bên: Trạng thái ban đầu của trò Hình vẽ trong bài báo của E
Trang 26chơi Lucas với bốn tháp đĩa bốn màu Lucas năm 1889 ( [16], trang 213)
Trò chơi Tháp Hà Nội với ba cọc và các đĩa hai màu
Er (1984, [13]) đã nghiên cứu một biến thể của trò chơi Tháp Hà Nội và gọi là
Colour Towers of Hanoinhư sau: Có ba cọc được đặt trên một vòng tròn và n
đĩa với hai màu đen hoặc trắng Lúc đầu các đĩa được phân bố ngẫu nhiên trên các cọc, đĩa lớn nằm dưới, đĩa nhỏ nằm trên Mục đích là phải đưa các đĩa về một cọc với qui tắc sau:
1) Chỉ được phép chuyển đĩa nằm trên cùng
2) Đĩa trắng chỉ được phép chuyển sang cọc lân cận theo chiều kim đồng hồ
và đĩa đen chỉ được phép chuyển sang cọc lân cận ngược chiều kim đồng hồ Nhận xét rằng các giả thiết cấu hình ban đầu của các đĩa là ngẫu nhiên và tổ hợp hai màu cũng là ngẫu nhiên có thể cản trở chuyển động của một số đĩa Nếu đòi hỏi tìm thuật toán đi đến một cấu hình cho trước bất kì của các đĩa màu và số lần chuyển là tối ưu thì bài toán trở nên phức tạp lên rất nhiều Minskerđã đưa ra hạn chế các đĩa cùng màu bị cấm không được gặp nhau
(không được đặt liên tiếp) và gọi trò chơi này là Tháp Hà Nội cầu vồng (the
Rainbow Tower of Hanoi problem)
P K Stockmeyer và F Lunnon (xem [23]) đã giới thiệu một số trò chơi Tháp
Hà Nội với các đĩa màu như sau
Trò chơi 1 Có bốn cọc được đánh số từ 1 đến 4 Lúc đầu ta có n đĩa trắng
nằm trên cọc 1 và n đĩa đen nằm trên cọc 2 Cọc đích của đống đĩa trắng là
cọc 2 và đống đĩa đen là cọc 1 Nói cách khác, mục đích là đổi chỗ hai đống đĩa nhờ sử dụng cọc 3 và cọc 4 như là những cọc trung gian
Trong [23] đã đưa ra thuật toán để giải bài toán trên với số lần chuyển là 1
2n 1
Trò chơi 2 Victor Mascolođã nhận bằng phát minh U.S No 7.566.057cho trò
chơi (còn được gọi là trò chơirùa-Turtle game) sau đây Trò chơi này thực
Trang 27chất là tương tự với trò chơi 1, ngoại trừ việc cọc 1 chỉ được phép chứa các đĩa trắng, trong khi đó cọc 3 chỉ được phép chứa các đĩa đen Như vậy, các đĩa trắng chỉ có thể sử dụng cọc 0, 1 và 2 để chuyển các đĩa trắng từ cọc 0 sang cọc 2, và các đĩa đen chỉ có thể sử dụng các cọc 2, 3 và 0 để chuyển các đĩa đen từ 2 về 0
Không hoàn toàn hiển nhiên là bài toán này luôn có lời giải Để đi đến lời giải, một số bước chuyển của các đĩa trắng cần phải kết hợp chặt chẽ với các bước chuyển của các đĩa đen
Trong [23] đã đưa ra thuật toán giải bài toán trên với số lần chuyển là
3 2n 1
Trò chơi 3 Có hai đống đĩa và 5 cọc, tương tự như trò chơi 2 nhưng thêm một
cọc 4 có thể chứa các đĩa màu khác nhau Các đĩ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ể
1.2.5Bài toán Tháp Hà Nộicổ chai (The bottleneck Tower of Hanoi)
Derick Wood[26] đã xét hai cải biên sau đây của bài toán Tháp Hà Nội Trong
bài toán thứ nhất, hạn chế thông thường đĩa lớn không được nằm trên đĩa nhỏ hơn được thay bằng điều kiện: cho phép đĩa i có thể được đặt lên trên đĩa j nếu và chỉ nếu i j b với một số nguyên cố định b n 1 nào đó Bài toán
này trở về bài toán Tháp Hà Nội cổ điển khi i j b và b 0 Trong cải biên
Trang 28thứ hai, cho phép có d bản copy của mỗi đĩa và áp dụng các qui tắc chuyển đĩa như trong bài toán Tháp Hà Nội cổ điển Năm 1992 Poole (xem [16],tr
222-225) đã gọi bài toán này là Bài toán Tháp Hà Nộicổ chai (The bottleneck
Tower of Hanoi)
1.2.6Bài toán Tháp Hà Nội với chuyển động song song (Parallel Moves of
the Tower of Hanoi Problem)
Năm 1992, Wu và Chen đã mô tả trò chơi Tháp Hà Nộivới chuyển động song song (the parallel Tower ofHanoi problem) với ba cọc Trò chơi Tháp Hà Nội với chuyển động song song tuân theo hai qui tắc:
Qui tắc 1: Đĩa trên cùng có thể đồng thời chuyển từ cọc này sang cọc khác
Qui tắc 2: Không có đĩa nào lớn hơn được đặt nằm trên đĩa nhỏ hơn
Năm 1993 Wu và Chen cũng đã đưa ra trò chơi Tháp Hà Nội song song xoay vòng (the cyclic parallel Tower of Hanoi problem)
Các thuật toán lặp truy hồi giải các bài toán này có thể xem trong [25]
1.3 Tài liệu về bài toán Tháp Hà Nội
Bắt đầu từ những năm 1970, do ảnh hưởng của sự phát triển Tin học và công nghệ thông tin, bài toán Tháp Hà Nộiđược quan tâm trở lại một cách mạnh
mẽ, không chỉ như một bài toán trò chơi, mà như một bài toán khoa học với những câu hỏi mở cùng với nhiều kiến thức liên quan Như đã nhắc đến trong
Lời nói đầu, đã có đến gần 500 bài với khoảng 250 bài với đầu đề có cụm từ
"The Tower of Hanoi” (xem thống kê Tài liệu trong [7], [16] và [22])trong lĩnh vực Toán học và Tin học Bài toán Tháp Hà Nộicũng được nghiên cứu mạnh mẽ trong khoa học giáo dục (solving problem) và sinh – y học Nó thường xuyên được nhắc đến trong những cuốn sách về tin học hay các sách trò chơi toán học
Hiện nay, trên mạng Internet có rất nhiều chương trình viết trên nhiều ngôn ngữ khác nhau và rất nhiều phần mềm hiển thị hướng dẫn trò chơi Tháp Hà
Trang 29Nội (với ba cọc hoặc nhiều hơn, trò chơi Tháp Hà Nội cải biên, ) Trò chơi này cũng được bán ở nhiều nơi trên thế giới (trong đó có Hà Nội)
Dưới đây là bìa hai cuốn sách về bài toán Tháp Hà Nội mới được xuất bản
Hai cuốn sách chuyên khảo
đầu tiên về Bài toán Tháp Hà
Nội xuất bản năm 2013
Tower of Hanoi interactive display at the Universum
(Nguồn: http://en.wikipedia.org/wiki/
Tower_of_Hanoi#Multistack_Tower_of_Hanoi)
Trang 30Kết luận Chương:Chương 1 giới thiệu tổng quan lịch sử bài toán Tháp Hà
Nội cùng những phát triển và cải biên của nó
Trò chơi Tháp Hà Nội được phổ biến rộng rãi trên toàn thế giới, đồng thời được sự quan tâm của nhiều chuyên gia Toán – Tin học
CHƯƠNG II BÀI TOÁN THÁP HÀ NỘI VỚI CHUYỂN ĐỘNG XOAY VÒNG 2.1 Các tính chấtcơ bản bài toán Tháp Hà Nộixoay vòng
Năm 1981, Atkinson [9] lần đầu tiên đã đề xuất một biến thểcủa trò chơi Tháp
Hà Nội với hạn chế sự di chuyển những chiếc đĩa chỉ theo một chiều kim
đồng hồ (cùng hoặc ngược chiều) và Ông đã đặt tên cho biến thể này là Bài toán Tháp Hà Nội xoay vòng (The cyclic tower of Hanoi)
Bài toán được phát biểu như sau:
Ba chiếc cọc được đặt trên ba đỉnh
của một tam giác đều và các đĩa
(được đặt theo qui tắc trên nhỏ
dưới to) bị hạn chế chuyển động
mỗi lần một đĩa, chỉ theo một
hướng (theo chiều quay của kim
đồng hồ hoặc ngược lại)
Giả sử Q n (và R n) là số lần chuyển
cần thiết tối thiểu để chuyển n đĩa
từ cọc 1 sang cọc 2 (từ cọc 1 sang
cọc 3) theo chiều kim đồng hồ
Dưới đây ta qui ước chiều của
chuyển động là theo chiều kim
đồng hồ
Hình 2.1
Xét n 1 Hiển nhiên ta có Q1 1 và R1 2.
Trang 31Xét n 2
Qui tắc chuyển tháp gồm hai đĩa từ cọc 1 sang cọc 2 như sau (Hình 2.1):
Bước 1: Chuyển đĩa 1 (nhỏ nhất) từ cọc 1 sang cọc 3 (qua cọc 2, mất 2 lần
chuyển);
Bước 2: Chuyển đĩa 2 (lớn nhất) từ cọc 1 sang cọc 2 (1 lần chuyển);
Bước 3: Chuyển đĩa 1 (nhỏ nhất) từ cọc 3 sang cọc 2 (qua cọc 1, mất 2 lần
chuyển)
Vậy Q2 5.
Qui tắc chuyển tháp gồm hai đĩa từ cọc 1 sang cọc 3 như sau (Hình 2.1):
Bước 1: Chuyển đĩa 1 (nhỏ nhất) từ cọc 1 sang cọc 3 (qua cọc 2, mất 2 lần
chuyển);
Bước 2: Chuyển đĩa 2 (lớn nhất) từ cọc 1 sang cọc 2 (1 lần chuyển);
Bước 3: Chuyển đĩa 1 (nhỏ nhất) từ cọc 3 sang cọc 1 (1 lần chuyển);
Bước 4: Chuyển đĩa 2 (lớn nhất) từ cọc 2 sang cọc 3 (1 lần chuyển);
Bước 5: Chuyển đĩa 1 (nhỏ nhất) từ cọc 1 sang cọc 3 (qua cọc 2, mất 2 lần
Tương tự, số lần cần thiết để chuyển tháp k đĩa từ cọc 1 sang cọc 3 (qua cọc 2) cũng chính bằng số lần cần thiết để chuyển tháp k đĩa từ cọc 3 sang cọc 2 (qua cọc 1) và cũng chính bằng số lần cần thiết để chuyển tháp k đĩa từ cọc 2 sang cọc 1 (qua cọc 3) và bằng R k.
Ta giải bài toán chuyển tháp từ cọc 1 sang cọc 2 nhƣ sau:
Trang 32Để chuyển tháp n đĩa từ cọc 1 sang cọc 2 (mất Q n lần chuyển), trước tiên ta phải chuyển tất cả (n 1) đĩa (trừ đĩa lớn nhất) sang cọc 3 (đi qua cọc 2), mất
Kí hiệu chuyển tháp n đĩa từ cọc 1 sang cọc 3 theo chiều kim đồng hồ (qua
cọc 2)mất R n lần chuyển Trước tiên ta phải chuyển tất cản 1 đĩa nhỏ, trừ đĩa lớn nhất, sang cọc 3 (đi qua cọc 2), mất R n 1 lần chuyển Sau đó một lần chuyển đĩa lớn nhất từ cọc 1 sang cọc 2 Tiếp theo chuyển tháp n 1 đĩa từ cọc 3 sang cọc 1, mất Q n 1 lần chuyển Sau đó chuyển đĩa lớn nhất từ cọc 2 sang cọc 3 Và cuối cùng, chuyển tháp n 1 đĩa từ cọc 1 sang cọc 3, mất R n 1
lần chuyển Như vậy, số lần chuyển tháp n đĩa từ cọc 2 sang cọc 1 là:
1
n
R Vậy nghiệm tổng quát của phương trình này có dạng
Trang 33representation approach) để giải quyết bài toán Tháp Hà Nộivà đưa ra một thuật toán lặp nhờcách tiếp cận biểu diễn đó Dưới đây, chúng tôi trình bày (với giải thích tỉ mỉ hơn so với các bài báo gốc) cách tiếp cận (phương pháp) biểu diễn của Er(theo [12], [14]) cho bài toán Tháp Hà Nội với chuyển động xoay vòng
Trong bài toán xoay vòng, ba cọc (P1, P2 và P3) được sắp xếp thành một hình tròn theo hướng cùng chiều kim đồng hồ (hoặc ngược chiều kim đồng hồ), tương ứng là P1 P2 P3 P1(hoặcP1 P3 P2 P1) và n đĩa
1, 2, 3, , n
D D D D với kích thước khác nhau D i D nếui j j Các đĩa ban
Trang 34đầu được xếp chồng lên nhau trên một cọc theo kích cỡ giảm dần với đĩa nhỏ nhất được đặt trên cùng
Hình 2.2
Mục tiêu là di chuyển tháp đĩa từ P i P j,i j với qui tắc như sau:
(a) Mỗi lần chỉ được di chuyển một đĩa tới một cọc bên cạnh
(b) Hướng di chuyển của một đĩa phải theo chiều kim đồng hồ
(c) Chỉ có đĩa trên cùng của tháp được di chuyển
(d) Không có đĩa D nào được đặt trên đĩa j D i nhỏ hơn, i j
Không hạn chế tổng quát, giả sử lúc đầu tháp đĩa được đặt trên cọc P1và cần chuyển đĩa tới cọc P2.Ta có thể biểu diễn một cách hình thức dưới dạng sau:
Khin 1thì chỉ có một đĩa D1 chuyển từ P1 sang P2theo chiều kim đồng hồ và
Cây biểu diễn (tree representation) chuyển động của đĩa được mô tả như sau:
Khi n 2 đĩa nhỏ D1 phải chuyển ngược kim đồng hồ từ P1 sang P3. Sau đóđĩa lớn sẽ được chuyển từ P1 sang P2 theo chiều kim đồng hồ Cuối cùng chuyển đĩa nhỏ từ P3 sang P1ngược chiều kim đồng hồ Ta có biểu diễn:
Trang 35Cây biểu diễn chuyển động của hai đĩa được mô tả như sau:
Vớin 3, đầu tiên hai đĩa nhỏ D D1, 2 phải chuyển ngược kim đồng hồ từ P1
sang P3. Sau đóđĩa lớn sẽ được chuyển từ P1 sang P2 theo chiều kim đồng hồ Cuối cùng chuyển hai đĩa nhỏ từP3 sang P1ngược chiều kim đồng hồ Ta có biểu diễn:
Để chuyển hai đĩa nhỏ D D1, 2 ngược kim đồng hồ từ P1 sang P3, cụ thể ta phải làm như sau: Chuyểnđĩa nhỏ nhất D1 theo chiều kim đồng hồ từ P1 sang P2.
Sau đóchuyển đĩa D2từ P1 sang P3ngược chiều kim đồng hồ Cuối cùng chuyển đĩa nhỏ từ P2 sang P3theo chiều kim đồng hồ Tức là:
Cây biểu diễn chuyển động của ba đĩa được mô tả như sau:
Hình 2.3