Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 59 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
59
Dung lượng
0,99 MB
Nội dung
ĐẠI HỌC THÁI NGUYÊN TRƢỜNG ĐẠI HỌC CÔNG NGHỆ THƠNG TIN VÀ TRUYỀN THƠNG NGUYỄN QUANG TRÌNH TỔ CHỨC DỮ LIỆU CHO LỚP CÁC THUẬT TOÁN QUAY LUI LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH THÁI NGUYÊN - 2013 Số hóa Trung tâm Học liệu http://lrc.tnu.edu.vn/ ĐẠI HỌC THÁI NGUYÊN TRƢỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THƠNG NGUYỄN QUANG TRÌNH TỔ CHỨC DỮ LIỆU CHO LỚP CÁC THUẬT TOÁN QUAY LUI Chuyên ngành: Khoa học máy tính Mã số: 60 48 01 LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH Ngƣời hƣớng dẫn khoa học: PGS.TSKH Nguyễn Xuân Huy THÁI NGUYÊN - 2013 Soá hóa Trung tâm Học liệu http://lrc.tnu.edu.vn/ i LỜI CAM ĐOAN Học viên xin cam đoan, kết luận văn hoàn toàn kết tự thân học viên tìm hiểu, nghiên cứu thực theo hƣớng dẫn khoa học PGS.TSKH Nguyễn Xuân Huy Các tài liệu tham khảo đƣợc trích dẫn thích đầy đủ Thái Nguyên, ngày 10 tháng 10 năm 2013 Học viên Nguyễn Quang Trình Số hóa Trung tâm Học liệu http://lrc.tnu.edu.vn/ ii LỜI CẢM ƠN Học viên xin đƣợc bày tỏ lòng biết ơn chân thành sâu sắc đến thầy giáo PGS.TSKH Nguyễn Xuân Huy, ngƣời tận tình hƣớng dẫn tạo điều kiện tốt để học viên hồn thành luận văn Xin chân thành cảm ơn thầy giáo, cô giáo Trƣờng Đại học Công nghệ thông tin Truyền thông - Đại học Thái Nguyên, Viện Công nghệ Thông tin - Viện Khoa học Công nghệ Việt Nam trực tiếp giảng dạy, giúp đỡ tạo điều kiện thuận lợi trình học tập nghiên cứu Cảm ơn thầy cô giáo, bạn học viên lớp cao học Khoa học máy tính CK10C, gia đình đồng nghiệp ln quan tâm, hỗ trợ, khuyến khích suốt thời gian học tập thực đề tài Xin chân thành cám ơn! Học viên Nguyễn Quang Trình Số hóa Trung tâm Học liệu http://lrc.tnu.edu.vn/ iii MỤC LỤC TRANG BÌA LỜI CAM ĐOAN i LỜI CẢM ƠN ii MỤC LỤC iii DANH MỤC CÁC HÌNH v MỞ ĐẦU 1 Lí chọn đề tài Đối tƣợng phạm vi nghiên cứu Hƣớng nghiên cứu đề tài Những nội dung nghiên cứu Phƣơng pháp nghiên cứu Ý nghĩa khoa học đề tài Chƣơng TỔNG QUAN THUẬT TOÁN QUAY LUI 1.1 Giới thiệu chung 1.2 Ý tƣởng thuật toán [1], [2], [3], [5] 1.3 Kết luận Chƣơng XÂY DỰNG THUẬT TOÁN QUAY LUI VÀ TỔ CHỨC DỮ LIỆU CHO MỘT SỐ BÀI TOÁN KINH ĐIỂN 2.1 Bài toán từ chuẩn [2] 2.1.1 Giới thiệu toán 2.1.2 Tổ chức liệu chƣơng trình 2.1.3 Nhận xét 11 2.2 Bài toán xếp hậu [1], [2] 12 2.2.1 Giới thiệu toán 12 2.2.2 Tổ chức liệu chƣơng trình 13 2.2.3 Nhận xét 20 Số hóa Trung tâm Học liệu http://lrc.tnu.edu.vn/ iv 2.3 Bài toán đa giác 21 2.3.1 Giới thiệu toán 21 2.3.2 Tổ chức liệu chƣơng trình 23 2.3.3 Nhận xét 29 2.4 Bài tốn số Sudoku 30 2.4.1 Giới thiệu toán 30 2.4.2 Tổ chức liệu chƣơng trình 32 2.4.3 Nhận xét 36 2.5 Kết luận 36 Chƣơng CÀI ĐẶT CHƢƠNG TRÌNH 37 3.1 Cài đặt cho toán từ chuẩn 37 3.1.1 Giới thiệu chƣơng trình 37 3.1.2 Thử nghiệm chƣơng trình 41 3.2 Cài đặt cho toán xếp hậu 42 3.2.1 Giới thiệu chƣơng trình 42 3.2.2 Thử nghiệm chƣơng trình 43 3.3 Cài đặt cho toán đa giác 45 3.3.1 Giới thiệu chƣơng trình 45 3.3.2 Thử nghiệm chƣơng trình 47 3.4 Cài đặt cho tốn số Sudoku 48 3.4.1 Giới thiệu chƣơng trình 48 3.4.2 Thử nghiệm chƣơng trình 49 KẾT LUẬN 53 TÀI LIỆU THAM KHẢO 54 Số hóa Trung tâm Học liệu http://lrc.tnu.edu.vn/ v DANH MỤC CÁC HÌNH Hình 1.1 Cây tìm kiếm lời giải theo thuật tốn quay lui Hình 2.1 Cây tìm kiếm lời giải cho tốn từ chuẩn 11 Hình 2.2 Lời giải với N = 15 Hình 2.3 Lời giải với N = 16 Hình 2.4 Cây lời giải tốn xếp hậu với N = 17 Hình 2.5 Các đƣờng chéo 18 Hình 2.6 Các đƣờng chéo phụ 18 Hình 2.7 Nghiệm v1 = (2, 4, 1, 3) 20 Hình 2.8 Trò chơi Instant Insanity 21 Hình 2.9 Đáp án đạt đƣợc sau xoay khối sang trái góc 90o 21 Hình 2.10 Bài tốn đa giác với m = 4, n = 22 Hình 2.11 Đáp án tốn đa giác với m = 4, n = 23 Hình 2.12 Cách tìm nghiệm id = {1,5,6,3} 29 Hình 2.13 Đề 31 Hình 2.14 Đáp án đề 31 Hình 2.15 Đề 32 Hình 2.16 Đáp án đề 32 Hình 3.1 Giao diện chƣơng trình TUCHUAN 41 Hình 3.2 Tìm nghiệm với n = 41 Hình 3.3 Tìm nghiệm với n = 100 41 Hình 3.4 Tìm nghiệm với n = 1000 42 Hình 3.5 Giao diện chƣơng trình XEPHAU 42 Hình 3.6 20 nghiệm 43 Hình 3.7 Các nghiệm 68 → 92 43 Hình 3.8 20 nghiệm 44 Số hóa Trung tâm Học liệu http://lrc.tnu.edu.vn/ vi Hình 3.9 Các nghiệm 699 → 724 44 Hình 3.10 Chƣơng trình XEPHAU cải tiến 45 Hình 3.11 Giao diện chƣơng trình DAGIAC 46 Hình 3.12 Thử nghiệm chƣơng trình với M = 4, N = 47 Hình 3.13 Thử nghiệm chƣơng trình với M = 10, N = 20 47 Hình 3.14 Thử nghiệm chƣơng trình với M = 40, N = 40 48 Hình 3.15 Giao diện chƣơng trình SUDOKU 49 Hình 3.16 Đọc đề từ tệp input de1 50 Hình 3.17 Đáp án de1 phƣơng án 50 Hình 3.18 Đáp án de1 phƣơng án 51 Hình 3.19 Đọc đề từ tệp input de2 52 Hình 3.20 Đáp án de2 phƣơng án 52 Hình 3.21 Đáp án de2 phƣơng án 52 Số hóa Trung tâm Học liệu http://lrc.tnu.edu.vn/ MỞ ĐẦU Lí chọn đề tài Để giải tốn thơng thƣờng có nhiều cách tiếp cận Mỗi cách tiếp cận khác cho kết với độ tối ƣu khác Với nhiều tốn việc tìm giải thuật tối ƣu khơng phải việc đơn giản, kĩ cần thiết để giải đƣợc tốn hồn chỉnh phải giải đƣợc tốn kích thƣớc liệu vừa phải Đây liệu thử mang tính định hƣớng chiến lƣợc cho việc giải tốn Với phƣơng pháp giải cách duyệt tồn giải đƣợc phần lớn toán Một thuật tốn giúp duyệt tồn hiệu quả, nhanh chóng thuật toán quay lui Việc áp dụng cài đặt thuật toán quay lui cho toán thƣờng trừu tƣợng khó hiểu Và khó việc kết hợp thuật toán quay lui với nhánh cận để giúp trình duyệt đƣợc hiệu Do học viên thấy việc phân tích, đánh giá định hƣớng cách tiếp cận toán thuật tốn quay lui cần thiết Trong khn khổ luận văn thạc sỹ, học viên chọn đề tài nghiên cứu: “Tổ chức liệu cho lớp thuật toán quay lui” Đối tƣợng phạm vi nghiên cứu Tìm hiểu số đặc trƣng lớp tốn địi hỏi duyệt khả Ứng dụng để giải số tốn liệt kê tìm phƣơng án tối ƣu Hƣớng nghiên cứu đề tài Tìm hiểu kỹ thuật quy trình duyệt liệu Cài đặt chƣơng trình cho số tốn Những nội dung nghiên cứu Chƣơng Tổng quan thuật toán quay lui Chƣơng giới thiệu số vấn đề liên quan đến đặc điểm, ý tƣởng nội dung thuật tốn quay lui Số hóa Trung tâm Học liệu http://lrc.tnu.edu.vn/ Chƣơng Xây dựng thuật toán quay lui tổ chức liệu cho số lớp toán kinh điển Bài toán từ chuẩn Bài toán xếp hậu Bài tốn đa giác Bài tốn số Sudoku Chƣơng Cài đặt chƣơng trình cho tốn Chƣơng thử nghiệm Phƣơng pháp nghiên cứu Phân tích, liệt kê, đối sánh, nghiên cứu tài liệu, tổng hợp kết nhà nghiên cứu liên quan đến lĩnh vực nghiên cứu Ý nghĩa khoa học đề tài Vận dụng tốt thuật toán quay lui, giúp dễ dàng giải đƣợc toán liệt kê, tối ƣu Xây dựng sở khoa học cho tốn tìm kiếm Số hóa Trung tâm Học liệu http://lrc.tnu.edu.vn/ 37 Chƣơng CÀI ĐẶT CHƢƠNG TRÌNH Chƣơng trình bày chƣơng trình cài đặt chạy thử nghiệm cho tốn chƣơng Các chƣơng trình chƣơng đƣợc lập trình ngơn ngữ C++ 3.1 Cài đặt cho toán từ chuẩn 3.1.1 Giới thiệu chương trình Xét thí dụ, với n = Có tất 30 nghiệm từ chuẩn loại 12131 21231 31213 12132 21232 31231 12312 21312 31232 12313 21321 31321 12321 21323 31323 13121 23121 32123 13123 23123 32131 13212 23132 32132 13213 23212 32312 13231 23213 32313 Do toán từ chuẩn có nhiều nghiệm nên phạm vi luận văn, học viên xây dựng chƣơng trình tìm nghiệm Chƣơng trình TUCHUAN nhận vào số nguyên n độ dài từ, sau xử lý đƣa nghiệm từ chuẩn hình Số hóa Trung tâm Học liệu http://lrc.tnu.edu.vn/ 41 Giao diện 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 nghiệm với n = n = 100 Hình 3.3 Tìm nghiệm với n = 100 Số hóa Trung tâm Học liệu http://lrc.tnu.edu.vn/ 42 n = 1000 Hình 3.4 Tìm nghiệm với n = 1000 3.2 Cài đặt cho toá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 số nguyên n số quân Hậu muốn đặt bàn cờ kích thƣớc n n, sau xử lý đƣa hình: cách đặt n quân Hậu bàn cờ kích thƣớc n n cho quân Hậu không chiếu Tất cách đặt n quân Hậu bàn cờ kích thƣớc n n cho quân Hậu không chiếu Giao diện chạy chƣơng trình: Hình 3.5 Giao diện chƣơng trình XEPHAU Số hóa Trung tâm Học liệu http://lrc.tnu.edu.vn/ 43 3.2.2 Thử nghiệm chương trình n = ta thu đƣợc 92 nghiệm Hình 3.6 20 nghiệm Hình 3.7 Các nghiệm 68 → 92 Số hóa Trung tâm Học liệu http://lrc.tnu.edu.vn/ 44 n = 10 ta thu đƣợc 724 nghiệm Hình 3.8 20 nghiệm Hình 3.9 Các nghiệm 699 → 724 Số hóa Trung tâm Học liệu http://lrc.tnu.edu.vn/ 45 * Chƣơng trình XEPHAU cải tiến hiển thị nghiệm với n = 25 Hình 3.10 Chƣơng trình XEPHAU cải tiến 3.3 Cài đặt cho 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 số nguyên M N, đó: M : số đa giác (cũng số màu) N : số cạnh đa giác Kết đƣa hình dãy id cạnh xuất phát đa giác, để ta nhận đƣợc đủ M màu khác cạnh tƣơng ứng 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ạnh đa giác Mã số màu Xanh = 1, Đỏ = 2, Tím = 3, Vàng = Số hóa Trung tâm Học liệu http://lrc.tnu.edu.vn/ 46 Tệp input dagiac.inp: 46 413421 133412 342423 132421 Dịng thứ nhất: Hai số M N, M số màu đồng thời số đa giác, N số cạnh đa giác Tiếp đến M dòng, dòng N số nguyên dƣơng biểu thị màu cạnh đa giác tính từ cạnh số đƣợc liệt kê theo chiều kim đồng hồ Các số dòng cách qua dấu cách Giá trị lớn N: 200, M: 100 Giao diện chạy chƣơng trình: Hình 3.11 Giao diện chƣơng trình DAGIAC Số hóa Trung tâm Học liệu http://lrc.tnu.edu.vn/ 47 3.3.2 Thử nghiệm chương trình M = 4, N = 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 = M = 10, N = 20 ta thu đƣợc dãy nghiệm id = {1,17,16,12,17,19,1,14,14,8} Hình 3.13 Thử nghiệm chƣơng trình với M = 10, N = 20 Số hóa Trung tâm Học liệu http://lrc.tnu.edu.vn/ 48 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 tốn số Sudoku 3.4.1 Giới thiệu chương trình Chƣơng trình SUDOKU đọc liệu từ tệp đề cho trƣớc, sau giải đề theo phƣơng án đƣa kết hình Tệp input: de1 010000000 003000000 600908251 007040009 050000030 400020600 829501004 000000800 000000070 Gồm dòng, cột, vị trí số từ → 9, vị trí có giá trị vị trí cần điền giá trị để tìm lời giải Giao diện chạy chƣơng trình: Số hóa Trung tâm Học liệu http://lrc.tnu.edu.vn/ 49 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 Ta có đáp án: 010000000 912654783 003000000 583712946 600908251 674938251 007040009 137846529 050000030 256197438 400020600 498325617 829501004 829571364 000000800 741263895 000000070 365489172 Số hóa Trung tâm Học liệu http://lrc.tnu.edu.vn/ 50 Hình 3.16 Đọc đề từ tệp input de1 Hình 3.17 Đáp án de1 phƣơng án Số hóa Trung tâm Học liệu http://lrc.tnu.edu.vn/ 51 Hình 3.18 Đáp án de1 phƣơng án Với tệp input: de2 Ta có đáp án: 309000605 319284675 000009000 675319842 800507003 842567193 061030700 561438729 000102000 938172564 004050310 724956318 200801007 256841937 000600000 487693251 103000406 193725486 Số hóa Trung tâm Học liệu http://lrc.tnu.edu.vn/ 52 Hình 3.19 Đọc đề từ tệp input de2 Hình 3.20 Đáp án de2 phƣơng án Hình 3.21 Đáp án de2 phƣơng án Số hóa Trung tâm Học liệu http://lrc.tnu.edu.vn/ 53 KẾT LUẬN Kết luận Với vấn đề đặt “Tổ chức liệu cho lớp thuật toán quay lui”, luận văn đạt đƣợc số kết quả: Tìm hiểu số đặc trƣng lớp tốn địi hỏi duyệt khả Ứng dụng giải số toán kinh điển Cài đặt chƣơng trình thử nghiệm Luận văn đƣợc ứng dụng 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 Hƣớng nghiên cứu Tiếp tục tìm hiểu lớp tốn giải đƣợc thuật toán quay lui Kết hợp thuật toán quay lui với số kĩ thuật khác nhƣ nhánh cận, cắt tỉa alpha - beta, … nhằm đạt hiểu tốt Xây dựng chƣơng trình ứng dụng có giao diện trực quan, dễ sử dụng Số hóa Trung tâm Học liệu http://lrc.tnu.edu.vn/ 54 TÀI LIỆU THAM KHẢO Tiếng Việt [1] Lê Minh Hoàng (2002), Giải thuật lập trình, Đại học sƣ phạm Hà Nội [2] Nguyễn Xuân Huy (2011), Sáng tạo thuật toán lập trình, T1, T2, T3, NXB Thơng tin 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, Mathematics of Computation, vol 29, 121-136 Số hóa Trung tâm Học liệu http://lrc.tnu.edu.vn/ ... tƣởng nội dung thuật toán quay lui Soá hóa Trung tâm Học liệu http://lrc.tnu.edu.vn/ Chƣơng Xây dựng thuật toán quay lui tổ chức liệu cho số lớp toán kinh điển Bài toán từ chuẩn Bài toán xếp hậu... Chƣơng TỔNG QUAN THUẬT TOÁN QUAY LUI 1.1 Giới thiệu chung 1.2 Ý tƣởng thuật toán [1], [2], [3], [5] 1.3 Kết luận Chƣơng XÂY DỰNG THUẬT TOÁN QUAY LUI VÀ TỔ CHỨC DỮ... đánh giá định hƣớng cách tiếp cận toán thuật tốn quay lui cần thiết Trong khn khổ luận văn thạc sỹ, học viên chọn đề tài nghiên cứu: ? ?Tổ chức liệu cho lớp thuật toán quay lui? ?? Đối tƣợng phạm