Báo cáo chuyên đề học phần nhập môn trí tuệ nhân tạo đề ti thuật toán quay lui ( backtracking) giải trò chơi sudoku

26 4 0
Báo cáo chuyên đề học phần nhập môn trí tuệ nhân tạo đề ti thuật toán quay lui ( backtracking) giải trò chơi sudoku

Đ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

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: THUẬT TOÁN QUAY LUI ( BACKTRACKING) GIẢI TRÒ CHƠI SUDOKU Sinh viên thực : TRẦN MINH ĐỨC NGUYỄN QUỐC H PHAN TIẾN ĐẠI Giảng viên hướng dẫn : VŨ VĂN ĐỊNH Ngành : CÔNG NGHỆ THƠNG TIN Chun ngành : NHẬP MƠN TRÍ TUỆ NHÂN TẠO Lớp : D15CNPM4 Khoá : 2020-2025 Hà Nội, tháng 09 năm 2022 PHIẾU CHẤM ĐIỂM Sinh viên thực hiện: Họ tên Nội dung thực Chữ ký Điểm Trần Minh Đức Nguyễn Quốc Hà Phan Tiến Đại Giảng viên chấm: Họ tên Giảng viên chấm : Giảng viên chấm : Chữ ký Ghi MỤC LỤC LỜI CẢM ƠN CHƯƠNG GIỚI THIỆU TỔNG QUAN 1.1 Giới thiệu trí tuệ nhân tạo 1.1.1 1.1.2 Trí tuệ nhân tạo gì: Lĩnh vực AI: 1.1.3 Tác động: .4 1.2 Thuật toán quay lui (Backtracking) 1.2.1 1.2.2 Thuật tốn quay lui (Backtracking) gì? .5 Tư tưởng 1.2.3 1.2.4 Mơ hình thuật tốn .5 Nhân xét .6 1.3 Trò chơi sudoku 1.3.1 1.3.2 Bài toán sudoku Luật chơi 1.3.3 Ý tưởng CHƯƠNG 2: CẤU TRÚC DỮ LIỆU V GIẢI THUẬT BI TỐN 2.1 Phát biểu tốn: .8 2.2 Vấn đề: 2.3 Cấu trúc liệu: 1.4 2.4 Thuật toán quay lui: CHƯƠNG CI ĐẶT V ĐÁNH GIÁ THỬ NGHIỆM 10 3.1 Tổ chức chương trình: .10 3.2 Giao diện 13 3.3 Giao diện chọn đề bài: .15 3.4 Giao diện sau chọn đề bài: 16 3.5 Giao diện giải thuật toán: 17 3.6 Nhận xét: .17 KẾT LUẬN 18 TI LIỆU THAM KHẢO 19 LỜI CẢM ƠN Trong thời gian làm báo cáo môn học, chúng em nhận nhiều giúp đỡ, đóng góp ý kiến bảo nhiệt tình thầy cơ, gia đình bạn bè Chúng em xin gửi lời cảm ơn chân thành đến giảng viên Vũ Văn Định, giảng viên Bộ mơn nhập mơn trí tuệ nhân tạo - trường Đại học Điện Lực người tận tình hướng dẫn, bảo em suốt trình học tập, nghiên cứu Em xin chân thành cảm ơn thầy cô giáo trường Đại học Điện Lực nói chung, thầy khoa cơng nghệ thơng tin nói riêng dạy dỗ cho em kiến thức môn đại cương mơn chun ngành, giúp em có sở lý thuyết vững vàng tạo điều kiện giúp đỡ em suốt trình học tập Cuối cùng, em xin chân thành cảm ơn! Hà Nội, tháng 12 năm 2022 CHƯƠNG GIỚI THIỆU TỔNG QUAN 1.1 Giới thiệu trí tuệ nhân tạo 1.1.1 Trí tuệ nhân tạo gì: Để 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 quãng đường vịng quanh giới Nó khơng thiết phải có nguyên lý bay chim bay chim (dáng vẻ), 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 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 tính Gene Blue) 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 khơng phải 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 loài người ta bắt chước nguyên lý đó, có cách khác sử dụng nguyên lý hoàn toà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 khơng phải 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 dựa nguyên 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 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 Khi máy móc ngày tăng khả năng, nhiệm vụ coi cần "trí thông minh" thường bị loại bỏ khỏi định nghĩa AI, tượng gọi hiệu ứng AI Một câu châm ngơn Định lý Tesler nói "AI điều chưa thực hiện."Ví dụ, nhận dạng ký tự quang học thường bị loại trừ khỏi thứ coi AI, trở thành công nghệ thông thường khả máy đại thường phân loại AI bao gồm thành cơng hiểu lời nói người, cạnh tranh mức cao trò chơi chiến lược (chẳng hạn cờ vua Go), xe hoạt động độc lập, định tuyến thông minh mạng phân phối nội dung, mơ qn Trí tuệ nhân tạo phân thành ba loại hệ thống khác nhau: trí tuệ nhân tạo phân tích, lấy cảm hứng từ người nhân tạo AI phân tích có đặc điểm phù hợp với trí tuệ nhận thức; tạo đại diện nhận thức giới sử dụng học tập dựa kinh nghiệm khứ để thông báo định tương lai AI lấy cảm hứng từ người có yếu tố từ trí tuệ nhận thức cảm xúc; hiểu cảm xúc người, yếu tố nhận thức xem xét chúng việc định AI nhân cách hóa cho thấy đặc điểm tất loại lực (nghĩa trí tuệ nhận thức, cảm xúc xã hội), có khả tự ý thức tự nhận thức tương tác Trí tuệ nhân tạo thành lập môn học thuật vào năm 1956, năm sau trải qua nhiều sóng lạc quan, sau thất vọng kinh phí (được gọi " mùa đơng AI "), cách tiếp cận mới, thành công tài trợ Trong phần lớn lịch sử mình, nghiên cứu AI chia thành trường thường không liên lạc với nhau.Các trường dựa cân nhắc kỹ thuật, chẳng hạn mục tiêu cụ thể (ví dụ: " robot học " "học máy"), việc sử dụng công cụ cụ thể ("logic" mạng lưới thần kinh nhân tạo) khác biệt triết học sâu sắc Các ngành dựa yếu tố xã hội (các tổ chức cụ thể công việc nhà nghiên cứu cụ thể) Lĩnh vực thành lập dựa tun bố trí thơng minh người "có thể mơ tả xác đến mức cỗ máy chế tạo để mơ nó" Điều làm dấy lên tranh luận triết học chất tâm trí đạo đức tạo sinh vật nhân tạo có trí thơng minh giống người, vấn đề thần thoại, viễn tưởng triết học từ thời cổ đại đề cập tới Một số người coi AI mối nguy hiểm cho nhân loại tiến triển khơng suy giảm Những người khác tin AI, không giống cách mạng công nghệ trước đây, tạo nguy thất nghiệp hàng loạt Trong kỷ 21, kỹ thuật AI trải qua hồi sinh sau tiến đồng thời sức mạnh máy tính, liệu lớn hiểu biết lý thuyết; kỹ thuật AI trở thành phần thiết yếu ngành công nghệ, giúp giải nhiều vấn đề thách thức học máy, công nghệ phần mềm nghiên cứu vận hành 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 học, v.v 1.1.2 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 toá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ính biểu đạt cao thuật tốn lập luận có độ phức tạp lớn (tính hiệu thấp) 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ính biể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ệ chuyên 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, đốn nhận cấu trúc phân tử từ cơng thức hóa học DENDRAL… 1.1.3 Tác động: Sau nhà vật lý học Stephen Hawking Elon Musk cảnh báo mối đe dọa tiềm ẩn trí tuệ nhân tạo, nhiều người cho họ lo xa AI giúp ích nhiều cho sống Stephen Hawking khẳng định “Trí tuệ nhân tạo dấu chấm hết cho nhân loại phát triển đến mức hồn thiện nhất” Tác động trí tuệ nhân tạo mà dễ dàng nhận thấy tỷ lệ thất nghiệp tăng cao Nếu AI phát triển hoàn thiện, có khả thay người cơng việc trí tuệ chăm sóc sức khỏe, phục vụ, sản xuất theo dây chuyền tự động, công việc văn phịng Hoặc vấn đề thất nghiệp AI giải cách mà khơng thể hình dung Theo Bill Joy, người đồng sáng lập Giám đốc khoa học Sun Microsystems: "Có vấn đề lớn xã hội lồi người AI trở nên phổ biến, bị lệ thuộc Khi AI trở nên hồn thiện thơng minh hơn, cho phép nghe theo định máy móc, đơn giản cỗ máy ln đưa định xác người." Theo Andrew Maynard, nhà vật lý người giám đốc Trung tâm nghiên cứu rủi ro khoa học đại học Michigan: "Khi AI kết hợp với cơng nghệ nano bước tiến đột phá khoa học, mối đe dọa lớn người Trong Bộ quốc phòng Mỹ nghiên cứu dự án Autonomous Tactical Robot (EATR), robot sử dụng công nghệ nano để hấp thụ lượng chất hữu thể người Đó thực mối đe dọa lớn nhất, robot nano tự tạo lượng cách ăn chất hữu từ cối động vật, người Nghe giống phim viễn tưởng, điều hồn tồn xảy Có lẽ nên bắt đầu cẩn thận từ bây giờ." 1.2 Thuật toán quay lui (Backtracking) 1.2.1 Thuật toán quay lui (Backtracking) gì? Quay lui hay Backtracking kĩ thuật thiết kế giải thuật dựa đệ quy Ý tưởng quay lui tìm lời giải bước, bước chọn số lựa chọn đệ quy Người đề thuật ngữ (backtrack) nhà toán học người Mỹ D H Lehmer vào năm 1950 Quay lui dùng để giải tốn liệt kê cấu hình Mỗi cấu hình xây dựng phần tử Mỗi phần tử lại chọn cách thử tất khả 1.2.2 Tư tưởng Dùng để giải toán liệt kê cấu hình Mỗi cấu hình xây dựng phần tử Mỗi phần tử lại chọn cách thử tất khả Các bước việc liệt kê cấu hình dạng X[1 n]: Xét tất giá trị X[1] nhận, thử X[1] nhận giá trị Với giá trị X[1] ta sẽ: Xét tất giá trị X[2] nhận, lại thử X[2] cho giá trị Với giá trị X[2] lại xét khả giá trị X[3] tiếp tục bước: Xét tất giá trị X[n] nhận, thử cho X[n] nhận giá trị Thơng báo cấu hình tìm Bản chất quay lui trình tìm kiếm theo chiều sâu(Depth-First Search) 1.2.3 Mơ hình thuật tốn  Mã giải cho thuật toán quay lui: Sudoku xuất Mỹ với tên gọi Đặt vị trí số” - Number Place Sau du nhập vào Nhật nhà xuất Nikoli đổi tên thành Sudoku có nghĩa có số Trải qua thời gian, Sudoku trở thành trị chơi trí tuệ u thích nhiều quốc gia 1.3.2 Luật chơi Sudoku có nhiều biến thể thay đổi kích thước số lượng trị chơi cịn lối chơi giữ nguyên Ở phiên chuẩn (bản gốc) có kích thước 9x9 (ơ nhỏ) chia thành vùng, vùng có kích thước 3x3 Các vùng nhóm lại phân tách với viền đen đậm so với ô nhỏ Luật chơi Sudoku điền kín cịn lại với điều kiện: Các hàng ngang: Phải có đủ số từ đến 9, không trùng số không cần thứ tự Các hàng dọc: Đảm bảo có đủ số từ 1-9, không trùng số, không cần theo thứ tự Mỗi vùng x 3: Phải có đủ số từ 1-9 không trùng số vùng x3 1.3.3 Ý tưởng Chương trình giải dựa thuật tố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 toá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 toán kết thúc CHƯƠNG 2: CẤU TRÚC DỮ LIỆU V GIẢI THUẬT BI TỐN 2.1 Phát biểu tốn: - Đầu vào : Đề Sudoku đọc bảng từ file , người dùng nhập - Đầu (Kết quả): Đáp án bước giải Sudoku chương trình đáp án tồn chương trình (có thể nhiều đáp án đầu vào có nhiều đáp án) 2.2 Vấn đề: Chương trình giải dựa thuật giải quay lui Tư tưởng thuật giải chi nhỏ toán lớn thành tốn phần tử, giải tốn phần tử đó, ứng với trường hợp giải toán phần tử đó, ta tìm lời giải cho tốn phần tử toán lớn trở nên đầy đủ Ta nhận xét rằng, - Khi xét vị trí thứ i, ta đưa phương án để tiếp tục xét vị trí i+1, có phương án sẻ làm cho vị trí i+1, i+2… tìm tiếp phương án dẫn đến kết cuối (Gọi phương án khả thi) có phương án sẻ khơng có kết (gọi phương án bất khả thi) Vậy để chương trình chạy nhanh, ta cần phải loại bỏ phương án bất khả thi nhiều tốt - Thuật toán biểu diễn đệ quy ta cài đặt đệ quy sẻ khơng có lợi, phải sử dụng bô nhớ stack, gọi hàm đệ quy nhiều lần, điều làm chương trình sẻ chạy chậm, Vì ta cài đặt khơng đệ quy mà tin thần giải dựa phương pháp đệ quy Để làm điều này, cần phải có cách cho di chuyển thử khả ô dễ dàng 2.3 Cấu trúc liệu: Chúng ta tạo bảng trống bảng khác sau kiểm tra bảng hợp lệ solved(board) const possibilities = nextBoards(board) const validBoards = keepOnlyValid(possibilities) Solved.Chương trình duyệt ô mảng hai chiều, ô chương trình kiểm tra xem điền hay chưa, chưa điền chương trình duyệt hết tất giá trị chạy từ 1- xem giá trị điền vào ô xét Nếu trường hợp giá trị điền trước mà khơng thể điền giá trị chương trình quay lui lại thử với giá trị khác Cứ xét xong ô cuối mảng (ơ thứ 81) Tại chương trình xuất kết kết thúc chương trình Chúng ta sử dụng searchForSolution để tìm kiếm gải pháp cho tốn Nextboard: tìm hình vng trống tạo bảng khác điền vào hình vng với số findEmptySquar: lấy tọa độ cho ô chống keepOnlyValid: lọc tất bảng không hợp lệ da khỏi dang sách Rowsgood: Kiểm tra giá trị (có thể nhận giá trị từ 1-9) điền vào ô hay không Kiểm tra xem hàng có có giá trị hay chưa cách duyệt hết tất phần tử hàng đó, có loại bỏ khả ô nhận giá trị Columnsgood: Kiểm tra giá trị (có thể nhận giá trị từ 1-9) điền vào khơng Kiểm tra xem cột có mang giá trị chưa cách duyệt hết tất phần tử có cột, có loại bỏ khả nhận giá trị Boxesgood: Kiểm tra vùng ô với giá trị có giá trị từ đến Kiểm tra xem vùng ô có chứa giá trị chưa, có loại trừ khảnăng nhận giá trị k 1.4 2.4 Thuật toán quay lui: Thuật toán quay lui (backtracking) tên gọi nó, q trình tìm kiếm mà 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ọn Quá trình tìm kiếm thất bại khơng cịn điểm lựa chọn Độ phức tạp: Trong trường hợp xấu độ phức tạp quay lui cấp số mũ Vì mắc phải nhược điểm sau: •Rơi vào tình trạng "thrashing": trình tìm kiếm gặp phải bế tắc với ngun nhân •Thực cơng việc dư thừa: Mỗi lần quay lui, cần phải đánh giá lại lời giải đơi lúc điều khơng cần thiết •Khơng sớm phát khả bị bế tắc tương lai Quay lui chuẩn, khơng có chế nhìn tương lai để nhận biết nhánh tìm kiếm vào bế tắc 10 11 CHƯƠNG CI ĐẶT V ĐÁNH GIÁ THỬ NGHIỆM 3.1 Tổ chức chương trình: package sudoku; import import import import import import java.io.BufferedReader; java.io.File; java.io.FileReader; java.io.IOException; java.util.ArrayList; java.util.Arrays; /** * * @author otxtan *// public class SudokuSolver extends Thread { static static static static static int[][] sudokuBoard; boolean[][][] markMatrix; boolean[][] markRow; boolean[][] markCol; ArrayList list = new ArrayList(); public static ArrayList getList() { printResult(); return list; } public static void setList(ArrayList list) { SudokuSolver.list = list; } public static int[][] getTopic(String url) { int[][] bang = new int[9][9]; // doc du lieu tu file try { File file = new File(url); BufferedReader reader = new BufferedReader(new FileReader(file)); String line = ""; int m = 0, n = 0; while ((line = reader.readLine()) != null) { line = line.replaceAll(",", ""); int i = 0; if (n == 9) { n = 0; } while (i < 9) { 12 bang[m][n] = Integer.parseInt(Character.toString(line.charAt(i))); n++; i++; } m++; } reader.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return bang; } /** * gan nhung gia tri da ton tai la true cho column row va o 3*3 va bat dau giai */ public static void Solver() { Sudoku.list.clear(); // lay de bai sudokuBoard = getTopic(Sudoku.url); markMatrix = new boolean[3][3][9]; markRow = new boolean[9][9]; markCol = new boolean[9][9]; for (int i = 0; i < sudokuBoard.length; i++) { for (int j = 0; j < sudokuBoard[i].length; j++) { int currentNumber = sudokuBoard[i][j]; if (currentNumber != 0) { markRow[i][currentNumber - 1] = true; markCol[j][currentNumber - 1] = true; markMatrix[i / 3][j / 3][currentNumber - 1] = true; } } } Solve(0, 0); } /** * 1.neu i va j doc mang sudokuboard * 1.1 neu sudokuBoard[i][j]==0 thi duyet z chay tu 0->9 kiem tra markMatrix[i/3][j/3][z-1],markRow[i][z-1],markCol[j][z-1] * + chua duoc xet thi xet bien tren = true * + xet sudokuBoard[i][j]=z * + goi de qui Solve(i,j+1) voi phan tu tiep theo Row * + gap truong hop khong the dien so nao thi se quay lai 13 * + xet cho cac markMatrix[i/3][j/3][z-1],markRow[i][z-1],markCol[j][z1]=false, xet sudokuBoard[i][j]=0 * * 1.2 neu sudokuBoard[i][j]!=0 thi thi goi de quy ham Solve(i+1,j) * neu i =9 thi goi de quy ham Solve(i+1,j) * neu i>=9 va j>=9 thi tra ve ket qua * @param i * @param j */ public static void Solve(int i, int if (i < && j < 9) { if (sudokuBoard[i][j] == 0) for (int z = 1; z = 9) { Solve(i + 1, 0); } else { int[][] bang1 = new int[9][9]; for (int m = 0; m < 9; m++) { for (int n = 0; n < 9; n++) { bang1[m][n] = sudokuBoard[m][n]; } } Sudoku.list2.add(bang1); // System.exit(0); // Un-comment this if you want to find one solution only } } 14 /** * tra ve ket qua va dung chuong trinh */ private static void printResult() { int[][] bang = new int[9][9]; for (int i = 0; i < 9; i++) { for (int j = 0; j < 9; j++) { bang[i][j] = sudokuBoard[i][j]; } } Sudoku.list.add(bang); } @Override public void run() { Solver(); } public static void main(String[] args) { Solver(); } } 3.2 Giao diện - Bài tốn đưa lên web để tiếp cận với mợi người - Giúp người thao tác dẽ dàng - Giao diện cổ điển 15 Hình 2.1: Giao diện 16 3.3 Giao diện chọn đề bài: - Người dùng tìm kiếm đề mạng (có mức độ khó dễ khác nhau) - Phương thức dơn giản dẽ sử dụng Hình 2.2: Giao nhiện chọn đề 17 3.4 Giao diện sau chọn đề bài: Hình 2.3: Giao diện đề 18 3.5 Giao diện giải thuật tốn: Hình 2.3: Giao diện giải thuật tốn 3.6 Nhận xét: Chương trình giải số sudoku có kích thước 9x9 có mức độ từ dễ đến khó Hạn chế chương trình đưa đáp án liệu đầu vào q chương trình có thề khơng đưa kết Bài tốn sudoku tốn phức tạp nên nhóm thao tác với chế độ văn 19 KẾT LUẬN - sau chạy chương trình ta bảng sudoku 9*9 hồn thiện với hàng, cột có giá trị khoảng từ 1-9 không bị trùng lặp - thời gian chạy kết nhanh ta chương xem q trình chạy thuật tốn 20 TI LIỆU THAM KHẢO https://www.w3schools.com/Js/js_function_call.asp https://vi.wikipedia.org/wiki/Sudoku https://www.geeksforgeeks.org/backtracking-introduction/ 21

Ngày đăng: 11/06/2023, 10:30

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan