Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 23 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
23
Dung lượng
422,85 KB
Nội dung
TRƯỜNG ĐẠI HỌC ĐIỆN LỰC KHOA CÔNG NGHỆ THÔNG TIN BÁO CÁO CHUN ĐỀ HỌC PHẦN NHẬP MƠN TRÍ TUỆ NHÂN TẠO ĐỀ TÀI: PHƯƠNG PHÁP TÌM KIẾM LỜI GIẢI THỎA MÃN CÁC RÀNG BUỘC VÀ BÀI TOÁN SODOKU Sinh viên thực Giảng viên hướng dẫn Ngành Chuyên ngành Lớp Khóa Hà Nội, tháng 12 năm 2021 PHIẾU CHẤM ĐIỂM Sinh viên thực hiện: STT H Nguyễn Kiều Đăng Quang Mã SV: 19810310367 Lê Quốc Toàn Mã SV: 19810310274 Giảng viên chấm: Họ tên Giảng viên chấm 1: Giảng viên chấm 2: MỤC LỤC LỜI MỞ ĐẦU CHƯƠNG 1: GIỚI THIỆU VỀ ĐỀ TÀI VÀ TRÍ TUỆ NHÂN TẠO 1.1 Giới thiệu trí tuệ nhân tạo 1.2 Giới thiệu đề tài 1.3 Cơ sở lý thuyết 1.3.1 Ý tưởng 1.3.2 Cơ sở lý thuyết CHƯƠNG 2: THUẬT TOÁN GIẢI SUDOKU Giới thiệu lại luật chơi cách giải Thuật toán giải sudoku CHƯƠNG 3: CÀI ĐẶT, ĐÁNH GIÁ THỬ NGIỆM 3.1 Cài đặt với Python 3.1.1 Code 3.1.2 Kết đạt 3.1.3 Kết luận KẾT LUẬN TÀI LIỆU THAM KHẢO DANH MỤC HÌNH ẢNH Hình ví dụ đề sudoku 9x9 Hình đáp án câu đố Hình Cây tìm kiếm quay lui Hình Code đầy đủ (1) Hình Code đầy đủ (2) Hình Kết LỜI MỞ ĐẦU Đề tài Sudoku 9x9 sử dụng ngơn ngữ lập trình python thể thuật toán đệ quy quay lui cơng cụ lập trình sublime python để giải tốn Sudoku 9x9 cho trước Thơng qua báo cáo này, chúng em xin gửi lời cảm ơn đến thầy Phạm Đức Hồng – giảng viên hướng dẫn hỗ trợ tận tình giải đáp thắc mắc suốt trình làm đồ án Giải thuật Lập trình Tuy nhiên, kiến thức cịn hạn hẹp, nỗ lực mình, đồ án khó tránh khỏi thiếu sót Chúng em mong nhận thông cảm bảo tận tình q Thầy bạn Mặc dù đề tài hoàn thành, chắn khơng thể tránh khỏi thiếu sót, chúng em mong muốn nhận ý kiến đóng góp thầy để hồn thiện Chúng em xin chân thành cảm ơn! CHƯƠNG 1: GIỚI THIỆU VỀ ĐỀ TÀI VÀ TRÍ TUỆ NHÂN TẠO 1.1 Giới thiệu trí tuệ nhân tạo 1.1.1 Trí tuệ nhân tạo ? Để hiểu trí tuệ nhân tạo (artificial intelligence) bắt đầu với khái niệm bay nhân tạo (flying machines), tức máy bay Đã từ lâu, loài người mong muốn làm máy mà di chuyển không trung mà không phụ thuộc vào địa hình mặt đất, hay nói cách khác máy bay Khơng có ngạc nhiên ý tưởng làm máy bay từ nghiên cứu cách chim bay Những máy biết bay thiết kế theo nguyên lý “vỗ cánh” chim bay quãng đường ngắn lịch sử hàng không thực sang trang kể từ anh em nhà Wright thiết kế máy bay dựa nguyên lý khí động lực học (aerodynamics) Các máy bay nay, thấy, có sức trở lớn bay qng đường vịng quanh giới Nó khơng thiết phải có ngun lý bay chim bay chim (dáng vẻ), cịn tốt chim Quay lại câu hỏi Trí tuệ nhân tạo Trí tuệ nhân tạo trí thơng minh máy người tạo Ngay từ máy tính điện tử đời, nhà khoa học máy tính hướng đến phát hiển hệ thống máy tính (gồm phần cứng phần mềm) cho có khả thơng minh lồi người Mặc dù nay, theo quan niệm người viết, ước mơ xa thành thực, thành tựu đạt không nhỏ: làm hệ thống (phần mềm chơi cờ vua chạy siêu máy tinh GeneBlue) thắng vua cờ giới; làm phần mềm chứng minh tốn hình học; v.v Hay nói cách khác, số lĩnh vực, máy tính thực tốt tương đương người (tất nhiên tất lĩnh vực) Đó hệ thống thơng minh Có nhiều cách tiếp cận để làm trí thơng minh máy (hay trí tuệ nhân tạo), chẳng hạn nghiên cứu cách não người sản sinh trí thơng minh lồi người nhưthế ta bắt chước nguyên lý đó, có cách khác sử dụng ngun lý hồn tồn khác với cách sản sinh trí thơng minh lồi người mà làm máy thơng minh người; giống máy bay bay tốt chim có chế bay giống chế bay chim Như vậy, trí tuệ nhân tạo nói đến khả máy thực công việc mà người thường phải xử lý; dáng vẻ ứng xử kết thực máy tốt tương đương với người ta gọi máy thơng minh hay máy có trí thơng minh Hay nói cách khác, đánh giá thơng minh máy khơng phải dựa ngun lý thực nhiệm vụ có giống cách người thực hay không mà dựa kết dáng vẻ ứng xử bên ngồi có giống với kết dáng vẻ ứng xử người hay không Các nhiệm vụ người thường xuyên phải thực là: giải tốn (tìm kiếm, chứng minh, lập luận), học, giao tiếp, thể cảm xúc, thích nghi với môi trường xung quanh, v.v., dựa kết thực nhiệm vụ để kết luận có thơng minh hay khơng Mơn học Trí tuệ nhân tạo nhằm cung cấp phương pháp luận để làm hệ thống có khả thực nhiệm vụ đó: giải tốn, học, giao tiếp, v.v cách làm có người hay không mà kết đạt dáng vẻ bên ngồi người Trong mơn học này, tìm hiểu phương pháp để làm cho máy tính biết cách giải tốn, biết cách lập luận, biết cách học, v.v 1.1.2 Lịch sử Vào năm 1943, Warren McCulioch Walter Pitts bắt đầu thực nghiên cứu ba sở lý thuyết bản: triết học chức noron thần kinh; phân tích mệnh đề logic; lý thuyết dự đoán Turing Các tác giả nghiên cứu đề xt mơ hình noron nhân tạo, noron đặc trưng hai trạng thái “bật”, “tắt” phát mạng noron có khả học Thuật ngữ “Trí tuệ nhân tạo” (Artificial Intelligence - AI) thiết lập John McCarthy Hội thảo chủ đề vào mùa hè năm 1956 Đồng thời, ơng đề xuất ngơn ngữ lập trình Lisp – ngơn ngữ lập trình hàm tiêu biểu, sử dụng lĩnh vực AI Sau đó, Alan Turing đưa "Turing test" phương pháp kiểm chứng hành vi thông minh Thập kỷ 60, 70 Joel Moses viết chương trình Macsyma - chương trình toán học sử dụng sở tri thức thành công Marvin Minsky Seymour Papert đưa chứng minh giới hạn mạng nơ-ron đơn giản Ngơn ngữ lập trình logic Prolog đời phát triển Alain Colmerauer Ted Shortliffe xây dựng thành công số hệ chuyên gia trợ giúp chẩn đoán y học, hệ thống sử dụng ngôn ngữ luật để biểu diễn tri thức suy diễn Vào đầu năm 1980, nghiên cứu thành công liên quan đến AI hệ chuyên gia (expert systems) – dạng chương trình AI mơ tri thức kỹ phân tích nhiều chuyên gia người Vào năm 1990 đầu kỷ 21, AI đạt thành tựu to lớn nhất, AI áp dụng logic, khai phá liệu, chẩn đoán y học nhiều lĩnh vực ứng dụng khác công nghiệp Sự thành công dựa vào nhiều yếu tố: tăng khả tính tốn máy tính, tập trung giải tốn cụ thể, xây dựng mối quan hệ AI lĩnh vực khác giải toán tương tự, chuyển giao nhà nghiên cứu cho phương pháp toán học vững chuẩn khoa học xác 1.1.3 Lĩnh vực AI Lập luận, suy diễn tự động: Khái niệm lập luận (reasoning), suy diễn (reference) sử dụng phổ biến lĩnh vực AI Lập luận suy diễn logic, dùng để tiến trình rút kết luận (tri thức mới) từ giả thiết cho (được biểu diễn dạng sở tri thức) Như vậy, để thực lập luận người ta cần có phương pháp lưu trữ sở tri thức thủ tục lập luận sở tri thức Biểu diễn tri thức: Muốn máy tính lưu trữ xử lý tri thức cần có phương pháp biểu diễn tri thức Các phương pháp biểu diễn tri thức bao gồm ngôn ngữ biểu diễn kỹ thuật xử lý tri thức Một ngôn ngữ biểu diễn tri thức đánh giá “tốt” có tính biểu đạt cao tính hiệu thuật tốn lập luận ngơn ngữ Tính biểu đạt ngơn ngữ thể khả biểu diễn phạm vi rộng lớn thông tin miền ứng dụng Tính hiệu thuật tốn lập luận thể chi phí thời gian khơng gian dành cho việc lập luận Tuy nhiên, hai yếu tố dường đối nghịch nhau, tức ngôn ngữ có tínhbiểu đạt cao thuật tốn lập luận có độ phức tạp lớn (tính hiệu thấp)và ngược lại (ngơn ngữ đơn giản, có tính biểu đạt thấp thuật tốn lập luận có hiệu cao) Do đó, thách thức lớn lĩnh vực AI xây dựng ngôn ngữ biểu diễn tri thức mà cân hai yếu tố này, tức ngơn ngữ có tínhbiểu đạt đủ tốt (tùy theo ứng dụng) lập luận hiệu Lập kế hoạch: khả suy mục đích cần đạt nhiệm vụ đưa ra, xác định dãy hành động cần thực để đạt mục đích Học máy: lĩnh vực nghiên cứu AI phát triển mạnh mẽ có nhiều ứng dụng lĩnh vực khác khai phá liệu, khám phá tri thức,… Xử lý ngôn ngữ tự nhiên: nhánh AI, tập trung vào ứng dụng ngôn ngữ người Các ứng dụng nhận dạng tiếng nói, nhận dạng chữ viết, dịch tự động, tìm kiếm thơng tin,… Hệ chuyên gia: cung cấp hệ thống có khả suy luận để đưa kết luận Các hệ chun gia có khả xử lý lượng thơng tin lớn cung cấp kết luận dựa thơng tin Có nhiều hệ chun gia tiếng hệ chuyên gia y học MYCIN, đoán nhận cấu trúc phân tử từ cơng thức hóa học DENDRAL, … Robotics … 1.2 Giới thiệu đề tài Sudoku từ Nhật, dịch tạm số độc nhất, (Thật có nguồn gốc từ Mỹ với tên gọi "đặt số vào vị trí đúng") Đây trị chơi trí tuệ tiếng, thu hút nhiều người tham gia thuộc nhiều tầng lớp, độ tuổi khác Sudoku có nhiều biến thể khác nhau: 3x3, 4x4, 6x6, 8x8, 9x9, 12x12, 16x16,… Đối với đề tài này, chúng em áp dụng cho sudoku dạng chuẩn 9x9 Bảng câu đố hình vng, chiều có nhỏ, hợp thành cột, hàng chia thành ô lớn 3x3 Một vài ô nhỏ đánh số, manh mối để bạn tìm lời giải Tuỳ theo mức độ nhiều hay manh mối, câu đố xếp loại dễ, trung bình, khó hay cực khó 10 Hình 1: ví dụ đề sudoku 9x9 Cách chơi Sudoku điền số từ đến vào ô trống theo quy luật đơn giản: Các ô hàng (ngang) phải có đủ số từ đến không cần theo thứ tự Các ô hàng (dọc) phải có đủ số từ đến không cần theo thứ tự Mỗi miền 3x3 viền đậm phải có đủ số từ đến Hình 2: đáp án câu đố 11 1.3 Cơ sở lý thuyết 1.3.1 Ý tưởng Chương trình giải dựa thuật toán quay lui Bằng việc liệt kê tình huống, thử khả tìm thấy lời giải đúng, thuật tốn quay lui chia nhỏ toán, lời giải tốn lớn kết việc tìm kiếm theo chiều sâu tập hợp toán phần tử Trong suốt trình tìm kiếm gặp phải hướng mà biết khơng thể tìm thấy đáp án quay lại bước trước tìm hướng khác hướng vừa tìm kiếm Trong trường hợp khơng cịn hướng khác thuật tốn kết thúc 1.3.2 Cơ sở lý thuyết Thuật toán quay lui Quay lui chiến lược tìm kiếm lời giải cho tốn thỏa mãn ràng buộc Các toán thỏa mãn ràng buộc tốn có lời giải đầy đủ, thứ tự phần tử khơng quan trọng Các toán bao gồm tập biến mà biến cần gán giá trị tùy theo ràng buộc cụ thể toán Việc quay lui thử tất tổ hợp để tìm lời giải Thế mạnh phương pháp nhiều cài đặt tránh việc phải thử nhiều tổ hợp chưa hồn chỉnh, nhờ giảm thời gian chạy, tìm nhiều đáp án cho tốn có nhiều cách giải Đó q trình tìm kiếm độ sâu tập hợp lời giải Trong trình tìm kiếm, ta gặp hướng lựa chọn không thỏa mãn, ta quay lui điểm lựa chọn nơi có hướng khác thử hướng lựa chọ Khi thử hết lựa chọn xuất phát từ điểm lựa chọn đó, ta quay lại điểm lựa chọn trước thử hướng lựa chọn Q trình tìm kiếm thất bại khơng cịn điểm lựa chọn Quy trình thường cài đặt hàm đệ quy mà thể hàm lấy thêm biến gán tất giá trị cho biến đó, với lần gán giá trị lại gọi chuỗi đệ quy để thử biến Chiến lược quay lui tương tự với tìm kiếm theo độ sâu sử dụng khơng gian nhớ hơn, lưu trữ trạng thái lười giải cập nhật 12 Hình Cây tìm kiếm quay lui Ở toán (mỗi nốt), ta tìm lời giả cho tốn Ứng với lời giải, ta giải toán toán gốc trở nên đầy đủ - Lời giải toán gốc thường lối từ gốc đến nốt cuối - 13 CHƯƠNG 2: THUẬT TOÁN GIẢI SUDOKU Giới thiệu lại luật chơi cách giải Sudoku trò chơi giải đố theo wiki định nghĩa sau: Sudoku (数数数数数数 (số độc) sūdoku?) (suːˈdoʊkuː/, /-ˈdɒ-/, /sə-/, ban đầu có tên gọi Number Place) trò chơi câu đố xếp chữ số dựa logic theo tổ hợp Mục tiêu trò chơi điền chữ số vào lưới 9×9 cho cột, hàng, phần số chín lưới 3×3 cấu tạo nên lưới (cũng gọi “hộp”, “khối”, “vùng”) chứa tất chữ số từ tới Câu đố hoàn thành phần, người chơi phải giải tiếp việc điền số Mỗi câu đố thiết lập tốt có cách làm Thuật toán giải sudoku Sau ta tìm thuật tốn giải Sudoku kỹ thuật backtracking, ngơn ngữ lập trình sử dụng Python Các bước tiến hành sau: Viết hàm in câu đố Sudoku hình Tìm vị trí ô trống Sudoku Với vị trí ô trống vừa tìm được, thử đặt số từ đến vào trống Kiểm tra xem sau thử đặt số vào trống có hợp lệ (thỏa mãn điều kiện luật chơi Sudoku hay khơng) Nếu hợp lệ tiếp tục tìm trống lại thử, khơng thử với số_tiếp_theo Lặp lại quy trình khơng cịn trống câu đố, khơng tìm lời giải Input, câu đố sudoku biểu diễn danh sách list chiều (một danh sách gồm phần tử, phần tử dòng – lại danh sách gồm phần tử tương ứng với ô dịng) với trống quy ước điền số 0, ví dụ Sudoku cau_do biểu diễn sau: 14 Chỉ số index Python đánh từ trở đi, vị trí ô bảng số cau_d0[0][0] cau_do[8][8], cau_do[d][c] ô số vị trí dịng d cột c 2.1 In câu đố hình sử dụng giao diện dòng lệnh, chưa sử dụng giao diện đồ họa GUI nên sử dụng hàm print() Python để in đối tượng hình CMD Ở Ta viết hàm in_sudoku để in câu đố Sudoku có tên q hình, sử dụng biến d c để biểu diễn dòng cột Nếu dòng d dịng thứ ta in hình dịng gồm kí tự - - - - - - - - - - để ngăn cách, mục đích biểu diễn cho khối ô vuông 3x3 Sudoku Tương tự, cột vị trí ta in kí tự | để ngăn cách Nếu cột vị trí thứ ta xuống dịng Thử in với cau_do phần đầu, kết sau, dùng SublimeText để code: 15 2.2 Viết hàm tìm trống Mục tiêu tìm vị trí trống câu đố q 2.3 Viết hàm kiểm tra tính hợp lệ 16 2.4 Viết hàm tìm lời giải 17 CHƯƠNG 3: CÀI ĐẶT, ĐÁNH GIÁ THỬ NGIỆM 3.1 Cài đặt với Python 3.1.1 Code Hình 4: Code đầy đủ (1) 18 Hình 5: Code đầy đủ (2) 19 3.1.2 Kết đạt Hình 6: Kết 3.1.3 Kết luận - Ưu điểm: Cài đặt thuật toán nhanh , dễ hiểu dễ cài đặt ngắn gọn Nhược điểm: Chạy lâu đệ quy nhiều lần, khơng có giao diện khó hình dung - 20 KẾT LUẬN Với kiến thức có mình, chúng em hoàn thành yêu cầu tiến hành thực đề tài “PHƯƠNG PHÁP TÌM KIẾM LỜI GIẢI THỎA MÃN CÁC RÀNG BUỘC VÀ BÀI TOÁN SODOKU” Tuy nhiên, q trình làm khơng tránh khỏi thiếu sót, có chỗ cịn vướng mắc, vậy, chúng em mong góp ý giúp đỡ thầy giáo, để hoàn thiện ! Chúng em xin gửi lời cảm ơn chân thành tới giảng viên Phạm Đức Hồng giảng viên giảng dạy mơn Nhập mơn Trí tuệ nhân tạo lớp D14CNPM4 tận tình hướng dẫn chúng em hoàn thành đề tài này! Chúng em xin chân thành cảm ơn! 21 TÀI LIỆU THAM KHẢO Phạm Đức Hồng, Giáo trình Nhập mơn Trí tuệ Nhân tạo, Đại học Điện Lực Phạm Thọ Hoàn, Phạm Thị Anh Lê, Giáo trình Trí tuệ Nhân tạo, Đại học Sư Phạm Hà Nội Đinh Mạnh Tường, Cấu trúc liệu giải thuật, NXB khoa học kỹ thuật, 2001 N Wirth, Algorithms and Data Structure, Prentice Hall, 1985 Cẩm nang thuật toán – – Robert Sedgewich – Trần Đan Thư Lập trình = Thuật toán + CTDL, N Wirth Trang web GeekforGeek.com 22 ... thuyết Thuật toán quay lui Quay lui chiến lược tìm kiếm lời giải cho tốn thỏa mãn ràng buộc Các toán thỏa mãn ràng buộc tốn có lời giải đầy đủ, thứ tự phần tử khơng quan trọng Các toán bao gồm... ĐỀ TÀI VÀ TRÍ TUỆ NHÂN TẠO 1.1 Giới thiệu trí tuệ nhân tạo 1.1.1 Trí tuệ nhân tạo ? Để hiểu trí tuệ nhân tạo (artificial intelligence) bắt đầu với khái niệm bay nhân tạo (flying machines), tức... trình giải dựa thuật toán quay lui Bằng việc liệt kê tình huống, thử khả tìm thấy lời giải đúng, thuật toán quay lui chia nhỏ toán, lời giải tốn lớn kết việc tìm kiếm theo chiều sâu tập hợp toán phần