Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 120 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
120
Dung lượng
2,53 MB
Nội dung
Trƣờng CĐ Nguyễn Tất Thành Các bài toán SUDOKU Trang 3 NHẬN XÉT CỦA GIÁO VIÊN HƢỚNG DẨN TpHCM, ngày … tháng …… năm …… Giáo viên hƣớng dẫn [Ký tên và ghi rõ họ tên] Trƣờng CĐ Nguyễn Tất Thành Các bài toán SUDOKU Trang 4 NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN TpHCM, ngày … tháng …… năm …. Giáo viên phản biện [Ký tên và ghi rõ họ tên] Trƣờng CĐ Nguyễn Tất Thành Các bài toán SUDOKU Trang 5 LỜI CẢM ƠN Chúng em xin gửi lời cảm ơn chân thành đến tất cả các Thầy Cô đã giảng dạy chúng em trong suốt thời gian qua. Cảm ơn Thầy Trần Quảng Hồng - ngƣời đã hƣớng dẫn chúng em thực hiện đồ án này. Nhân đây, chúng con cũng xin bày tỏ lòng biết ơn sâu sắc đến Ba Mẹ và gia đình đã nuôi dạy chúng con nên ngƣời, và luôn là chỗ dựa tinh thần vững chắc, giúp cho chúng con vƣợt qua mọi khó khăn, thử thách trong cuộc sống. Bên cạnh đó, để hoàn thành đồ án này, chúng em cũng đã nhận đƣợc rất nhiều sự giúp đỡ, những lời động viên quý báu của các bạn bè, các anh chị thân hữu, chúng em xin hết lòng ghi ơn. Tuy nhiên, do kiến thức còn hạn hẹp, mặc dù đã nỗ lực hết sức mình, nhƣng chắc rằng đồ án khó tránh khỏi thiếu sót. Chúng em rất mong nhận đƣợc sự thông cảm và chỉ bảo tận tình của quý Thầy cô và các bạn. Xin chân thành cảm ơn. Tp.HCM, 7/2009 Nhóm sinh viên thực hiện Lê Quang Tâm Lƣu Văn Viế t Trƣờng CĐ Nguyễn Tất Thành Các bài toán SUDOKU Trang 6 ĐỀ CƢƠNG CHI TIẾT Tên Đề Tài: Các Bài Toán Về Sudoku Giáo viên hƣớng dẫn: Trần Quản Hồng Thời gian thực hiện: Từ ngày 9/3 đến ngày 26/7. Sinh viên thực hiện: Lƣu Văn Viết MSSV: 206205371 Lê Quang Tâm MSSV: 206205348 Loại đề tài: Tìm hiểu các bài toán Sudoku Nội Dung Đề Tài: Các bài Toán về Soduku Mô tả: Tìm hiểu thuật toán và xây dựng ứng dụng để giải quyết 1 số bài toán soduku Yêu cầu: Sử dụng bộ công cụ Visual Studio 2005, ngôn ngữ sử dụng là Csharp Phƣơng pháp thực hiện: Làm việc theo nhóm và tìm hiểu qua Internet Kết quả đạt đƣợc: Hiểu đƣợc các bài toán về Sudoku và 1 ứng dụng Kế Hoạch Thực Hiện Tuần 1(14-21/03/2009): Tìm hiểu tổng quan về bài toán Soduku và thu thập tài liệu Tuần 2(22-29/03/2009):Xác định rõ bài toán và thu thập thêm tài liệu Tuần 3(30-06/04/2009):Tìm hiểu về các thuật toán để giải quyết. Tuần 4(07-14/04/2009):Xác định và lựa chọn thuật toán cho việc lập trình Tuần 5(15-22/04/2009):Thiết kế giao diện và thực hiện việc viết code giải thuật Tuần 6(25-02/05/2009):Lập trình Tuần 7(03-10/05/2009):Lập trình Tuần 8(11-18/05/2009):Lập trình Tuần 9(19-26/05/2009):Lập trình Tuần 10(27-03/06/2009):Lập trình Tuần 11(04-11/06/2009):Lập trình Trƣờng CĐ Nguyễn Tất Thành Các bài toán SUDOKU Trang 7 Tuần 12(12-19/06/2009):Lập trình và sửa lỗi Tuần 13(20-27/06/2009): Sửa lỗi và viết báo cáo Tuần 14(28-05/07/2009):Sữa lỗi và hoàn thiện báo cáo Tuần 15(06-13/07/2009):Nộp báo cáo và chƣơng trình Xác nhận của GVHD Ngày…13…tháng…03…năm…2009 … SV Thực hiện Lƣu Văn Viết Lê Quang Tâm Trƣờng CĐ Nguyễn Tất Thành Các bài toán SUDOKU Trang 8 MỤC LỤC NHẬN XÉT CỦA GIÁO VIÊN HƢỚNG DẨN 3 NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN 4 LỜI CẢM ƠN 5 ĐỀ CƢƠNG CHI TIẾT 6 MỤC LỤC 8 TÓM TẮT KHÓA LUẬN 13 1. Vấn đề nghiên cứu. 13 2.Phát biểu bài toán 13 2.1 Chức năng chính 13 2.2 Cách chơi 13 3.Phƣơng pháp tiếp cận giải quyết vấn đề. 14 4. Kết quả đạt đƣợc. 14 LỜI MỞ ĐẦU 15 NỘI DUNG BÁO CÁO 16 CHƢƠNG 1. LỊCH SỬ SUDOKU 17 1.1 Sudoku có lịch sử xa xƣa từ hàng ngàn năm. 17 CHƢƠNG 2. CÁC BIẾN THỂ PHỔ BIẾN CỦA SUDOKU 19 2.1. Dạng chuẩn: 19 2.2. Một số biến thể phổ biến nhƣ: 19 2.3. Biến thể với kích thƣớc lớn cũng khá phổ biến: 20 CHƢƠNG 3. LUẬT CHƠI SUDOKU 23 CHƢƠNG 4: MÔ HÌNH USECASE CHO SUDOKU 25 4.1 Sơ đồ UseCase 25 4.2 Danh Sách các Actor 25 4.3 Danh Sách các UseCase 26 Trƣờng CĐ Nguyễn Tất Thành Các bài toán SUDOKU Trang 9 4.4 Đặc tả UseCase 27 4.4.1 Đặc tả Use-case “New Game”: 27 4.4.2 Đặc tả Use-case “OpenGame” 28 4.4.3 Đặc tả Use-case “SolveGame” 28 4.4.4 Đặc tả Use-case “SaveGame ” 29 4.4.5 Đặc tả Use-case “Exit” 30 4.4.6 Đặc tả Use-case “Undo” 31 4.4.7 Đặc tả Use-case “Redo” 31 4.4.8 Đặc tả Use-case “Help” 32 4.4.9 Đặc tả Use-case “ChooseLevel” 33 5.1. Bƣớc 1: Áp dụng một vài suy luận cơ bản và thông thƣờng để xác định chắc chắn một vài ô số cần tìm. 34 5.2. Bƣớc 2: Liệt kê những số có khả năng xuất hiện tại mỗi ô trong các miền con. 38 5.3. Bƣớc 3: Các suy luận và Phép loại bỏ để giải ô số SUDOKU. 40 5.3.1 Suy luận 1: Số duy nhất xuất hiện trong hàng, trong cột và trong một miền con. 40 5.3.2 Suy luận 2: Số nằm trên một hàng và một miền. 43 5.3.3 Suy luận 3: Số nằm trên một cột và một miền con. 44 5.3.4 Suy luận 4: 2 ô số trong một cột chỉ chứa 2 số giống nhau. 45 5.3.5 Suy luận 5: 2 ô số trong một hàng chỉ chứa 2 số giống nhau. 46 5.3.6 Suy luận 6: 2 ô số trong một miền con chỉ chứa 2 số giống nhau. 47 5.3.7 Suy luận 7: 3 ô số chứa một cặp số nằm trên một hàng 48 5.3.8 Suy luận 8: 3 ô số chứa một cặp số nằm trên một hàng thuộc một miền con 51 5.3.9 Suy luận 9: 3 ô số chứa một cặp số nằm trên một cột 53 5.3.10 Suy luận 10: 3 ô số chứa một cặp số nằm trên một cột thuộc một miền con 56 4.3.11 Suy luận 11: 3 ô số chứa một cặp số nằm trên một miền con 58 Trƣờng CĐ Nguyễn Tất Thành Các bài toán SUDOKU Trang 10 5.3.12 Suy luận 12: Phép thử 60 CHƢƠNG 6. THUẬT GIẢI SUDOKU 66 6.1 Giới thiệu về thuật giải 66 6.1.1 Backtracking – Quay lui 66 6.1.2 Backtracking- Ý tƣởng 68 6.1.3 Backtracking- Nhận xét 68 6.1.4 Backtracking- Giải thuật tổng quát 68 6.1.5 Giải thuật tổng quát 69 6.1.6 Giải thuật tổng quát 69 CHƢƠNG 7. GIẢI THUẬT TRONG CHƢƠNG TRÌNH SUDOKU 71 7.1 Kỹ thuật cơ bản để giải Sudoku 71 7.1.1 Kỹ thuật khử (Elimination Technology) 71 7.1.2 Kịch bản Biệt Lệ 78 Invalid Puzze 78 Invalid Move 79 7.1.3 Triển khai giải thuật CRME bẳng chƣơng trình. 80 7.1.3.1 Triển khai thuật toán SetCell 80 7.1.3.1.1 Giới thiệu 80 7.1.3.1.2 Mã nguổn chƣơng trình Csharp 81 7.1.3.2 Thuật toán CalculatePossibleValues – Tính các giá trị có thể có cho các cell 82 7.1.3.2.1 Giới thiệu 82 7.1.3.2.2 Mã nguồn bằng Csharp 84 7.1.3.3 Giải thuật CheckColumnsAndRows – Kiểm tra hàng và Cột 85 7.1.3.3.1 Giới thiệu 85 7.1.3.3.2 Mã nguồn bằng Csharp 86 7.1.3.4 Giải thuật SolvePuzze 86 7.1.3.4.1 Giới thiệu 86 7.1.3.4.2 Mã nguồn cho giải thuật 87 Trƣờng CĐ Nguyễn Tất Thành Các bài toán SUDOKU Trang 11 7.2 Kỹ thuật nâng cao trong việc giải bài toán Sudoku 88 7.2.1 Lone Rangers 88 7.2.1.1 Lone Rangers trong Minigrid 88 7.2.1.1.1 Triển khai giải thuật LookForLoneRangerinMinigrids 90 7.2.1.1.1.1 Thuật Giải LookForLoneRangerinMinigrids 90 7.2.1.1.1.2 Phần mã nguồn của giải thuật 92 7.2.1.2 Lone Ranges trong Row 93 7.2.1.2.1 Triển khai giải thuật LookForLoneRangerinRows 94 7.2.1.2.1.1 Giải thuật LookForLoneRangerinRows 94 7.2.1.2.1.2 Giải thuật 95 7.2.1.3 Lone Rangers trong Columns 96 7.2.1.3.1 Triển khai giải thuật LookForLoneRangerinColumns 96 7.2.1.3.1.1 Giải thuật LookForLoneRangerinColumns 96 7.2.1.3.1.2 Phần mã nguồn của giải thuật LookForLoneRangerinColumns 97 7.2.1.4 Tinh chỉnh lại Function SolvePuzze 98 7.2.1.4.1 Triển khai giải thuật- Tinh chỉnh thêm phần giải thuật SolvePuzze 99 7.2.1.4.1.1 Giải thuật SolvePuzze 99 7.3 Các kỹ thuật nâng cao trong việc giải bài toán Sudoku 100 7.3.2 Kỹ thuật tìm kiếm cặp đôi -Look For Twins 100 7.3.2.1 Triển khai giải thuật để tìm kiếm cặp đôi trong Minigrids 104 7.3.2.1.1 Giải thuật LookForTwinsinMinigrids(Tìm cặp sinh đôi trong Minigrids) 105 7.3.2.1.2 Triển khai giải thuật tìm kiếm cặp đôi trong Rows 107 7.3.2.1 Giải thuật tìm cặp đôi trong Hàng. 107 7.3.2.1.3 Triển khai giải thuật tìm kiếm cặp đôi trong Cột 108 7.3.3 Kỹ thuật tìm kiếm cặp ba – Look For Triplets 110 7.3.3.1 Các biến thể của Triplets 111 7.3.3.2 Triển khai giải thuật tìm cặp 3 trong Minigrids 114 7.3.4 Tinh chỉnh lại phƣơng thức SolvePuzzle (đã giới thiệu ở phần mục lục 7.1.3.4) 116 7.3.5 Sử dụng Burte - Force Elimination 117 Trƣờng CĐ Nguyễn Tất Thành Các bài toán SUDOKU Trang 12 Kết luận: 122 Hƣớng phát triển: 122 Danh mục tài liệu tham khảo 122 [...]... Nguyễn Tất Thành Các bài toán SUDOKU NỘI DUNG BÁO CÁO 1 Lịch sử ra đời của Sudoku 2 Các biến thể phổ biến của Sudoku 3 Luật chơi Sudoku 4 Mô hình usecase cho chƣơng trình 5 Một số thuật toán giải quyết Sudoku 6 Thuật giải Sudoku 7 Thiết kế ứng dụng cho bài toán Sudoku Trang 16 Trƣờng CĐ Nguyễn Tất Thành Các bài toán SUDOKU CHƢƠNG 1 LỊCH SỬ SUDOKU 1.1 Sudoku có lịch sử xa xƣa từ hàng ngàn năm Sudoku có lịch... (Monster SuDoku) Hình 2 5 Sudoku 16x16 - Kích thƣớc 12x12 ô chia làm 4x3 vùng (Dodeka Sudoku) Hình 2 6 Sudoku 12x12 Trang 20 Trƣờng CĐ Nguyễn Tất Thành Các bài toán SUDOKU - Kích thƣớc 25x25 ô (Giant Sudoku) Hình 2 7 Sudoku 25x25 Trang 21 Trƣờng CĐ Nguyễn Tất Thành Các bài toán SUDOKU Một ngƣời Việt Nam là Phạm Văn Hải đã phát triển các biến thể 8x8 ô chia vùng theo qui tắc (4x2)x(4x2) Đây là cách chia... Chƣơng trình giải các bài toán SUDOKU, với các thuật giải đƣợc tìm hiểu Trang 14 Trƣờng CĐ Nguyễn Tất Thành Các bài toán SUDOKU LỜI MỞ ĐẦU Trong mấy năm gần đây, một trò chơi về ô số gọi là Sudoku đã đƣợc phổ biến mọi nơi Ngƣời ta cho rằng đó là một puzzle đặc sắc của thế kỷ 21, vì thích hợp với mọi lứa tuổi, từ các trẻ em đến các vị bô lão Đủ loại trò giải trí liên hệ đƣợc bầy bán trong các tiệm đồ chơi... gọi là miền con 3x3 tên A Hình 3 3 Quy ƣớc diễn dải ô số Sudoku Trang 24 Trƣờng CĐ Nguyễn Tất Thành Các bài toán SUDOKU CHƢƠNG 4: MÔ HÌNH USECASE CHO SUDOKU 4.1 Sơ đồ UseCase Hình 4 1 Sơ đồ UseCase 4.2 Danh Sách các Actor STT 1 Ý nghĩa/Ghi chú Tên Actor User Ngƣời chơi Sudoku Trang 25 Trƣờng CĐ Nguyễn Tất Thành Các bài toán SUDOKU 4.3 Danh Sách các UseCase STT Ý nghĩa/Ghi chú Tên UseCase 1 New Game Tạo... chứa số 1 là ô h2c2 Vậy ô h2c2 chắc chắn là số 1 Với vài suy luận cơ bản và thông thƣờng nhƣ trên ta đã biến Sudoku ban đầu thành Sudoku đơn giản hơn, khi đó ta có bảng sau : Hình 5 3 Ví dụ ô số Sudoku Trang 35 Trƣờng CĐ Nguyễn Tất Thành Các bài toán SUDOKU Ví dụ 3 : Hình 5 4 Ví dụ ô số Sudoku Trang 36 Trƣờng CĐ Nguyễn Tất Thành Các bài toán SUDOKU - Ô h9c1: chắc chắn phải là số 5 - Ô h7c5: chắc chắn... vài suy luận cơ bản và thông thƣờng nhƣ trên ta đã biến Sudoku ban đầu thành Sudoku đơn giản hơn, khi đó ta có bảng sau : Hình 5 5 Ví dụ ô số Sudoku Với một vài cách suy luận cơ bản và thông thƣờng nhƣ trên ta đã xác định đƣợc chắc chắn vài số cần tìm trong ô số SUDOKU 9x9 Trang 37 Trƣờng CĐ Nguyễn Tất Thành Các bài toán SUDOKU 5.2 Bƣớc 2: Liệt kê những số có khả năng xuất hiện tại mỗi ô trong các miền... tải trên các báo hàng ngày, kể cả tuần san, nguyệt san Nếu đến một hiệu sách, nhƣ Barnes & Noble tại Mỹ, chúng ta thấy có cả một khu đầy sách nói về Sudoku Trên lý thuyết, có nhiều loại Sudoku để mà lựa chọn, nên những sách này đều mô tả luật sắp xếp các con số và cách giải đáp Thƣờng là sách về Sudoku 9x9 dùng 9 con số đặt trong 81 ô vuông, có kèm theo từ mấy trăm đến cả ngàn bài toán đố về ô số và... (ô 3*3) Có đủ các số từ 1 đến 9 mà không đƣợc lặp lại 3.Phƣơng pháp tiếp cận giải quyết vấn đề Bài toán đƣợc giải quyết theo phƣơng pháp thiết kế lập trình hƣớng đối tƣợng bao gồm các bƣớc sau: - Xác định rõ bài toán - Tìm hiểu về các thuật toán để giải quyết - Xác định và lựa chọn thuật toán cho việc lập trình - Thiết kế giao diện và thực hiện việc viết code giải thuật - Giải trình các thuật giải... cần theo thứ tự) - Các ô ở mỗi cột ( dọc ) phải có đủ các số từ 1 – 9 ( không cần theo thứ tự ) - Mỗi miền con ( 3x3 ) đƣợc viền đậm, phải có đủ các số từ 1 – 9 Một số quy ƣớc để diễn giải trong phƣơng pháp giải SUDOKU Trang 23 Trƣờng CĐ Nguyễn Tất Thành Các bài toán SUDOKU Hình 3 2 Quy ƣớc diễn dải ô số Sudoku Ô số SUDOKU cổ điển 9x9 Một ô số SUDOKU cổ điển 9x9, đƣợc quy ƣớc có 9 miền con A, B, C,... dựa vào màu nền của từng ô Tùy theo cách bố trí các ô khác màu này, sẽ phát sinh thêm một biến thể khác Cách bố trí đơn giản nhất là các ô khác màu nằm xen kẽ nhau – trông rất giống bàn cờ quốc tế Ba biến thể phát triển theo nguyên tắc này: Hinh 2 8.phiên bản của biến thể 8x8 Trang 22 Trƣờng CĐ Nguyễn Tất Thành Các bài toán SUDOKU CHƢƠNG 3 LUẬT CHƠI SUDOKU Luật chơi Sudoku cực kỳ đơn giản, nhƣng đáp . 206205348 Loại đề tài: Tìm hiểu các bài toán Sudoku Nội Dung Đề Tài: Các bài Toán về Soduku Mô tả: Tìm hiểu thuật toán và xây dựng ứng dụng để giải quyết 1 số bài toán soduku Yêu cầu: Sử. đƣợc các bài toán về Sudoku và 1 ứng dụng Kế Hoạch Thực Hiện Tuần 1(14-21/03/2009): Tìm hiểu tổng quan về bài toán Soduku và thu thập tài liệu Tuần 2(22-29/03/2009):Xác định rõ bài toán. giải các bài toán SUDOKU, với các thuật giải đƣợc tìm hiểu. Trƣờng CĐ Nguyễn Tất Thành Các bài toán SUDOKU Trang 15 LỜI MỞ ĐẦU Trong mấy năm gần đây, một trò chơi về