1. Trang chủ
  2. » Công Nghệ Thông Tin

Nghiên cứu bài toán Tháp Hà Nội- Tiểu luận Tháp Hà Nội- Toán Rời Rạc

14 136 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 14
Dung lượng 752,36 KB

Nội dung

TRƯỜNG ĐẠI HỌC NHA TRANG KHOA CÔNG NGHỆ THÔNG TIN ******o0o****** Báo cáo tiểu luận MƠN: TỐN RỜI RẠC Đề tài: TÌM HIỂU VỀ BÀI TỐN THÁP HÀ NỘI Nhóm sinh viên thực hiện: Hồng Quốc Nam Đồn Tuấn Kiệt Nguyễn Đình Khải Nguyễn Hồng Minh Phúc Nguyễn Thị Thanh Tuyền Trương Xuân Sang Ngơ Thục Trí Đạt Trần Văn Huy -1- Mục Lục LỜI NÓI ĐẦU CHƯƠNG MỞ ĐẦU VỀ BÀI TOÁN 1.1 Tìm hiểu toán 1.2 Phân tích & đánh giá ban đầu CHƯƠNG GIẢI THUẬT ĐỆ QUY 2.1 Sơ lược giải thuật đệ quy 2.1.1 Khái niệm đệ quy 2.1.2 Giải thuật đệ quy 2.1.3 Thiết kế giải thuật đệ quy 2.4 Độ phức tạp toán: 12 CHƯƠNG Ý NGHĨA CỦA BÀI TOÁN 13 3.1 Về khoa học 13 3.2 Trong lĩnh vực nghiên cứu toán-tin 13 3.3.Trong lĩnh vực giải trí 13 3.4 Về mặt lịch sử 13 3.5 Thành tựu 13 TÀI LIỆU THAM KHẢO 14 -2- LỜI NÓI ĐẦU Các bạn thân mến! Có lẽ nhắc đến tốn tháp Hà Nội, tốn cổ xưa mang đậm chất tính tốn, song trị chơi tri thức lưu truyền tới với nhiều ứng dụng thực tế Hẳn không sinh viên IT khơng biết tới Nó lời thách thức, hay bước khởi đầu cho muốn chinh phục tầm hiểu biết mơn tính tốn Trong khoa học tính tốn ngày nay, phép truy hồi thuật tốn để lập trình Ưu điểm phương pháp truy hồi chỗ dùng cơng thức định để diễn tả phép tính lặp lặp lại bất chấp số lần lặp lại Nếu số lần lặp lại lên đến số hàng triệu hàng tỷ người khơng đủ sức thời gian để làm, máy tính giải chớp mắt Điểm mạnh computer chỗ khơng biết e ngại mệt mỏi trước công việc lặp lặp lại lên đến hàng triệu hàng tỷ lần Và thế, việc cộng tác computer với người mô hình lý tưởng lao động trí óc sống đại Bài tốn Tháp Hà Nội khơng thú vị chỗ mang tên Hà Nội, thủ Việt Nam, mà hấp dẫn nhà Tốn-Tin học, liên quan đến nhiều vấn đề giải thuật đệ qui, hệ đếm, tam giác Pascal, thảm Sierpinski, lý thuyết đồ thị chu trình Hamilton, ơtơmát hữu hạn, độ phức tạp tính tốn,v.v Bài tốn Tháp Hà Nội gợi ý cho nhiều nghiên cứu khoa học máy tính tốn học Chính nhóm chọn đề tài để bạn khám phá cịn bí ẩn sau tốn THÁP HÀ NỘI -3- Chương MỞ ĐẦU VỀ BÀI TOÁN 1.1 Tìm hiểu tốn Có thể cịn người Việt Nam biết Tháp Hà Nội, nhiều niên sinh viên toàn giới lại biết đến Đó vì, Tháp Hà Nội tên tốn tiếng Chương trình khoa học tính tốn (Computing Science) dành cho sinh viên năm đầu trường đại học nhiều nơi giới Bài tốn hay trị chơi tháp Hà Nội nhắc tới nhiều tài liệu Tương truyền rằng: Ngày xửa ngày xưa, lâu rồi, vùng xa xôi viễn đông, thành phố Hà Nội Việt Nam, vị quân sư Hoàng đế vừa qua đời, Hoàng đế cần vị quân sư thay Bản thân Hồng đế nhà thơng thái, nên ngài đặt toán đố, tuyên bố giải phong làm quân sư Bài tốn Hồng đế là: cho n đĩa (ngài khơng nói xác bao nhiêu) ba trục: A trục nguồn, B trục đích, C trục trung chuyển Những đĩa có kích cỡ khác có lỗ để lồng vào trục, theo quy định "nhỏ lớn dưới" Đầu tiên, đĩa xếp trục A Vậy làm để chuyển toàn đĩa sang trục B, với điều kiện chuyển phải đảm bảo quy định "nhỏ lớn dưới", biết trục C phép sử dụng làm trục trung chuyển? Vì địa vị quân sư coi vinh hiển nên có nhiều người dự thi Từ vị học giả đến bác nông phu, họ đua trình lên Hồng đế lời giải Nhiều lời giải dài tới hàng nghìn bước, nhiều lời giải có chữ "chuyển sang bước tiếp theo" (go to) Nhưng hồng đế thấy mệt mỏi lời giải đó, nên cuối hạ chiếu: "Ta khơng hiểu lời giải Phải có cách giải khác dễ hiểu nhanh chóng hơn" May mắn thay, cuối có cách giải Thật vậy, sau chiếu vua ban ra, vị cao tăng trơng bề ngồi giống kỳ nhân hạ sơn tới xin yết kiến hoàng đế Vị cao tăng nói: "Thưa Bệ hạ, tốn đố dễ quá, tự giải cho nó" Quan trùm cấm vệ đứng hầu bên cạnh vua quắc mắt nhìn gã kỳ nhân, muốn quẳng gã ngoài, Hoàng đế kiên nhẫn tiếp tục lắng nghe "Nếu có đĩa, ; có nhiều đĩa (n>1), ", vị cao tăng bình tĩnh giảng giải Im lặng lát, cuối Hoàng đế sốt ruột gắt: "Được, cao tăng có nói rõ cho ta lời giải hay khơng chứ?" Thay giải thích tiếp, gã kỳ nhân mỉm cười thâm thúy biến mất, hoàng đế giỏi giang rõ -4- ràng chưa hiểu ý nghĩa phép truy hồi (recursion) Nhưng bạn sinh viên ngày thấy cách giải vị cao tăng hoàn toàn Từ việc tìm hiểu lịch sử tốn ta thấy rõ yêu cầu toán sau:  Mỗi lần chuyển đĩa  Một đĩa chuyển từ cọc sang cọc khác  Không thể để đĩa lớn bên đĩa nhỏ 1.2 Phân tích & đánh giá ban đầu Bài toán Tháp Hà Nội toán thú vị Bạn bắt đầu tốn đĩa, nâng lên đĩa Với đĩa bạn bắt đầu thấy rắc rối Nâng tiếp lên cao nữa, chẳng hạn n = triệu, tốn rắc rối đến mức khơng đủ kiên trì đủ để thử đĩa Vậy mà vị cao tăng nêu lại nói dễ q! Vì vị sử dụng phép truy hồi, quy tắc toán học cho phép xác định số hạng thứ n từ số hạng đứng trước nó, tức số hạng thứ n-1 Cái giỏi vị cao tăng ơng tìm quy tắc chung, tức thuật toán chung cho tất bước chuyển đĩa Thay mơ tả tồn q trình chuyển đĩa một, người ta mơ tả quy tắc chung Cứ làm theo quy tắc đó, lặp lặp lại chẳng cần suy nghĩ gì, cuối tự nhiên tới đích Vì vị cao tăng nói tốn "tự giải nó" Và vậy, hướng tối ưu để giải toán cách sử dụng phép truy hồi, hay gọi phép đệ quy -5- Chương GIẢI THUẬT ĐỆ QUY THUẬT TOÁN & CÀI ĐẶT CHƯƠNG TRÌNH 2.1 Sơ lược giải thuật đệ quy 2.1.1 Khái niệm đệ quy Ta nói đối tượng đệ quy (recursive algorithm) bao gồm phận định nghĩa dạng Ví dụ: Số tự nhiên số tự nhiên x số tự nhiên x-1 số tự nhiên Hàm n giai thừa: n! 0! = Nếu n > n! = n(n-1)! 2.1.2 Giải thuật đệ quy Nếu lời giải toán T thực lời giải tốn T’, có dạng giống T, lời giải đệ quy Giải thuật tương tự với lời giải gọi giải thuật đệ quy Thoạt nghe lạ, điểm mấu chốt cần lưu ý là: T’ có dạng giống T, theo nghĩa đó, phải “nhỏ” T 2.1.3 Thiết kế giải thuật đệ quy Khi toán xét liệu định nghĩa dạng đệ quy việc thiết kế giải thuật tỏ thuận lợi Hầu phản ánh sát nội dung định nghĩa *** Trên sở thừa kế tinh thần mục trên, trình bày thuật tốn đệ quy áp dụng vào việc giải toán Tháp Hà Nội nêu chương -6- 2.2 Thuật toán Trước tiên ta đánh số thứ tự cho cọc, giả sử c1, c2, c3 Và giả sử có n đĩa với đường kính giảm dần đánh số thứ tự từ xuống dưới, xếp vào cọc c1 hình vẽ: Bài tốn với khối liệu lớn đưa vào để tính tốn Để giải vấn đề trên, ta phải tìm cách để chia nhỏ khối liệu Với liệu đưa vào n đĩa, ta chia liệu thành liệu n-1 đĩa trên, từ đĩa thứ tới đĩa thứ n-1, đĩa lớn cùng, tức đĩa thứ n Việc chia phải có tính đệ quy, tức chia nhỏ giải cách đơn giản Trước hết, ta xét vài trường hợp đơn giản:  Trường hợp n=1 đĩa: Chuyển đĩa từ c1 sang c2  Trường hợp n=2 đĩa: Chuyển đĩa từ c1 sang c3 Chuyển đĩa từ c1 sang c2 Chuyển đĩa từ c3 sang c2  Trường hợp n > 2, coi (n-1) đĩa trên, đóng vai trị đĩa thứ xử lý giống trường hợp đĩa được, nghĩa là: + Chuyển (n-1) đĩa từ c1 sang c3 + Chuyển đĩa thứ n từ c1 sang c2 + Chuyển (n-1) đĩa từ c3 sang c2 Một cách tổng qt, khơng cịn đĩa, tồn q trình thực di chuyển chia làm giai đoạn: Giai đoạn 1: chuyển n-1 đĩa từ cọc gốc đến cọc trung gian Giai đoạn 2: chuyển đĩa (đĩa thứ n) từ cọc gốc đến cọc đích Giai đoạn 3: chuyển n-1 đĩa từ cọc trung gian đến cọc đích -7- Có thể hình dung việc thể giai đoạn theo mơ hình: -8- Để giải giai đoạn trên, ta đưa chương trình “dich_chuyen” với cấu trúc sau: dich_chuyen(n_dia, tu_coc, toi_coc, coc_trung_gian); procedure dich_chuyen(n, c1, c2, c3:integer); begin if n=1 then writeln(c1, ‘ -> ‘,c2) else begin dich_chuyen(n-1, c1, c3, c2); dich_chuyen( 1, c1, c2, c3); dich_chuyen(n-1, c3, c2, c1); end; end; Trong đoạn chương trình trên, ta phải có lời gọi đệ quy tới lần? Bởi lần gọi thể giai đoạn vừa kể Ban đầu, ta muốn di chuyển toàn n đĩa từ cọc gốc (c1) sang cọc đích (c2) Muốn làm cơng việc đó, trước hết phải kiểm tra xem số đĩa cần chuyển có phải đĩa khơng n=1 điều kiện đóng hay trường hợp suy biến toán, điều sau thực cơng việc dịch chuyển xong, thủ tục kết thúc Cịn khơng phải đĩa qua lời gọi, lớp chương trình tiếp tục đưa để thực công việc đến điều kiện n=1 thơi Xét ví dụ với n=3 Q trình thực trình biên dịch sau: Mức chương trình gọi tới: {muc 1} dich_chuyen(3, c1, c2, c3); Ở n điều kiện n=1 khơng thỏa mãn Mức chương trình gọi tới sau: {muc 2} dich_chuyen(2, c1, c3, c2); dich_chuyen(1, c1, c2, c3); dich_chuyen(2, c3, c2, c1); Chuyển sang mức chương trình thứ hai (n - = 2): {procedure} dich_chuyen(2, c1, c3, c2); Trong thủ tục n=2, khác 1, chưa thể kết thúc được, lại tiếp tục gọi tới lớp chương trình tiếp theo: {muc 3} dich_chuyen(1, c1, c3, c2); dich_chuyen(1, c1, c2, c3); dich_chuyen(1, c3, c2, c1); Lúc này, điều kiện n=1 thỏa mãn nên khơng cịn lời gọi mức chương trình Công việc thực mức là: Chuyển đĩa từ cọc (c1) đến cọc (c3) Mức hoàn thành câu lệnh thứ mức 2, mức tiếp tục thực công việc nó: Chuyển đĩa từ cọc (c1) đến cọc (c2) -9- Chuyển đĩa từ cọc (c3) đến cọc (c1) Vậy mức hoàn thành câu lệnh thứ mức Mức thực tiếp lệnh tiếp theo: Chuyển đĩa từ cọc (c1) sang cọc (c2) Chuyển n-1 đĩa từ cọc (c3) sang cọc (c2) Đến đây, toàn trình đệ quy lại lặp lại Bắt đầu mức câu lệnh thứ Và vậy, tốn dịch chuyển đĩa hồn thành Mơ tả lại tồn q trình sau: {muc 1} dich_chuyen(3, c1, c2, c3); {muc 2} dich_chuyen(2, c1, c3, c2); {muc 3} dich_chuyen(1, c1, c2, c3); dich_chuyen(1, c1, c3, c2); dich_chuyen(1, c2, c3, c1); dich_chuyen(1, c1, c2, c3); dich_chuyen(2, c3, c2, c1); {muc 2} dich_chuyen(1, c3, c1, c2); dich_chuyen(1, c3, c2, c1); dich_chuyen(1, c1, c2, c3); Như vậy, toán Tháp Hà Nội tổng quát với n đĩa dẫn đến tốn tương tự với kích thước nhỏ Và ta có lời giải cho toán tháp Hà Nội tiếng.Việc áp dụng thuật toán đệ quy vào việc giải toán giải pháp tối ưu nhất, dễ nghiên cứu, dễ hiểu - 10 - 2.3 Cài đặt chương trình *** Lưu ý đây, thay đổi mức đệ quy vai trị trật tự cọc tự động hoán đổi cho - 11 - 2.4 Độ phức tạp tốn: Nhận xét:  Kích thước liệu n  Khi n=1 thời gian thực la O(1)  Với n>1 cần thực lệnh dich_chuyen, số lần dich chuyển tới 2n-1 lần  Ta có quan hệ đệ quy sau : T(1)=O(1) T(n) = O(1)+T(n-1) Từ ta tính độ phức tạp toán là: O(n)=T(n)=2n - 12 - CHƯƠNG Ý NGHĨA CỦA BÀI TOÁN 3.1 Về khoa học Tháp Hà Nội sử dụng nghiên cứu giáo dục giải vấn đề, chuẩn đoán điều trị thần kinh sinh lí chức thực hành 3.2 Trong lĩnh vực nghiên cứu tốn-tin Đó giải thuật đệ quy, hệ đếm, tam giác Pascal, thảm Sierpinski, lý thuyết đồ thị chu trình Hamilton, ơtơmát hữu hạn, độ phức tạp tính tốn, 3.3.Trong lĩnh vực giải trí Tháp Hà Nội trị chơi trí tuệ vui, bổ ích, dễ học, dễ chơi, rèn luyện tính kiên nhẫn 3.4 Về mặt lịch sử Tháp Hà Nội E Lucas phát từ năm 1883, đến gần người ta nhận ý nghĩa đại Hiện chưa rõ Lucas lại gọi chồng đĩa tốn Tháp Hà Nội, mà khơng gọi Tháp Bắc Kinh, hay Tháp Tokyo 3.5 Thành tựu Tháp Hà Nội mở tung cánh cửa cho tương lai nhiều nghiên cứu lấy Tháp Hà Nội làm điểm xuất phát đạt thành tựu mới: (1) Nâng câu hỏi Tháp Hà Nội lên mức cao hơn, cho số lần chuyển đĩa nhỏ Các nhà toán học phát Tháp Hà Nội có chất với tốn tìm Đường Hamilton (Hamilton Path) hình giả phương cấp n (nHypercube), toán tiếng (2) Nhà toán học D.G Poole sáng tạo Lược Đồ Hà Nội - tam giác có đỉnh tương ứng với cách xếp đĩa Tháp Hà Nội, từ tìm liên hệ lý thú Tam giác Pascal với Lược đồ Hà Nội Liên hệ công bố công trình mang tên đầy liên tưởng: Pascal biết Hà Nội (Pascal knows Hanoi) Hiện nay, số đại học Australia, uy tín sinh viên Việt Nam lĩnh vực lập trình đánh giá ngang với sinh viên Ấn Độ - cường quốc lập trình giới, làm cho Tháp Hà Nội vốn tiếng lại tiếng ***************o0o*************** - 13 - Tài liệu tham khảo Cấu trúc liệu giải thuật - Đỗ Xuân Lôi Ngôn ngữ lập trình Pascal - Qch Tuấn Ngọc Trị chơi tháp Hà Nội ( website: www.kienthuc.net) Tháp Hà Nội (website: www.vi.wikipedia.org) - 14 - ... chồng đĩa tốn Tháp Hà Nội, mà khơng gọi Tháp Bắc Kinh, hay Tháp Tokyo 3.5 Thành tựu Tháp Hà Nội mở tung cánh cửa cho tương lai nhiều nghiên cứu lấy Tháp Hà Nội làm điểm xuất phát đạt thành tựu mới:... đạt thành tựu mới: (1) Nâng câu hỏi Tháp Hà Nội lên mức cao hơn, cho số lần chuyển đĩa nhỏ Các nhà toán học phát Tháp Hà Nội có chất với tốn tìm Đường Hamilton (Hamilton Path) hình giả phương cấp... toán tiếng (2) Nhà toán học D.G Poole sáng tạo Lược Đồ Hà Nội - tam giác có đỉnh tương ứng với cách xếp đĩa Tháp Hà Nội, từ tìm liên hệ lý thú Tam giác Pascal với Lược đồ Hà Nội Liên hệ cơng

Ngày đăng: 14/06/2021, 02:37

TỪ KHÓA LIÊN QUAN

w