BÀI TẬP LỚN MÔN TRÍ TUỆ NHÂN TẠO NGHIÊN CỨU VÀ XÂY DỰNG GHOST-PACMAN TRÊN THUẬT TOÁN DFS

24 4 0
Tài liệu đã được kiểm tra trùng lặp
BÀI TẬP LỚN MÔN TRÍ TUỆ NHÂN TẠO NGHIÊN CỨU VÀ XÂY DỰNG GHOST-PACMAN TRÊN THUẬT TOÁN DFS

Đ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

BỘ GIÁO DỤC VÀ ĐÀO TẠOTRƯỜNG ĐẠI HỌC KIẾN TRÚC

BÀI TẬP LỚN MÔN TRÍ TUỆ NHÂN TẠO

NGHIÊN CỨU VÀ XÂY DỰNG GHOST-PACMAN TRÊN THUẬT TOÁN DFS

Giảng viên hướng dẫn: Nguyễn Thị HuệNhóm: 7

Sinh viên thực hiện: Lưu Việt Dương (Nhóm trưởng)Nguyễn Quốc Việt Hùng

Phạm Đức TrịnhĐỗ Vĩnh ĐạiĐỗ Anh Tuấn

Hà Nội, tháng 10 năm 2023

Trang 2

MỤC LỤC

MỤC LỤC 2DANH MỤC VIẾT TẮT 4DANH MỤC HÌNH ẢNH _5LỜI NÓI ĐẦU 6CHƯƠNG 1 TỔNG QUAN VỀ ĐỀ TÀI _71.1 Tổng quan về trí tuệ nhân tạo 7

1.1.1 Khái niệm 71.1.2 Lịch sử phát triển 71.1.3 Các lĩnh vực nghiên cứu và ứng dụng cơ bản 81.1.4 Những vấn đề chưa được giải quyết 91.1.5 Các hướng phát triển _9

1.2 Tổng quan về đề tài _9

1.2.1 Ý tưởng 91.2.2 Cách chơi _101.2.3 Phương hướng _10

1.3 Các công nghệ sử dụng trong đề tài _10

1.3.1 Ngôn ngữ Python _101.3.2 Thư viện Time _111.3.3 Thư viện Imple Object Oriented Graphics 11

CHƯƠNG 2 ỨNG DỤNG THUẬT TOÁN DFS VÀO PACMAN _122.1 Thuật toán DFS tổng quát 12

2.1.1 Khái niệm. 122.1.2 Mô tả thuật toán DFS qua đồ thị. _132.1.3 Ưu nhược điểm _14

2.2 Áp dụng thuật toán vào dự án _14

2.2.1 Trạng thái xuất phát _142.2.2 Thiết lập DFS 14

Trang 3

CHƯƠNG 3: TRIỂN KHAI HỆ THỐNG _153.1 Thiết lập bộ khung cơ bản 153.2 Khởi tạo môi trường hệ thống chính 173.3 Thiết lập thuật toán DFS _19TÀI LIỆU THAM KHẢO 24

Trang 4

DANH MỤC VIẾT TẮT

Trang 5

DANH MỤC HÌNH ẢNH

Trang 6

LỜI NÓI ĐẦU

Trí tuệ nhân tạo hiện đang đóng vai trò rất quan trọng trong cuộc sống hoạt động muôn màu muôn vẻ của thế giới.

Vậy “Trí tuệ nhân tạo - AI” là gì? AI – Aritifical Intelligence hay còn được gọilà trí tuệ nhân tạo là một ngành khoa học kỹ thuật liên quan đến máy móc thông minh Trí tuệ nhân tạo được thực hiện bằng cách nghiên cứu suy nghĩ của con người , các con người học hỏi, sự quyết định, cách làm việc khi gặp một vấn đề nào đó.

Thông qua quá trình nghiên cứu trên tạo thành một nền tảng quan trọng trong việc phát triển và tạo nên hệ thống máy móc thông minh rồi áp dụng nó vào mục địch khác nhau trong cuộc sống của nhân loại.

Với trí tuệ nhân tạo, nhân loại đã có thể giải quyết nhiều vấn đề một cách tốt hơn Để tìm hiểu sâu hơn về AI nói chúng cũng như các thuật toán tìm kiếm nói riêng, nhóm xin triển khai việc nghiên cứu và xây dựng Ghost-Pacman dựa trên thuật toán DFS.

Do thời gian hạn chế cũng như việc kỹ năng có thể thiếu sót trong hiểu biết về xây dựng phần mềm và trí tuệ nhân tạo, nghiên cứu và xây dựng của nhóm vẫn sẽ còn nhiều hạn chế Rất mong nhận được sự đóng góp ý kiến từ thầy cô.

