Từ đó mở ra một hướng pháttriển mới đầy mạnh mẽ.Dựa trên học máy và học sâu, trí tuệ nhân tạo ngày càng được“dạy” để thông minh hơn, nhanh hơn, gần gũi hơn.Nhắc đến các trò chơi thông mi
Trang 1BỘ MÔN: TRÍ TUỆ NHÂN TẠO
ĐỀ TÀI: Trò chơi đoán số
Lớp: 72DCTT23 GVHD: Đoàn Thị Thanh Hằng Thực hiện: Nhóm 4 – 72DCTT23
Lê Hoàng Diệu Nguyễn Tuấn Đạt
Lê Thị Phương Hoa
Vũ Khánh Hùng Nguyễn Đình Sơn
Hà Nội, 2023
Trang 22 Nguyễn Tuấn Đạt Code và phân tích module
4 Vũ Khánh Hùng Thuật toán và xây dựng Hoàn thành
5 Nguyễn Đình Sơn Phân tích bài toán và luật
sinh
Hoàn thành
Trang 3CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 10
2.1 Giới thiệu trò chơi 10
2.2 Lịch sử hình thành và phát triển của trò chơi 10
2.3 Ngôn ngữ lập trình Java 11
2.4 Tổng quan thuật toán tìm kiếm mù 13
2.4.1 Tìm kiếm theo chiều sâu 13
2.4.2 Tìm kiếm theo chiều rộng 14
2.4.3 Tìm kiếm sâu dần 14
CHƯƠNG 3: CÁC THUẬT TOÁN & QUY TRÌNH XÂY DỰNG CHƯƠNG TRÌNH 15
3.1 Phân tích bài toán 15
3.1.1 Mô tả đề bài 15
3.1.2 Không gian trạng thái 16
3.2 Thuật toán sử dụng 19
3.2.1 Tìm kiếm mù (Blind search) 19
3.2.2 Chiến lược Minimax 21
3.2.3 Thuật toán Mastermind 23
3.2.4 Cách hoạt động của thuật toán vào bài toán 23
3.2.5 Luật sinh trong thuật toán tìm số 24
CHƯƠNG 4: CÁC MODULE QUAN TRỌNG CỦA CHƯƠNG TRÌNH .26
4.1 Module chọn số ngẫu nhiên 26
4.2 Module lập danh sách số thỏa mãn 26
4.3 Module loại bỏ chữ số sai 27
4.4 Vòng lặp trò chơi 27
TÀI LIỆU THAM KHẢO 28
Trang 4chức năng, hành vi giống với con người Từ đó mở ra một hướng pháttriển mới đầy mạnh mẽ.
Dựa trên học máy và học sâu, trí tuệ nhân tạo ngày càng được
“dạy” để thông minh hơn, nhanh hơn, gần gũi hơn
Nhắc đến các trò chơi thông minh, trò chơi trí tuệ không thể không
kể tới trò chơi tìm số hay được biết đến với cái tên tiếng Anh là BullsAnd Cows Đây là một trò chơi đòi hỏi sự tư duy, phân tích của ngườichơi với các con số Vậy, một tác nhân thông minh sẽ làm gì để xử lý bàitoán ấy và chúng ta có thể “dạy” những tác nhân đó thông mình như thếnào?
Thay vì tư duy và phân tích bằng não bộ như con người, AI sẽ
“học” dựa trên các thuật toán mà lập trình viên đã thiết lập cho nó Từ đó
đề xuất hướng giải quyết bài toán, cũng như đưa ra đáp án chuẩn xác theoyêu cầu
Bài báo cáo hôm nay sẽ trình bày về các cơ sở lý thuyết và cácthuật toán được sử dụng để một tác nhân thông minh có thể xử lý đượcbài toàn tìm số này “thông minh” nhất
Trang 5CHƯƠNG 1: TỔNG QUAN TRÍ TUỆ NHÂN TẠO
1.1 Giới thiệu về trí tuệ nhân tạo
Chắc hẳn trong đời sống chúng ta đã từng được nghe nói đến trí tuệnhân tạo Nhiều người đã biết nó là gì, đã biết về nó và khai thác, ứngdụng nó để tạo ra một số thành tựu nhất định Bên cạnh đó nhiều ngườivẫn chưa hiểu biết về trí tuệ nhân tạo Vậy trí tuệ nhân tạo là gì? Tiềmnăng và tương lai của trí tuệ nhân tạo ra sao?
1.2 Trí tuệ nhân tạo là gì?
Để hiểu về trí tuệ nhân tạo (artificial intelligence) là gì thì chúng ranên bắt đầu với khái niện sự bay nhân tạo (flying machinese)
Đã từ lâu, loài người mong muốn làm ra một cái máy bay mà cóthể di chuyển được trên không trung mà không phụ thuộc vào địa hình ởdưới mặt đất hay nói cách khác là máy có thể bay được Những chiếcmáy biết bay được thiết kế theo nguyên lý “vỗ cánh” như con chim chỉ cóthể bay được quãng đường rất ngắn và lịch sử hàng không thực sự sangmột trang mới kể từ anh em nhà Wright thiết kế máy bay dựa trên cácnguyên lý của khí động lực học (aerodynamics)
Quay lại câu hỏi trí tuệ nhân tạo là gì? Trí tuệ nhân tạo hay tríthông minh nhân tạo (Artifical intelligence – viết tắt là AI) là một ngànhthuộc lĩnh vực Khoa học máy tính (Computer science) Là trí thông minhđược thể hiện bằng máy móc được con người lập trình mô phỏng quátrình suy nghĩ và hoạt động như con người giúp máy tính có thể tự học, tựđưa ra các quyết định mà không cần lập trình trước hay nói cách khác đây
là quá trình mô phỏng bộ não của con người trên máy tính
1.3 Lịch sử phát triển trí tuệ nhân tạo
Vào năm 1943, Warren McCulioch và Walter Pitts bắt đầu thực
Trang 6của các noron thần kinh; phân tích các mệnh đề logic và lý thuyết dựđoán của Turing Các tác giả đã nghiên cứu đề xuất mô hình noron nhântạo, mỗi noron đặc trưng bởi hai trạng thái “bật”, “tắt” và phát hiện mạngnoron có khả năng học.
Thuật ngữ “Trí tuệ nhân tạo” (Artificial Intelligence – AI) đượcthiế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ộttrong những ngôn ngữ lập trình hàm tiêu biểu, được sử dụng trong lĩnhvực AI Sau đó, Alan Turing đưa ra “Turing test” như là một phươngphá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ươngtrình toán học sử dụng cơ sở tri thức đầu tiên thành công Marvin Minsky
và Seymour Papert đưa ra các chứng minh đầu tiên về giới hạn của cácmạng nơ-ron đơn giản Ngôn ngữ lập trình logic Prolog ra đời và đượcphát triển bởi Alain Colmerauer 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 trong y học, các hệ thốngnà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 AI như các hệ chuyên gia (expert systems) – một dạng của chươngtrình AI mô phỏng tri thức và các kỹ năng của một hoặc nhiều chuyên giacon người
Vào những năm đầu 1990 và đầu thế ký 21, AI đã đạt được nhữngthành tựu to lớn, 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ànhcô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ậptrung giải quyết các bài toán con cụ thể và một sự chuyển giao mới củacác nhà nghiên cứu cho các phương pháp toán học vững chắc và chuẩnkhoa học chính xác
Trang 71.4 Các 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ễ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 (được biể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ác phươ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ứcthì 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ễntri thức ở đây bao gồm các ngôn ngữ biểu diễn và các kỹ thuật xử lý trithứ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án lập luận trên ngônngữ đó 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 Hiệu quả củacác thuật toán lập luận thể hiện chi phí về thời gian và không gian dànhcho việc lập luận Tuy nhiê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 đạt cao thì thuật toán lập luận trên đó sẽ
có độ phức tạp lớn và ngược lại, ngôn ngữ đơn giản, có tính biểu đạt thấpthì thuật toán lập luận trên đó sẽ có hiệu quả cao Do đó, một thách thứclớn trong lĩnh vực AI là xây dựng các ngôn ngữ biểu diễ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 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ớicác nhiệm vụ đưa ra, và xác định dãy các hoạt động cần thực hiện để đạtđược mục đích
- Học máy (machine learning) là một lĩnh vực của trí tuệ nhân tạoliên quan đến việc nghiên cứu và xây dựng các kĩ thuật cho phép các hệthống "học" tự động từ dữ liệu để giải quyết những vấn đề cụ thể Qua
Trang 8quá trình này, máy tính xác định mô hình và quy luật từ dữ liệu, giúp dựđoán và ra quyết định một cách tự động Học máy có ứng dụng rộng rãitrong nhiều lĩnh vực như thị giác máy tính, xử lý ngôn ngữ tự nhiên, y tế,tài chính, quảng cáo trực tuyến và nhiều lĩnh vực
Một nhánh nhỏ trong học máy được quan tâm là học sâu (deeplearning) Học sâu là kỹ thuật sử dụng các mạng nơ-ron tương tự như cácnơ-ron của não người để xây dựng hệ thống học máy Đây là một sự kếthợp giữa toán học và khoa học thần kinh Kết quả của nó mang lại cực kỳ
to lớn, có thể coi là khởi nguyên của nhiều ngành công nghiệp mới Điềunày giúp cải thiện hiệu suất và đem lại đột phá trong khả năng hiểu và xử
lý thông tin từ dữ liệu lớn
- 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ụng trên ngôn ngữ của con người Các ứng dụng trong nhận dạngtiếng nói, nhận dạng chữ viết, dịch tự động, tìm kiếm thông tin,…
- Robotics: là lĩnh vực nghiên cứu và phát triển các robot hoặc máy
tự động, tập trung vào thiết kế, xây dựng, và lập trình các thiết bị tự động
có khả năng thực hiện các tác vụ và nhiệm vụ một cách độc lập hoặc theohướng dẫn Robotics sử dụng nhiều nguyên tắc từ Trí tuệ nhân tạo, cơkhí, điện tử và tự động hóa để phát triển các robot có khả năng tương tácvới môi trường xung quanh
1.5 Mặt tích cực và khó khăn của trí tuệ nhân tạo
Trí tuệ nhân tạo (AI) là một lĩnh vực có nhiều mặt tích cực và tiềmnăng lớn, nhưng cũng đối diện với nhiều khó khăn và thách thức
- Mặt tích cực của trí tuệ nhân tạo :
Giải quyết vấn đề phức tạp: AI có khả năng xử lí và phân tích dữ liệuphức tạp một cách nhanh chóng và hiệu quả, giúp giải quyết các vấn đềlớn và phức tạp như phân tích dữ liệu y tế, dự đoán thời tiết và tối ưu hoáquá trình sản xuất
Trang 9Tăng cường năng suất: AI có thể thực hiện các nhiệm vụ lặp đi lặp lạimột cách tự động giúp tăng cường năng suất và giảm công việc tay châncho con người.
Phát triển trí tuệ: Nghiên cứu trong lĩnh vực AI đã giúp con ngườihiểu rõ hơn về cách hoạt động của não bộ và học hỏi từ đó
Ứng dụng trong y tế: AI có tiềm năng lớn trong việc chuẩn đoánbệnh, dự đoán biến chứng và tạo ra các phương pháo điều trị hiệu quảhơn
- Khó khăn của trí tuệ nhân tạo :
Đạo đức và luân lý: Sử dụng AI có thể đặt ra nhiều vấn đề đạo đức vàluân lý chẳng hạn như quyền riêng tư, tự động hoá công việc và tạo ra vũkhí tự động
Khả năng thất nghiệp: AI có thể thay thế công việc của con ngườitrong nhiều ngành gây ra tình trạng thất nghiệp và sự bất ổn xã hội
Rủi ro an ninh: Sử dụng AI để tạo ra phần mềm độc hại hoặc tấn côngmạng có thể gây ra rủi ro an ninh lớn, từ việc đánh cắp dữ liệu cá nhânđến tấn công mạng quốc gia
Hạn chế trong hiểu biết và tư duy: Hiện tại AI vẫn có hạn chế trongviệc hiểu biết sâu rộng và tư duy đa chiều như con người Nó có thể gặpkhó khăn khi đối mặt với tình huống mới và phức tạp
Trang 10CHƯƠNG 2: CƠ SỞ LÝ THUYẾT
2.1 Giới thiệu trò chơi
Trò chơi "Đoán Số" là một trò chơi giải đố thú vị giữa một cậu bé
và máy tính Cậu bé nghĩ một con số bí mật (gọi là S) có 6 chữ số từ 1đến 6 Mục tiêu của máy tính là phải đoán được con số này chỉ trongkhông quá 6 lần dự đoán.Mỗi lần máy tính đưa ra một dãy số (gọi là M),mỗi số có 4 chữ số, và cậu bé sẽ cung cấp phản hồi dựa trên đúng chữ số
và đúng vị trí Cụ thể, cậu bé sẽ trả lời hai câu hỏi quan trọng: "Có baonhiêu chữ số trong M là chữ số trong S nhưng vị trí xuất hiện của mỗichữ số đó là sai?" và "Có bao nhiêu chữ số trong M là chữ số trong S vàđồng thời vị trí xuất hiện của mỗi chữ số đều đúng?"
Dựa vào phản hồi này, máy tính sẽ cố gắng điều chỉnh dãy số M đểngày càng tiến sát con số bí mật S Trò chơi tiếp tục lặp lại quá trình nàycho đến khi máy tính đoán đúng con số S hoặc đã dùng hết 6 lần dự đoán
Trò chơi "Đoán Số" không chỉ mang lại niềm vui và thách thức, màcòn giúp phát triển khả năng tư duy logic và kỹ năng suy luận của cả haingười chơi Mỗi lượt đoán mới là một cơ hội để máy tính hiểu rõ hơn vềcon số bí mật của cậu bé, tạo ra một trải nghiệm giải đố đầy hứng thú
2.2 Lịch sử hình thành và phát triển của trò chơi
Trò chơi "Đoán Số" có một lịch sử dài và là một trò chơi giải đốphổ biến đã xuất hiện trong nhiều phiên bản và biến thể khác nhau quacác thập kỷ Dưới đây là một cái nhìn tổng quan về lịch sử hình thành củatrò chơi này:
- Trò chơi "Đoán Số" được cho là có nguồn gốc từ một số trò chơitruyền thống như "Cows and Bulls" hay "Bulls and Cows," nổi tiếng từthập kỷ 1960 Trò chơi này được thiết kế để thách thức người chơi trongviệc suy luận và tìm ra một dãy số ẩn
Trang 11- Trò chơi Mastermind, do Mordecai Meirowitz phát minh vào nhữngnăm 1970, cũng đóng một vai trò lớn trong sự phát triển của trò chơi
"Đoán Số" Mastermind yêu cầu người chơi đoán đúng một dãy màu sắcđược ẩn, và nó đã trở thành một trò chơi cổ điển trong thế giới của tròchơi logic và chiến thuật
- Vào những năm 1970 - 1980:Trò chơi "Đoán Số" trở nên phổ biếnhơn với sự phát triển của máy tính cá nhân và trò chơi trên máy tính.Nhiều phiên bản máy tính của trò chơi được tạo ra, mở ra cơ hội để ngườichơi tham gia một cách tự động và tương tác với máy
- Đến nay thì trò chơi "Đoán Số" vẫn tồn tại và phát triển trong nhiềuhình thức khác nhau Nó thường xuất hiện trong các ứng dụng trên điệnthoại di động, trang web giải đố trực tuyến và trong các sự kiện giải trí
2.3 Ngôn ngữ lập trình Java
Java được biết đến là ngôn ngữ lập trình bậc cao, hướng đối tượng vàgiúp bảo mật mạnh mẽ, và còn được định nghĩa là một Platform Javađược phát triển bởi Sun Microsystems, do James Gosling khởi xướng và
ra mắt năm 1995 Java hoạt động trên rất nhiều nền tảng như Windows,Mac và các phiên bản khác nhau của UNIX
- Tính năng nổi bật của ngôn ngữ Java :
+ Sự đơn giản, bảo mật và tính di động
+ Về tính đơn giản, có thể nói Java là ngôn ngữ lập trình dễ tiếp cận
và dễ học nhất so với các ngôn ngữ lập trình khác hiện nay Vì vậy cáclập trình viên, nhà phát triển ứng dụng có thể sử dụng nó để xây dựngphần mềm
+ Java an toàn và bảo mật nhờ trình thông dịch JVM Sau khi đượccài đặt với Java, JVM được cập nhật liên tục với các chương trình bảomật mới nhất từ Internet
Trang 12+ Cuối cùng, Java có tính di động vì nó dựa trên nguyên tắc “Viếtmột lần, chạy mọi nơi” Lập trình viên có thể sử dụng Java để viết mãtrên bất kỳ máy tính nào theo ý muốn.
- Ưu điểm của ngôn ngữ Java :
+ Java là nền tảng độc lập
+ Java là hướng đối tượng
+ Lý do chính khiến Java an toàn là con trỏ, Java không sử dụng contrỏ
+ Trong Java có thể đạt được đa luồng
+ Java mạnh mẽ vì nó có nhiều tính năng như thu gom rác, không sửdụng con trỏ, xử lý ngoại lệ
+ Java là một ngôn ngữ dễ hiểu
+ Quản lý bộ nhớ hiệu quả được thực hiện bằng cách sử dụng Ngônngữ lập trình Java
- Nhược điểm của ngôn ngữ Java :
+ Là một ngôn ngữ cấp cao, nó phải xử lý các cấp độ biên dịch vàtrừu tượng của một máy ảo Java thể hiện hiệu suất kém, nguyên nhânchính là do bộ thu gom rác cấu hình bộ nhớ đệm không hợp lệ và bế tắcgiữa các quy trình
+ Để viết mã để thực hiện một tập hợp các thao tác đơn giản, bạn cóthể phải viết những đoạn mã dài và phức tạp Điều này có thể ảnh hưởngđến khả năng đọc nhưng đảm bảo rằng các lập trình viên phải nhập chínhxác những gì cần phải làm
- Ứng dụng ngôn ngữ Java :
+ Phát triển ứng dụng cho thiết bị di động
+ Phát triển ứng dụng cho máy tính
+ Phát triển game
+ Phát triển các ứng dụng dựa trên trí thông minh nhân tạo
+ Ứng dụng Java trong Big Data
Trang 13+ Ứng dụng trong điện toán đám mây.
2.4 Tổng quan thuật toán tìm kiếm mù
Thuật toán tìm kiếm là một phần của trí tuệ nhân tạo (AI) và khoahọc máy tính Nó đề cập đến quá trình sắp xếp, lọc, và tìm ra các kết quảhoặc giải pháp tốt nhất trong một tập hợp lớn các dữ liệu hoặc không giantìm kiếm
Thuật toán tìm kiếm mù là kỹ thuật tìm kiếm mà trong đó chúng takhông có hiểu biết gì về các đối tượng để có hướng dẫn tìm kiếm mà chỉđơn thuần xem xét các đối tượng theo một hệ thống nào đó để phát hiện
ra đối tượng cần tìm
- Các chiến lược tìm kiếm mù:
+ Tìm kiếm theo chiều sâu (Depth First Search - DFS)
+ Tìm kiếm theo chiều rộng (Breadth First Search - BFS)
+ Tìm kiếm sâu dần (Iterative Deepening Search - IDS)
2.4.1 Tìm kiếm theo chiều sâu
Thuật toán Depth First Search (DFS – Tìm kiếm theo chiều sâu) làmột dạng thuật toán duyệt hoặc tìm kiếm trên cây hoặc đồ thị Trong lýthuyết khoa học máy tính, thuật toán DFS nằm trong chiến lược tìm kiếm
mù (tìm kiếm không có định hướng, không chú ý đến thông tin, giá trịđược duyệt) được ứng dụng để duyệt hoặc tìm kiếm trên đồ thị
- Mô tả thuật toán:
Từ đỉnh (nút) gốc ban đầu
Trang 14 Duyệt đi xa nhất theo từng nhánh.
Khi nhánh đã duyệt hết, lùi về từng đỉnh để tìm và duyệt nhữngnhánh tiếp theo
Quá trình duyệt chỉ dừng lại khi tìm thấy đỉnh cần tìm hoặc tất cảđỉnh đều đã được duyệt qua
2.4.2 Tìm kiếm theo chiều rộng
Thuật toán Breadth First Search (BFS - Tìm kiếm theo chiều rộng)
là thuật toán xét (duyệt) hoặc tìm kiếm trên cây và đồ thị, có chiến lượctìm kiếm mù (tìm kiếm không có định hướng, không chú ý đến thông tin,giá trị được duyệt)
- Mô tả thuật toán: