luẬn vĂn thẠc sĨ toÁn hỌc -...
TRANSCRIPT
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
ĐẠI HỌC THÁI NGUYÊN
TRƢỜNG ĐẠI HỌC SƢ PHẠM
NGUYỄN THỊ HỒNG PHƢỢNG
THUẬT TOÁN FRAME – STEWART GIẢI BÀI TOÁN
THÁP HÀ NỘI TỔNG QUÁT
LUẬN VĂN THẠC SĨ TOÁN HỌC
THÁI NGUYÊN - 2010
www.VNMATH.com
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
ĐẠI HỌC THÁI NGUYÊN
TRƢỜNG ĐẠI HỌC SƢ PHẠM
NGUYỄN THỊ HỒNG PHƢỢNG
THUẬT TOÁN FRAME – STEWART GIẢI BÀI TOÁN
THÁP HÀ NỘI TỔNG QUÁT
LUẬN VĂN THẠC SĨ TOÁN HỌC
Chuyên ngành: Giải tích
Mã số: 60 46 01
Người hướng dẫn khoa học: PGS. TS. TẠ DUY PHƢỢNG
THÁI NGUYÊN - 2010
www.VNMATH.com
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
1
MỤC LỤC Trang
MỤC LỤC
LỜI NÓI ĐẦU ............................................................................................... 2
Chƣơng 1 ....................................................................................................... 4
TỔNG QUAN VỀ TRÒ CHƠI THÁP HÀ NỘI .......................................... 4
§1. Lịch sử trò chơi Tháp Hà Nội ............................................................ 4
§2. Sơ lược về bài toán tháp Hà Nội tổng quát, các bài toán cải biên và
các vấn đề toán học liên quan ................................................................ 15
Chƣơng 2: TRÒ CHƠI THÁP HÀ NỘI..................................................... 21
§1 Trò chơi tháp Hà Nội và thuật giải đệ qui.......................................... 21
§2 Giải bài toán tháp Hà Nội bằng biểu diễn trong hệ đếm cơ số 2 ........ 26
§3 Đồ thị Hà Nội.................................................................................... 34
§4 Giải bài toán Tháp Hà Nội trên máy tính ........................................... 38
Chƣơng 3: BÀI TOÁN THÁP HÀ NỘI VỚI BỐN CỌC (Trò chơi
Reve-The Reve’s Puzzle) ............................................................................. 39
§1 Trò chơi Tháp Hà Nội với bốn cọc .................................................... 39
§2 Tính số bước chuyển tối ưu trong trò chơi Tháp Hà Nội với bốn cọc...... 43
Chƣơng 4: BÀI TOÁN THÁP HÀ NỘI TỔNG QUÁT............................. 52
§1 Tính số ( )pS n trong thuật toán Frame-Stewart cho trò chơi Tháp
Hà Nội tổng quát ................................................................................... 52
§2 Đánh giá ( )pS n ............................................................................... 68
§3 Sự tương đương của một số thuật toán giải bài toán Tháp Hà Nội
tổng quát................................................................................................ 70
KẾT LUẬN .................................................................................................. 78
TÀI LIỆU THAM KHẢO ........................................................................... 79
www.VNMATH.com
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
2
LỜI NÓI ĐẦU
Trò chơi (Bài toán) Tháp Hà Nội được phổ biến rộng rãi ở Paris năm
1883 bởi nhà toán học Edouard Lucas, là một bài toán nổi tiếng thế giới, hiện
nay đang được nghiên cứu bởi rất nhiều nhà toán học và khoa học máy tính,
các chuyên gia giáo dục và y học, được đưa vào nhiều giáo trình tin học và
sách về trò chơi toán học như một ví dụ điển hình về thuật toán đệ qui và lập
trình căn bản, nhưng hình như chưa được chú ý nghiên cứu ở Việt Nam. Mặc
dù trò chơi Tháp Hà Nội có mặt trên khá nhiều trang WEB và giáo trình tiếng
Việt, số lượng bài viết tiếng Việt giới thiệu về trò chơi và bài toán Tháp Hà
Nội trên các tạp chí là rất ít và còn rất sơ lược (xem [1]-[6]), hình như chưa có
bài nghiên cứu tiếng Việt nào về bài toán Tháp Hà Nội, trong khi đó 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-Tin
học đã có đến hơn 450 bài với khoảng 250 bài với đầu đề có cụm từ "The
Tower of Hanoi", đăng trên hơn 100 tạp chí khoa học uy tín (trong [5] thống
kê số lượng bài báo khoa học viết về Tháp Hà Nội là 464 bà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
và y học. Trò chơi Tháp Hà Nội thú vị đến mức nó đã được dùng làm đề tài
của một số luận án Tiến sĩ và luận văn cao học. Một hội thảo khoa học quốc
tế [21] với tên gọi Workshop on the Tower of Hanoi and Related Problems đã
được tổ chức năm 2005.
Bài toán Tháp Hà Nội không chỉ thú vị ở chỗ nó mang tên Hà Nội, thủ
đô của Việt nam, mà nó hấp dẫn các nhà Toán-Tin học bởi nó liên quan đến
nhiều vấn đề như giải thuật đệ qui, hệ đếm, tam giác Pascal, thảm Sierpinski,
lý thuyết đồ thị và chu trình Hamilton, ôtômát hữu hạn, độ phức tạp tính
toán,.... Bài toán Tháp Hà Nội gợi ý cho nhiều nghiên cứu trong khoa học
máy tính và toán học.
Luận văn Thuật toán Frame-Stewart giải bài toán Tháp Hà Nội tổng
quát có mục đích trình bày tổng quan về một thuật toán quan trọng giải bài
toán Tháp Hà Nội với số cọc bất kì.
www.VNMATH.com
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
3
Luận văn gồm phần mở đầu, bốn Chương và phần tài liệu tham khảo.
Chương 1. Tổng quan về trò chơi Tháp Hà Nội.
Chương 2. Bài toán Tháp Hà Nội cổ điển.
Chương 3. Bài toán Tháp Hà Nội với bốn cọc.
Chương 4. Bài toán Tháp Hà Nội tổng quát.
Chương 1 giới thiệu tổng quan về Trò chơi Tháp Hà Nội.
Lời giải Bài toán Tháp Hà Nội cho ba cọc được trình bày trong Chương 2.
Sau hơn 100 năm, trò chơi Tháp Hà Nội đã có những cải biên và tổng
quát hoá (trò chơi Tháp Hà Nội xoay vòng, trò chơi Tháp Hà Nội song song,
trò chơi Tháp Hà Nội với nhiều cọc,...). 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. Trong luận văn này, chúng tôi tập trung trình bày trong
Chương 3 và Chương 4 lời giải của bài toán Tháp Hà Nội, đó là Thuật toán đệ
qui dạng Frame-Stewart giải bài toán Tháp Hà Nội tổng quát.
Luận văn được hoàn thành dưới sự hướng dẫn tận tình của PGS.TS Tạ
Duy Phượng. Em xin bầy tỏ lòng biết ơn sâu sắc nhất đối với Thầy và xin
được cảm ơn Thầy đã cung cấp nhiều tài liệu đồng thời cho phép sử dụng Bản
thảo cuốn sách của Thầy về Tháp Hà Nội.
Em xin cảm ơn các Thầy Cô của Đại học Thái Nguyên và Viện Toán
học đã tận tình giảng dạy em trong suốt quá trình học cao học.
Tôi xin cảm ơn khoa Toán trường ĐHSP Thái Nguyên, khoa Sau Đại
học trường ĐHSP Thái Nguyên đã 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 của mình.
Xin 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 làm luận văn.
Thái Nguyên, 19.8.2010
Nguyễn Thị Hồng Phượng
www.VNMATH.com
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
4
Chƣơng 1
TỔNG QUAN VỀ TRÒ CHƠI THÁP HÀ NỘI
§1. Lịch sử trò chơi Tháp Hà Nội
Bìa cuốn sách của E. Lucas xuất bản tại Paris năm 1895, trong đó có 4
trang (179-183) viết về trò chơi Tháp Hà Nội.
1.1 Truyền thuyết
Theo một truyền thuyết, liên tục suốt ngày đêm, các nhà tu hành của tòa
tháp Brahma trong thành Bernares (Ấn Độ) phải chuyển 64 đĩa vàng từ một
cọc này sang cọc khác của tòa tháp. Các đĩa có kích thước khác nhau và lúc
www.VNMATH.com
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
5
đầu được đặt trên một trong ba cọc của tòa tháp theo thứ tự đĩa nhỏ ở trên, đĩa
lớn ở dưới. Đĩa trên cùng được chuyển sang cọc khác, mỗi lần chỉ di chuyển
một đĩa. Do tính dễ vỡ, đĩa lớn không được đặt lên trên đĩa nhỏ. Trong quá
trình di chuyển, có thể đặt đĩa lên một cọc trung gian. Khi công việc hoàn
thành, tòa tháp sẽ đổ, và lúc đó cũng là thời điểm kết thúc của vũ trụ với một
tiếng nổ khủng khiếp!
1.2 Lịch sử
Dựa trên truyền thuyết về tháp Brahma, và có thể, theo truyền thuyết về sự
tồn tại những ngôi tháp cổ đồng dạng với tháp Brahma trong vùng đất phật giáo
linh thiêng gần Hà Nội (Bắc Ninh?, Vĩnh Phúc?), Việt Nam, nhà toán học
người Pháp Edouard Lucas (quê ở Amiens) đã phổ biến Trò chơi Tháp Hà Nội
ở Paris năm 1883 với tên giả là giáo sư N. Claus. Năm 1884, Parvile trong [14]
đã trình bày lời giải bài toán Tháp Hà Nội và tiết lộ giáo sư N. Claus chính là
tên giả của nhà nghiên cứu lí thuyết số nổi tiếng Eduard Lucas.
Trên bìa của hộp đựng trò chơi sản xuất năm 1883 và trong cuốn sách
L’Arithméique Amusante, xuất bản tại Paris năm 1895 (sau khi Ông mất), chính
Edouard Lucas đã viết ([12], trang 179): “…la Tour d’Hanoi, véritable casse-
tête annamite…” (Tháp Hà Nội, một trò chơi trí tuệ của người Annam), nhưng
tại sao ông lại gọi trò chơi này là trò chơi Tháp Hà Nội thì chưa có câu trả lời
thật rõ ràng.
Rất có thể (theo Edouard 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 (Bắc Kì, Việt Nam)”. Tuy nhiên, cho tới nay, các nhà lịch sử có lẽ
vẫn chưa tìm thấy các đĩa sứ của trò chơi tháp Hà Nội tại châu Á. Những hộp đựng
trò chơi cũ nhất vẫn là hộp đựng các đĩa sản xuất tại Pháp năm 1883.
Theo David G. Pool [15], trích dẫn theo P. J. Hilton [10], sự tồn tại
những ngôi tháp gần Hà Nội (Việt Nam) là lí do để E. Lucas đã đặt tên cho
trò chơi của mình là Trò chơi Tháp Hà Nội.
www.VNMATH.com
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
6
Có một giả định rằng: “nhà toán học đến thăm Việt Nam, ngắm cảnh Hồ
Gươm và bị quyến rũ bởi vẻ đẹp của Tháp Rùa nên đã đặt tên là Bài toán
Tháp Hà Nội”. Nếu có tư liệu khẳng định nhà toán học nổi tiếng E. Lucas đã
đến Hà Nội từ trước năm 1883 (Pháp chiếm Hà Nội năm 1882) thì thật là thú
vị. Tuy nhiên, lúc đó E. Lucas đã ra khỏi quân đội và đang dạy học, vì vậy ít
có khả năng ông đã đến Hà Nội.
Cũng có lẽ Cột cờ Hà Nội đã gợi ý cho E.
Lucas đặt tên trò chơi của mình là Tháp Hà
Nội: “The Flag Tower of Hanoi may have
served as the inspiration for the name”. Cột cờ
Hà Nội có đáy gồm ba khối vuông xây chồng
lên nhau. Trò chơi Tháp Hà Nội đơn giản nhất
cũng gồm ba đĩa tròn xếp chồng lên nhau. Cột
cờ Hà Nội xây năm 1805-1812, Tháp Rùa xây
năm 1886, trò chơi Tháp Hà Nội xuất hiện ở
Paris 1883.
Có thể Pháp chiếm Hà Nội là đề tài thời sự
ở Paris vào những năm 1882-1883, và điều này
gợi ý E. Lucas đặt tên cho trò chơi của mình là
Tháp Hà Nội?
Trò chơi Tháp Hà Nội vừa được phổ biến
đã được đón nhận rộng rãi vì sự đơn giản và hấp
dẫn của nó. Mặc dù chưa có câu trả lời rõ ràng
về lí do E. Lucas đặt tên cho trò chơi của mình
là trò chơi Tháp Hà Nội, người Việt Nam vẫn có
thể tự hào và cần quan tâm về trò chơi này.
Dưới đây là bìa của hộp đựng trò chơi
Tháp Hà Nội 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. Đây là
những tư liệu quí về lịch sử trò chơi.
www.VNMATH.com
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
7
Bìa của hộp đựng trò chơi Tháp Hà Nội đƣợc bán lần đầu tại Paris
năm 1883.
Trên tờ bìa này có một hình tháp 10 tầng, cây tre, người Annam (Việt
Nam) và ghi rõ: 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-
Sian (Tháp Hà Nội, Trò chơi trí tuệ của người Annam, được giới thiệu bởi
giáo sư N. Claus (ở Siam), trường trung học Li-Sou-Sian).
www.VNMATH.com
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
8
www.VNMATH.com
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
9
Bản dịch 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:
THÁP HÀ NỘI
Trò 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 Cao đẳng Li-Sou-Stian!
Trò chơi này được tìm thấy, lần đầu, trong cuốn sách được minh họa
Quan thoại FER-FER-TAM-TAM, đang được xuất bản, trong tương lai gần,
bởi chính phủ Trung Hoa. 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, 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 quy 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ỷ!
Theo một truyền thuyết Ấn Độ, những người Brahmin đã 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à Brahmin 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ữ.
www.VNMATH.com
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
10
Bản dịch tờ hướng dẫn trò chơi Tháp Hà Nội được sản xuất lần đầu tại Paris:
Luật chơi và cách chơi trò chơi THÁ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 đó.
www.VNMATH.com
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
11
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.
Với tháp hai đĩa ba lần chuyển là đủ Số đĩa Số lần chuyển
Ba đĩa 7 lần 6 đĩa 63 lần
Bốn đĩa 15 lần 7 đĩa 127 lần
Năm đĩa 31 lần 8 đĩa 255 lầ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
Trên mạng Internet có rất nhiều chương trình hiển thị minh họa và hướng
dẫn trò chơi Tháp Hà Nội (với ba cọc). Ngoài ra, có thể tìm mua trò chơi
Tháp Hà Nội làm bằng gỗ hoặc sứ tại các cửa hàng Việt Nam hoặc nước
ngoài để giải trí.
Dưới đây chúng tôi chụp lại bốn trang (179-183) viết về Tháp Hà Nội
trong cuốn sách Số học vui của E.Lucas xuất bản năm 1895 (sau khi Ông mất)
www.VNMATH.com
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
12
www.VNMATH.com
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
13
www.VNMATH.com
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
14
www.VNMATH.com
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
15
§2. Sơ lƣợc về bài toán tháp Hà Nội tổng quát, các bài toán cải biên
và các vấn đề toán học liên quan
Trò chơi Tháp Hà Nội ngày càng được các nhà toán học quan tâm, Với
sự phát triển của tin học, bài toán tháp Hà Nội lại càng thu hút sự chú ý của
các nhà toán-tin học. Nó trở thành ví dụ điển hình về phương pháp giải đệ qui
và lập trình căn bản.
2.1 Bài toán Tháp Hà Nội tổng quát
Bài toán Tháp Hà Nội với ba cọc và n đĩa có thể giải được dễ dàng theo
thuật giải đệ qui (xem Chương 2). Hơn nữa, có thể biết chính xác số lần cần
chuyển tối ưu cho bài toán với n đĩa là 2 1n lần. Vì vậy nó thường được
dùng làm thí dụ kinh điển về lập trình căn bản và thuật giải đệ qui cũng như
minh họa về độ phức tạp tính toán (thời gian mũ) của bài toán với thuật giải
đơn giản và tối ưu.
Một mở rộng tự nhiên của bài toán Tháp Hà Nội với ba cọc là Bài toán
Tháp Hà Nội với bốn (hoặc nhiều) cọc.
Theo một số tài liệu, 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 1899. Năm 1902-
1903 Henry Ernest Dudeney đã viết về bài toán Tháp Hà Nội với bốn cọc
trong hai bài báo. Trong hai trang đầu tiên của cuốn sách nổi tiếng của Ông
The Canterbury Puzzles (xem [7]) ông đã viết về bài toán này (và gọi là
www.VNMATH.com
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
16
Reve's puzzle) với số cọc là 4 và số đĩa là 8, 10 hoặc 21, chỉ có khác là Ông đã
thay các đĩa bằng các quân cờ. Trong 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 hoặ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à các số ( 1)
2k
k kt
, 1,2,...k Giả sử
( 1)
2k
k kt
là số tam giác thứ k và 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ố rằng
4 4 12 2 1k
k kM t M t , 4 1 1M . Từ đây ta có 4 3 5M ;
4 6 17M , 4 10 49M ,… 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 8n .
Bài toán tổng quát với 3p 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 [17]). Lời giải của bài toán này đã được Stewart [19] và
Frame [9] 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 [11]).
Vì vậy người ta thường gọi thuật toán của hai ông hoặc các thuật toán cải biên
tương tự là thuật toán Frame- Stewart. Thuật toán Frame-Stewart cùng các
thuật toán tương đương sẽ được trình bày trong Chương 3 và Chương 4.
Thuật toán Stewart (1941)
Thuật toán truy hồi do Stewart đề xuất 1941, được coi là presumably-
optimal solution (lời giải giả định là tối ưu) cho bài toán bốn cọc (hoặc nhiều
hơn). Giả sử n là số đĩa và p là số cọc. Để 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.
www.VNMATH.com
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
17
Bước 1. Với số l , 1 l n , chuyển l đĩa trên cùng tới cọc 1, mất ( )pS l lần
chuyển. Sử dụng tất cả các cọc trong khi chuyển.
Bước 2. Giữ nguyên cọc 1 chứa l đĩa trên cùng. Chuyển n l đĩa tới cọc
đích, sử dụng 1p cọc còn lại (vì cọc 1 đang được dùng để chứa l đĩa nhỏ
nhất), mất 1( )pS n l lần chuyển.
Bước 3. Cuối cùng, chuyển l đĩa trên cùng từ cọc 1 tới cọc đích, mất ( )pS l
lần chuyển nữa. Được phép sử dụng tất cả các cọc.
Như vậy, tổng cộng cần 12 ( ) ( )p pS l S 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 Stewart nói trên (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
1 11
2 ( ) ( ) min 2 ( ) ( )p p p pl n
S i S n i S l S n l
. (1.1)
Nói cách khác, các giá trị i thỏa mãn (1.1) là số bước chuyển tối ưu trong lớp
các thuật toán đề nghị.
Stewart và Frame cũng đã chứng minh rằng, nếu n là số tam giác kn t , thì
cách chọn tối ưu nhất cho l là l k , trong khi đó nếu 1k kt n t thì cả hai
giá trị 1k và k đều là cách chọn tối ưu cho l . Như vậy, Stewart và Frame
đã đề xuất thuật toán hiển cho bài toán Tháp Hà Nội với bốn cọc. Thuật toán
này trùng với lời giải của Dudeney trong các trường hợp riêng nêu trên. Từ
đây ta cũng có nhận xét 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.
Otto Dunkel, tổng biên tập của tạp chí The Americal Mathematical
Montly khi cho đăng hai lời giải trên đã 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 rằng trong số tất cả các giá trị có thể của l theo thuật
www.VNMATH.com
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
18
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. Tuy
nhiên hai ông chưa chứng minh rằng 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à 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 (xem
trích dẫn đầy đủ trong [5]). Gần đây một số tác giả đề nghị một số thuật toán
hồi qui tương đương với thuật toán Frame và Stewart (xem [11]). 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 bài toán mới.
Việc chưa chứng minh được lời giải cho 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 chứng minh được số lần chuyển đĩa tối ưu chính xác là bao
nhiê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).
Giả thuyết Frame-Stewart (chưa được chứng minh) nói rằng thuật toán
Frame-Stewart luôn cho lời giải tối ưu. 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.
Theo Donald Knuth, nhà tin học nổi tiếng thế giới đã gọi giả thuyết này là
“giả thuyết Frame” và Ông đã viết: “Tôi nghi ngờ rằng ai đó đã giải được giả
thuyết này. Nó thật sự khó”.
2.2. Bài toán Tháp Hà Nội cải biên
Bài toán Tháp Hà Nội có khá nhiều cải biên rất thú vị. Mỗi 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 học mới. 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.
www.VNMATH.com
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
19
2.2.1 Bài toán Tháp Hà Nội với vị trí bất kì
Bài toán Tháp Hà Nội với ba cọc và n đĩa đã được E. Lucas cải biên ngay
khi phổ biến cách chơi năm 1883. Đó là trò chơi Tháp Hà Nội với vị trí bất kì:
có thể coi vị trí của đĩa là bất kì (không nhất thiết phải tất cả các đĩa nằ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”). Bài toán đã được Hinz nghiên cứu khá kĩ.
2.2.2 Bài toán Tháp Hà Nội quay vòng (cyclic moving)
Có thể đóng ba cọc trên ba đỉnh của một tam giác và chuyển động các
đĩa theo chiều quay của kim đồng hồ hoặc ngược lại.
2.2.2 Bài toán Tháp Hà Nội song song (parallel moving)
Có thể chuyển các đĩa từ cọc này sang cọc khác trong cùng một thời gian.
2.2.2 Bài toán Tháp Hà Nội hỗn hợp
Kết hợp giữa bài toán Tháp Hà Nội quay vòng với chuyển động song song.
Các cải biên của bài toán Tháp Hà Nội đặt ra những bài toán mới thú vị,
có thể nói khó không kém bài toán ban đầu.
2.3 Một số vấn đề toán học liên quan đến bài toán Tháp Hà Nội
Nhiều bài toán của toán học và tin học thú vị xuất hiện trong trò chơi
Tháp Hà Nội. Dưới đây liệt kê một vài vấn đề chính.
2.3.1 Đồ thị Hà Nội
Các nhà toán học đã phát hiện ra rằng Tháp Hà Nội có cùng bản chất với
bài toán tìm đường Hamilton (Hamilton Path) trên một hình giả phương cấp
n (n -Hypercube), một bài toán cũng rất nổi tiếng.
Nhà toán học D.G. Poole đã phát hiện ra Lược đồ Hà Nội -một tam giác
có các đỉnh tương ứng với các cách sắp xếp đĩa trong Tháp Hà Nội, từ đó tìm
ra những liên hệ lý thú giữa Tam giác Pascal với Lược đồ Hà Nội. Liên hệ
này đã được công bố trong một công trình mang một cái tên đầy liên tưởng:
Pascal biết Hà Nội (Pascal knows Hanoi, [15]).
www.VNMATH.com
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
20
Có thể biểu diễn trò chơi dưới dạng một đồ thị không có hướng đơn
giản. Các nút chính là các phân bố của các đĩa và các cạnh chính là các
chuyển động. Nhưng, thậm chí được thực hiện một cách khéo léo thuật toán
của Dijkstra để tìm một (hoặc tất cả) các đường ngắn nhất chuyển đĩa từ một
cọc này sang cọc khác trên máy tính nhanh nhất hiện nay, thuật toán này
không cho một con đường hữu hiệu tính nghiệm của bài toán với số lượng đĩa
lớn. Chương trình này đỏi hỏi nhiều thời gian và bộ nhớ hơn là có thể. Do đó,
thậm chí có thuật toán, ta vẫn không thể biết cần bao nhiêu lần chuyển đĩa mà
lời giải tối ưu đòi hỏi và có bao nhiêu lời giải tối ưu cho bài toán, thí dụ, với
1000 đĩa và 10 cọc.
Rất nhiều nghiên cứu bài toán tháp Hà Nội với tên gọi Đồ thị Hà Nội.
2.3.1 Thuật toán giải trò chơi Tháp Hà Nội
Trò chơi Tháp Hà Nội và các cải biên của nó đặt ra những câu hỏi khá
thú vị: Tìm thuật toán tối ưu giải quyết trò chơi, đánh giá độ phức tạp của
thuật toán,… Một thuật toán, có lẽ là quan trọng nhất, được trình bày trong
luận văn này (Chương 3 và 4), đó là thuật toán Frame-Stewart và các cải biên
của nó.
2.4 Bài toán Tháp Hà Nội trong y học và giáo dục
Bài toán Tháp Hà Nội thường được dùng trong nghiên cứu tâm lý về
cách giải quyết vấn đề (problem solving). Cũng có những biến thể khác của
bài toán này gọi là Tháp Luân Đôn (Tower of London) dùng trong chuẩn đoán
và điều trị thần kinh tâm lý đối với các chức năng thực hành. Những vấn đề
này không được đề cập trong luận văn này
www.VNMATH.com
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
21
Chƣơng 2
TRÒ CHƠI THÁP HÀ NỘI
§1 Trò chơi tháp Hà Nội và thuật giải đệ qui
Luật chơi của trò chơi Tháp Hà Nội đã được qui định rõ trong tờ hướng
dẫn thứ hai khi Trò chơi Tháp Hà Nội được phổ biến lần đầu tại Paris năm
1883 (xem Chương 1). Trong cuốn sách của mình, E. Lucas mô tả trò chơi
gồm 8 đĩa ([12], trang 180-181). Dưới đây trình bày lời giải bài toán Tháp Hà
Nội với ba cọc và số đĩa n bất kì.
Bài toán 1
Có n đĩa kích thước nhỏ dần xếp chồng lên nhau trên một cọc (được gọi
là cọc nguồn, cọc A), đĩa lớn ở dưới, đĩa nhỏ ở trên. Ngoài cọc nguồn còn có
hai cọc trống khác, được gọi là cọc đích và cọc trung gian (cọc B và cọc C).
Hãy chuyển các đĩa này từ cọc nguồn sang cọc đích (một trong hai cọc B
hoặc C) tuân theo hai qui tắc sau:
Qui tắc 1. Mỗi lần chỉ được chuyển một đĩa từ cọc này sang cọc khác và
được dùng cọc thứ ba làm cọc trung chuyển.
Qui tắc 2. Không được xếp đĩa lớn nằm trên đĩa nhỏ.
Giải
Trước tiên ta xét bài toán với 1, 2, 3 đĩa.
Bài toán với 1 đĩa: chỉ cần 1 lần chuyển (Hình 1)
Lần 1: Chuyển đĩa từ cọc A sang cọc C.
Hình 1
www.VNMATH.com
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
22
Bài toán với 2 đĩa: cần 3 lần chuyển (Hình 2)
Lần 1: Chuyển đĩa số 1 từ cọc A sang cọc B .
Lần 2: Chuyển đĩa số 2 từ cọc A sang cọc C.
Lần 3: Chuyển đĩa số 1 từ cọc B sang cọc C (lên trên đĩa số 2). Kết thúc.
Hình 2
Bài toán với 3 đĩa: cần 7 lần chuyển (Hình 3)
Hai đĩa đầu làm như trường hợp 2 đĩa ở trên (ba lần chuyển):
Lần 1: Chuyển đĩa số 1 từ cọc A sang cọc C.
Lần 2: Chuyển đĩa số 2 từ cọc A sang cọc B.
Lần 3: Chuyển đĩa số 1 từ cọc C sang cọc B (lên trên đĩa số 2). Cọc C trống.
Lần 4: Chuyển đĩa số 3 từ cọc A sang cọc C. Cọc A trống.
Lại chuyển hai đĩa đầu từ cọc B sang cọc C (ba lần chuyển):
Lần 5: Chuyển đĩa số 1 từ cọc B sang cọc A.
Lần 6: Chuyển đĩa số 2 từ cọc B sang cọc C (chồng lên trên đĩa số 3).
Lần 7: Chuyển đĩa số 1 từ cọc B sang cọc C (chồng lên đĩa số 2). Kết thúc.
Hình 3
www.VNMATH.com
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
23
Bài toán với 4 đĩa: cần 15 lần chuyển (Hình 4)
Với 4n ta minh họa các bước chuyển đĩa như Hình 4 dưới đây.
Dòng 1 cột 1 biểu thị cả bốn đĩa nằm trên cọc A.
Hình 4
Trước tiên ta giải bài toán ba cọc (mất 7 lần chuyển):
Lần 1 (dòng 2 cột 1): Chuyển đĩa trên cùng (số 1) từ cọc A sang cọc C.
Lần 2 (dòng 3 cột 1): Chuyển đĩa số 2 từ cọc A sang cọc B.
Lần 3 (dòng 4 cột 1): Chuyển đĩa số 1 từ cọc C sang cọc B (cọc C trống).
Lần 4 (dòng 5 cột 1): Chuyển đĩa số 3 từ cọc A sang cọc B.
Lần 5 (dòng 6 cột 1): Chuyển đĩa số 1 từ cọc C sang cọc A.
Lần 6 (dòng 7 cột 1): Chuyển đĩa số 2 từ cọc C sang cọc B (cọc C trống).
Lần 7 (dòng 8 cột 1): Chuyển đĩa số 1 từ cọc A sang cọc B.
Như vậy, sau 7 lần chuyển, bài toán với 3 cọc và 3 đĩa đã giải xong.
Lần 8 (dòng 1 cột 2): Chuyển đĩa số 4 từ cọc A sang cọc C.
Tiếp theo lại giải bài toán ba cọc: Chuyển ba đĩa từ cọc B sang cọc C (mất
thêm 7 lần chuyển):
www.VNMATH.com
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
24
Lần 9 (dòng 2 cột 2): Chuyển đĩa số 1 từ cọc B sang cọc C.
Lần 10 (dòng 3 cột 2): Chuyển đĩa số 2 từ cọc B sang cọc A.
Lần 11 (dòng 4 cột 2): Chuyển đĩa số 1 từ cọc C sang cọc A.
Lần 12 (dòng 5 cột 2): Chuyển đĩa số 3 từ cọc B sang C (cọc B trống).
Lần 13 (dòng 6 cột 2): Chuyển đĩa số 1 từ cọc A sang cọc B.
Lần 14 (dòng 7 cột 2): Chuyển đĩa số 2 từ cọc A sang C (cọc A trống).
Lần 15 (dòng 8 cột 2): Chuyển đĩa 1 từ cọc B sang cọc C (cọc B trống).
Tổng cộng sau 15 lần chuyển các đĩa nằm trên cọc C.
Từ các trường hợp riêng trên, ta đi tới thuật giải tổng quát cho bài toán Tháp
Hà Nội với ba cọc và số đĩa n bất kì như sau.
Thuật toán
Trước tiên ta giải bài toán Tháp Hà Nội cho ba đĩa:
Chuyển đĩa số 1 từ cọc A sang cọc B; chuyển đĩa số 2 sang cọc C; chuyển đĩa
số 1 từ cọc B sang cọc C. Khi ấy đĩa số 1 nằm trên đĩa số 2. Vậy ta hiện đã có
hai đĩa nằm trên cọc C, cọc B hiện thời trống. Chuyển đĩa số 3 từ cọc A sang
cọc B. Lặp lại ba bước trên để giải bài toán cho hai đĩa: chuyển đĩa số 1 và đĩa
số 2 cho nằm lên trên đĩa số 3 trên cọc B.
Tiếp tục làm như vậy cho bốn, năm,…đĩa. Mỗi lần dựng xong tháp từ đĩa
thứ k đến đĩa thứ 1 (trên cọc B hoặc cọc C, một trong hai cọc đó trống), ta
chuyển đĩa thứ 1k từ cọc A sang cọc trống (cọc C hoặc cọc B), rồi lại di
chuyển tháp đã dựng lên đĩa thứ 1k để được tháp với 1k đĩa.
Như vậy, khi đã xây dựng xong tháp thứ k thì ta cũng dễ dàng xây dựng
được tháp thứ 1k sau khi chuyển đĩa thứ 1k sang cọc trống.
Phương pháp trên được gọi là thuật giải đệ qui: Để tiến hành giải bài
toán với 1n đĩa, ta áp dụng lại thuật giải bài toán với n đĩa. Toàn bộ quá
trình là một số hữu hạn các bước, vì đến một lúc nào đó thuật giải sẽ được áp
dụng cho 1n . Bước này chỉ đơn giản là chuyển một đĩa duy nhất từ cọc A
sang cọc B.
www.VNMATH.com
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
25
Thuật giải đệ qui bài toán tháp Hà Nội có thể phát biểu nhƣ sau.
Nếu 1n hoặc 2n thì bài toán giải được ngay.
Giả sử đã biết cách giải bài toán với 1n đĩa. Giải bài toán cho n đĩa
như sau:
Chuyển 1n đĩa trên cùng từ cọc A sang cọc B (theo giả thiết đã biết
cách giải).
Chuyển đĩa thứ n (dưới cùng trên cọc A) từ cọc A sang cọc C (Bài toán 1 đĩa).
Chuyển 1n đĩa từ cọc B sang cọc C (theo giả thiết đã biết cách giải).
Như vậy, lời giải bài toán rất đơn giản: giải bài toán n đĩa được đưa về
bài toán 1n đĩa và bài toán một đĩa.
Thuật giải đệ qui (có quan hệ mật thiết với phép qui nạp và công thức
truy hồi trong toán học) được áp dụng để giải rất nhiều bài toán. Thí dụ, bài
toán Josephus; Bài toán tính số Fibonacci;…
Kí hiệu ( )L n là số lần chuyển đĩa tối ưu trong bài toán tháp Hà Nội với
n đĩa và ba cọc. Khi ấy, để chuyển n đĩa từ cọc A sang cọc C, trước tiên ta
phải chuyển 1n đĩa trên cùng (các đĩa nhỏ) từ cọc A sang cọc B, sau đó
chuyển đĩa thứ n từ cọc A sang cọc C. Cuối cùng, lại chuyển 1n đĩa từ cọc
B sang cọc C. Ta có:
(1) 1L ; (2) 3L ; ( ) ( 1) (1) ( 1) 2 ( 1) 1L n L n L L n L n .
Theo qui nạp, ta dễ dàng chứng minh được ( ) 2 1nL n .
Một điều thú vị là dãy ( ) 2 1nL n chính là dãy số Merssen.
Thuật toán đệ qui giải bài toán Tháp Hà Nội nêu trên là thuật toán tối ưu (số
lần chuyển đĩa ít nhất). Theo công thức trên, nó là thuật toán có thời gian mũ.
Giả sử mỗi lần chuyển 1 đĩa hết thời gian 1 giây. Nếu có 64 đĩa thì thời gian
chuyển hết 64 đĩa là
642 1 18446744073703551615 giây50 tỉ năm.
www.VNMATH.com
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
26
Nếu sử dụng máy tính thực hiện chương trình đệ qui với tốc độ 1 triệu
phép toán/giây thì thời gian chạy máy là: 642 1 :1000000 50 000 năm.
Như vậy bài toán Tháp Hà Nội, mặc dù có thuật giải đơn giản và tối ưu,
nhưng không giải được trong thời gian thực.
Ta có thể minh họa bài toán theo cách khác như sau.
Cho ba cột và n đĩa. Kí hiệu dãy i kS a , 1,...,i n là chỉ số của các
đĩa cần phải chuyển tại bước thứ k . Dãy i kS a này được xây dựng theo
thuật giải đệ qui đơn giản bắt đầu với 1 1S cho một đĩa và theo công thức
truy hồi 1 1, ,n n nS S n S .
Bảng dưới đây chỉ ra cách xây dựng dãy nS cho các giá trị 1,2,3,4n .
n nS
1 1
2 1,2,1
3 1,2,1,3,1,2,1
4 1,2,1,3,1,2,1,4,1,2,1,3,1,2,1
Ta thấy dãy số nS có tính chất đối xứng và lồng nhau. Số ở giữa bao giờ
cũng là n , chính là số đĩa. Dãy 1nS lại có số ở giữa chính là 1n . Các số
trong dãy nS (nhận giá trị từ 1 đến n ) tương ứng với chỉ số của đĩa được
chuyển.
§2 Giải bài toán tháp Hà Nội bằng biểu diễn trong hệ đếm cơ số 2
Bằng cách chia cho 2, một số tự nhiên bất kì có thể biểu diễn dưới dạng
tổng các lũy thừa của 2 với các hệ số bằng 1 hoặc 0. Thí dụ,
10 9 8 7 6 4 3
10 9 8 7 6 5 4 3 2 1 0
2010 2 2 2 2 2 2 2 2
1.2 1.2 1.2 1.2 1.2 0.2 1.2 1.2 0.2 1.2 0.2 .
www.VNMATH.com
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
27
Như vậy, nếu chọn 2 làm cơ số trong hệ đếm cơ số 2 thì mọi số tự nhiên
đều có thể biểu diễn dưới dạng hệ đếm cơ số 2 với các hệ số 1 và 0. Các hệ số
trong phân tích số đã cho dưới dạng lũy thừa của 2 được gọi là các chữ số của
nó và số đã cho được biểu diễn trong hệ đếm theo vị trí, tương tự như trong hệ
đếm cơ số 10. Thí dụ (chỉ số dưới biểu thị cơ số):
10 22010 =11111011010 11111011010 .
Sau này, để cho gọn, ta sẽ không viết chỉ số cơ số 2 dưới số đã cho.
Ta có thể sử dụng hệ đếm cơ số 2 để giải bài toán Tháp Hà Nội cho ba cọc với
n đĩa như sau.
Để dễ hiểu, trước tiên ta xem xét trường hợp bài toán Tháp Hà Nội với
ba cọc và hai, ba, bốn đĩa hoặc năm đĩa.
Giải bài toán Tháp Hà Nội với hai đĩa nhờ hệ đếm cơ số 2
Bước 0: Hai đĩa ở cọc A, kí hiệu là 2
00 .
Bước 1: Chuyển đĩa số 1 từ cọc A sang cọc trống B, kí hiệu là 2
01 .
Chữ số 1 cuối cùng biểu thị đĩa trên cùng đã được chuyển ( 10201 1 ).
Bước 2: Chuyển đĩa số 2 từ cọc A sang cọc trống C, kí hiệu là 2
10 .
Chữ số 1 thứ hai biểu thị đĩa thứ hai đã được chuyển ( 10210 2 ).
Hai chữ số 1 và 0 biểu thị hai đĩa ở hai cọc khác nhau.
Bước 3: Chuyển đĩa số 1 từ cọc B sang cọc C, kí hiệu là 2
11 . Chữ số 1
thứ hai biểu thị đĩa thứ hai đã được chuyển. Hai chữ số 1 và 1 biểu thị hai đĩa
ở trên cùng một cọc (đĩa thứ hai chồng lên đĩa thứ nhất , 10211 3 ).
Giải bài toán Tháp Hà Nội với ba đĩa nhờ hệ đếm cơ số 2
Bước 0: Ba đĩa ở cọc A, kí hiệu là 2
000 .
Bước 1: Chuyển đĩa số 1 từ cọc A sang cọc trống C, kí hiệu là
102001 1 .
Chữ số 1 ở vị trí thứ nhất (từ bên phải) biểu thị đĩa trên cùng đã được
chuyển.
www.VNMATH.com
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
28
Bước 2: Chuyển đĩa số 2 từ cọc A sang cọc trống B, kí hiệu là 2
010 .
Chữ số 1 ở vị trí thứ hai biểu thị đĩa thứ hai đã được chuyển
( 10210 2 ).
Ba chữ số 0, 1, 0 biểu thị ba đĩa ở ba cọc khác nhau.
Bước 3: Chuyển đĩa số 1 từ cọc C sang cọc B, kí hiệu là
2
011 ( 102011 3 ). Chữ số 1 ở vị trí thứ nhất (khác với số 0 trong
2010 ở
bước 2) biểu thị đĩa số 1 đã được chuyển. Ba chữ số 0, 1, 1 biểu thị hai đĩa
nhỏ ở trên cùng cọc C (đĩa thứ hai chồng lên đĩa thứ nhất), đĩa lớn ở cọc khác
(cọc A). Cọc C trống.
Bước 4: Chuyển đĩa số 3 từ cọc A sang cọc C, kí hiệu là
2
100 ( 102100 4 ). Chữ số 1 thứ ba biểu thị đĩa số 3 đã được chuyển. Ba
chữ số 1, 0, 0 biểu thị hai đĩa nhỏ ở trên cùng một cọc B (đĩa thứ hai chồng
lên đĩa thứ nhất) và không chuyển, đĩa lớn ở cọc khác (cọc C). Cọc A trống.
Bước 5: Chuyển đĩa số 1 từ cọc B sang cọc A, kí hiệu là
2
101 ( 102101 5 ). Chữ số 1 thứ ba (khác số 0 trong bước 4) biểu thị đĩa số
3 đã được chuyển.
Ba chữ số 1, 0, 1 khác nhau biểu thị ba đĩa ở ba cọc khác nhau.
Bước 6: Chuyển đĩa số 2 từ cọc B sang cọc C, kí hiệu là
2
110 ( 102110 6 ). Chữ số 1 thứ n (khác số 0 trong bước 4) biểu thị đĩa số 3
đã được chuyển.
Ba chữ số 1, 0, 1 khác nhau biểu thị ba đĩa ở ba cọc khác nhau.
Lần 6: Chuyển đĩa 2 từ cọc B sang cọc C (chồng lên trên đĩa 3).
Lần 7: Chuyển đĩa 1 từ cọc B sang cọc C (chồng lên đĩa 2). Kết thúc.
Giải bài toán Tháp Hà Nội với bốn đĩa nhờ hệ đếm cơ số 2
Số lần chuyển cần thiết trong bài toán ba cọc với bốn đĩa là 42 1 15 .
Kí hiệu các cọc là cọc A (cọc nguồn chứa 4 đĩa), cọc B và cọc C, các đĩa là 1,
2, 3, 4 theo thứ tự từ nhỏ đến lớn.
www.VNMATH.com
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
29
Biểu thị vi trí ban đầu, khi tất cả bốn đĩa ở cọc A là số 2
0000 có bốn
chữ số 0 .
Bước 1: Chuyển đĩa số 1 từ cọc A sang cọc trống C, kí hiệu là 2
0001 .
Số 1 ở vị trí cuối cùng biểu thị đĩa số 1 được chuyển (sang cọc trống C).
Bước 2: Chuyển đĩa số 2 từ cọc A sang cọc trống B, kí hiệu bởi
2
0010 . Số 1 ở vị trí thứ hai (tính từ bên phải) biểu thị đĩa số 2 được chuyển
(sang cọc trống B). Hai số 10 ở vị trí cuối cùng biểu thị hai đĩa được đặt lên
hai cọc khác nhau.
Bước 3: Chuyển đĩa số 1 từ cọc C sang cọc B, kí hiệu bởi 2
0011 . Cọc
C trống. Số 2
0010 ở bước trên trở thành số 2
0011 , biểu thị đĩa số 1 đã
được chuyển.
Hai số 11 cuối cùng biểu thị đĩa 1 được đặt chồng lên đĩa số 2 trên cọc B.
Bước 4: Chuyển đĩa số 3 từ cọc A sang cọc trống C, kí hiệu bởi
2
0100 . Cọc A trống. Số 1 ở vị trí thứ ba biểu thị đĩa số 3 đã được chuyển.
Ba số 100 ở vị trí cuối cùng biểu thị đĩa số 3 không nằm trên cùng cọc với hai
đĩa đầu tiên.
Bước 5: Đưa đĩa số 1 từ cọc B sang cọc A, kí hiệu bởi 2
0101 .
Từ 2
0100 đổi thành 2
0101 biểu thị đĩa số 1 đã được chuyển.
Ba số 101 cuối cùng biểu thị ba đĩa ở trên ba cọc khác nhau.
Bước 6: Đưa đĩa số 2 từ cọc B sang cọc C, kí hiệu bởi 2
0110 .
Ba số 110 ở vị trí cuối cùng biểu thị hai đĩa số ba và số 2 trên cùng một cọc.
Bước 7: Đưa đĩa số 1 từ cọc A sang cọc C, kí hiệu bởi 2
0111 .
Ba số 111 ở vị trí cuối cùng biểu thị ba đĩa trên cùng một cọc (cọc C).
Như vậy ta đã giải xong bài toán ba đĩa.
Bước 8: Đưa đĩa số 4 từ cọc A sang cọc B, kí hiệu bởi 2
1000 . Cọc A trống.
Số 1000 biểu thị đĩa số 4 không trên cùng cọc với ba đĩa nhỏ.
www.VNMATH.com
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
30
Bước 9: Đưa đĩa số 1 từ cọc C sang cọc B, kí hiệu bởi 2
1001 .
Số 1001 biểu thị đĩa số 1 và đĩa số 4 trên cùng một cọc.
Bước 10: Đưa đĩa số 2 từ cọc C sang cọc A, kí hiệu bởi 2
1010 .
Số 1010 biểu thị đĩa số 4 không trên cùng cọc với đĩa số 2.
Bước 11: Đưa đĩa số 1 từ cọc B sang cọc A, kí hiệu bởi 2
1011 . Cọc B
trống. Số 1011 biểu thị đĩa số 1 không trên cọc với đĩa số 2.
Bước 12: Đưa đĩa số 2 từ cọc C sang cọc A, kí hiệu bởi 2
0110 .
Ba số 110 ở vị trí cuối cùng biểu thị đĩa số 1 không trên cùngcọc với đĩa số 3.
Bước 13: Đưa đĩa số 2 từ cọc C sang cọc A, kí hiệu bởi 2
0110 .
Ba số 110 ở vị trí cuối cùng biểu thị đĩa số 1 không trên cùngcọc với đĩa số 3.
Bước 14: Đưa đĩa số 2 từ cọc C sang cọc A, kí hiệu bởi 2
0110 .
Ba số 110 ở vị trí cuối cùng biểu thị đĩa số 1 không trên cùngcọc với đĩa số 3.
Bước 15: Đưa đĩa số 2 từ cọc C sang cọc A, kí hiệu bởi 2
0110 .
Ba số 110 ở vị trí cuối cùng biểu thị đĩa số 1 không trên cùngcọc với đĩa số 3.
Bƣớc Cơ số 2 Giải thích
1 0001 Đưa đĩa số 1 từ cọc A sang cọc trống B.
2 0010 Đưa đĩa 2 từ cọc A sang cọc trống C.
3 0011 Đưa đĩa 1 từ cọc B lên trên đĩa 2 của C, cọc B trống.
4 0100 Đưa đĩa 3 từ cọc A lên cọc trống B.
5 0101 Đĩa 1 từ C sang A (KHÔNG chồng lên đĩa 3 của B)
6 0110 Đĩa 2 từ C lên trên đĩa 3 của cọc B (cọc C trống).
7 0111 Đưa đĩa 1 từ cọc A lên trên đĩa 2 của cọc B.
8 1000 Đưa đĩa 4 từ cọc A sang cọc trống C.
9 1001 Đĩa 1 từ cọc B lên trên đĩa 4 của cọc C.
10 1010 Đĩa 2 từ B sang A (KHÔNG chồng lên đĩa 4 của C).
11 1011 Đĩa 1 từ cọc C lên trên đĩa 2 của cọc A.
12 1100 Đĩa 3 từ cọc B lên trên đĩa 4 của C (cọc B trống).
13 1101 Đĩa 1 từ A sang B (KHÔNG chồng lên đĩa 3 của C).
14 1110 Đưa đĩa 2 từ cọc A lên trên đĩa 3 của cọc C.
15 1111 Đĩa 1 từ cọc B lên trên đĩa 2 của C (cọc B trống).
www.VNMATH.com
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
31
Giải bài toán Tháp Hà Nội với năm đĩa nhờ hệ đếm cơ số 2
Số lần chuyển cần thiết trong bài toán ba cọc với năm đĩa 52 1 31 . Kí
hiệu các cọc là cọc A (cọc nguồn chứa 5 đĩa), cọc B và cọc C, các đĩa là 1, 2,
3, 4, 5 theo thứ tự từ nhỏ đến lớn.
Bƣớc cơ số 2 Giải thích
1 00001 Đưa đĩa số 1 từ cọc A sang cọc trống B.
2 00010 Đưa đĩa 2 từ cọc A sang cọc trống C.
3 00011 Đưa đĩa 1 từ cọc B lên trên đĩa 2 của C, cọc B trống.
4 00100 Đưa đĩa 3 từ cọc A lên cọc trống B.
5 00101 Đĩa 1 từ C sang A (KHÔNG chồng lên đĩa 3 của B)
6 00110 Đĩa 2 từ C lên trên đĩa 3 của cọc B (cọc C trống).
7 00111 Đưa đĩa 1 từ cọc A lên trên đĩa 2 của cọc B.
8 01000 Đưa đĩa 4 từ cọc A sang cọc trống C.
9 01001 Đĩa 1 từ cọc B lên trên đĩa 4 của cọc C.
10 01010 Đĩa 2 từ B sang A (KHÔNG chồng lên đĩa 4 của C).
11 01011 Đĩa 1 từ cọc C lên trên đĩa 2 của cọc A.
12 01100 Đĩa 3 từ cọc B lên trên đĩa 4 của C (cọc B trống).
13 01101 Đĩa 1 từ A sang B (KHÔNG chồng lên đĩa 3 của C).
14 01110 Đưa đĩa 2 từ cọc A lên trên đĩa 3 của cọc C.
15 01111 Đĩa 1 từ cọc B lên trên đĩa 2 của C (cọc B trống).
16 10000 Đưa đĩa 5 từ cọc A sang cọc trống B (cọc A trống).
17 10001 Đĩa 1 từ cọc C sang A (KHÔNG chồng lên đĩa 5).
18 10010 Đĩa 2 từ cọc C lên trên đĩa 5 của cọc B.
19 10011 Đĩa 1 từ cọc A lên trên đĩa 2 của B (cọc A trống).
20 10100 Đĩa 3 từ cọc C sang A (KHÔNG chồng lên đĩa 5).
21 10101 Đĩa 1 từ cọc B sang C (KHÔNG chồng lên đĩa 3).
www.VNMATH.com
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
32
22 10110 Đưa đĩa 2 từ cọc B lên trên đĩa 3 của cọc A.
23 10111 Đưa đĩa 1 từ cọc C lên trên đĩa 2 của cọc A.
24 11000 Đĩa 4 từ cọc C lên trên đĩa 5 của cọc B (C trống).
25 11001 Đưa đĩa 1 từ cọc A lên trên đĩa 4 của cọc B.
26 11010 Đĩa 2 từ cọc A sang cọc C (KHÔNG chồng lên 4).
27 11011 Đưa đĩa 1 từ cọc B lên trên đĩa 2 của cọc C.
28 11100 Đưa đĩa 3 từ cọc A lên trên đĩa 4 của B (A trống).
29 11101 Đưa đĩa 1 từ cọc C sang A (KHÔNG chồng lên 3).
30 11110 Đưa đĩa 2 từ cọc C lên trên đĩa 3 của cọc B.
31 11111 Đưa đĩa 1 từ cọc A lên trên đĩa 2 của cọc B. Kết thúc
Kết luận
Các ví dụ trên (bài toán ba cọc với bốn hoặc năm đĩa) cho thấy: Các vị trí
đĩa có thể hoàn toàn xác định được trực tiếp từ biểu diễn nhị phân của số thứ tự
di chuyển (viết trong hệ đếm cơ số 2 với một chữ số cho mỗi đĩa), trong đó các
dãy 1 và các dãy 0 tượng trưng cho các dãy các đĩa liền nhau trên cùng một
cọc, và mỗi khi chữ số có thay đổi thì đĩa kế tiếp sẽ dời sang trái hay phải một
cọc (hay chuyển sang cọc ngoài cùng phía đối diện). Ta có qui tắc sau.
Dãy bit (dãy chữ số trong cơ số 2) được đọc từ trái sang phải, và mỗi bit
(mỗi chữ số) có thể được sử dụng để xác định vị trí của đĩa tương ứng.
Bit với cùng giá trị như bước trước có nghĩa là đĩa tương ứng được xếp chồng
lên đỉnh của đĩa trước trên cùng một cọc.
Bit với giá trị khác trước nghĩa là đĩa tương ứng có vị trí bên trái hoặc
bên phải của đĩa trước. Để xác định vị trí bên phải hay bên trái ta phải theo
qui tắc sau:
1) Giả thiết cọc đích nằm bên trái và cọc nguồn nằm bên phải.
2) Cũng giả thiết "wrapping" (bao bọc): cọc phải được tính như là cọc
“trái” của cọc trái và ngược lại.
www.VNMATH.com
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
33
3) Giả sử k là số đĩa lớn nhất nằm trên cùng một cọc như là đĩa đầu tiên
lớn nhất của nó và thêm 1 nếu đĩa lớn nhất trên cọc trái. Nếu n chẵn, đĩa sẽ
được đặt trên một cọc bên trái, nếu n lẻ, đĩa được đặt lên một cọc bên phải.
Chữ số ở đầu đại diện cho đĩa lớn nhất và nếu là chữ số 0 thì có nghĩa là
đĩa lớn nhất không dời khỏi cọc xuất phát và ngược lại. Chữ số 1 từ bên phải
của số trong cơ số 2 biểu thị đĩa đã được chuyển. Nếu không có chữ số 1 nào
khác trong số đã cho trong cơ số 2, tức là số có dạng 20...01 , thì nghĩa là đĩa
đã được chuyển từ cọc A sang cọc trống. Chữ số 1 thứ hai từ bên phải biểu thị
vị trí của cọc mà đĩa được chuyển đến. Nếu không có đĩa nào hoặc có một số
chẵn các chữ số 0 giữa hai chữ số 1 (hai chữ số 1 đầu tiên từ bên phải), thì đĩa
được đặt lên trên đĩa to hơn nó. Nếu số chữ số 0 giữa hai chữ số 1 là lẻ thì
nghĩa là đĩa đang chuyển KHÔNG đặt lên trên đĩa to hơn (mà đặt ở cọc khác).
Các chữ số 1 và 0 luân phiên bên dưới các chữ số của một bước chuyển
cho phép biết được di chuyển theo một chiều khi nó hợp với chữ số của bước
chuyển tại nơi chữ số thay đổi và theo chiều kia khi nó không hợp.
Thí dụ, với số đĩa là 8:
Bước 0: 2
00000000 : Đĩa lớn nhất là 0, do đó nó nằm trên cọc trái (cọc
nguồn). Mọi đĩa khác cũng là 0, do đó chúng được đặt lên trên đĩa lớn nhất.
Và mọi đĩa đều nằm trên trên cọc nguồn.
Bước 211011000 : Đĩa lớn nhất là 1, do đó nó nằm trên cọc phải (cọc
đích). Đĩa thứ hai cũng là 1, do đó nó nằm trên đĩa lớn nhất, trên cọc phải.
Đĩa thứ ba là 0, do đó nó nằm trên cọc khác. Bởi vì 3 là số lẻ nên nó nằm trên
một cọc phía bên phải, nghĩa là trên cọc trái. Đĩa thứ tư là 1 nên nó nằm trên
cọc khác. Vì 4 là chẵn nên nó nằm trên một cọc về bên trái, nghĩa là cọc phải.
Đĩa thứ năm cũng là 1, do đó nó nằm bên trên đĩa thứ tư, trên cọc phải. Đĩa
thứ 6 là 0, do đó nó nằm trên cọc khác. Do 6 là chẵn nên đĩa nằm trên cọc về
bên trái, nghĩa là cọc giữa. Đĩa thứ 7 và đĩa thứ 8 cũng là 0, do đó nó nằm trên
đĩa số 6, trên cọc giữa.
www.VNMATH.com
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
34
Bước 8
22 1 11111111 : Đĩa lớn nhất là 1, do đó nó nằm trên cọc phải
(cọc đích). Mọi đĩa khác cũng là 1, do đó chúng được đặt lên trên đĩa lớn
nhất. Vậy mọi đĩa nằm trên cọc đích và trò chơi kết thúc.
§3 Đồ thị Hà Nội
3.1 Đồ thị Hà Nội
Trò chơi Tháp Hà Nội có thể biểu diễn như một đồ thị không có hướng.
Các đỉnh biểu thị phân bố của các đĩa và các cạnh biểu thị chuyển động của
các đĩa.
Với một đĩa, đồ thị là một tam giác:
Với hai đĩa, đồ thị là ba tam giác được sắp xếp thành một tam giác lớn:
Các nút tại các đỉnh của tam giác phía ngoài cùng biểu thị các phân bố
với mọi đĩa trên cùng một cọc.
Với 1n đĩa, ta lấy đồ thị của n đĩa và thay mỗi tam giác nhỏ với đồ thị
của hai đĩa.
Đồ thị cho ba đĩa có dạng:
www.VNMATH.com
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
35
1) Gọi các cọc là A, B, C.
2) Liệt kê các vị trí của các đĩa từ trái sang phải theo chiều tăng của kích
thước.
Các cạnh của các tam giác ngoài biên biểu thị con đường ngắn nhất để
chuyển tháp từ một cọc này sang cọc khác. Cạnh ở giữa của các biên của tam
giác lớn nhất biểu thị chuyển động của đĩa lớn nhất. Cạnh ở giữa của các biên
của mỗi tam giác nhỏ hơn tiếp theo biểu thị chuyển động của mỗi đĩa nhỏ hơn
tiếp theo. Các cạnh của tam giác nhỏ nhất biểu thị chuyển động của đĩa nhỏ
nhất.
Đồ thị của trò chơi tháp Hà Nội có liên quan mật thiết với tam giác
Sierpinski (Sierpiński Triangle) hay còn được gọi là thảm Sierpinski.
www.VNMATH.com
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
36
Đồ thị của trò chơi với n đĩa sẽ có 3n nút. Mỗi nút có ba cạnh đi tới nút
khác, ngoại trừ ba nút ở góc chỉ có hai cạnh. Luôn luôn có thể chuyển đĩa nhỏ
nhất sang một trong hai cọc khác. Và có thể chuyển một đĩa giữa hai cọc này
ngoại trừ trường hợp khi tất cả các đĩa nằm trên một cọc. Các nút góc biểu thị
ba trường hợp, khi mọi đĩa nằm trên một cọc. Biểu đồ cho n đĩa nhận được
từ biểu đồ cho 1n đĩa bằng cách copy ba lần-mỗi copy biểu thị mọi trạng
thái và chuyển động của các đĩa nhỏ hơn cho một vị trí riêng của một đĩa mới
lớn hơn và cùng với chúng tại các góc với ba cạnh mới biểu thị chỉ có ba khả
năng chuyển đĩa lớn nhất. Do đó kết quả sẽ có 13n nút và vẫn có ba góc với
hai cạnh.
Khi số đĩa được thêm vào, đồ thị biểu diễn trò chơi sẽ tạo thành một hình
Fractal, thảm Sierpinski. Rõ ràng rằng phần lớn các vị trí trong trò chơi sẽ
không bao giờ đạt được nếu sử dụng lời giải ngắn nhất. Thật vậy, nếu các vị
thầy tu trong truyền thuyết sử dụng lời giải dài nhất có thể (không trở lại vị trí
cũ nào) thì cần 643 1 lần chuyển, nhiều hơn 2310 năm.
3.2 Bài toán Tháp Hà Nội và đƣờng Hamilton
Đường Hamilton khép kín cho ba đĩa là:
www.VNMATH.com
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
37
Đồ thị chỉ ra rằng:
• Từ mỗi phân bố bất kì của các đĩa, tồn tại một con đường ngắn nhất
chuyển mọi đĩa từ một trong ba cọc sang cọc khác.
• Giữa mỗi cặp phân bố bất kì tồn tại một hoặc hai đường ngắn nhất khác
nhau.
• Từ mỗi phân bố bất kì của các đĩa, tồn tại một hoặc hai đường dài nhất
không tự cắt chuyển mọi đĩa tới một trong ba cọc.
• Giữa mọi cặp của các phân bố bất kì của các đĩa tồn tại một hoặc hai
đường dài nhất không tự cắt.
• Gọi nN là số các đường không tự cắt để chuyển tháp n đĩa từ cọc này
sang cọc khác. Khi ấy: 1 2N ; 2 3
1n n nN N N . Thí dụ, 795
8 1.5656 10N .
Đồ thị nH tương ứng với các chuyển động được phép trong bài toán
tháp Hà Nội. Hình trên chỉ ra một số đồ thị Hà Nội với 1,2,3,4n . Đồ thị
Hà Nội có thể xây dựng bằng cách chọn các đỉnh làm các hệ số nhị thức lẻ
của tam giác Pascan được tính trên các số nguyên từ 0 đến 2 1n và vẽ các
đỉnh khi các hệ số là kề nhau theo đường chéo hoặc theo chiều ngang (xem
Pool, 1994, [15]).
Đồ thị nH có 3n
đỉnh và 3 3 1
2
n cạnh. Mỗi đồ thị Hà Nội có duy nhất
một đường Hamilton (tương ứng, mỗi đồ thị Hà Nội có chính xác hai đường
tròn Hamilton có hướng khác nhau).
www.VNMATH.com
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
38
§4 Giải bài toán Tháp Hà Nội trên máy tính
Code (mã) thể hiện thuật giải đệ qui bài toán Tháp Hà Nội:
def Hanoi(n, A, C, B):
if n == 1:
print 'Move the plate from', A, 'to', C
else:
Hanoi(n - 1, A, B, C)
print 'Move the plate from', A, 'to', C
Hanoi(n - 1, B, C, A)
Thuật giải đệ qui bài toán Tháp Hà Nội trên ngôn ngữ Pascal:
VAR n: Integer;
Procedure chuyen(sodia: Integer; CotNguon: Char; CotDich: Char; CotTG:
Char);
Begin
If sodia>0 then begin
chuyen(sodia-1, CotNguon, CotTG, CotDich);
Writeln(CotNguon,'->',CotDich); { Dia lon nhat hien tai }
chuyen(sodia-1, CotTG, CotDich, CotNguon)
End;
End;
BEGIN
Write('Hay nhap so dia: '); Readln(n);
chuyen(n,'A','C','B');//Thực hiện chuyển từ cột A sang cột C với cột B làm
trung gian
Readln;
END.
www.VNMATH.com
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
39
Chƣơng 3
BÀI TOÁN THÁP HÀ NỘI VỚI BỐN CỌC
(Trò chơi Reve-The Reve’s Puzzle)
§1 Trò chơi Tháp Hà Nội với bốn cọc
1.1 Trò chơi Tháp Hà Nội với bốn cọc
Trong Chương 2 chúng ta đã giải bài toán Tháp Hà Nội với ba cọc và n
đĩa. Nó có thể giải được dễ dàng theo thuật giải đệ qui. Hơn nữa, có thể biết
chính xác số lần chuyển tối ưu cho bài toán với n đĩa là 2 1n . Như vậy, một
bài toán với thuật giải đơn giản và tối ưu cũng có thể có độ phức tạp tính toán
lớn (thời gian mũ), do đó có thể không giải được trong thời gian thực tế.
Một mở rộng tự nhiên của trò chơi Tháp Hà Nội là trò chơi Tháp Hà Nội
với bốn hoặc nhiều cọc (bài toán Tháp Hà Nội tổng quát). Như là sự tiếp nối
của chương trước và chuẩn bị cho chương sau, chương này nghiên cứu bài
toán Tháp Hà Nội cho bốn cọc. Bài toán này lần đầu tiên được Dudeney
(1902) đặt ra và gọi tên là The Reve’s Puzzle (xem [7]). Gần đây, nhiều kết
quả thú vị cũng đã được phát hiện cho bài toán này, các kết quả này là cơ sở
để phát triển nghiên cứu bài toán Tháp Hà Nội tổng quát, vì vậy nó xứng đáng
được xem xét tỉ mỉ trong một chương riêng, mặc dù, để thuận tiện, nhiều kết
quả trong chương này cũng được trình bày cho bài toán nhiều cọc .
Bài toán 2 (Bài toán Tháp
Hà Nội với bốn cọc) Có bốn
cọc được đánh số 1P ,
2P , 3P ,
4P . Cọc 1P được gọi là cọc
nguồn. Ban đầu cọc nguồn
chứa n đĩa có lỗ ở giữa và
kích thước to
www.VNMATH.com
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
40
nhỏ khác nhau được xếp theo thứ tự “đĩa to ở dưới, đĩa nhỏ ở trên” . Bài toán
đặt ra là phải chuyển tất cả n đĩa từ cọc nguồn sang một trong các cọc 2P ,
3P ,
4P , sắp xếp cũng theo thứ tự “đĩa to ở dưới, đĩa nhỏ ở trên”. Mỗi lần chỉ được
chuyển một đĩa (trên cùng của cọc nào đó) từ cọc này sang cọc khác. Khi
chuyển có thể sử dụng tất cả các cọc để đặt tạm thời các đĩa. Cọc cuối cùng
chứa các đĩa theo thứ tự như trên cọc nguồn được gọi là cọc đích. Các cọc còn
lại được gọi là cọc trung gian.
Theo một số tài liệu, 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. Năm 1889 Ông đã xét bài
toán năm cọc và sắp xếp đĩa theo bốn màu khác nhau. Dudeney đã viết về bài
toán Tháp Hà Nội với bốn cọc từ năm 1902. Trong hai trang đầu tiên của
cuốn sách nổi tiếng của Ông The Canterbury Puzzle (xuất bản năm 1907 tại
London và năm 1908 tại New York), Ông xét trò chơi với số cọc là 4 và số
đĩa là 8, 10 hoặc 21, chỉ có khác là Ông đã thay các đĩa bằng các quân cờ
(xem [7]) và được Ông gọi là Reve's puzzle. Trong 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 hoặc 321. Hơn nữa, Ông còn
xét trường hợp với số đĩa là số tam giác. Giả sử ( 1)
2k
k kt
là số tam giác
thứ k và giả sử 4( )H n là số lần chuyển tối thiểu cần thiết để chuyển xong n
đĩa. Dudeney tuyên bố rằng 4 4 12 2 1k
k kH t H t , 4 1 1H . Từ đây ta
có 4 3 5H ; 4 6 17H , 4 10 49H ,… 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ụ như 8n .
Bài toán tổng quát với 3p cọc, p là số tự nhiên bất kì với số đĩa n bất kì
được B. M. Stewart đề xuất năm 1939 (xem [17]). Lời giải của bài toán này
đã được Stewart [18] và Frame [9] trình bày đồng thời trong năm 1941.
www.VNMATH.com
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
41
Bài toán tháp Hà Nội với bốn cọc được nhiều tác giả quan tâm (xem tài liệu
đầy đủ trong [5]), 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 (xem [11]). Vì vậy
người ta thường gọi thuật toán của hai ông hoặc các thuật toán cải biên tương
tự là thuật toán Frame-Stewart. Thuật toán Stewart-Frame cho bài toán Tháp
Hà Nội tổng quát sẽ được nghiên cứu kĩ ở Chương 4. Dưới đây trình bày thuật
toán Frame-Stewart cho bài toán bốn cọc (do Stewart đề xuất 1941).
1.2 Thuật toán Frame-Stewart (1941) cho bài toán Tháp Hà Nội với bốn cọc
Bƣớc 0
Đánh số cọc là 1P ,
2P , 3P ,
4P . Mục đích của chúng ta là chuyển tất cả các
đĩa từ cọc 1P sang cọc
4P , với qui tắc là mỗi lần chỉ chuyển một đĩa, và đĩa
nhỏ không bao giờ nằm dưới đĩa lớn.
Bƣớc 1
Chuyển l đĩa nhỏ nhất (0 l n ) từ cọc 1P sang cọc
2P , trong quá trình
chuyển có quyền sử dụng tất cả bốn cọc. Kí hiệu số lần chuyển tối ưu là 4( )S l .
Bƣớc 2
Chuyển n l đĩa lớn nhất (còn lại) từ cọc 1P sang cọc
4P , không sử dụng
cọc 2P (vì cọc 2P đang chứa l đĩa nhỏ). Nói cách khác, chuyển n l đĩa này
bằng cách sử dụng phương pháp tối ưu giải bài toán ba cọc trong Chương 2, số lần
chuyển tối ưu n l đĩa từ cọc 1P sang cọc
4P , không sử dụng cọc 2P là 2 1n l .
Bƣớc 3
Chuyển l đĩa nhỏ nhất từ cọc 2P sang cọc 4P , sử dụng tất cả bốn cọc.
Như vậy, gọi 4( )S n là số lần chuyển tối ưu n đĩa trong bài toán Tháp Hà
Nội với bốn cọc theo thuật toán Frame-Stewart thì với mỗi l , số lần chuyển
tối ưu n đĩa từ cọc 1P sang cọc
4P phụ thuộc vào l và bằng 42 ( ) 2 1n lS l .
Số lần chuyển tối ưu n đĩa trong bài toán Tháp Hà Nội với bốn cọc theo thuật
toán Stewart là
4 4 40
( ) 2 ( ) 2 1 min 2 ( ) 2 1n i n l
l nS n S i S l
.
www.VNMATH.com
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
42
1.3 Thuật toán Frame-Stewart cho bài toán Tháp Hà Nội với nhiều cọc
Với 3p , kí hiệu ( )pS n số lần chuyển ít nhất giải bài toán Tháp Hà Nội
với p cọc và n đĩa theo thuật toán Frame-Stewart.
Thí dụ, 3( ) 2 1nS n và
4(5) 13S .
Tương tự như trong bài toán bốn cọc, ta cũng có thuật toán Frame-
Stewart cho bài toán với số cọc bất kì như sau.
Nếu số cọc 3p thì sử dụng thuật toán tối ưu cho bài toán Tháp Hà Nội
với ba cọc trong Chương 2.
Với 3p và 0n chọn số 0 i n làm cực tiểu số lần chuyển các đĩa
theo qui tắc (thuật toán Frame-Stewart) sau.
Chuyển l đĩa nhỏ trên cùng từ cọc nguồn sang cọc 1 (n l đĩa dưới
cùng vẫn ở trên cọc nguồn). Trong quá trình chuyển sử dụng tất cả các cọc.
Điều này có thể làm được với số lần chuyển ít nhất được kí hiệu là ( )pS l .
Chuyển n l đĩa dưới cùng từ cọc nguồn sang cọc đích mất
1( )pS n l lần chuyển (vì cọc 1 đang được sử dụng chứa các đĩa nhỏ nên chỉ
còn sử dụng được 1p cọc).
Chuyển l đĩa từ cọc 1 sang cọc đích. Trong quá trình chuyển sử dụng
tất cả các cọc. Để làm được điều này cần ( )pS l lần chuyển.
Công thức truy hồi cho lời giải bài toán Tháp Hà Nội dựa trên thuật toán
Frame-Stewart là:
10
0 khi 0;
( ) 2 1 khi 3, 0;
min 2 ( ) ( ) khi 3, 0.
n
p
p pl n
n
S n p n
S l S n l p n
(1.1)
Như vậy, Bài toán Tháp Hà Nội với nhiều cọc trở thành bài toán tối ưu
rời rạc: Tìm 10
( ) min 2 ( ) ( )p p pl n
S n S l S n l
.
www.VNMATH.com
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
43
Nhận xét 1.1
Một điều thú vị là ta có thể nhận được kết quả của bài toán Tháp Hà Nội
với ba cọc từ trường hợp hai cọc theo thuật toán Frame-Stewart như sau.
Xuất phát từ thực tế, theo logic, ta đặt (khi số cọc 2p và số đĩa 2n
thì bài toán không giải được): 2(0) 0S ,
2(1) 1S , 2( )S n với mọi 1n .
Với 3p , 1n ta chỉ có thể đặt 1l n (để thành phần thứ hai
1 2( ) ( )pS n l S n l là hữu hạn. Khi ấy công thức (1.1) trở thành:
3 3 2 3( ) 2 ( 1) (1) 2 ( 1) 1S n S n S S n .
Đây chính là công thức truy hồi tính số làn chuyển tối ưu khi 3p .
Như vậy, tổng cộng cần 12 ( ) ( )p pS l S n l lần chuyển cho bài toán p
cọc. 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 nói trên (với cách chọn l như trên) cho phép
tìm ra một (một số) giá trị i sao cho
1 11 1
( ) 2 ( ) ( ) min 2 ( ) ( )p p p p pl n
S n S i S n i S l S n l
. (1.2)
Nói cách khác, các giá trị i thỏa mãn (1.2) là số bước chuyển tối ưu
trong lớp các thuật toán đề nghị.
Stewart và Frame cũng đã chứng minh rằng, nếu n là số tam giác kn t ,
thì cách chọn tối ưu nhất cho l là l k , trong khi đó nếu 1k kt n t thì cả
hai giá trị 1k và k đều là cách chọn tối ưu cho l . Như vậy, Stewart và
Frame đã đề xuất các thuật toán hiển cho bài toán Tháp Hà Nội với bốn cọc.
Từ đây ta cũng có nhận xét 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.
§2 Tính số bƣớc chuyển tối ƣu trong trò chơi Tháp Hà Nội với bốn cọc
Như đã thấy trong mục trước, bài toán tìm số bước chuyển đĩa ít nhất
trong trò chơi tháp Hà Nội được đưa về bài toán tối ưu rời rạc. Trong mục này
chúng tôi trình bày các đánh giá bước chuyển tối ưu cho bài toán Tháp Hà
Nội theo [13].
www.VNMATH.com
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
44
2.1 Tính số bƣớc chuyển tối ƣu trong trò chơi Tháp Hà Nội với p cọc và
n đĩa. Trƣờng hợp ( 1)
2
p pn
.
Trước tiên ta xét các trường hợp đơn giản sau. Vì các nhận xét dưới đây
đúng cho số cọc p bất kì nên ta phát biểu cho bài toán với số cọc bất kì.
Nhắc lại rằng ( )pH n là kí hiệu số bước chuyển tối thiểu cần thiết để
chuyển n đĩa từ cọc nguồn sang cọc đích trong bài toán tháp Hà Nội với p
cọc và ( )pS n là kí hiệu số bước chuyển tối thiểu cần thiết để chuyển n đĩa từ
cọc nguồn sang cọc đích trong bài toán tháp Hà Nội với p cọc theo thuật toán
Frame-Stewart. Ta có
Nhận xét 2.1
Dễ dàng thấy rằng (2) 3PH với mọi 3p và (3) 5PH với mọi
4p .Với 3p và 1n p thì ( ) 2 1pH n n .
Chứng minh
Hiển nhiên vì 1n p nên có thể chuyển mỗi đĩa từ số 1 đến số n từ
cọc 1P sang mỗi cọc
2 1,..., nP P tương ứng, mất n lần chuyển. Sau đó lại
chuyển các đĩa từ số 1n đến số 1 (đĩa to trước) từ các cọc tương ứng
2,...,nP P sang cọc 1nP , mất 1n lần chuyển. Như vậy, tổng cộng mất 2 1n
lần chuyển hay ( ) 2 1pH n n .
Nhận xét 2.2
Với 3p và n p thì ( ) 2 1pH n n .
Chứng minh
Trước tiên xây dựng tháp gồm 2 đĩa (đĩa số 1 và đĩa số 2) trên cọc nP ,
mất ba lần chuyển (xem §1 Chương 2). Sau đó lại chuyển các đĩa từ số 3 đến
số n (tổng cộng 2n đĩa) từ cọc 1P sang các cọc 2 1,..., nP P tương ứng, mất
2n lần chuyển. Sau đó chuyển 3n đĩa từ số 1n đến số 3 từ các cọc
tương ứng 2 2,...,nP P sang cọc 1nP , mất 3n lần chuyển. Lại chuyển tháp
www.VNMATH.com
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
45
gồm 2 đĩa (đĩa số 1 và đĩa số 2) trên cọc nP sang cọc
1nP , mất ba lần chuyển.
Như vậy, tổng cộng mất 3 2 3 3 2 1n n n lần chuyển hay
( ) 2 1pH n n .
Bây giờ ta xét trường hợp p n . Ta có
Nhận xét 2.3
Ta luôn có:
1) ( 1) ( )p pH n H n với mọi 1n , 3p ;
2) 1( ) ( )p pH n H n với mọi 1n , 3p .
Ta có
Định lí 2.1
Với 3p và ( 1)
2
p pp n
thì ( ) 4 2 1pH n n p .
Chứng minh
Xét các trường hợp sau đây.
Trƣờng hợp 1 2 3p n p .
Đặt 1n p l , 0 2l p . Thực hiện thuật toán sau.
Bƣớc 1 Lần lượt chuyển 1p đĩa nhỏ nhất từ cọc 1P sang các cọc
2,..., pP P tương ứng sao cho mỗi cọc có một đĩa và đĩa số 1 nằm trên cọc 2P .
Còn lại 1n p l đĩa nằm trên cọc 1P . Đã sử dụng hết p cọc.
Bƣớc 2 Lần lượt chuyển l đĩa nhỏ nhất (đĩa số 1 đến đĩa số l ) từ các cọc
1 2,...,lP P (đĩa to nằm trên cọc
1lP chuyển trước) sang cọc
2lP. Như vậy, cọc
2lP chứa 1l đĩa nhỏ nhất. Các cọc
2 1,..., lP P được giải phóng; Các đĩa số
2l đến số 1p ( 2p l đĩa) vẫn nằm trên các cọc 3,...,l pP P tương ứng.
Bƣớc 3 Lần lượt chuyển l đĩa còn lại (đĩa số p đến đĩa số
1p l n ) từ cọc 1P sang các cọc tự do 1 2,...,lP P sao cho mỗi cọc có
một đĩa và đĩa lớn nhất (số n ) nằm trên cọc 2P . Cọc 1P được giải phóng.
www.VNMATH.com
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
46
Bƣớc 4 Lần lượt chuyển 1l đĩa lớn (đĩa số 1n l p đến đĩa số
1n ) từ các cọc 3 1,..., lP P
sang cọc 2P . Như vậy, cọc
2P chứa l đĩa lớn nhất.
Các cọc 3 1,..., lP P
được giải phóng.
Bƣớc 5 Lần lượt chuyển 2p l đĩa tiếp theo (còn lại trên các cọc
3,...,l pP P, đĩa số 1p đến đĩa số 2l ) sang cọc
2P . Như vậy, cọc 2P chứa
2p đĩa lớn nhất. Các cọc 3,...,l pP P
được giải phóng.
Bƣớc 6 Lần lượt chuyển l đĩa nhỏ nhất (đĩa số 1 đến đĩa số l ) từ cọc
2lP sang cọc
1 3 4 1, , ,..., lP P P P tương ứng sao cho mỗi cọc có một đĩa và đĩa số
1 nằm trên cọc 1P , đĩa số 2 nằm trên cọc
3P ,…, đĩa số l nằm trên cọc 1lP.
Sau đó chuyển đĩa 1l từ cọc 2lP sang cọc
2P và chuyển l đĩa nhỏ nhất từ
các cọc 1 4 3 1, ,..., , ,l lP P P P P
sang cọc 2P .
Tổng cộng số lần chuyển mất là:
( ) 1 1 2 1 2 4 3
2 4 1 3 4 2 1.
pH n p l l l p l l l p l
p n p n p
Trƣờng hợp 2 1
2
p pn
.
Thực hiện thuật toán sau.
Bƣớc 1 Lần lượt chuyển 2p đĩa nhỏ nhất từ cọc 1P sang các cọc
2 1,..., pP P sao cho mỗi cọc có một đĩa, đĩa nhỏ nhất nằm trên cọc 2P . Sau đó
chuyển đĩa số 1p từ cọc 1P sang cọc pP và lần lượt chuyển 2p đĩa từ
các cọc 1 2,...,pP P sang cọc pP . Mất tất cả 2 1 2 2 3p p p lần
chuyển 1p đĩa từ cọc 1P sang cọc pP . Các cọc 2 1,..., pP P được giải phóng
(các đĩa lớn từ số p trở đi vẫn nằm trên cọc 1P , các đĩa nhỏ từ số 1 đến số
1p nằm trên cọc pP ).
www.VNMATH.com
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
47
Bƣớc 2 Lần lượt chuyển 3p đĩa tiếp theo (các đĩa số p đến 2 4p )
từ cọc 1P sang các cọc
2 2,..., pP P tương ứng sao cho mỗi cọc có một đĩa. Sau
đó chuyển đĩa số 2 3p sang cọc 1pP và lần lượt chuyển 3p đĩa từ các
cọc 1 2,...,pP P
sang cọc 1pP . Như vậy, để chuyển 2p đĩa từ cọc
1P sang
cọc 1pP mất tất cả 3 1 3 2 5p p p lần chuyển. Các cọc
2 2,..., pP P được giải phóng.
Bƣớc 3 Lần lượt chuyển 4p đĩa tiếp theo (đĩa số 2 2p đến đĩa số
3 5p ) từ cọc 1P sang các cọc
2 3,..., pP P sao cho mỗi cọc có một đĩa. Sau đó
chuyển đĩa số 3 4p sang cọc 2pP và lần lượt chuyển 4p đĩa từ các cọc
3 2,...,pP P sang cọc
2pP . Như vậy, mất tất cả 4 1 4 2 7p p p
lần để chuyển 3p đĩa từ cọc 1P sang cọc
2pP . Các cọc 2 3,..., pP P được giải
phóng.
Tương tự cho các bước tiếp theo.
Bƣớc cuối cùng (bƣớc thứ 1p ) Chuyển đĩa cuối cùng (đĩa thứ n ) từ
cọc 1P sang cọc
2P . Như vậy, cọc kP , 2,3,...,k p có 1k đĩa, cọc
1P trống.
Tổng cộng số lần chuyển 1p đĩa từ cọc 1P sang cọc pP , 2p đĩa từ cọc
1P
sang cọc 1pP ,…, đến đĩa cuối cùng (thứ n ) từ cọc 1P sang cọc
2P mất là:
2
1
2 3 1 12 3 2 5 ... 1 1
2p
p pp p p
.
Tổng số đĩa đã chuyển từ cọc 1P sang các cọc pP , 1pP ,…,
3P là:
1 1 1 1
1 2 ... 12 2
p p p pp p n
.
Lại lần lượt chuyển 1n các đĩa từ các cọc 3,..., pP P sang cọc 2P như sau.
Vì cọc 1P trống, cọc 2P chứa đĩa số n , cọc 3P chứa hai đĩa số 1n ,
2n nên chuyển đĩa số 2n từ cọc 3P sang cọc 1P , đĩa số 1n từ cọc 3P
www.VNMATH.com
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
48
sang cọc 2P và lại chuyển đĩa số 2n từ cọc
1P sang cọc 2P . Mất 3 lần
chuyển. Và được 3 đĩa to nhất trên cọc 2P . Cọc
1P và 3P trống.
Vì cọc 1P và
3P trống, cọc 2P chứa 3 đĩa to nhất n , 1n , 2n , cọc
4P
chứa ba đĩa số đĩa số 3, 4, 5n n n nên chuyển đĩa số 5n sang cọc 1P ,
4n sang cọc 3P và 3n sang cọc
2P , sau đó lại chuyển đĩa số 4n từ cọc
3P sang cọc 2P và chuyển đĩa số 5n từ cọc
1P sang cọc 2P . Mất 5 lần
chuyển. Và được thêm 3 đĩa (thành 1+2+3=6) to nhất trên cọc 2P . Cọc
1P , 3P ,
4P trống.
Tương tự, đến bước cuối cùng ta có: Các cọc 1P ,
3P ,…, 1pP trống, cọc
2P chứa các đĩa từ có số từ n đến p , cọc pP chứa các đĩa có số từ 1p đến
số 1. Chuyển các đĩa có số 1 đến 2p sang các cọc 1P ,
3P ,…, 1pP tương
ứng. Sau đó chuyển đĩa số 1p từ cọc pP sang cọc 2P . Lại chuyển các đĩa có
số 2p đến số 1 từ các cọc 1pP ,…,3P ,
1P sang cọc 2P . Mất
2 1 2 2 3p p p lần chuyển. Tất cả các đĩa ở trên cọc 2P . Công
việc hoàn thành.
Tổng số lần chuyển đĩa từ các cọc 3,..., pP P sang cọc 2P mất:
2
2 3 3 23 5 ... 2 3 2
2p
p pp p p
.
Vậy tổng số lần chuyển đĩa là:
2 21 2 2 4 1 2 1 2 1 4 2 1p p p p p p p p n p .
Nhận xét 2.4
Ta cũng có thể viết số lần chuyển đĩa trên bằng
2 221 2 2 4 1 2 1 1p p p p p p .
www.VNMATH.com
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
49
Trƣờng hợp 3 1
2 32
p pp n
.
Đặt 1
2
p pi n
. Thực hiện thuật toán như trên, nhưng số lần
chuyển đĩa lúc này giảm đi 4i và bằng
2 2 1
( ) 2 1 1 4 2 1 1 4 4 2 12
p
p pS n p i p n n p
.
Định lí 2.1 chứng minh xong.
Như vậy, nếu 1
2
p pn
thì ta có công thức hiển tính số bước chuyển
tối ưu giải bài toán Tháp Hà Nội. Trường hợp 1
2
p pn
với số cọc p bất
kì sẽ được xem xét trong Chương 4. Dưới đây chúng ta xét trường hợp
4p .
2.2 Tính số bƣớc chuyển tối ƣu trong trò chơi Tháp Hà Nội với bốn cọc
và n đĩa
Định lí 2.2
Giả sử n là số đĩa cố định và 1 1
2 2
x x x xn
. Số bước chuyển
tối ưu theo thuật toán Frame-Stewart là
22
4( ) 2 2 2 1xS n n x x . (2.1)
Chứng minh
Xét các trường hợp sau.
Trƣờng hợp 1 1
2
x xn
(n là số tam giác)
Thuật toán Frame-Stewart chuyển n đĩa từ cọc 1P sang cọc
4P như sau:
Bước 1: Với 0 l n chọn trước, chuyển l đĩa nhỏ nhất (trên cùng) từ
cọc 1P sang cọc 4P (sử dụng tất cả bốn cọc). Số lần chuyển tối ưu là 4( )S l .
www.VNMATH.com
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
50
Bước 2: Chuyển n l đĩa lớn nhất (dưới cùng) từ cọc 1P sang cọc
2P , sử
dụng ba cọc (vì cọc 4P đang chứa l đĩa nhỏ nhất). Số lần chuyển tối ưu là
2 1n l .
Bước 3: Lại chuyển l đĩa nhỏ nhất (trên cùng) từ cọc 4P sang cọc
2P
(sử dụng tất cả bốn cọc). Số lần chuyển tối ưu là 4( )S l .
Như vậy, với mỗi 0 l n chọn trước, số lần chuyển tối ưu là
4 4( ) 2 ( ) 2 1n lS n S l . (2.2)
Rõ ràng, vì cọc 3P trống nên trong Bước 1, để chuyển l đĩa từ cọc
1P
sang cọc 4P , ta có thể áp dụng thuật toán Frame-Stewart chuyển j đĩa nhỏ
nhất (trên cùng, 0 j l ) từ cọc 1P sang cọc
3P (sử dụng bốn cọc) và l j
đĩa lớn hơn từ cọc 1P sang cọc
4P (sử dụng ba cọc mất 2 1l j lần chuyển),
sau đó lại chuyển j đĩa nhỏ nhất từ cọc 3P sang cọc
4P (sử dụng bốn cọc).
Như vậy, để chuyển l đĩa từ cọc 1P sang cọc
4P sẽ mất 42 ( ) 2 1l jS j
bước chuyển. Do đó, với mỗi l và j chọn trước, cần
4 42 ( ) 2 1 2 2 ( ) 2 1 2 1n l l j n lS l S j
bước để chuyển n đĩa từ cọc 1P sang cọc
2P .
Sử dụng thuật toán Frame-Stewart và công thức (2.2) nhiều lần, chúng ta
nhận được công thức sau đây tính số bước chuyển tối ưu cho bài tóan tháp Hà
Nội với bốn cọc và 1
1 ... 12
x xn x x
là số tam giác:
1 2 2
4( ) 2 1 2 2 1 2 2 1 ... 2 2 1 2.1 ...x x xS n . (2.3)
Số đĩa cần thiết để chuyển ba đĩa nhỏ nhất từ cọc 1P sang cọc trung gian
(3P hoặc
4P ) được thể hiện trong ngoặc trong cùng.
Mở ngoặc trong công thức (2.3) ta nhận được 1x số hạng có tổng bằng
2x, và một số hạng bằng
12x. Các số hạng còn lại có tổng bằng
www.VNMATH.com
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
51
2 11 2 4 ... 2 2 1x x .
Vậy, khi 1
2
x xn
là số tam giác, ta có
1 1
4( ) 1 2 2 2 1 1 2 1x x x xS n x x . (2.4)
Trƣờng hợp 2 1 1
2 2
x x x xn
(n không phải là số tam giác)
Ta tính số 4( )S n như sau.
Quan sát công thức (2.3) ta thấy, nếu thiếu một đĩa (nhỏ nhất), tức là
11
2
x xn
thì trên cọc
1P cho phép tiết kiệm 12m lần chuyển để đưa các
đĩa từ cọc 1P sang cọc
2P so với trường hợp n là số tam giác.
Nếu ta cần chuyển 1
2
x xn
từ cọc
1P sang cọc 2P và
1
2
x xn
thì số lần chuyển “tiết kiệm” được sẽ là
1 21
2 1 2 22
x xx xn x x n
.
Cuối cùng, ta nhận được
2 2 2 2
4
22 2 2
( ) 1 2 1 1 2 2 1 2 .2 1 1 2 2
2 4 4 2 1 2 2 2 1.
x x x x
x x
S n x x x n x x x n
x x x n n x x
Nhận xét rằng, khi 1
2
x xn
thì hai công thức (2.3) và (2.4) trùng nhau và
trùng với công thức (2.1). Định lí chứng minh xong.
www.VNMATH.com
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
52
Chƣơng 4
BÀI TOÁN THÁP HÀ NỘI TỔNG QUÁT
§1 Tính số ( )pS n trong thuật toán Frame-Stewart cho trò chơi Tháp
Hà Nội tổng quát
Trong §2 Chương 3 chúng tôi đã trình bày kết quả của Novikov, 2007
[13] tính giá trị tối ưu ( )pS n của bài toán tháp Hà Nội cho trường hợp bốn
cọc và cho một số trường hợp với số cọc bất kì. Trong § này chúng tôi trình
bày nghiên cứu của Rand (2009, [16]) về số lần chuyển tối ưu theo thuật toán
Frame-Stewart cho bài toán tháp Hà Nội với số cọc bất kì. Kết quả của Rand
là sự phát triển của hàng loạt các kết quả của các tác giả trước (S. Novikov,
2007; Petr, 2002; Maujumdar, 1996,…) và bổ sung cho kết quả của Novikov
trong chương trước.
1.1 Số chia tối ƣu
Ta cần kết quả bổ trợ sau trong các chứng minh định lí.
Nhận xét 2.1
Ta có công thức tính toán tổ hợp sau.
1 1
1
k k k
m m mC C C
.
trong đó
!:
! !
k
m
mC
k m k
; : 0k
mC nếu m k ; ,m k .
Chứng minh
Theo định nghĩa ta có
1
1
1
! 1 !! !
! ! 1 ! 1 ! 1 ! 1 ! 1 ! !
1 !.
1 ! 1 1 !
k k
m m
k
m
m k m m km mC C
k m k k m k k m k m k
mC
k m k
.
www.VNMATH.com
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
53
Định nghĩa 2.1
Giả sử :pD là hàm số xác định bởi công thức ( ) ( ) ( 1)p p pD i S i S i .
Như vậy, ( )pD i miêu tả số chuyển động đòi hỏi phải thực hiện theo
thuật toán Stewart khi thêm một đĩa (từ 1i đến i đĩa), khi số cọc vẫn là p .
Định lí 1.1
Giả sử , ,n p x , 1n , 3p . Khi ấy ta có đánh giá sau cho bài toán
Tháp Hà Nội với p cọc:
Với mọi 0x , ( ) 2x
pD n 2 2
3 2
p p
p x p xC n C
.
Điều này tương đương với: nếu ta kí hiệu pD là dãy ( )p i
D i
thì dãy
pD sẽ chứa 3
3
p
pC
phần tử có giá trị 02 , tiếp theo
3
3 1
p
pC
phần tử có giá trị
12 ,3
3 2
p
pC
phần tử có giá trị 22 ,v.v.
Ví dụ 1.1
Với 5p dãy 5D là như sau:
3 3 1
3 0 3 1
5
0 1 2
0 1 1 1 2 2 2 2 2 2
phan tu gia tri 2 ; phan tu gia tri 2 ;...
1phan tu gia tri 2 ;3 phan tu gia tri 2 ;6 phan tu gia tri 2 ...
2 , 2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ...
1, 2,2,2,4,4,4,4,4,4,8,8,8,8,8,8,8,8,8,8,.
p p
p pD C C
..
Chứng minh Định lí 1.1
Để chứng minh Định lí 1.1 ta sẽ sử dụng hai lần qui nạp theo số đĩa và
theo số cọc. Chứng minh gồm các bước sau.
Chứng minh Định lí 1.1 đúng cho mọi n nếu 3p .
Chứng minh Định lí 1.1 đúng cho mọi p nếu 1n .
www.VNMATH.com
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
54
Giả sử Định lí 1.1 đúng với mọi 0p p và
0n n , khi ấy Định lí 1.1
đúng cho 0p p và
0n n .
Trƣờng hợp cơ bản 1
Định lí 1.1 đúng cho mọi n nếu 3p .
Chứng minh
Chúng ta cần chỉ ra rằng 3( ) 2xD n 1 1
1x xC n C .
Vì 1 1
1x xC n C
1 !!
1! 1 ! 1! !
xxn
x x
1x n x 1x n ,
nghĩa là ta phải chứng minh 1
3( ) 2nD n .
Vì 3( ) 2 1nS n nên
1 1
3 3 3( ) : ( ) ( 1) 2 1 2 1 2n n nD n S n S n .
Trƣờng hợp cơ bản 2
Định lí 1.1 đúng cho mọi p nếu 1n .
Chứng minh
Khẳng định của Định lí 1.1 dẫn đến
(1) 2x
pD 2 2
3 21p p
p x p xC C
.
Vì 2 2
3 21p p
p x p xC C
nên 2
3 0p
p xC
hay 3 2p x p . Suy ra 0x .
Vậy (1) 1 (1) (0)p p pD S S . Điều này hiển nhiên đúng vì (1) 1pS ; (0) 0pS .
Bƣớc qui nạp Giả sử Định lí 1.1 đúng với mọi 0p p và
0n n , khi ấy Định
lí 1.1 đúng cho 0p p và
0n n .
Để chứng minh bước qui nạp, ta cần các định nghĩa sau.
Định nghĩa 1.2
Trong bài toán Tháp Hà Nội với p cọc, ta gọi số đĩa n là hoàn hảo ứng
với p , nếu có thể biểu diễn n dưới dạng 2
2
p
p xn C
cho một số 0x nào đó.
Khi p cố định, để ngắn gọn, ta chỉ nói n là hoàn hảo.
www.VNMATH.com
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
55
Định nghĩa 1.3
Trong bài toán Tháp Hà Nội với p cọc và n đĩa, ta gọi số i là số chia
tối ưu nếu 1( ) 2 ( ) ( )p p pS n S i S n i .
Nhận xét rằng i là số chia tối ưu nếu và chỉ nếu:
Với mọi l mà 0 l n thì 1 12 ( ) ( ) 2 ( ) ( )p p p pS i S n i S l S n l , tức là
1 10
( ) 2 ( ) ( ) min 2 ( ) ( )p p p p pl n
S n S i S n i S l S n l
.
Nói cách khác, số chia tối ưu i làm cực tiểu số lần chuyển đĩa theo thuật
toán Frame-Stewart.
Chứng minh bƣớc qui nạp
Giả sử Định lí 1.1 đúng với mọi số cọc nhỏ hơn p và mọi số đĩa nhỏ
hơn n , khi ấy Định lí 1.1 đúng cho p và n . Hơn nữa,
Ta sẽ xác định một đánh giá trên và đánh giá dưới cho số chia tối ưu i
của n .
Trong khoảng đánh giá ấy, mọi i đều là những số chia tối ưu.
Sau đó, sử dụng thông tin này, ta có thể tính trực tiếp ( )pD n cho số n liên
quan bằng cách sử dụng giả thiết qui nạp.
Bổ đề 1.1
Giả sử Định lí 1.1 đúng cho mọi số đĩa nhỏ hơn n . Khi ấy với n thỏa
mãn bất đẳng thức 2 2
3 2
p p
p x p xC n C
thì số chia tối ưu i nằm trong khoảng
2 2
4 3
p p
p x p xC i C
. (1.1)
Nhận xét rằng trong trường hợp cơ bản 1n thì bất đẳng thức
2 2
3 21p p
p x p xC C
thỏa mãn cho duy nhất 0x . Bất đẳng thức (1.1) trở
thành 4 3
2 2
p p
p pC i C
nên 0i , tức là khi 1n không có (không cần) phép
chia tối ưu (chỉ cần một lần chuyển đĩa).
www.VNMATH.com
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
56
Chứng minh Bổ đề 1.1
Nếu i là số chia tối ưu thì theo định nghĩa, với mọi l thỏa mãn 0 l n
ta có
1 12 ( ) ( ) 2 ( ) ( )k k k kS i S n i S l S n l .
Với n thỏa mãn bất đẳng thức 2 2
3 2
p p
p x p xC n C
, ta sẽ chứng minh rằng
nếu i nằm ngoài khoảng đánh giá (1.1), thì tồn tại số l sao cho
1 12 ( ) ( ) 2 ( ) ( )k k k kS l S n l S i S n i , (1.2)
tức là nó không phải là số chia tối ưu.
Đầu tiên giả sử rằng, 2
4
p
p xi C
. Đoạn 2
41, p
p xC
được chia bởi các số
2 2 2 2 2 2 2
2 1 2 5 42 11 ... ...p p p p p p p
p p p p k p x p xp kC C C C C C C
.
Như vậy,
2 2
2 2 1
p p
p k p kC i C
với 0,1,..., 3k x nào đó.
Ta sẽ chứng minh 1l i thỏa mãn bất đẳng thức (1.2).
Vì l n (do 2
4
p
p xi C
nên 2 2
4 31 1 1p p
p x p xl i C C n
) nên kết hợp
với bất đẳng thức
2 2
3 1 2 1
p p
p k p kC l C
(do
2 2
2 2 1
p p
p k p kC i C
và 1l i )
và chú ý rằng 3k x , theo giả thiết qui nạp, ta suy ra 1 2( ) 2 2k x
pD l .
Do 2
4
p
p xi C
nên 2 2
4 41 1p p
p x p xl i C C
. Vì 2
3
p
p xn C
nên sử
dụng Nhận xét 1.1 ta có 2 2 3
3 4 4
p p p
p x p x p xn l C C C
. Hơn nữa, do 1i nên
2l và 2
2 2p
p xn l C
(do 2 2
3 2
p p
p x p xC n C
). Lập luận tương tự như trên,
chia khoảng 3 2
4 2,p p
p x p xC C
bởi các điểm 3 3 2
33 1 3 1...p p p
p xp x p xC C C
hay
1 2 1 2 1 2 1 2
1 2 1 1 2 1 2 1 1 2... ...
p p p p
p x p x p x k p x kC C C C
www.VNMATH.com
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
57
thì n l nằm một trong các khoảng
1 2 1 2
1 2 1 1 2
p p
p k x p x kC n l C
với
0,1,...k thì theo qui nạp của định lí ta có 1( ) 2 2x k x
pD n l
.
Bây giờ, nhắc lại rằng ( ) ( ) ( 1)p p pD k S k S k và 1l i , ta có
1 1 1
1 1
2
1 1
2 ( ) ( ) 2 ( ) ( 1) ( 1 ) ( )
2 ( ) 2 ( ) ( ) ( )
2 ( ) 2.2 ( ) 2 2 ( ) ( ).
p p p p p p
p p p p
x x
p p p p
S l S n l D l S l S n l D n l
S i D l S n i D n l
S i S n i S i S n i
Như vậy, nếu 2
4
p
p xi C
thì i không phải là số chia tối ưu.
Bây giờ giả sử 2
3
p
p xn i C
và chọn 1l i (nhắc lại rằng ta đòi hỏi i n để
có thể sử dụng giả thiết qui nạp cho i và l . )
Bởi vì 2
3
p
p xi C
và 2
2
p x
pn C
nên ta có 2 2 3
2 3 3
p p p
p x p x p xn i C C C
và
3
31 p
p xn l n i C
.
Tương tự như chứng minh trường hợp trên, vì giả thiết qui nạp của Định lí 1.1
đúng với 2
3
p
p xn i C
nên ta suy ra rằng ( ) 2x
pD i .
Với 3
3
k x
kn l C
theo qui nạp ta cũng suy ra 1( ) 2x
pD n l . Do 1l i
nên
1 1 1
1 1
1 1
2 ( ) ( ) 2 ( 1) ( 1) ( 1 ) ( )
2 ( ) 2 ( ) ( ) ( )
2 ( ) 2.2 ( ) 2 2 ( ) ( ).
p p p p p p
p p p p
x x
p p p p
S l S n l S l D l S n l D n l
S i D i S n i D n l
S i S n i S i S n i
Như vậy, i không phải là số chia tối ưu. Bổ đề chứng minh xong.
Bổ đề 1.2
Giả sử Định lí 1.1 đúng cho mọi số đĩa nhỏ hơn n . Khi ấy với n thỏa mãn bất
đẳng thức 2
3
p
p xC
2
2
p
p xn C
, và với mọi số chia tối ưu i ta có
3 3
4 3
p p
p x p xC n i C
. (1.3)
www.VNMATH.com
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
58
Chứng minh
Tương tự như trong Bổ đề 1.1. Đầu tiên ta giả sử 3
4
p
p xn i C
. Khi ấy
3 2 3 2 2
4 3 4 4 3 1
p p p p p
p x p x p x p x p xi n C C C C C
.
Do đó theo giả thiết qui nạp của Định lí 1.1 ta có 1( ) 2x
pD i .
Đặt 1l i thì 1 23
4 1 2 11
pp
p x p xn l n i C C
vì
3
4
p
p xn i C
.
Theo giả thiết qui nạp của Định lí 1.1 ta lại có 1
1( ) 2x
pD n l
. Khi ấy
1 1 1
1 1
1 1
1 1
2 ( ) ( ) 2 ( 1) ( 1) ( 1) ( )
2 ( ) 2 ( ) ( ) ( )
2 ( ) 2.2 ( ) 2 2 ( ) ( ).
p p p p p p
p p p p
x x
p p p p
S l S n l S l D l S n l D n l
S i D i S n i D n l
S i S n i S i S n i
Vậy i không thể là số chia tối ưu hay nếu i là số chia tối ưu thì
3
4
p
p xn i C
.
Bây giờ giả sử 1 23
3 1 3 1
pp
p x p xn i C C
. Khi ấy lại theo giả thiết qui nạp
của Định lí 1.1 ta có 1
1( ) 2x
pD n i
. Mặt khác,
2 13 2 3 3
3 2 3 3 2 1
p xp p p x p
p x p x p p x p xi n C C C C C
.
Do đó nếu đặt 1l i thì 2 1
2 1
p x
p xl C
. Lại theo giả thiết qui nạp của Định lí
1.1 ta có 1( ) 2x
pD l . Bây giờ ta có thể tính
1 1 1
1 1
1 1
1 1
2 ( ) ( ) 2 ( 1) ( ) ( 1) ( )
2 ( ) 2 ( ) ( ) ( )
2 ( ) 2.2 ( ) 2 2 ( ) ( ).
p p p p p p
p p p p
x x
p p p p
S l S n l S l D l S n l D n l
S i D l S n i D n l
S i S n i S i S n i
Vậy i không phải là số chia tối ưu. Do đó ta đi đến kết luận rằng nếu i là số
chia tối ưu thì 3
3
k
k xn i C
.
Kết hợp hai trường hợp ta đí đến kết luận của Bổ đề 1.1.
www.VNMATH.com
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
59
Nhận xét 1.2
Nhận xét rằng với mọi số hoàn hảo 2
2
p
p xn C
, Bổ đề 1.1 nói rằng mọi số
chia tối ưu i phải thỏa mãn bất đẳng thức 2
3
p
p xi C
và Bổ đề 1.2 nói rằng
3
3
p
p xn i C
3 2 3 2
3 2 3 3
p p p p
p x p x p x p xi n C C C C
.
Do đó chúng ta đã chứng minh rằng từ Định lí 1.1 suy ra nếu 2
2
p
p xn C
thì số
chia tối ưu 3
3
p
p xi C
là duy nhất.
Nói cách khác, khi n là số hoàn hảo (2
2
p
p xn C
) thì số chia tối ưu i
cũng là số hoàn hảo (3
3
p
p xi C
), và là duy nhất. Ta cũng dễ dàng tính được i .
Ta sẽ có các hệ quả từ nhận xét thú vị này ở cuối mục.
Bổ đề 1.3
Giả sử Định lí 1.1 đúng cho mọi số đĩa nhỏ hơn n . Khi ấy với n thỏa
mãn bất đẳng thức 2 2
3 2
p p
p x p xC n C
, nếu số nguyên i thỏa mãn điều kiện
phát biểu trong Bổ đề 1.1 và Bổ đề 1.2 (thỏa mãn các bất đẳng thức (1.1) và
(1.3)) thì i là số chia tối ưu.
Chứng minh
Ta sẽ chỉ ra rằng với mọi cách chọn i đồng thời thỏa mãn các bất đẳng
thức (1.1) và (1.3) thì biểu thức 12 ( ) ( )p pS i S n i là không đổi.
Vì 2 2
3 2
p p
p x p xC n C
nên ta có thể đặt 2
3
p
p xn C a
, trong đó
3 2 2
3 2 30 p p p
p x p x p xa C C C
.
Vì i thỏa mãn bất đẳng thức (1.1), tức là 2 2
4 3
p p
p x p xC i C
nên ta có thể
đặt 2
4
p
p xi C b
. Hơn nữa, ta có thể viết bất đẳng thức 2 2
4 3
p p
p x p xC i C
dưới
dạng 2 2
3 1 2 1
p p
p x p xC i C
. Áp dụng giả thiết qui nạp của Định lí 1.1 ta có
2 2
3 1 2 1
p p
p x p xC i C
1( ) 2x
pD i . Từ Định nghĩa của ( )pD i và Bổ đề 1.1:
www.VNMATH.com
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
60
1 1
1 1
( ) 1 ( ) 1 2 2 ( 1) 2
3 ( 2) 2.2 ... 2 .
x x
p p p p p p
x x
p p p
S i S i D i S i S i D i
S i D i S i b b
(1.4)
Hoàn toàn tương tự, do n i thỏa mãn bất đẳng thức (1.3), tức là
3 3
4 3
p p
p x p xC n i C
nên ta có thể đặt 3
4
p
p xn i C c
. Hơn nữa, bất đẳng
thức 3 3
4 3
p p
p x p xC n i C
có thể viết dưới dạng
1 2 1 2
1 3 1 2
p p
p x p xC n i C
.
Áp dụng giả thiết qui nạp của Định lí 1.1, ta có
1 2 1 2
1 3 1 2
p p
p x p xC n i C
1( ) 2x
pD n i .
Theo Định nghĩa của ( )pD i , Bổ đề 1.2 và theo giả thiết qui nạp của Định
lí 1.1:
1 1 1 1
1 1 1
1
( ) ( 1) ( 1) 1 2
2 ( 1) 2 2 2.2 ...
.2 .
x
p p p p
x x
p p p
x
p
S n i S n i D n i S n i
S n i D n i S n i
S n i c c
(1.5)
Do 2
4
p
p xi C b
và 3
4
p
p xn i C c
nên
2 3 2
4 4 3
p p p
p x p x p xn i n i C b C c C b c
.
Mà 2
3
p
p xn C a
nên a b c .
Do 2 2
3 2 1
p p
p x p xn a C C
là số hoàn hảo (theo Định nghĩa 1.2) nên
theo Nhận xét 1.2, số 3 3
43 1
p p
p xp xi C C
là số chia tối ưu duy nhất cho
n a . Do đó theo Định nghĩa số chia tối ưu và Định nghĩa của ( )pD i ta có:
www.VNMATH.com
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
61
1
1 1
1
1
1
1 1
( ) 2 ( ) ( )
2 ( 1) ( ) ( 1) ( 1)
2 ( 1) 2.2 ( 1) 2
2 ( 1) ( 1) ...
2 ( ) ( ) 2 ( ) ( ).
p p p
p p p p
x x
p p
p p
p p p p
S n a S i S n a i
S i D i S n a i D n a i
S i S n a i
S i S n a i
S i b S n a i b S i b S n c i
(1.6)
Từ (1.4), (1.5) và (1.6) ta có
1
1 12 ( ) ( ) 2 2 .2
( ) 2 .
x x
p p p p
x
p
S i S n i S i b b S n i c c
S n a a
(1.7)
Biểu thức trên không phụ thuộc vào cách chọn i (hay cách chọn b và c ,
miễn là chúng thỏa mãn các bất đẳng thức (1.1), (1.3) và a b c ).
Hơn nữa giá trị 12 ( ) ( )p pS i S n i là nhỏ nhất (trong tất cả các số
12 ( ) ( )p pS l S n l , 0 l n ), từ đó suy ra rằng mọi i đồng thời thỏa mãn
các bất đẳng thức (1.1) và (1.3) là số chia tối ưu.
Đẳng thức (1.7) cũng kết thúc chứng minh Định lí 1.1.
Từ Định lí 1.1 ta có
Hệ quả 1.1
Nếu n là một trong k số trong khoảng 1k kt n t thì
1
4 4 4( ) ( ) ( 1) 2kD n M n M n .
1.2 Công thức tính ( )pS n
Mục 1.1 đã cung cấp cho ta khá nhiều thông tin về các giá trị của ( )pS n ,
do đó có thể tính giá trị của ( )pS n theo n và p mà không cần dùng công
thức đệ qui.
Định lí 1.2
Với 3k và 2 2
3 2
p p
p x p xC n C
với một 0x nào đó, ta có
. 1
3 3
3 3
0
( ) 2 2x
p i p x
p p x p x
i
S n C n C
.
www.VNMATH.com
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
62
Chứng minh
Đây là hệ quả trực tiếp từ Định lí 1.1, bởi vì
22
2 23 3
1
1 0 1 1
1 12 2 3 3 3
2 3 3 3 3
0 0
( ) (0) ( ) 0 2 2
2 2 2 2 .
pp i
p pp i p i
Cn x ni x
p p p
i i j C i C
x xp p i p x p i p x
p i p i p x p i p x
i i
S n S D i
C C n C C n C
Hệ quả 1.2
Nếu 1k kt n t thì 1 1
4
1
( ) 2 2k
i k
k
i
S n i t n
.
Trƣờng hợp số hoàn hảo
Nhắc lại Nhận xét 1.2, nếu n là số hoàn hảo, 2
2
p
p xn C
thì tồn tại duy
nhất số chia tối ưu 2
3
p
p xi C
và do đó 2 2 3
2 3 3
p p p
p x p x p xn i C C C
. Như
vậy,
2 2
3 2 1
p p
p x p xi C C
là số hoàn hảo cho bài toán với p cọc,
1 2
1 2
p
p xn i C
là số hoàn hảo cho bài toán với 1p cọc. Do đó mỗi ( )pS i
và 1( )pS n i trong công thức truy hồi 1( ) 2 ( ) ( )p p pS n S i S n i cũng là
hoàn hảo và dễ dàng tính được nếu sử dụng tam giác Pascal.
Sử dụng tam giác Pascal, ta dễ dàng tính được ( )pS n cho mọi số hoàn
hảo n như sau. Nhắc lại rằng các số tham gia trong tam giác Pascal có công
thức là
1, 1, 1
1 khi 0
0 khi 0, 0
khi 0, 0
j
ij i
i j i j
j
P C i j
P P i j
trong đó ijP là số Pascal tại dòng thứ i và cột thứ j , chỉ số bắt đầu tính
từ 0.
www.VNMATH.com
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
63
Đầu tiên xây dựng tam giác Pascal P với các cột được đánh số bên
ngoài theo 2, nghĩa là ijP chỉ được xác định khi 0i , 2j và
, 2ij i jP P , do
đó 2 1iP với mọi 0i . Điều này cho phép chúng ta ánh xạ x và p qua số
hoàn hảo p
xn C như sau: p
xp xP C n .
Sau đó chúng ta xây dựng tam giác thứ hai P với cột ngoài rìa cũng như
vậy, nhưng thay vì các số Pascal 1, 1, 1ij i j i jP P P ta đặt
1, 1, 12ij i j i jP P P .
Khi ấy ta có thể ánh xạ x và p qua 1 1 12p p p
xp p x p x p xP S C S C S C .
Bây giờ, sử dụng P để tính x dựa trên n , và sử dụng P để tính ( )pS n
dựa trên x , ta có thể dễ dàng và thuận tiện tính được ( )pS n cho mọi số đĩa là
số hoàn hảo và mọi số cọc p (xem Bảng dưới đây).
P
p
x
2
3 4 5 6 7 8
0 1
1 1 1
2 1 2 1
3 1 3 3 1
4 1 4 6 4 1
5 1 5 10 10 5 1
6 1 6 15 20 15 6 1
P
p
x
2
3 4 5 6 7 8
0 1
1 1 1
2 1 3 1
3 1 7 5 1
4 1 15 17 7 1
5 1 31 49 31 9 1
6 1 63 129 111 49 11 1
Để tìm ( )pS n cho một số hoàn hảo p
xn C nào đó, đầu tiên ta nhìn vào
cột p trong P . Khi đó ta có thể tìm được x bằng cách nhìn vào chỉ số của
dòng chứa n . Cuối cùng, nhìn sang ,x k của bảng P để tính được
( )xp pP S n .
www.VNMATH.com
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
64
Ví dụ 1.2
Với 15n Để tính 4(15)S ta nhìn vào cột 4p , thấy số 15, ứng với
6x . Bảng P cho 6,4 129P . Như vậy, 4(15) 129S .
Số 15n nằm trong bảng Pascal vì nó là số hoàn hảo:
4 4
6 415 xn C C .
Ví dụ 1.3
Để tìm 5(10)S ta chỉ cần nhìn trên bảng P , ứng với cột 5p , 10P
sẽ là 5x . Bảng P cho 5,5 31P . Như vậy, 5(5) 31S .
1.3 Tính trực tiếp số chia tối ƣu i
Bài toán 1.1
Giả sử số cọc p cố định. Tính số chia tối ưu i theo số đĩa n .
Từ các Định lí 1.1, 1.2 và các hệ quả của nó, ta có thể giải quyết bài toán
này cho trường hợp bốn cọc.
Định lí 1.3
Cho bài toán bốn cọc, với mọi số đĩa n . Nếu 2 2
1 2x xC n C thì
1i n x là số chia tối ưu.
Chứng minh
Ta nhắc lại các Bổ đề 1.1 và 1.2: Nếu 2 2
3 2
p p
p x p xC n C
thì mọi số i
thỏa mãn hai bất đẳng thức (1.1) và (1.3)
2 2
4 3
p p
p x p xC i C
và 3 3
4 3
p p
p x p xC n i C
sẽ là số chia tối ưu.
Với 4p các bổ đề này có thể phát biểu lại như sau:
Nếu 2 2
1 2x xC n C thì mọi số i thỏa mãn hai bất đẳng thức
2 2
1x xC i C và 1 1
1x xC n i C (1.8)
www.VNMATH.com
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
65
hay
2 2
1x xC i C
1 !!
2! 2 ! 2! 1 !
xxi
x x
1 1
2 2
x x x xi
(1.8a)
và
1 1
1x xC n i C 1x n i x . (1.8b)
Ta có
2 2
1 2x xC n C
1 ! 2 !
2! 1 ! 2! !
x xn
x x
1 1 2
2 2
x x x xn
.
(1.9)
Vì i phải thỏa mãn (1.8b) nên n i chỉ có thể là: n i x hoặc
1n i x hay i n x hoặc 1i n x .
Chọn 1i n x thì ta có đánh giá sau đây cho i :
(1.9) 1 1 2
1 1 12 2
x x x xx n x x
2 22
2 2
x x x xi
211
2 2
x x x xi
.
.Do i nguyên nên 1 1
2 2
x x x xi
. Chứng tỏ i thỏa mãn bất đẳng thức
(1.8a). Vậy theo Bổ đề 1.3, 1i n x là số chia tối ưu.
Nhận xét 1.3
Nếu chọn i n x thì vì 1 1 2
2 2
x x x xn
nên ta có đánh giá sau
đây cho i :
(1.9) 1 1 2
2 2
x x x xx n x x
21 2
2 2
x x x xi
.
Bất đẳng thức (1.8a) không thỏa mãn khi 2 2
2
x xi
hay
2 2
2
x xn x
2 1 ( 2)3 2
2 2
x xx xn
.
www.VNMATH.com
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
66
Vì vậy i n x có thể không phải là số chia tối ưu.
Bổ đề 1.4
Với mọi ,a b, 0 a b ta có a ab .
Bổ đề 1.5
Cho 1
( )2
x xf x
và
3( ) 2
2g y y
. Khi ấy ( ( ))g f x x với mọi
x R .
Chứng minh
Theo Bổ đề 1.5 ta có
3
( ( )) 2 ( ) 1 1 1 12
g f x f x x x x x
.
Mặt khác, do x nên 1 0x x . Do đó theo bất đẳng thức Cauchy
ta có
1
12
x xx x
3 1 31 1
2 2 2x x x x .
Suy ra 3
1 12
x x x
. Vậy 3
1 12
x x x x
.
Chứng tỏ 3
1 ( ( )) 12
x g f x x x x
hay ( ( ))g f x x .
Bổ đề 1.6
Cho 3
( ) : 22
g y y
. Khi ấy 2 2
1( ) x xg y x C y C .
Chứng minh
Ta có 2 2
1x xC y C 1 2 1
2 2
x x x xy
.
www.VNMATH.com
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
67
Trước tiên ta chứng minh rằng, 1 2
2
x xy
suy ra g y x .
Thật vậy, do cả hai số y và 1 2
2
x x đều là những số nguyên nên
từ 1 2
2
x xy
suy ra
2
2
3
1 2 3 4 21
2 2 2
xx x x x
y
.
23
22
y x
3
22
y x 3
22
y x
(do x là số tự nhiên), hay
g y x .
Bây giờ giả sử 1
( )2
x xy f x
. Vì
3( ) 2
2g y y
là hàm tăng
và theo Bổ đề 1.5 ta có ( ( ))g f x x nên ( )y f x suy ra ( ) ( ( ))g y g f x x .
Kết hợp cả hai bất đẳng thức trên ta có 2 2
1( ) x xg y x C y C
Hệ quả 1.4
Trong bài toán Tháp Hà Nội với bốn cọc và với n đĩa bất kì, số chia tối
ưu là
12
2i n n
.
Chứng minh
Xây dựng hàm :g sao cho 2 2
1( ) x xg y x C y C . Khi ấy
2 2
1 2( ) 2 x xg y x C y C .
Theo Định lí 1.3 ta có thể tìm được số i xác định bởi
3 1
1 2 1 2 1 22 2
i n x n g n n n n n
là số chia tối ưu.
www.VNMATH.com
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
68
§2 Đánh giá ( )pS n
Như ta đã biết, số lần chuyển đĩa cho bài toán ba cọc là 3( ) 2 1nS n ,
nên sẽ tăng theo hàm mũ khi n tăng. Tuy nhiên, trong trường hợp số cọc
4p , phân tích thuật toán Frame- Stewart, Stockmeyer 1994 [19] phát hiện
ra rằng, thật đáng ngạc nhiên, là độ phức tạp của thuật toán là dưới mũ (sub-
exponential), cỡ 2 n
n cho 4k . Đánh giá dưới đã được Xiao Chen và
Jian Shen (2004) và Szegedy (1999) xét. Dưới đây chúng tôi trình bày kết
quả của Stockmeyer [19].
Bổ đề 2.1
Kí hiệu x là số nguyên gần số thực x nhất. Khi ấy 1k kt n t khi và
chỉ khi 2k n , trong đó ( 1)
2k
k kt
là các số Pascal.
Chứng minh
Ta có
2k n 1 1
22 2
k n k 2 21 1
24 4
k k n k k
1
1 1
8 8k kt n t
1k kt n t .
Dấu bằng trong bắt đẳng thức cuối là do tất cả các số 1, ,k kt n t
đều là
những số nguyên.
Nhận xét rằng từ Bổ đề này suy ra rằng 2n chính là giá trị tối ưu của
tham số i trong thuật toán.
Định lí 2.1
Giả sử 2 2n n , tức là 1 1
2 2 . Khi ấy 2
4( ) 2 1nS n n ,
trong đó 1
23 2
24
và
2 3 42
4
.
www.VNMATH.com
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
69
Chứng minh
Giả sử 2 2k n n . Sử dụng các Hệ quả 1.1 và 1.2. và tính tổng ta
có
1 1 1
4
1
2 22
2
( 1( ) 2 2 1 2 1 2
2
2 3 4 3 2 3 42 1 2 2 1
4 4 4
2 1.
ki k k k
k
i
k n
n
k kS n i t n k n
n k kn
n
Đây chính là điều phải chứng minh.
Mặc dù 1
23 2
24
và
2 3 42
4
có dạng
phức tạp, cả hai đều rất gần với 1 khi 1 1
2 2 . Hàm đạt giá trị cực
tiểu bằng 1 khi 1
2 và đạt cự đại bằng
21.0615
ln 2e tại
3 10.0573
2 ln 2 . Hàm giảm chặt từ cực đại bằng
232 1.0164
32
tại 1
2 đến cực tiểu bằng
112 0.9723
16 tại
1
2 . Nếu
kn t là số tam
giác thì ta có 1
lim2n
. Như vậy, 2( ) 2 1 1nM n n là xấp xỉ tốt nhất
cho các số này. Trong mọi trường hợp, ( )M n luôn luôn không xa quá 6.2%
so với 22 nn với n đủ lớn.
Ta nhận xét rằng 22 nn thật sự tăng nhanh hơn 2 nn , do đó
Krishnamoorthy và Biswas đã chứng minh rằng ( ) 2 nM n O n .
www.VNMATH.com
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
70
§3 Sự tƣơng đƣơng của một số thuật toán giải bài toán Tháp Hà Nội
tổng quát
Trong §1 ta đã xét khá tỉ mỉ một thuật toán truy hồi giải bài toán Tháp Hà
Nội tổng quát (thuật toán Frame-Stewart, thực ra đó là thuật toán do Stewart
đề nghị năm 1942). Frame (1941) cũng đã đưa ra một thuật toán khác với
thuật toán Stewart. Sau này, một số tác giả đã đưa ra một số thuật toán truy
hôi tương tự các thuật toán của Stewart và Frame. Trong § này chúng ta sẽ
trình bày chứng minh trong [11] khẳng định rằng các thuật toán này là tương
đương theo nghĩa số lần chuyển đĩa tối ưu trong các thuật toán này là bằng
nhau.
3.1 Các thuật toán truy hồi
Giả sử ( )pH n là số bước chuyển nhỏ nhất cần thiết để giải bài toán Tháp
Hà Nội với n đĩa và p cọc.
Chỉ với 4p và n p đĩa thì bài toán Tháp Hà Nội với nhiều cọc mới
không tầm thường, bởi vì ta đã chứng minh được rằng (Chương 2)
3( ) 2 1nH n và hiển nhiên ( ) 2 1pH n n khi n p (lần lượt lấy từng đĩa
từ nhỏ tới lớn từ cọc nguồn đặt vào từng cọc, nhấc đĩa cuối cùng từ cọc nguồn
đặt vào cọc đích, sau đó lại lần lượt xếp các đĩa vào cọc đích theo thứ tự từ
lớn đến bé, xem Nhận xét 2.1 Chương 3). Do đó trong trường hợp tầm thường
3p hoặc n p ta sẽ kí hiệu tất cả các hàm được xem xét ở đây là được xác
định như là ( )pH n . Vì lí do kĩ thuật, ta coi 2(1) 1H và
2( ) 0H n khi 2n .
Thuật toán Frame (1941)
Đầu tiên tất cả n đĩa đều nằm trên cọc nguồn 1P . Ta chia 1n đĩa nhỏ
nhất thành 2p nhóm đĩa có kích thước liên tiếp. Chuyển 1n đĩa nhỏ nhất
(trên cùng) từ cọc nguồn 1P sang cọc trung gian 2P bằng cách sử dụng tất cả
www.VNMATH.com
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
71
p cọc. Chuyển 2n đĩa nhỏ hơn (tiếp theo) từ đĩa nguồn
1P sang đĩa trung gian
3P bằng cách sử dụng 1p cọc (không sử dụng cọc 2P vì cọc
2P đang chứa
1n đĩa nhỏ nhất). Tiếp tục chuyển các nhóm đĩa từ cọc nguồn sang các cọc
trung gian bằng cách tại mỗi bước ta sử dụng ít hơn một cọc so với bước
trước. Nhóm đĩa cuối cùng được chuyển từ cọc nguồn 1P sang cọc trung gian
1pP bằng cách sử dụng ba cọc trung gian còn lại. Đĩa lớn nhất (thứ n ) khi ấy
được chuyển từ cọc nguồn 1P sang cọc đích
pP . Sau đó ta chuyển tất cả các
nhóm đĩa sang cọc đích theo thứ tự ngược lại.
Như vậy, bài toán tìm số lần chuyển nhỏ nhất n đĩa từ cọc nguồn sang
cọc đích trở thành
Bài toán 3.1
Với 4p và n p tìm cực tiểu ( )pF n của đại lượng
1 1 2 3 22 2 ... 2 1p p pF n F n F n
với điều kiện 1 2 2... 1pn n n n , in , 1,2,..., 2i p .
Bài toán trên là một dạng nới lỏng của bài toán Frame ban đầu:
Bài toán 3.2
Với 4p và n p , tìm cực tiểu ( )pF n của đại lượng
1 1 2 3 22 2 ... 2 1p p pF n F n F n
với điều kiện 1 2 2... 1pn n n n , 1 2 2... pn n n , trong đó in .
Như vậy, so với bài toán 3.1, thuật toán Frame (Bài toán 3.2) đòi hỏi
thêm một điều kiện đơn điệu của số đĩa: 1 2 2... pn n n .
Dưới đây, để thuận tiện, ta nhắc lại
Thuật toán Stewart (1941)
www.VNMATH.com
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
72
Đầu tiên tất cả n đĩa đều nằm trên cọc nguồn 1P . Chia các đĩa thành hai
nhóm. Nhóm thứ nhất gồm 1n đĩa nhỏ nhất và nhóm thứ hai gồm
1n n đĩa
còn lại.
Chuyển 1n đĩa nhỏ nhất từ cọc nguồn
1P sang cọc trung gian 2P bằng
cách sử dụng tất cả p cọc. Chuyển 1n n đĩa còn lại từ cọc nguồn
1P sang
cọc đích pP bằng cách sử dụng 1p cọc (không sử dụng cọc
2P ).
Cuối cùng chuyển 1n đĩa từ cọc
1P sang cọc đích pP , sử dụng tất cả p cọc.
Bài toán 3.3
Với 4p và n p , tìm 1 1 2 1 2( ) : min 2p p pS n S n S n n n n ,
trong đó in , 1,2i .
Thuật toán Stewart có thể được tổng quát hóa như sau.
Kí hiệu ( )pA n là số bước chuyển cần thiết trong Bài toán 2 theo thuật
toán có tính đến tất cả các phép chia n đĩa sau đây.
Bài toán 3.4
Với 4p và n p , giả sử ( )pA n là cực tiểu của số
1 1 2 3 2 1 2
1 1 2 3 2 1 2
1 2 1 2
2 ( ) 2 ( ) ... 2 ( ) 1 ... 1
2 ( ) 2 ( ) ... 2 ( ) ... ...
2 ( ) 2 ( ) ,
p p p p
p p p p
p p
A n A n A n n n n
A n A n A n n n n
A n A n n n n
trong đó in .
Một phiên bản của 3.4 nhưng đòi hỏi tính đơn điệu của phép chia n đĩa là
Bài toán 3.5
Với 4p và n p , tìm cực tiểu ( )pA n của số (trong đó in )
1 1 2 3 2 1 2 1 2
1 1 2 3 2 1 2 1 2
1 1 2 1 2 1 2
2 ( ) 2 ( ) ... 2 ( ) 1 ... 1 , ...
2 ( ) 2 ( ) ... 2 ( ) ... , ... ...
... 2 ( ) 2 ( ) , .
p p p p
p p p p
p p
A n A n A n n n n n n
A n A n A n n n n n n
A n A n n n n n n
www.VNMATH.com
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
73
Định nghĩa 3.1
Nếu 2,3p hoặc n p thì đặt (định nghĩa)
( ) ( ) ( ) ( ) ( ) ( )p p p p p pF n F n A n A n S n M n .
3.2 Chứng minh ( ) ( ) ( )p p pA n F n S n
Chúng ta bắt đầu bằng hai Bổ đề về hàm ( )pA n . Mặc dù Bổ đề 3.1 cũng
khá hiển nhiên và Bổ đề 3.2 chủ yếu là xét trường hợp tầm thường, tuy nhiên
cũng cần chứng minh hai Bổ đề này, bởi vì một số “điều hiển nhiên” trong bài
toánTháp Hà Nội thường đưa đến các kết luận sai lầm.
Bổ đề 3.1
Với mọi 3p và 1n ta có ( ) 2 1pA n n .
Chứng minh
Với n p Bổ dề đúng theo định nghĩa của ( )pA n . Với 3p và 3n ta
có 3( ) 2 1 2 1nA n n . Cuối cùng, với 4p và n p ta có
1 1 2 1 1( ) 2 ( ) 2 ( ) ... 2 ( ) ( )p p p i p i i p iA n A n A n A n A n ,
trong đó 1 2 1... p in n n n và 2 2i p .
Theo qui nạp ta có
1 1
1 1 1
1
( ) 2 2 1 ... 2 1 2 1
2 ... 2 ... 2 1
2 2 ... 2 2 1.
p p i p i
p i p i p i p i
p i
A n n n n
n n n n n n p i
n n n p i n
Bổ đề được chứng minh.
Bổ đề 3.2
Với mọi 1n , 3p và 1 1, ,..., p ii n n với 2 1i p và
1 2 1... p in n n n :
1 1 2 1 1( ) 2 ( ) 2 ( ) ... 2 ( ) ( )p p p i p i i p iA n A n A n A n A n .
www.VNMATH.com
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
74
Chứng minh
Trường hợp 4p và n p : Khẳng định được suy ra trực tiếp từ định
nghĩa số ( )pA n .
Trường hợp 3p : Từ 2 1i p suy ra 2i . Ta phải chứng minh
3 3 1 2 2( ) 2 ( ) ( )A n A n A n , 1 2n n n . (3.1)
Nếu 2 2n thì (3.1) suy biến.
Vậy 2 1n và ta chỉ còn phải chứng minh
3 3 2( ) 2 ( 1) (1)A n A n A
Theo định nghĩa ta có:
(3.1)3 3 1 2 2( ) 2 ( ) ( )M n M n M n 12 1 2 2 1 1nn .
Hiển nhiên đúng.
Trường hợp cuối cùng: n p và 4p .
Ta sẽ chứng minh bằng truy hồi theo n .
Nếu 2n thì 1 2 12 ... 1p in n n n p i (vì 1in với mọi i ).
Như vậy, 1p i . Mặt khác ta lại có 1p i p n nên suy ra
1p i . Do đó 1 2 1n n . Như vậy chỉ còn phải chỉ ra là
1(2) 2 (1) (1)p p pA A A , hiển nhiên vì theo định nghĩa khi n p thì
(2) (2) 2.2 1 3p pA M ; (1) (1) 1p pA M ; 1 1(1) (1) 1p pA M .
Như vậy, trường hợp 2n được chứng minh. Theo qui nạp ta suy ra:
1 1 2 1 1 1 1 12 ( ) 2 ( ) ... 2 ( ) ( ) 2 ( ) ( ).p p i p i i p i p pA n A n A n A n A n A n n
Do đó khẳng định được chứng minh nếu ta chỉ ra rằng
1 1 12 ( ) ( ) ( )p p pA n A n n A n .
Do n p nên theo định nghĩa ta có ( ) ( ) 2 1p pA n M n n . Vậy theo Bổ đề 3.1:
1 1 1 1 1
1 1 1
2 ( ) ( ) 2 2 1 2 1
2 2 3 2 1 ( ).
p p
p
A n A n n n n n
n n n n n A n
Bổ đề 3.2 được chứng minh.
www.VNMATH.com
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
75
Mệnh đề 3.3
Với mọi 3p và 1n ta có ( ) ( )p pA n S n .
Chứng minh
Ta sẽ chứng minh bằng qui nạp theo n . Cụ thể hơn, ta sẽ đi chứng minh
rằng khẳng định đúng với mọi 4n và, khi n cố định thì nó đúng với mọi
4 p n .
Với 4n , ta chỉ cần xét 4p . Tính toán đơn giản và trực tiếp chỉ ra
rằng trong trường hợp này ta có 4 4(4) (4) 9A S .
Bây giờ ta giả sử rằng khẳng định đúng với mọi 4 m n . Giả sử p là
số nguyên bất kì thỏa mãn 4 p n .
Theo giả thiết qui nạp, với mọi 1 2,n n ,
1 2n n n ta có
1 1 2 1 1 22 ( ) ( ) 2 ( ) ( )p p p pA n A n S n S n .
Như vậy, tập mà theo đó chúng ta xác định ( )pS n (như là cực tiểu của
nó) là tập con của tập, mà theo đó chúng ta xác định ( )pA n (như là cực tiểu
của nó) . Từ đây suy ra rằng ( ) ( )p pA n S n .
Còn lại cần phải chứng minh rằng ( ) ( )p pA n S n .
Nếu với 1 2,n n ,
1 2n n n nào đó, ta có 1 1 2( ) 2 ( ) ( )p p pA n A n A n
thì ta có điều phải chứng minh, vì trong trường hợp này ( )pA n là tập mà
( )pS n đạt cực tiểu. Bởi vậy ta giả thiết rằng
1 1 2 1 1( ) 2 ( ) ( ) ... 2 ( ) ( )p p p i p i i p iA n A n A n A n A n ,
trong đó 1 2 1... p in n n n và 2 2i p . (Nhận xét rằng trong trường
hợp riêng 2i ta có 1 1 1p i pn n và 2 1( ) 1pA n .) Khi đó
2 3 1 1... p in n n n n . Theo Bổ đề 3.2 ta có
1 1 1 2 1 1( ) 2 ( ) ... 2 ( ) ( )p p i p i i p iA n n A n A n A n ,
www.VNMATH.com
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
76
Và vì vậy, sử dụng giả thiết qui nạp, ta đi đến kết luận
1 1 1 1 1 1( ) 2 ( ) ( ) 2 ( ) ( ) ( )p p p p p pA n A n A n n S n S n n S n .
Vậy ( ) ( )p pA n S n .
Mệnh đề 3.4
Với mọi 3p và 1n ta có ( ) ( )p pA n F n .
Chứng minh
Ta sẽ chứng minh bằng qui nạp theo n như trong Mệnh đề 3.3.
Với 4n ta có
4 4 1 3 2 1 2
4 1 3 2 1 2
4 3 4 3
4
(4) min 2 ( ) 2 ( ) 1 1 4
min 2 ( ) 2 ( ) 1 3
min 2 (1) 2 (2) 1;2 (2) 2 (1) 1
min 2 1 3 1,2 3 1 1 9 (4).
F F n F n n n
A n A n n n
A A A A
A
Giả thiết rằng ( ) ( )p pA m F m với mọi 4 m n . Tập mà theo đó ta xác
định ( )pF n (như là cực tiểu của nó) là tập con của tập theo đó ta xác định
( )pA n (như là cực tiểu của nó), bởi vì với mọi 1 2 2, ,..., pn n n thỏa mãn
1 2 2... 1pn n n n ta có
1 3 2 1 3 22 ( ) ... 2 ( ) 1 2 ( ) ... 2 ( ) 1p p p pF n F n A n A n .
Do đó ( ) ( )p pF n A n .
Để chứng minh bất đẳng thức ngược lại, chúng ta sử dụng phương pháp
qui hoạch động như sau. Theo Mệnh đề 3.3 ta có thể viết
0
1 1 2( ) 2 ( ) ( )p p pA n A n A n
trong đó 0
1 2n n n . Áp dụng một lần nữa lý luận này, ta có
0 0
1 2 1 2 2 3( ) 2 ( ) ( )p p pA n A n A n
trong đó 0 0
2 3 2n n n . Vậy 0
1 1 2 2 3( ) 2 ( ) 2 ( ) ( )p p p pA n A n A n A n .
www.VNMATH.com
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
77
Quá trình này có thể thực hiện đến khi nào? Chúng ta phân biệt hai
trường hợp.
Trƣờng hợp 1
0
1 1 1( ) 2 ( ) ... 2 ( ) ( )p p i p i i p iA n A n A n A n
với 2i và 0
1 1p in .
Đặt max 1kr k n và nhận xét rằng r p i . Khi ấy ta có:
1 1 1
1 1 1
1 1
1 1 1
1
( ) 2 ( ) ... 2 ( ) 2 (1) ... 2 (1) 2 (1)
2 ( ) ... 2 2 ( ) ( )
2 (1) ... 2 (1) (1)
2 ( ) ... 2 ( ) 2 ( )
2 (1) ... 2
p p i p i p r i i
p p r r p r r
p r i i
p p r r p r r
p r
A n A n A n A A A
A n A n A n
A A A
A n A n A n
A A
1(1) (1) ( ).i i pA A n
Nhận xét rằng trong tính toán trên đổi biến trong đẳng thức thứ hai là có
thể bởi vì mọi giá trị của (1),..., (1)p r iA A cũng như là 1 1(1),..., (1)p r iA A
bằng
1 và 1 2i . Do đó ta có mâu thuẫn. Chứng tỏ trường hợp này là không thể.
Trƣờng hợp 2
0
1 1 1( ) 2 ( ) ... 2 ( ) ( )p p i p i i p iA n A n A n A n
với 2i và 0
1 1p in .
Ta có
0 0
1 3 2 1 3 2( ) 2 ( ) ... 2 ( ) 1 2 ( ) ... 2 ( ) 1 ( ).p p p p p pA n A n A n F n F n F n
Vậy Mệnh đề 3.4 được chứng minh.
Kết hợp Mệnh đề 3.3 và Mệnh đề 3.4 ta có thể phát biểu
Hệ quả 3.5
Với mọi 3p và 1n ta có ( ) ( ) ( ) ( )p p p pA n F n S n H n .
www.VNMATH.com
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
78
KẾT LUẬN
Trong luận văn này, ngoài Chương 1 trình bày sơ lược lịch sử phát triển
của bài toán Tháp Hà Nội và Chương 2 trình bày chi tiết các lời giải bài toán
tháp Hà Nội với ba cọc, chúng tôi tập trung trình bày một vấn đề quan trọng
trong bài toán tháp Hà Nội tổng quát, đó là các công thức tính số lần chuyển
tối ưu, độ phức tạp tính toán và sự tương đương của các các thuật toán hồi qui
dạng Frame-Stewart.
Mặc dù còn rất sơ lược và chưa bao quát hết được số lượng lớn các bài
viết chỉ riêng về thuật toán Frame-Stewart giải bài toán tháp Hà Nội, hy vọng
luận văn cũng đã cho một bức tranh tương đối rõ nét về bài toán này và gợi ý
sự quan tâm đến các vấn đề thú vị của bài toán tháp Hà Nội, nhân dịp 1000
năm Thăng Long.
www.VNMATH.com
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
79
TÀI LIỆU THAM KHẢO
[1] Phạm Trà Ân, Bài toán Tháp Hà Nội, Tạp chí Toán học và Tuổi trẻ, số
280, tháng 10.2000.
[2] Phạm Trà Ân, Bài toán Tháp Hà Nội-Cái nhìn từ lý thuyết Độ phức tạp
tính toán, Tạp chí Thông tin Toán học, Tập 6 Số 2, tháng 8 năm 2002,
trang 10-13.
[3] Vũ Đình Hòa, Bài toán Tháp Hà Nội, Tạp chí Toán Tuổi thơ 2, Số 68,
tháng 10.2008.
[4] Tạ Duy Phượng, Trò chơi Tháp Hà Nội-Lịch sử và bài toán tổng quát,
Tạp chí Toán học và Tuổi trẻ, số 280, tháng 1.2010.
[5] Tạ Duy Phượng, Trò chơi Tháp Hà Nội và những bài toán liên quan (Bản
thảo), 150 trang.
[6] Nguyễn Xuân Tấn, Bài toán “Tháp Hà Nội”-một bài toán hóc búa hơn
một trăm năm nay, Tạp chí Thông tin Toán học, Tập 6 Số 1, tháng 3
năm 2002, trang 2-4.
[7] Henry Ernest Dudeney, The Canterbury Puzzles (and other curious
problems), Thomas Nelson and Sons, Ltd., London, 1907; New York, E.
P. Dutton and Company, 1908.
[8] Otto Dunkel, Editorial note concerning advanced problem 3918, Amer.
Math. Monthly 48 (1941), 219.
[9] J. S. Frame, Solution to advanced problem 3918, Amer. Math. Monthly
48 (1941), 216-217.
[10] P. J. Hilton, private communication.
[11] Sandi Klavžar, Uroš Milutinović, and Ciril Petr, On the Frame-Stewart
algorithm for the multi-peg Tower of Hanoi problem, Discrete Appl.
Math. 120 (2002), no. 1-3, 141-157. MR1912864 (2003c:05028)
[12] Édouard Lucas, L’Arithméique Amusante: Introduction aux Récréations
Mathematicques, Gauthier-Villars, Paris, 1895, pp. 179-183.
www.VNMATH.com
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
80
[13] Sergey Novikov, Upper estimates of complexity of algorithms for multi-
peg Tower of Hanoi problem, Annales Academiae Paedagogicae
Cracoviensis, Folia 45 Studia Mathematica VI, 2007, pp. 57-66.
[14] Henri de Parville, Récréations mathématiques: La tour d’Hanoi et la
question du Tonkin, La Nature, 12th
year, 1st semester, no. 565 (March
29, 1884), 285-286.
[15] David G. Poole, The towers and triangles of Professor Claus (or, Pascal
knows Hanoi), Math. Mag. 67 (1994), 323-344. MR1307797 (95m:05023)
[16] Michel Rand, On the Frame-Stewart algorithm for the Tower of Hanoi,
pp. 1-13, 2009.
[17] B. M. Stewart, Advanced problem 3918, Amer. Math. Monthly 46 (1939), 363.
[18] B. M. Stewart, Solution to advanced problem 3918, Amer. Math.
Monthly 48 (1941), 217-219.
[19] Paul K. Stockmeyer, Variations on the four-post Tower of Hanoi puzzle,
Congr. Numer. 102 (1994), 3-12. (Proceedings of the 25th Southeastern
International Conference on Combinatorics, Graph Theory and computing).
[20] Paul K. Stockmeyer: The Tower of Hanoi: A Bibliography, Internet publication,
Version 2.2, 22/10/2005, http://w.w.w.cs.wm.edu/~pkstoc/hpapers.html.
[21] Workshop on the Tower of Hanoi and Related Problems, September 18 -
September 22, 2005, Maribor, Slovenia.
[22] Các bài trên các trang WEB viết về trò chơi Tháp Hà Nội.
www.VNMATH.com