6. Ý nghĩa khoa học của đề tài
3.1. Cài đặt cho bài tốn từ chuẩn
3.1.1. Giới thiệu chương trình
Xét thí dụ, với n = 5. Cĩ tất cả 30 nghiệm từ chuẩn loại 3.
12131 12132 12312 12313 12321 13121 13123 13212 13213 13231 21231 21232 21312 21321 21323 23121 23123 23132 23212 23213 31213 31231 31232 31321 31323 32123 32131 32132 32312 32313
Do bài tốn từ chuẩn cĩ rất nhiều nghiệm nên trong phạm vi luận văn, học viên chỉ xây dựng chƣơng trình tìm 1 nghiệm.
Chƣơng trình TUCHUAN nhận vào 1 số nguyên n là độ dài của từ, sau khi xử lý sẽ đƣa ra 1 nghiệm từ chuẩn trên màn hình.
Giao diện khi chạy chƣơng trình:
Hình 3.1 Giao diện chƣơng trình TUCHUAN
3.1.2. Thử nghiệm chương trình
n = 7
Hình 3.2 Tìm 1 nghiệm với n = 7
n = 100
n = 1000
Hình 3.4 Tìm 1 nghiệm với n = 1000 3.2. Cài đặt cho bài tốn xếp hậu
3.2.1. Giới thiệu chương trình
Chƣơng trình XEPHAU nhận vào 1 số nguyên n là số quân Hậu muốn đặt trên bàn cờ kích thƣớc n n, sau khi xử lý sẽ đƣa ra màn hình:
1 cách đặt n quân Hậu trên bàn cờ kích thƣớc n n sao cho các quân Hậu khơng chiếu nhau.
Tất cả các cách đặt n quân Hậu trên bàn cờ kích thƣớc n n sao cho các quân Hậu khơng chiếu nhau.
Giao diện khi chạy chƣơng trình:
3.2.2. Thử nghiệm chương trình
n = 8 ta thu đƣợc 92 nghiệm.
Hình 3.6 20 nghiệm đầu tiên
n = 10 ta thu đƣợc 724 nghiệm.
Hình 3.8 20 nghiệm đầu tiên
* Chƣơng trình XEPHAU cải tiến hiển thị 1 nghiệm với n = 1..25
Hình 3.10 Chƣơng trình XEPHAU cải tiến 3.3. Cài đặt cho bài tốn đa giác
3.3.1. Giới thiệu chương trình
Chƣơng trình DAGIAC nhận vào 2 số nguyên M và N, trong đĩ: M : số đa giác (cũng là số màu).
N : số cạnh trên mỗi đa giác.
Kết quả đƣa ra màn hình dãy id là cạnh xuất phát của từng đa giác, để ta nhận đƣợc đủ M màu khác nhau trên mỗi cạnh tƣơng ứng của M đa giác, theo chiều kim đồng hồ.
Chƣơng trình cĩ sử dụng hàm GenTest để sinh ngẫu nhiên màu của các cạnh trên mỗi đa giác. Mã số màu Xanh = 1, Đỏ = 2, Tím = 3, Vàng = 4.
Tệp input dagiac.inp: 4 6 4 1 3 4 2 1 1 3 3 4 1 2 3 4 2 4 2 3 1 3 2 4 2 1
Dịng thứ nhất: Hai số M và N, trong đĩ M là số màu đồng thời là số đa giác, N là số cạnh trên mỗi đa giác.
Tiếp đến là M dịng, mỗi dịng N số nguyên dƣơng biểu thị màu trên các cạnh của đa giác tính từ cạnh số 1 đƣợc liệt kê theo chiều kim đồng hồ.
Các số cùng dịng cách nhau qua dấu cách. Giá trị lớn nhất của N: 200, M: 100.
Giao diện khi chạy chƣơng trình:
3.3.2. Thử nghiệm chương trình
M = 4, N = 6 ta thu đƣợc dãy nghiệm id = {1,4,5,3}
Hình 3.12 Thử nghiệm chƣơng trình với M = 4, N = 6
M = 10, N = 20 ta thu đƣợc dãy nghiệm
id = {1,17,16,12,17,19,1,14,14,8}
M = 40, N = 40 ta thu đƣợc dãy nghiệm id =
{1,19,13,12,34,19,32,32,38,34,35,6,40,16,34,4,26,25,3,18,25,15,9,28,2 2,23,35,14,11,5,14,28,28,32,24,30,9,28,23,20}
Hình 3.14 Thử nghiệm chƣơng trình với M = 40, N = 40 3.4. Cài đặt cho bài tốn ơ số Sudoku
3.4.1. Giới thiệu chương trình
Chƣơng trình SUDOKU đọc dữ liệu từ các tệp đề bài cho trƣớc, sau đĩ giải đề bài theo 2 phƣơng án và đƣa kết quả ra màn hình.
Tệp input: de1 0 1 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 6 0 0 9 0 8 2 5 1 0 0 7 0 4 0 0 0 9 0 5 0 0 0 0 0 3 0 4 0 0 0 2 0 6 0 0 8 2 9 5 0 1 0 0 4 0 0 0 0 0 0 8 0 0 0 0 0 0 0 0 0 7 0
Gồm 9 dịng, 9 cột, tại mỗi vị trí là các số từ 0 → 9, vị trí nào cĩ giá trị 0 là vị trí cần điền giá trị để tìm ra lời giải.
Hình 3.15 Giao diện chƣơng trình SUDOKU
3.4.2. Thử nghiệm chương trình
Với tệp input: de1 0 1 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 6 0 0 9 0 8 2 5 1 0 0 7 0 4 0 0 0 9 0 5 0 0 0 0 0 3 0 4 0 0 0 2 0 6 0 0 8 2 9 5 0 1 0 0 4 0 0 0 0 0 0 8 0 0 0 0 0 0 0 0 0 7 0 Ta cĩ đáp án: 9 1 2 6 5 4 7 8 3 5 8 3 7 1 2 9 4 6 6 7 4 9 3 8 2 5 1 1 3 7 8 4 6 5 2 9 2 5 6 1 9 7 4 3 8 4 9 8 3 2 5 6 1 7 8 2 9 5 7 1 3 6 4 7 4 1 2 6 3 8 9 5 3 6 5 4 8 9 1 7 2
Hình 3.16 Đọc đề bài từ tệp input de1
Hình 3.18 Đáp án de1 bằng phƣơng án 2
Với tệp input: de2 3 0 9 0 0 0 6 0 5 0 0 0 0 0 9 0 0 0 8 0 0 5 0 7 0 0 3 0 6 1 0 3 0 7 0 0 0 0 0 1 0 2 0 0 0 0 0 4 0 5 0 3 1 0 2 0 0 8 0 1 0 0 7 0 0 0 6 0 0 0 0 0 1 0 3 0 0 0 4 0 6 Ta cĩ đáp án: 3 1 9 2 8 4 6 7 5 6 7 5 3 1 9 8 4 2 8 4 2 5 6 7 1 9 3 5 6 1 4 3 8 7 2 9 9 3 8 1 7 2 5 6 4 7 2 4 9 5 6 3 1 8 2 5 6 8 4 1 9 3 7 4 8 7 6 9 3 2 5 1 1 9 3 7 2 5 4 8 6
Hình 3.19 Đọc đề bài từ tệp input de2
Hình 3.20 Đáp án de2 bằng phƣơng án 1
KẾT LUẬN
1. Kết luận
Với vấn đề đặt ra “Tổ chức dữ liệu cho lớp các thuật tốn quay lui”, luận văn đã đạt đƣợc một số kết quả:
Tìm hiểu một số đặc trƣng của lớp các bài tốn địi hỏi duyệt các khả năng.
Ứng dụng giải một số bài tốn kinh điển. Cài đặt chƣơng trình và thử nghiệm.
Luận văn cĩ thể đƣợc ứng dụng trong cơng tác giảng dạy, đặc biệt cho đối tƣợng học sinh trung học phổ thơng, học sinh khối chuyên Tin, ơn thi học sinh giỏi.
2. Hƣớng nghiên cứu tiếp theo
Tiếp tục tìm hiểu lớp các bài tốn cĩ thể giải đƣợc bằng thuật tốn quay lui. Kết hợp thuật tốn quay lui với một số kĩ thuật khác nhƣ nhánh cận, cắt tỉa alpha - beta, … nhằm đạt hiểu quả tốt nhất.
TÀI LIỆU THAM KHẢO
Tiếng Việt
[1] Lê Minh Hồng (2002), Giải thuật và lập trình, Đại học sƣ phạm Hà Nội. [2] Nguyễn Xuân Huy (2011), Sáng tạo trong thuật tốn và lập trình, T1,
T2, T3, NXB Thơng tin và Truyền thơng.
Tiếng Anh
[3] Bitner J. R., Reingold E. M., ACM C. (1975), Backtrack programming techniques, vol. 18, 651-656.
[4] Delahaye, Jean-Paul (2006), “The Science Behind Sudoku”, Scientific American magazine.
[5] Horowitz E., Sahni S. (1978), Fundamentals of Computer Algorithms, Pitman. [6] Knuth D. E. (1975), Estimating the efficiency of backtrack programs,