Một ngôn ngữbiểu diễn tri thXc được đánh giá là “tốt” nếu nó có tính biểu đạt cao và các tính hiệuquả của thuật toán lập luận trên ngôn ngữ đó.. khả năng biểu diễn một phạm vi rộng lớn c
Trang 1TRƯỜNG ĐẠI HỌC ĐIỆN LỰC
KHOA CÔNG NGHỆ THÔNG TIN
BÁO CÁO CHUYÊN ĐỀ HỌC PHẦN
NHẬP MÔN TRÍ TUỆ NHÂN TẠO
ĐỀ T!I: GIẢI QUYẾT B!I TOÁN GHÉP TRANH
BẰNG THUẬT TOÁN A*
Sinh viên thực hiện : TỐNG SỸ AN
: NGUYỄN TIẾN DŨNG Giảng viên hướng dẫn : VŨ VĂN ĐỊNH
Hà Nội, tháng 11 năm 2022
Trang 2PHIẾU CHẤM ĐIỂM
Sinh viên thực hiện:
STT Sinh viên thực hiện Nhiệm vụ Chữ ký
Msv: 20810320138
Msv: 20810340181
Giảng viên chấm thi:
Họ tên giảng viên Chữ ký Ghi chú
Giảng viên số 1
Giảng viên số 2
MỤC LỤC
Trang 3LỜI MỞ ĐẦU 1
CHƯƠNG 1: GIỚI THIỆU VỀ AI 2
1.1 Khái niệm 2
1.2 Lịch sử 2
1.3 Lĩnh vực AI 3
CHƯƠNG 2: CÁC THUẬT TOÁN TÌM KIẾM TRONG AI 5
2.1 Giơi thiệu 5
2.2 Những thuật ngữ thông dụng trên cây và đồ thị tìm kiếm 5
2.3 Tìm kiếm trên cây và tìm kiếm trên đồ thị cây 9
2.4 Phân loại các giải thuật tìm kiếm 10
CHƯƠNG 3: Tìm kiếm thông tin đánh giá heuristic 11
3.1 Thông tin đánh giá heuristic 11
3.2 Thuật giải A* 16
CHƯƠNG 4: Giải quyết trò chơi ''8-puzzle''' thông qua các thuật toán tìm kiếm trong AI 22
4.1 Tổng quan 22
4.2 Thiết kế giao diện, chức năng bài toán 22
4.3 Kết quả bài toán 29
T!I LIỆU THAM KHẢO 35
KẾT LUẬN 36
Trang 4LỜI MỞ ĐẦU
Game ghép tranh (N-Puzzle) là một trò chơi khá hay và trí tuệ, nó được biếtđến với nhiều phiên bản và tên gọi khác nhau như: 8-puzzle, 15-puzzle, Bosspuzzle Bài toán N-puzzle là vấn đề cổ điển cho mô hình thuật toán liên quan đếntrí tuệ nhân tạo Bài toán đặt ra là phải tìm đường đi từ trạng thái hiện tại tới trạngthái đích Ở đây ta xét bài toán ghép tranh với giao diện đơn giản nhất là bài toán 8số
BaTi toaUn gôm mô Wt ma trận 3x3 caUc tranh được đaUnh thX tự từ 1 đến 8 TraWngthaUi ban đâu, caUc ô số được đaUnh thX tự ngâu nhiên, 1 ô trống đánh số 0 Nhiê Wm vuWcu[a ta laT pha[i săp xếp từ vị trí 0 với các ô lân cận sao cho đưa chuUng tr^ về đuUngthX tự (traWng thaUi điUch)
Chính vì vâ Wy ch`ng em đa đi đến viê Wc lựa chọn đề tài “ Giải quyết bài toán ghép tranh(8-puzzle) bằng thuật toán A*” cho bài tâ Wp lớn môn “ nhập môn trí tuệ
nhân tạo ” Ch`ng em vô cùng biết ơn Thây Vũ Văn Định, người trực tiếp giảngdạy, hướng dân nhiệt tình cho ch`ng em trong quá trình nghiên cXu và thực hiện đềtài này
Mặc dù đề tài đa hoàn thành, nhưng chăc chăn sẽ không thể tránh khỏi nhữngthiếu sót, vì vậy ch`ng em mong muốn nhận được các ý kiến đóng góp của các thây
cô để có thể hoàn thiện đề tài này một cách hoàn chỉnh hơn nữa
Chúng em xin chân thành cảm ơn!
Trang 5CHƯƠNG 1 GIỚI THIỆU VỀ AI1.1 Khái niệm
M.Minsky : ‘‘Trí tuệ nhân tạo nhằm mô phỏng bằng máy tính về hành độngthông minh của con người’’
Hai quan điểm về vai trò của máy tính trong ngành trí tuệ nhân tạo :
- Máy tính là phương tiện mô phỏng để thử một mô hình hay một định lý
- Máy tính có nhiều khả năng chủ động Do vậy cân cố găng tạo ra các máy
tính có khả năng thông minh như con người, như khả năng thu nhận trithXc, nhận dạng, suy luận hoặc ra quyết định
1.2 Lịch sử
Vào năm 1943, Warren McCulioch và Walter Pitts băt đâu thực hiện nghiêncXu ba cơ s^ lý thuyết cơ bản: triết học cơ bản và chXc năng của các noron thânkinh, phân tích các mệnh đề logic và lý thuyết dự đoán Turing Các tác giả đanghiên cXu đề xuất mô hình noron nhân tạo, mỗi noron đặc trưng b^i hai trạngthái “bật”, “tăt” và phát hiện mạng noron có khả năng học
Thuật ngữ “Trí tuệ nhân tạo” (Artificial Intelligence – AI) được thiết lập b^iJohn McCarthy tại Hội thảo đâu tiên về chủ đề này vào mùa hè năm 1956 Đôngthời, ông cũng đề xuất ngôn ngữ lập trình Lisp – một trong những ngôn ngữhàm tiêu biểu, được sử dụng trong lĩnh vực AI Sau đó, Alan Turing đưa ra
“Turing test” như là một phương pháp kiểm chXng 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
sử dụng cơ s^ tri thXc đâu tiên thành công Marvin Minsky và Seymour Papertđưa ra các chXng minh đâu tiên về giới hạn của các mạng nơ-ron đơn giản.Ngôn ngữ lập trình logic Prolog ra đời và được phát triển b^i Alain Colmerauer
Trang 6Ted Shortliffe xây dựng thành công một số hệ chuyên gia đâu tiên trợ gi`pchuẩn đoán y học, các hệ thống này sử dụng ngôn ngữ luật để biểu diễn tri thXc
và suy diễn
Vào đâu những năm 1980, những nghiên cXu thành công liên quan đến AInhư các hệ chuyên gia (expert systems) – một dạng của chương trình AI môphỏng tri thXc và kỹ năng phân tích của một hoặc nhiều chuyên gia con người Vào những năm 1990 và đâu thế kỉ 21, AI đa đạt được những thành tựu tolớn nhất, AI được áp dụng trong logic, khai phá dữ liệu, chuẩn đoán y học vànhiều lĩnh vực Xng dụng khác trong công nghiệp Sự thành công dựa vào nhiềuyếu tố: tăng khả năng tính toán của máy tính, tập trung giải quyết các bài toáncon cụ thể, xây dựng mối quan hệ giữa AI và cá lĩnh vực khác giải quyết các bàitoán tương tự và một sự chuyển giao mới của các nhà nghiên cXu cho cácphương pháp toán học vững chăc và chuẩn khoa học chính xác
1.3 Lĩnh vực của AI
⮚ Lập luận, suy diễn tự động: Khái niệm lập luận (reasoning), và suydiễn (reference) được sử dụng rất phổ biến trong lĩnh vực AI Lập luận là suy diễnlogic, dùng để chỉ một tiến trình r`t ra kết luận (tri thXc mới) từ những giả thiết đacho (được biểu diễn dưới dạng cơ s^ tri thXc) Như vậy, để thực hiện lập luận người
ta cân có các phương pháp lưu trữ cơ s^ tri thXc và các thủ tục lập luận trên cơ s^tri thXc đó
⮚ Biểu diễn tri thXc: Muốn máy tính có thể lưu trữ và xử lý tri thXc thìcân có các phương pháp biểu diễn tri thXc Các phương pháp biểu diễn tri thXc ^đây bao gôm các ngôn ngữ biểu diễn và các kỹ thuật xử lý tri thXc Một ngôn ngữbiểu diễn tri thXc được đánh giá là “tốt” nếu nó có tính biểu đạt cao và các tính hiệuquả của thuật toán lập luận trên ngôn ngữ đó Tính biểu đạt của ngôn ngữ thể hiện
Trang 7khả năng biểu diễn một phạm vi rộng lớn các thông tin trong một miền Xng dụng.Tính hiệu quả của các thuật toán lập luận thể hiện chi phí về thời gian và khônggian dành cho việc lập luận Tuy nhiên, hai yếu tố này dường như đối nghịch nhau,tXc là nếu ngôn ngữ có tínhbiểu đạt cao thì thuật toán lập luận trên đó sẽ có độphXc tạp lớn (tính hiệu quả thấp) và ngược lại (ngôn ngữ đơn giản, có tính biểu đạtthấp thì thuật toán lập luận trên đó sẽ có hiệu quả cao) Do đó, một thách thXc lớntrong lĩnh vực AI là xây dựng các ngôn ngữ biểu diễn tri thXc mà có thể cân bằnghai yếu tố này, tXc là ngôn ngữ có tínhbiểu đạt đủ tốt (tùy theo từng Xng dụng) và
có thể lập luận hiệu quả
⮚ Lập kế hoạch: khả năng suy ra các mục đích cân đạt được đối với cácnhiệm vụ đưa ra, và xác định day các hành động cân thực hiện để đạt được mụcđích đó
⮚ Học máy: là một lĩnh vực nghiên cXu của AI đang được phát triểnmạnh mẽ và có nhiều Xng dụng trong các lĩnh vực khác nhau như khai phá dữ liệu,khám phá tri thXc,…
⮚ Xử lý ngôn ngữ tự nhiên: là một nhánh của AI, tập trung vào các Xngdụng trên ngôn ngữ của con người Các Xng dụng trong nhận dạng tiếng nói, nhậndạng chữ viết, dịch tự động, tìm kiếm thông tin,…
⮚ Hệ chuyên gia: cung cấp các hệ thống có khả năng suy luận để đưa ranhững kết luận Các hệ chuyên gia có khả năng xử lý lượng thông tin lớn và cungcấp các kết luận dựa trên những thông tin đó Có rất nhiều hệ chuyên gia nổi tiếngnhư các hệ chuyên gia y học MYCIN, đoán nhận cấu tr`c phân tử từ công thXc hóahọc DENDRAL, …
Trang 8CHƯƠNG 2: Các thuật toán tìm kiếm trong AI
2.1 Giới thiệu
Tìm kiếm đóng vai trò chủ đạo trong phân lớn các khái niệm liên quan đếntrí tuệ nhân tạo Giải thuật này cung cấp một bộ khung có tính chất khái niệm củahâu hết mọi phương pháp tiếp cận đến sự khám phá có tính hệ thống của những sựchọn lựa
Ch`ng ta sẽ băt đâu với một vài yếu tố nền tảng, thuật ngữ, và các chiến lượcthực hiện cơ bản sau đó sẽ tìm hiểu bốn nhóm giải thuật tìm kiếm khác nhau về haikhía cạnh
- Sự khác nhau giữa tìm kiếm thông tin không đây đủ (uninformed search
hay lind search) và tìm kiếm thông tin đây đủ (informed search hayheuristic earch) Trong đó informed search sẽ truy xuất đến những thôngtin mang tính hất tác vụ chuyên biệt mà có thể được sử dụng nhằm mụcđích làm cho tiến trình tìm kiếm hữu hiệu hơn
- Sự khác nhau giữa phương pháp tìm kiếm theo một đương bất kỳ
(any-path earch) và tìm kiếm tối ưu (optional search) Optimal search tìm kiếmđối với một vài trường hợp
2.2 Những thuật ngữ thông dụng trên cây và đồ thị tìm kiếm
Những phương pháp tìm kiếm mà ch`ng ta sẽ gặp được định nghĩa trêncây(tree) là đô thị (graph) nên ch`ng ta phải nhăc lại một số thuật ngữ cân chonhững cấu tr`c ấy
- Cây được tạo ra từ những hình tròn và đường thẳng gọi là n`t(node) và
đường nối (link) được kết nối với nhau sao cho không tạo thành vòng
Trang 9khép kín N`t thỉnh thoảng được hiểu như là những đỉnh và đường nối làđường biên (Điều này thường gặp phổ biến khi xét một đô thị).
- Một cây có n`t gốc (root node) tại vị trí kh^i đâu của cây Mỗi n`t ngoại
trừ n`t gốc có một n`t cha (parent) n`t ngay trước nó, ^ mXc cao hơn nó
- Một cây có n`t gốc (root node) tại vị trí kh^i đâu của cây Mỗi nut ngoại
trừ n`t gốc có một n`t cha (parent) nut ngay trước nó, ^ mXc cao hơn nó
- Mỗi n`t ngoại trừ n`t cuối cùng (^ xa n`t gốc nhất) đối với mỗi nhánh,
đều có một n`t được nối tiếp sau nó (^ mXc thấp hơn nó) gọi là n`t con(children) N`t không có con như ^ trên gọi là n`t lá (leaf)
B là cha (parent) của C
C là con (child) của B
A là ông (ancestor) của C
C là cháu (descendant) của A
- Đô thị cũng là tập những n`t được nối với nhau bằng các đường nối (link)
và cho phép tạo thành vòng Bên cạnh đó, một n`t (node) có thể có nhiềucha (parent)
- Ch`ng ta có hai loại đô thị:
Trang 10+ Đô thị có hướng (directed graph): các đường nối có hướng (gân giốngnhư những đường một chiều)
Directed graph
+ Đô thị vô hương (undirected graph): các đường nối không xác định hướng (có thể
đi theo cả hai hướng)
Undirected graph
- Ví dụ: Xét mạng lưới đường giao thông hoặc lộ trình chuyến bay hoặc mạngmáy tính Điều ch`ng ta quan tâm ^ đây trong tất cả mọi trường hợp là tìm kiếmmột đường đi trên đô thị thoả man một vài yêu câu nào đó Chẳng hạn như ch`ng ta
có thể tìm kiếm một đường bất kỳ nào đó mà có số chặng là ít nhất
Lộ trình chuyến bay
Trang 11Tuy nhiên đô thị còn có thể trừu tượng hơn Xét một đô thị được định nghĩa nhưsau:
Đồ thị biểu thị những trạng thái có thể của thế giới khối
- Các n`t biểu thị sự mô tả trạng thái của thế giới khối, chẳng hạn một khối có thể
^ trên đỉnh một khối khác Và ^ đây các đường nối sẽ đại diện cho những hànhđộng thay đổi từ trạng thái này sang trạng thái khác
- Một đường xuyên suốt đô thị ( từ n`t kh^i đâu đến n`t đích ) được gọi là “một kếhoạch hành động (plan of action)” để đạt được một vài trạng thái đích mong đợi từmột vài trạng thái khư^i đâu đa biết
- Đô thị dạng này thường gặp rất nhiều trong AI
Trang 122.3 Tìm kiếm trên cây và tìm kiếm trên đồ thị
Cây là một lớp con của đô thị có hướng mặc dù đường kết nối giữa các n`t trong cây không có mũi tên định hướng Các kết nối trong cây không tạo thành vòng và mỗi n`t (ngoài trừ gốc) có một cha
Khi được yêu câu tìm kiếm trên một đô thị ch`ng ta có thể chuyển đổi sang tìm kiếm tương đương trên cây thông qua 2 bước sau:
- Chuyển kết nối vô hướng thành hai kết nối có hướng
- Tránh tạo thành vòng, hay tốt hơn là không được thăm một n`t hai lân.Ch`ng ta có thể xem xét một ví dụ chuyển đổi một đô thị thành một cây Giả
sử ^ đây, S là kh^i đâu của quá trình tìm kiếm và từ đó ch`ng ta cố găng để tìm ramột đường đến G thì ch`ng ta sẽ đi xuyên suốt đô thị và tạo ra những kết nối từmỗi n`t đến mỗi n`t được kết nối sao cho không tạo thành vòng và ngững bất cXkhi nào ch`ng ta tìm được G Lưu ý rằng mỗi cây như vậy có một lá cho mỗiđường không có vòng lặp trên đô thị kh^i đâu từ S
Tuy nhiên, cũng cân lưu ý rằng, mặc dù ch`ng ta tránh được những vòng lặphưng một vài n`t (được minh hoạ có cùng màu trong hình) lại được gặp lại hai lânrên cây Nói rõ hơn, những n`t trùng nhau này nằm ^ những đường không tạo thành
Trang 294.2.6 Chức năng giải BFS.
- Click vào button giải BFS thì người dừng phải đợi một ch`t để máy có thể
tự giải Tới khi nào phân đếm bước đi hiển thị số bước:
- Thì khi đó thuật toán đa được giải và sẽ hiển thị ra màn hình cả thời gian và
số bước duyệt để chọn ra được những trạng thái cuối cùng để người chơi có thể đi đến chiến thăng
4.2.7 Chức năng giải tối ưu.
- Khi bạn click vào button giải tối ưu thì người dùng sẽ chờ một ch`t Tới khi
mà phân đến bước đi hiển thị ra số bước đi thì khi đó trò chơi mới tự đượcmáy giải xong
Trang 30
- ChXc năng này cũng sẽ hiển thi ra các thời gian và số trạng thái đa được
duyệt qua để đi đến trạng thái kết th`c
- Việc hiển thị số bước để duyệt hay còn gọi là số trạng thái để đi đến trạng
thái cuối cùng, sẽ gi`p người dùng so sánh được hai phương pháp giải vớinhau
4.2.8 Chức năng thoát.
- Khi muốn tăt chương trình thì người dùng sẽ có chXc năng thoát Khí bạn
click vào thì sẽ hiển thị một thông báo xác nhận là bạn có muốn thoát haykhông
Trang 31- Người dùng chọn có thì chương trình sẽ thoát còn chọn không thì chương
trình vân sẽ tiếp tục
4.2.9 Chức năng đi lui và đi tới.
- Khi bạn đa chọn chXc năng giải BFS hoặc giải tối ưu chương trình đa thực
thi xong thì bạn sẽ chọn chXc năng đi tới và đi lui để đi từng bước tới trạngthái kết th`c
- ChXc năng này gi`p người chơi có thể hiểu được các bước giải của máy
thông qua việc đi từng bước từng bước
- Khi đa đi hết tất cả các bước thì bạn sẽ tới trạng thái kêt th`c.
Trang 324.2.10 Chức năng tính thời gian.
- Khi băt đâu vào trò chơi thì thời gian vân sẽ chưa được tính, cho đến khi
bạn băt đâu di chuyển trạng thái đâu tiên của một ô trên khung thì thời gian
sẽ băt đâu tính Hiểu nôm na sẽ là bạn di chuyển một ô thì thời gian sẽ bătđâu tính kể cả khi sau đó bạn không di chuyển thêm một ô nào khác thì thờigian vân sẽ tính
- ChXc năng tính thời gian cũng sẽ là một chXc năng đánh giá khả năng của
bạn tương tự như đếm bước đi của bạn vậy Bạn hoàn thành trong thời giancàng ngăn thì chXng tỏ bạn rất thông minh và chơi game này rất tốt
- Thời gian sẽ dừng khi trạng thái bạn hoàn thành sẽ là trạng thái kết th`c.
Hay nói cách khác là bạn đa xếp đ`ng hình thì thời gian sẽ dừng lại
4.3 Kết quả code.
4.3.1 Khởi tạo các mảng có thể phát sinh
Trang 354.3.2 Phân tách và kiểm tra đích.
Trang 364.3.3 Kiểm tra trạng thái.
Trang 374.3.4 Hàng đợi.
4.3.5 Sắp xếp các trạng thái.
Trang 384.3.6 In ra đường đi
Trang 39T!I LIỆU THAM KHẢO
1. Implementation,-Advantages,-Disadvantages_8881/
https://www.brainkart.com/article/Best-First-Search Concept,-Algorithm,-2. https://en.wikibooks.org/wiki/Artificial_Intelligence/Search/Exhaustive_search/Breadth-first_search
Trang 40https://stackoverflow.com/questions/6068856/c-sharp-swapping-objects-KẾT LUẬN
Sau một thời gian tìm hiểu và nghiên cXu cùng với sự chỉ dân của cô, ch`ng
em đa hoàn thành đề tài ghép tranh với thuật toán tìm kiếm A* Xong vân khôngthể tránh được những thiếu sót, mong thây có thể chỉ dân để báo cáo được hoànthiện
Bài ghép tranh trên thực hiện với ma trận 3X3 và có độ khó không cao Ch`ng
em sẽ tiếp tục nghiên cXu áp cho bài toán ghép tranh mXc độ khó hơn 4X4, 5X5,nXn,…