Trang 7

CHƯƠNG 1 TỔNG QUAN VỀ ĐỀ TÀI1.1 Tổng quan về trí tuệ nhân tạo

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 Đồng thời,ông cũng đề xuất ngôn ngữ lập trình Lisp – một trong những ngôn ngữ lập trình hàmtiê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 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ánhọc sử dụng cơ sở tri thức đầu tiên thành công Marvin Minsky và Seymour Papert đưara các chứng minh đầu tiên về giới hạn của các mạng nơ-ron đơn giản Ngôn ngữ lậptrình logic Prolog ra đời và được phát triển bởi Alain Colmerauer Ted Shortliffe xâydựng thành công một số hệ chuyên gia đầu tiên trợ giúp chẩn đoán trong y học, các hệthống này sử dụng ngôn ngữ luật để biểu diễn tri thức và suy diễn.

Vào đầu những năm 1980, những nghiên cứu 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 trithức và các 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 đã đạt được những thành tựu to lớnnhất, AI được áp dụng trong logic, khai phá dữ liệu, chẩn đoán y học và nhiều lĩnh vựcứng 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ăngtí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 các mốiquan hệ giữa AI và các lĩnh vực khác giải quyết các bài toán tương tự, và một sự

Trang 8

chuyển giao mới của các nhà nghiên cứu 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.1.3 Các lĩnh vực nghiên cứu và ứng dụng cơ bản

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 thức mới) từ những giả thiết đã cho (đượcbiểu diễn dưới dạng cơ sở tri thức) Như vậy, để thực hiện lập luận người ta cần có cácphương pháp lưu trữ cơ sở tri thức và các thủ tục lập luận trên cơ sở tri thức đó.

