Nhập Môn Trí Tuệ Nhân Tạo Giải Quyết Bài Toán Ghép Tranh Bằng Thuật Toán A.pdf

40 1 0
Tài liệu đã được kiểm tra trùng lặp
Nhập Môn Trí Tuệ Nhân Tạo Giải Quyết Bài Toán Ghép Tranh Bằng Thuật Toán A.pdf

Đ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

Trang 1

TRƯỜ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 TRANHBẰNG THUẬT TOÁN A*

Sinh viên thực hiện: TỐNG SỸ AN: NGUYỄN TIẾN DŨNGGiảng viên hướng dẫn: VŨ VĂN ĐỊNH

Hà Nội, tháng 11 năm 2022

Trang 2

PHIẾU CHẤM ĐIỂM

Sinh viên thực hiện:

STT Sinh viên thực hiệnNhiệ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 3

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 4

LỜ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, Boss puzzle Bài toán N-puzzle là vấn đề cổ điển cho mô hình thuật toán liên quan đến trí 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ạng thá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 8 số.

BaTi toaUn gôm mô Wt ma trận 3x3 caUc tranh được đaUnh thX tự từ 1 đến 8 TraWng thaUi ban đâu, caUc ô số được đaUnh thX tự ngâu nhiên, 1 ô trống đánh số 0 Nhiê Wm vuW cu[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ề đuUng thX 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ánghé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ảng dạ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ững thiế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 5

CHƯƠNG 1 GIỚI THIỆU VỀ AI 1.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 động thô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 tri thXc, 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ên cXu 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ân kinh, phân tích các mệnh đề logic và lý thuyết dự đoán Turing Các tác giả đa nghiên cXu đề xuất mô hình noron nhân tạo, mỗi noron đặc trưng b^i hai trạng thá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^i John McCarthy tại Hội thảo đâu tiên về chủ đề này vào mùa hè năm 1956 Đông thờ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 6

Ted Shortliffe xây dựng thành công một số hệ chuyên gia đâu tiên trợ gi`p chuẩ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 AI như 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 to lớ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ều yế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án con 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ài toán tương tự và một sự chuyển giao mới của các nhà nghiên cXu cho các phươ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à suy diễn (reference) được sử dụng rất phổ biến trong lĩnh vực AI Lập luận là suy diễn logic, 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 đa cho (đượ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ệu quả 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 7

khả 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ông gian 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 đạt thấ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ớn trong 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ằng hai 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ác nhiệ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ển mạ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 Xng dụ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ận dạ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 ra nhữ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à cung cấ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ếng như 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óa học DENDRAL, …

Trang 8

CHƯƠ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 đến trí 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ủa hâ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ược thự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ề hai khí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 hay heuristic earch) Trong đó informed search sẽ truy xuất đến những thông tin 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ên cây(tree) là đô thị (graph) nên ch`ng ta phải nhăc lại một số thuật ngữ cân cho nhữ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 9

khé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ều cha (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ống như 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ạng má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ếm mộ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 11

Tuy 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 12

2.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 ra mộ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 cX khi 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ặp hư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ân rê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 29

4.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ự được má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ới nhau.

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 hay khô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ạng thá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 32

4.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ời gian 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 gian cà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 35

4.3.2 Phân tách và kiểm tra đích.

Trang 36

4.3.3 Kiểm tra trạng thái.

Trang 37

4.3.4 Hàng đợi.

4.3.5 Sắp xếp các trạng thái.

Trang 38

4.3.6 In ra đường đi

Trang 39

T!I LIỆU THAM KHẢO

Trang 40

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ông thể tránh được những thiếu sót, mong thây có thể chỉ dân để báo cáo được hoàn thiệ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,…

Ngày đăng: 04/05/2024, 12:47

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

Tài liệu liên quan