Biểu diễn tri thức: Muốn máy tính có thể lưu trữ và xử lý tri thức thì cần cócá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 ở đây bao gồmcác ngôn ngữ biểu diễn và các kỹ thuật xử lý tri thức Một ngôn ngữ biểu diễn tri thứcđượ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ánlập luận trên ngôn ngữ đó Tính biểu đạt của ngôn ngữ thể hiện khả năng biểu diễn mộtphạm vi rộng lớn các thông tin trong một miền ứng dụng Tính hiệu quả của các thuậttoá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 Tuynhiên, hai yếu tố này dường như đối nghịch nhau, tức là nếu ngôn ngữ có tính biểu đạtcao thì thuật toán lập luận trên đó sẽ có độ phức tạp lớn (tính hiệu quả thấp) và ngượclạ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ệuquả cao) Do đó, một thách thức lớn trong lĩnh vực AI là xây dựng các ngôn ngữ biểudiễn tri thức mà có thể cân bằng hai yếu tố này, tức là ngôn ngữ có tính biểu đạt đủ tốt(tùy theo từng ứng 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ệmvụ đưa ra, và xác định dãy 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 cứu của AI đang được phát triển mạnh mẽ vàcó nhiều ứng dụng trong các lĩnh vực khác nhau như khai phá dữ liệu, khám phá trithức, …

Xử lý ngôn ngữ tự nhiên: là một nhánh của AI, tập trung vào các ứng dụngtrên ngôn ngữ của con người Các ứng 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ữngkế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ếtluậ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 thức hóa họcDENDRAL…

Trang 9

1.1.4 Những vấn đề chưa được giải quyết

Mặc dù đạt được nhiều thành tựu và có nhiều ứng dụng đáng kể, các hệ thốngtrí tuệ nhân tạo hiện nay chưa đạt được mức độ trí tuệ nhân tạo mạnh (strong AI) haytrí tuệ nhân tạo tổng quát (Artificial General Intelligence) Đây cũng được coi là vấnđề khó nhất và chưa được giải quyết Trí tuệ nhân tạo mạnh là khái niệm để chỉ khảnăng của máy tính thực hiện bất cứ công việc trí tuệ nào mà con người có thể thựchiện Khái niệm trí tuệ mạnh được sử dụng để phân biệt với trí tuệ nhân tạo yếu (weakAI) hay trí tuệ nhân tạo ứng dụng (applied AI), tức là dùng máy tính để giải quyết từngbài toán ra quyết định hay lập luận đơn lẻ Như vậy, trí tuệ nhân tạo mạnh đòi hỏi giảiquyết đầy đủ các công việc trí tuệ như người trong khi trí tuệ nhân tạo yếu giải quyếtbài toán cụ thể

Các khó khăn để đạt được trí tuệ nhân tạo tổng quát bao gồm khả năng thịgiác máy, xử lý ngôn ngữ tự nhiên, khả năng xử lý các tình hướng mới, tình huốngkhông ngờ tới khi giải quyết các bài toán thực tế Đây là những lĩnh vực mà máy tínhcòn thua kém con người Các hệ thống trí tuệ nhân tạo hiện nay có thể giải quyết tốtbài toán đặt ra trong một phạm vi hẹp Tuy nhiên, khi gặp vấn đề thực tế ở phạm virộng hơn, hệ thống trí tuệ nhân tạo thường không thể xử lý được các tình huống mới,vượt ra ngoài ngữ cảnh ban đầu của bài toán Ngược lại, con người có khả năng xử lýtốt hơn nhiều những trường hợp như vậy do có hiểu biết rộng về thế giới xung quanh.Việc trang bị cho máy tính lượng tri thức như con người hiện vẫn là vấn đề chưa đượcgiải quyết

1.1.5 Các hướng phát triển

Hiện nay trí tuệ nhân tạo có thể mang lại nhiều cơ hội phát triển theo nhiềukhuynh hướng khác nhau chẳng hạn như Tìm kiếm trong không gian, học máy, hệchuyên gia, nhân dạng và xử lý tiếng nói… Không chỉ dừng lại ở đó trí tuệ nhân tạongày càng phát triển mang lại nhiều khuynh hướng phát triển hơn nữa bên cạnh đó cácngành phát triển từ trí tuệ nhân tạo cũng ngày càng khó khăn hơn khi tìm kiếm tuyểnchọn người nội dung khắt khe hơn…

1.2 Tổng quan về đề tài1.2.1 Ý tưởng

Pacman là một trò chơi nổi tiếng khắp thế giới vào những năm đầu thập niên1980, ngày nay dù đã không còn nổi tiếng như ngày đó nhưng vẫn không thể khôngcông nhận sự thú vị trong trò chơi này.

Trang 10

Nhằm lưu giữ lấy một trò chơi thế kỷ dựa vào thuật toán hiện đại DFS hyvọng có thể mang lại sự sống mới cho trò chơi tuyệt vời này.

1.2.2 Cách chơi

Với mục đích thiết kế thuật toán tìm kiếm đường đi cho nhân vật Ghost, thiếtkế trò chơi sẽ cho thấy rõ ràng phương pháp tìm kiếm đường đi của nhân vật Ghost khiđịnh vị vị trí của Pacman trên bản đồ.

Lý do lựa chọn ngôn ngữ do các ưu điểm tối ưu của ngôn ngữ như sau:

Đơn giản, dễ học: Python có cú pháp rất đơn giản, rõ ràng Nó dễ đọc và viếthơn rất nhiều khi so sánh với những ngôn ngữ lập trình khác như C++, Java, C#.Python làm cho việc lập trình trở nên thú vị, cho phép bạn tập trung vào những giảipháp chứ không phải cú pháp.

Miễn phí, mã nguồn mở: Bạn có thể tự do sử dụng và phân phối Python, thậmchí là dùng cho mục đích thương mại Vì là mã nguồn mở, bạn không những có thể sửdụng các phần mềm, chương trình được viết trong Python mà còn có thể thay đổi mãnguồn của nó Python có một cộng đồng rộng lớn, không ngừng cải thiện nó mỗi lầncập nhật.

Khả năng di chuyển: Các chương trình Python có thể di chuyển từ nền tảngnày sang nền tảng khác và chạy nó mà không có bất kỳ thay đổi nào Nó chạy liềnmạch trên hầu hết tất cả các nền tảng như Windows, macOS, Linux.

Khả năng mở rộng và có thể nhúng: Giả sử một ứng dụng đòi hỏi sự phức tạprất lớn, bạn có thể dễ dàng kết hợp các phần code bằng C, C++ và những ngôn ngữkhác (có thể gọi được từ C) vào code Python Điều này sẽ cung cấp cho ứng dụng của

Trang 11

bạn những tính năng tốt hơn cũng như khả năng scripting mà những ngôn ngữ lập trìnhkhác khó có thể làm được.

Ngôn ngữ thông dịch cấp cao: Không giống như C/C++, với Python, bạnkhông phải lo lắng những nhiệm vụ khó khăn như quản lý bộ nhớ, dọn dẹp những dữliệu vô nghĩa, Khi chạy code Python, nó sẽ tự động chuyển đổi code sang ngôn ngữmáy tính có thể hiểu Bạn không cần lo lắng về bất kỳ hoạt động ở cấp thấp nào.

Thư viện tiêu chuẩn lớn để giải quyết những tác vụ phổ biến: Python có mộtsố lượng lớn thư viện tiêu chuẩn giúp cho công việc lập trình của bạn trở nên dễ thởhơn rất nhiều, đơn giản vì không phải tự viết tất cả code Ví dụ: Bạn cần kết nối cơ sởdữ liệu MySQL trên Web server? Bạn có thể nhập thư viện MySQLdb và sử dụng nó.Những thư viện này được kiểm tra kỹ lưỡng và được sử dụng bởi hàng trăm người Vìvậy, bạn có thể chắc chắn rằng nó sẽ không làm hỏng code hay ứng dụng của mình.

Hướng đối tượng: Mọi thứ trong Python đều là hướng đối tượng Lập trìnhhướng đối tượng (OOP) giúp giải quyết những vấn đề phức tạp một cách trực quan.Với OOP, bạn có thể phân chia những vấn đề phức tạp thành những tập nhỏ hơn bằngcách tạo ra các đối tượng.

1.3.2 Thư viện Time

Thư viện Time trong Python cung cấp nhiều cách biểu diễn thời gian trongcode, chằng hạn như đối tượng, số, chuỗi… Thư viện này cũng cung cấp chức năngkhác ngoài việc đại diện cho thời gian như chờ đợi trong quá trình thực thi đoạn mã,đo lường độ hiệu quả của mã.

Mặc dù thư viện này luôn có sẵn nhưng không phải tất cả các chức năng đềucó sẵn trên tất cả các nền tảng khác nhau Hầu hết các hàm được định nghĩa trong thưviện Time đều gọi các hàm thư viện nền tảng C có cùng tên Đôi khi có thể hữu ích khitham khảo tài liệu nền tảng vì ngữ nghĩa của các chức năng này khác nhau giữa cácnền tảng.

Ngoài ra thư viện này còn cho phép tạm dừng việc thực thi mã của mình trongmột số giây nhất định Điều này có thể hữu ích để tạo độ trễ hoặc tạm dừng trongchương trình.

1.3.3 Thư viện Imple Object Oriented Graphics

Thư viện đồ họa hướng đối tượng đơn giản được thiết kế để giúp những ngườimới lập trình có thể dễ dàng thử nghiệm đồ họa máy tính phương thức hướng đốitượng Thư viện này được viết bởi John Zelle để sử dụng cùng với cuốn sách " Python

Trang 12

Programming: An Introduction to Computer Science – Tạm dịch: Lập trình Python:Giới thiệu về Khoa học máy tính" (Franklin, Beedle & Associates).

Thư viên này là phần mềm mã nguồn mở được phát hành theo các điều khoảncủa GPL Thư viện này là một trình bao bọc xung quanh Tkinter và sẽ chạy trên bất kỳnền tảng nào có Tkinter Nguyên tắc sử dụng đặt tệp “graphics.py” nơi Python có thểthấy.

Thư viện này chứa hai loại đối tượng trong thư viện Lớp GraphWin triển khaimột cửa sổ nơi có thể thực hiện việc vẽ và cung cấp nhiều GraphicsObject khác nhauđể có thể vẽ vào GraphWin.

Các đối tượng được triển khai trong từ lớp GraphWin hỗ trợ chuyển đổi tọa độthông qua phương thức setCoords và các phương thức tương tác chuột và bàn phím.

Thư viện cung cấp các đối tượng đồ họa sau: Point (Điểm), Line (Đường),Circle (Hình tròn), Oval (Hình bầu dục), Rectangle (Hình chữ nhật), Polygon (Đagiác), Text (Văn bản), Entry (Nhập văn bản), Image (Hình ảnh).

Các thuộc tính khác nhau của các đối tượng đồ họa có thể được đặt như màuđường viền, màu tô và độ rộng Các đối tượng đồ họa cũng hỗ trợ di chuyển và ẩn nấpđể tạo hiệu ứng hoạt ảnh.

CHƯƠNG 2 ỨNG DỤNG THUẬT TOÁN DFS VÀO PACMAN2.1 Thuật toán DFS tổng quát

2.1.1 Khái niệm.

Thuật toán DFS là một dạng thuật toán tìm kiếm trên đồ thị nút điểm hay cây.Trong lý thuyết khoa học máy tính, thuật toán DFS nằm trong chiến lượng tìm kiếmmù (tìm kiếm không có định hướng, không chú ý đến giá trị thông tin, giá trị đượcduyệt).

Ý tưởng thuật toán triển khai thuật toán DFS cơ bản:

Duyệt xa nhất theo từng nhánh, khi nhánh đã duyệt hết, lùi về tìm và duyệtnhững nhánh tiếp theo Quá trình duyệt đỉnh chỉ dừng lại khi đã tìm thấy mục tiêuhoặc khi đã duyệt qua hết tất cả các đỉnh

Ngày đăng: 19/05/2024, 16:45

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

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

Tài liệu liên quan