Hay câu chuyện đau lòng về một sản phụ và con đột tử ở phòng sinh trong khi chồng không hay biết vì mải chơi game khiến chúng ta cần suy ngẫm nhiều hơn về vấn đề này.[4] Để tạo ra sân ch
Trang 1
BO CONG THUONG TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP TP.HCM KHOA CONG NGHE THONG TIN
A
INDUSTRIAL
| UNIVERSITY OF HOCHIMINH CITY
NGUYEN TUAN KIET
LUU HOANG TIEN
XAY DUNG UNG DUNG TRI TUE NHAN TAO
BANG NGON NGU LAP TRINH JAVA
Chuyền ngành: Công nghệ Thông tin
Giảng viên hướng dẫn: ThS Đỗ Hà Phương
THÀNH PHÓ HỖ CHÍ MINH, THÁNG 12 2022
Trang 2
NGUYEN TUAN KIET LUU HOANG TIEN
BUIDING ARTIFICIAL INTELLIGENCE APPLICATIONS
WITH JAVA PROGRAMMING LANGUAGE
Major: Information Technology
Supervisor: MSc Do Ha Phuong
HO CHI MINH CITY, DECEMBER 2022
Trang 3
Building artificial intelligence applications with Java programing language
ABSTRACT Reason for choosing the topic:
In the current 4.0 era, entertainment is an indispensable need in life Entertainment has many forms such as watching movies, listening to music, playing
sports, and playing games is the form of entertainment of the vast majority of young people in the world Because of that need, many video games were born to
serve everyone Artificial intelligence is also applied to the game making it much
more diverse and interesting Therefore, our team decided to choose this topic to create an application that has many folk games adapted into video games With this application, we will create attractive video games that are not inferior to modern
games These folk games will bring new images, vivid sounds and diverse
gameplay to stimulate the curiosity of young people
Problems:
- Make the game more form and attractive
- Improved old gameplay
- Make artificial intelligence smarter
- Folk games will be more popular and not disappear
Methods:
Using technology such as: Java, Photoshop and read more related documents to
understand some problems of the topic
Trang 4LOI CAM ON
Trí tuệ nhân tạo là một học thuyết tìm cách để máy tính có được trí tuệ của con người Thông qua việc nghiên cứu của ngành khoa học này, khiến cho máy tính có được năng lực suy nghĩ, suy luận Máy tính có năng lực phán đoán logic cực nhanh và lượng ghi nhớ to lớn Cùng với sự phát triển của môn trí tuệ nhân tạo này, còn phải làm cho máy tính có được năng lực học tập gần với não người, khiến nó có thể ghi nhớ những bài học, tránh được cái sai lầm lặp lại, từ đó mà có thể hoàn thành trọn vẹn nhiệm vụ mà con
người giao cho, và phát huy hết chức năng thần kỳ của nó Sau khi
máy tính có được loại trí tuệ nào đó về một phương diện nào đó,
con người vẫn cố gắng khiến nó có được các trí tuệ khác về các
phương khác, trí tuệ nhân tạo là một ngành không ngừng phát
triển Sau khi chọn đề tài này, nhóm chúng em cũng đã bắt tay
xây dựng ứng dụng trò chơi dân gian để ứng dụng trí tuệ nhân tạo vào đó và giúp chúng ta giữ gìn mãi những di sản mà ông cha ta
được học trên trường, chúng em đã rất cố gắng và quyết tâm hoàn
thành khóa luận đúng thời gian quy định Nếu có gì sai trái hay thiếu sót, mong thầy cô thông cảm và bỏ quan cho chúng em Cuối cùng nhóm em xin kính chúc quý Thầy Cô, đặc biệt là thầy Đỗ
Trang 5Hà Phương mạnh khỏe, hạnh phúc, thành đạt và gặp được nhiều may mắn, thuận lợi trong cuộc sống
Chung em xin chân thành cảm on!
2022
Nhận Xét Của Giáo Viên Hướng Dẫn
Trang 6Tp Hé Chi Minh,ngay thang nam 2022
Giảng viên hướng dan
Nhận Xét Của Giáo Viên Phản Biện
Trang 8
33
4.1 Giới thiệu chương trình ứng dụng 33 4.1.1 Hệ thống menu trong trò chơi 33 4.1.2 Giao điện trò Chơợi 5-5 G5 s9 E5 85.59 085 59 n6 n3 59 se 34 4.1.3 Các nút chức năng cơ bản trong trò Chơï: 5 5 sss<<<s ss 36
sms 36 4.2.1 Ngôn ngữ và công cụ sử dụng 36 4.2.2 Các doạn code chính 36 4.3 Kết quả chạy chương fFÌn - 7o 5 5 5s s s9 1t mg gu sm 43
s sssse 45
45 s sse „ 45
45
¬" 46 TÀI LIỆU THAM KHẢO
Trang 10MO DAU
1 Đặt vấn đề
Trong nhiều năm qua, xã hội ngày càng phát triển và hiện đại hóa, đi cùng với nó là noảnh công nghệ thông tin luôn không ngừng phát triển và chiếm vai trò đặc biệt không thể thiếu trong mọi hoạt động Đáng nói hơn hết là sự phát triển của
công nghệ “Trí tuệ nhân tao (Artificial Intelligence - Al)” va nhitng lot ich ma tri
tuệ nó đã và đang đem lại cho con người AI được ứng dụng rất nhiều trong các lĩnh vực đời sống như: thương mại điện tử, giáo dục, robot, chăm sóc sức khỏe, nông nghiệp, tài chính, Chúng đều hướng tới mục đích chính là đáp ứng nhu cầu nhanh và tiệt kiệm sức lao động cho con người
Nhưng đặc biệt hơn AI còn có thé duoc ứng dụng vào các trò chơi điện tử hiện nay một cách rất phô biến và rộng rãi AI được dùng để tạo ra nhân vật trò chơi, khiến chúng trở nên linh hoạt hơn Ngoài ra trí tuệ nhân tạo còn được dùng đề
hỗ trợ người chơi khi họ gap vấn đề về trò chơi Phần mềm hỗ trợ thực tế ảo, như S1ri, Goople AssIstant và đặc biệt là Alexa của Amazon.[ 1]
Nhưng chính vì sự phát triển vượt bậc của những trò chơi hiện đại mà theo thời gian nhiều người dần quên đi những trò chơi dân gian truyền thông Mọi người dần thích nghi với cuộc sống hiện đại và ngại chơi những trò chơi dân g1an ngoài trời và tốn sức lực như: bịt mắt bắt đê, bắn bị, kéo co, nhảy dây, ô ăn quan, Với
sự phát triển nhanh chóng của trí tuệ nhân tạo AI, chắc chắn nhiều trò chơi mới và hấp dẫn hơn sẽ ra đời, những trò chơi dân gian sẽ không còn ai chơi vì thiếu sự đa dạng và hấp dẫn, không bao giờ cạnh tranh được với các tựa game mới
Do đó việc xây dựng lại và chuyển thể từ cách chơi truyền thống sang chơi trên các thiết bị điện tử của trò chơi dân gian là điều cần thiết Đồng thời ứng dụng công nghệ AI vào các trò chơi dân gian để tạo ra sự đa dạng, hấp dẫn đối với người chơi, khiến cho trò chơi dân gian sống mãi trong con người Việt Nam và sự thích thú đối với bạn bè quốc tế.
Trang 112 Ly do chon dé tai
Trong những năm gần đây, ngành công nghiệp thê thao điện tử đã phát triển mạnh mẽ và sôi nổi nhằm phục vụ cho nhu cầu giải trí của tất cả mọi HĐƯỜI Mỗi ngày Việt Nam có hàng trăm ngàn đến hàng triệu người giải trí bằng hình thức này
Những trò chơi điện tử mới, hấp dẫn lại nôi lên quá nhiều, điển hình như các game
Liên Minh Huyền Thoại, FiFa Online, Dota, Liên Quân Mobile, đã chiếm lĩnh hầu hết thị trường Việt Nam, làm phai mờ đi các trò chơi dân gian truyền thống của cha ông ta để lại Các trò chơi hiện đại tuy hấp dẫn và lôi cuốn nhưng nó lại đem lại một số yếu tố tiêu cực như là bạo lực, các hình ảnh đôi trụy, hoặc những tệ nạn xã
hội nằm trong nội dung trò chơi khiến cho trải nghiệm của người chơi dần xấu đi,
đặc biệt là ảnh hưởng trực tiếp đến các em nhỏ gây ra những hành động hoặc tư tưởng không tốt ngoài đời thực
Tháng 6-2019, Tổ chức Y tế thế giới (WHO) đã chính thức bỗ sung chứng nghiện game là một bệnh lý trong danh sách cập nhật phân loại bệnh quốc tế (ICD) Theo WHO, nghién game là một bệnh vé tam than Theo thong ké cua WHO, có tới
70 - 80% trẻ em từ 10 đến 15 tuôi thích game online, trong đó tỷ lệ trẻ bi nghiện chiếm khoảng 10 - 15% Tính đến quý 1⁄2021, theo Statista, Việt Nam có 91,3% người dùng Internet chơi game, trở thành quốc gia có tỉ lệ người chơi game/dân số cao thứ 6 trên thế giới.[2] Nghiện game có thê gây ra những triệu chứng của một số bệnh tâm thần khác như trầm cảm hoặc lo âu Bác sĩ CKI Phạm Đức Cường, Trưởng Khoa Tâm lý lâm sàng nhị, Bệnh viện Tâm thần Thanh Hóa, cho biết:
“Ngphiện game online sẽ để lại nhiều hệ lụy, gây ảnh hưởng lớn đến đời sống sinh
hoạt và đặc biệt là sức khỏe tính thần của trẻ em Trẻ được xác định nghiện game
khi trẻ nhập tâm vảo trò chơi yêu thích trong game, không kiểm soát được bản thân khỏi game, chơi ở bất cứ đâu, chơi game liên tục, không nghỉ trong nhiều giờ Trẻ thèm muốn việc chơi game hơn tất cả những việc khác trong cuộc sống, giảm khả
năng giao tiếp, sống thu mình Những người có các triệu chứng, biểu hiện rối loạn tâm lý liên quan đến nghiện game chủ yếu ở lứa tuôi thanh, thiếu niên Đây là thời
điểm các bạn trẻ có những thay đổi trong tâm lý và cũng dễ bị cám dỗ”.[3]
Trang 12Những người nghiện game, đặc biệt là giới trẻ, có thé bi suy giam suc khoe thé chat va tam lý, xao nhãng học hành, công việc, xa rời các quan hệ gia đình, xã hội, thậm chí có những hành vi vi phạm pháp luật Nhiều sự việc đau lòng xuất phát tir nghién game đã xảy ra Ngay đầu tháng 6 vừa qua, nam sinh lớp 11 tại huyện Quỳnh Lưu, tỉnh Nghệ An, giấu bé trai 5 tuổi dẫn đến cái chết thương tâm là do
“làm theo game” Hay câu chuyện đau lòng về một sản phụ và con đột tử ở phòng sinh trong khi chồng không hay biết vì mải chơi game khiến chúng ta cần suy ngẫm nhiều hơn về vấn đề này.[4]
Để tạo ra sân chơi bổ ích và lành mạnh cho các em nhỏ, cũng như để các trò chơi dân gian không bị biến mất, các trò chơi như ô ăn quan, cờ vua hoặc cở tướng
đã được chuyên thê thành trò chơi điện tử Tuy nhiên nó không được hấp dẫn và bắt mắt bằng những trò chơi thời hiện đại, đồng thời lối chơi đơn giản và không đa dạng khiến cho chúng không được mọi người chào đón và sử dụng nhiều Vì vậy, tạo ra ứng dụng để áp dụng trí tuệ nhân tạo vào trò chơi dân gian khiến cho chúng trở hấp dẫn hơn bởi những lối chơi khó nhẳn hơn, đa dạng hơn, tạo cảm giác thích thú muốn chinh phục của người chơi
Vì lí do kế trên, nhóm chúng tôi quyết định chọn đề tài: “Xây dựng ứng dụng trí tuệ nhân tạo bằng ngôn ngữ lập trình Java” nhằm kết hợp các giải thuật Cắt tỉa Alpha — Beta, Minimax cùng với chiến lược Tìm kiếm có đối thủ và Hàm lượng giá dé xây dựng trí tuệ nhân tạo trong trò chơi của ứng dụng Trước mắt là áp dụng trí tuệ nhân tạo vào trò chơi Ô ăn quan đề nâng cao độ khó và tính đối kháng
cho người chơi.
Trang 13CHƯƠNG 1: GIỚI THIỆU TRÒ CHƠI
11 Nguồn gốc trò chơi
Ô ăn quan, hay còn gọi tắt là ăn quan hoặc ô quan là một trò
trẻ em Việt Nam mà chủ yếu là các bé gái Đây là trò chơi có tính
Ô ăn quan và đề cập đến số ẩn (số âm) của ô trống xuất hiện trong khi chơi Ô ăn quan đã từng phổ biến ở khắp ba miền Bắc,
Trung, Nam của Việt Nam nhưng những năm gần đây chỉ còn được rất ít trẻ em chơi Bảo tàng Dân tộc học Việt Nam có trưng bày,
giới thiệu và hướng dẫn trò chơi này
Theo các nhà nghiên cứu, ô ăn quan thuộc họ trò chơi
mancala, tiéng A
Rap la mangala hoac mingala (khi phat am, trong am roi vao am tiết đầu ở Syria và âm tiết thứ hai ở (Ai Cập) có nguồn gốc từ động
từ naqala có nghĩa là di chuyển Bàn chơi mancala đã hiện diện ở
Ai Cập từ thời kỳ Đế chế (khoảng 1580 - 1150 TCN) Tuy nhiên còn
của mancala ở Ceylon(Srilanka) những năm đầu Công nguyên và ở
Trang 14A Rap trudc thoi Muhammad.[5]
Hinh 1.1: Ban choi
Ban choi: ban choi O an quan kẻ trên một mặt bằng tương
thước linh hoạt miễn là có thể chia ra đủ số ô cần thiết để chứa
quá lớn để thuận tiện cho việc di chuyển quân, vì thế có thể được
Trang 15nguyệt hoặc vòng cung gọi là 6 quan
Hình 1.2: Bố trí quân chơi
Quân chơi: gồm hai loại quan và dân, được làm hoặc thu thập
từ nhiều chất liệu có hình thể ổn định, kích thước vừa phải để người chơi có thể cầm, nắm nhiều quân bằng một bàn tay khi chơi Quan có kích thước lớn hơn dân đáng kể cho dễ phân
biệt với nhau Quân chơi có thể là những viên sỏi, gạch, đá, hạt
hoặc được sản xuất công nghiệp từ vật liệu cứng mà phổ biến là
cách đặt số lượng dân quy đổi vào ô quan
Người chơi: thường gồm hai người chơi, mỗi người ở phía ngoài cạnh dài hơn của hình chữ nhật và những ô vuông bên nào thuộc quyền kiểm soát của người chơi bên đó
Luật chơi
Trang 16Mục tiêu cần đạt được để giành chiến thắng: người thắng cuộc trong trò chơi này là người mà khi cuộc chơi kết thúc có tổng
số dân quy đổi nhiều hơn Tùy theo luật chơi từng địa phương hoặc
1 quan được quy đổi bằng 10 dân hoặc 5 dân
Di chuyển quân: từng người chơi khi đến lượt của mình sẽ di
phương án để có thể ăn được càng nhiều dân và quan hơn đối
Người thực hiện lượt đi đầu tiên thường được xác định bằng cách
thuận Khi đến lượt, người chơi sẽ dùng tất cả số quân trong một ô
do người đó chọn trong số 5 ô vuông thuộc quyền kiểm soát của
rải vào các ô, mỗi ô 1 quân, bắt đầu từ ô gần nhất và có thể rải
kim đồng hồ tùy ý Khi rải hết quân cuối cùng, tùy tình huống mà
xử lý tiếp như sau:
Hinh 1.3: Di chuyén quan
Nếu liền sau đó là một ô vuông có chứa quan thi tiếp tục dùng tất cả số quân đó để rải tiếp theo chiều đã chọn.
Trang 17Nếu liền sau đó là một ô trống (không phân biệt ô quan hay ô
dân) rồi đến một ô có chứa quân thì người chơi sẽ được ăn tất cả
số quân trong ô đó Số quân bị ăn sẽ được loại ra khỏi bàn chơi để
người chơi tính điểm khi kết thúc Nếu liền sau ô có quân đã bị ăn
lại là một ô trống rồi đến một ô có quân nữa thì người chơi có
quyền ăn tiếp cả quân ở ô này Do đó trong cuộc chơi có thể có phương án rải quân làm cho người chơi ăn hết toàn bộ số quân
trên bàn chơi chỉ trong một lượt đi của mình Một ô có nhiều dân thường được trẻ em gọi là ô nhà giàu, rất nhiều dân thì gọi là giàu
sụ Người chơi có thể bằng kinh nghiệm hoặc tính toán phương án nhằm nuôi ô nhà giàu rồi mới ăn để được nhiều điểm
Nếu liền sau đó là ô quan có chứa quân hoặc 2 ô trống trở lên hoặc sau khi vừa ăn thì người chơi bị mất lượt và quyền đi tiếp
thuộc về đối phương
Trường hợp đến lượt đi nhưng cả 5 ô vuông thuộc quyền kiểm soát của người chơi đều không có dân thì người đó sẽ phải dùng 5 dân đã ăn được của mình để đặt vào mỗi ô 1 dân để có thể thực hiện việc di chuyển quân Nếu người chơi không đủ 5 dân thì phải
vay của đối phương và trả lại khi tính điểm
Cuộc chơi sẽ kết thúc khi toàn bộ dân và quan ở hai ô quan
đã bị ăn hết Trường hợp hai ô quan đã bị ăn hết nhưng vẫn còn
dân thì quân trong những hình vuông phía bên nào coi như thuộc
về người chơi bên ấy; tình huống này được gọi là hết quan, tàn
Trang 18dân, thu quân, kéo về hay hết quan, tàn dân, thu quân, bán ruộng
Ô quan có ít dân (có số dân nhỏ hơn 5 phổ biến được coi là ít) gọi
là quan non và để cuộc chơi không bị kết thúc sớm cho tăng phần thú vị, luật chơi có thể quy định không được ăn quan non, nếu rơi vào tình huống đó sẽ bị mất lượt
chơi cũng mất lượt ngay dù ô đó có chứa quân hay không
Khi đến lượt đi người chơi có thể tính toán phương án đi của
mình trong một khoảng thời gian hợp lý hoặc phải đi ngay mà không được phép tính toán
Ô ăn quan cũng có thể được chơi với 3 hoặc 4 người chơi
trong đó cách di chuyển quân, thể thức tính điểm cũng giống như khi chơi hai người nhưng bàn chơi được thiết kế khác đi cho phù
Trang 19Một cách tổng quát, tìm kiếm có thê hiểu là tìm một hoặc một số đối tượng thỏa mãn những đòi hỏi nào đó trong tập hợp rộng lớn các đối tượng
Chung ta co thé ké ra rat nhieu van đề mà việc p1ải quyêt nó được quy về vận
đề tìm kiêm Trong cờ ÔÓ ăn quan cùng vậy, vân đề tìm kiêm được thê hiện ở chố, trong sô rât nhiều nước ổi có thê thực hiện, người chơi phải tìm ra nước ổi có ưu thê thang
Khi muốn giải quyết một vẫn đề nào đó bằng tìm kiếm, trước hết ta phải xác định không gian tìm kiếm Không gian tìm kiếm bao gồm tất cả các đối tượng mà ta cần quan tâm để tìm ra trong đó đối tượng yêu cầu Một cách chung nhất, nhiều bai toán phức tạp đều có dạng “tìm đường đi trong đồ thị” hay nói một cách hình thức hơn là “xuất phát từ một đỉnh của một đồ thi, tim đường đi hiệu qua nhất đến đỉnh nào đó” Một phát biêu khác thường gặp của dạng bài toán này là:
Cho trước hai trạng thái T0 và TG hãy xây dựng chuỗi trạng thái T0, TI,
T2, ., Tui, Tn =TG sao cho :
thỏa mãn một điều kiện cho trước (thường là nhỏ nhất)
Trong cờ Ô ăn quan, mỗi cách bố trí quân cờ trên bàn cờ là một trạng thái
Trạng thái ban đầu là sự sắp xếp các quân cờ lúc đầu cuộc chơi Mỗi bước đi hợp lệ
là một phép chuyên trạng thái, nó biến đổi một trạng thái trên bàn cờ thành một trạng thái khác Như vậy, ta xác định được các yếu tố:
- Trang thai bắt đầu (TTBĐ): Trạng thái sơ khởi của bản cờ
- _ Trạng thái kết thúc (TTKT): Trạng thái khi ván cờ kết thúc (gồm nhiều trạng thái thỏa điều kiện)
- _ Tập hợp các toán tử chuyên trạng thái: Tập những nước đi hợp lệ tại một trạng thái
Tập hợp tất cả các trạng thái có thê đạt tới từ trạng thái ban đầu bằng cách áp dụng một dãy phép chuyến trạng thái, lập thành không gian trạng thái của bài toán Việc tìm kiêm của bài toán được quy về việc tìm đường ổi từ trạng thái đầu đên
Trang 20trạng thái đích Có nhiều kỹ thuật tìm kiếm khác nhau đề giải quyết các bài toán tim kiếm Tuy nhiên với mỗi bài toán tủy theo đặc điểm, cách tổ chức dữ liệu mà ta có thê lựa chọn và áp dụng kỹ thuật phù hợp và hiệu quả
Như chúng ta đã biết, trò chơi Ô ăn quan cũng là một trò chơi đối kháng Cụ thê trò chơi này thuộc dạng trò chơi có tông-bằng-không với hai người chơi (Two players, Zero-sum-game) Tức là, không thể có trường hợp cả hai bên đều thắng hoặc đều thua Nếu một bên thắng thì bên kia nhất định thua và ngược lại Ta có thé thay những ví dụ điển hình của trò chơi có tông-bằng-không trong thê thao, hay kinh doanh Ví dụ, trong một giải bóng đá, tông số trận thua luôn bằng tổng số trận
thắng: trong đầu tư kinh doanh, số tiền thua lỗ của nhà đầu tư nảy sẽ là tiền lãi của
nhà đầu tư khác
Ở các trò chơi thể loại này (cờ vua, cờ vây), có một cây trò chơi bao gồm tắt
cả các nước đi có thể có của cả hai đấu thủ và các cấu hình bàn cờ là kết quả của
nước đi đó Ta có thê tìm kiếm trên cây này để có chiến lược chơi hiệu quả Trong
trò chơi này phải tính đến mọi nước đi đối thủ có thê sử dụng Đặc điểm của các trò chơi thể loại nay:
- C6 hai đấu thủ, mỗi người chỉ được đi một nước khi tới lượt
- _ Các đấu thủ đều biết mọi thông tin vé tinh trang tran dau
- _ Trận đấu không kéo dài vô tận, phải diễn ra hòa, hoặc một bên thắng và bên kia thua
Vi thé ta áp dụng tìm kiếm đối kháng (Tìm kiếm đối kháng còn gọi là tìm kiếm có đối thủ là chiến lược tìm kiếm được áp dụng để tìm ra nước di cho người chơi trong các trò chơi đối kháng)
Mặt khác nếu viết chương trình để người chơi với người thì chỉ cần xây dựng các tập luật chơi để người chơi không phạm quy và kết thúc khi có người thẳng Tuy nhiên như vậy lại không phù hợp với đề tài này trong báo cáo này Vì vậy nhóm
sẽ viết chương trình cho Người chơi với Máy, trong trường hợp nảy ta phải tính toán như thế nảo để khả năng máy tính thắng cao hơn người.
Trang 21Máy tính có lợi thế là khả năng tính toán nhanh, khả năng nhớ tốt gấp nhiều lần so với con người, vậy để máy tính thắng thì that dé, van dé la làm sao đề máy có thé nghĩ được như người? Và có thể tính trước được ít nhất là 2 đến 3 nước Vậy phải có thuật toán để máy có thể quét qua các phương án đi, và chọn phương án cuối cùng là tốt nhất sao cho máy tính có thể thắng Trong ứng dụng nảy ta chọn chiến lược Minimax và thuật toán cải tiễn Alpha-Beta dé cai dat cho may tinh chot
2.2 Ky thuat lượng giá
Hàm lượng giá là quan trọng nhất đối với giải thuật Minimax nói chung và
giải thuật cắt tỉa Alpha — Beta nói riêng Lượng giá tốt thì giá trị hàm tiện ích trả về cảng chuẩn, việc cắt tỉa được thực hiện sớm giup giam duoc nhiéu chi phi tim kiém
Trong trò chơi “Ô ăn quan” mấu chốt của chiến thắng là việc bên nào ăn
được nhiều quân hơn Hàm lượng giá được xây dựng sẽ bám theo hướng đi này: Sau mỗi nước đi thử, xác định xem bên nào có lợi hơn bằng việc xác định số quân
ăn được của mình và đối phương tại mỗi lượt đi
Vậy hàm lượng giá sẽ xác định như sau:
Utility(n) = Eval-Max(n) — Eval-Min(n)
Trong đó:
- Utility(n) la giá trị hàm tiện ích trả về với lựa chọn n, độ sâu tìm kiếm m
- Eval-Max(n): s6 quân thu được của MAX sau m bước
- _ Eval-Min(n): số quân thu được của MIN sau m bước
Cụ thể hàm lượng giá tính như sau:
- _ Số sỏi ăn được của MAX sau mỗi lượt đi được đưa vào Eval-Max(n)
- §6 sdi in được của MIN sau mỗi lượt đi của MIN được đưa vào Eval- Min(n)
Sau khi kết thúc m nước đi, tính giá trị Utility(n) của lựa chọn n là hiệu số gia tri Eval-Max(n) va Eval-Min(n)
Trang 222.3 Giải thuật Minimax
Minimax (hay còn gọi là minmax) là một phương pháp trong lý thuyết quyết định có mục đích là tối thiêu hóa (minimiza) tốn thất vốn được đự tính có thê là “tối da” (maximize) Co thé hiéu ngược lại là nó nhằm tối đa hóa lợi ích vốn được dự tính là tối thiếu (maximin).[6]
- _ Hai đối thủ trong trò chơi có tén la MAX va MIN
H Max: biểu dién cho mục đích của đối thủ nảy là làm lớn tối đa lợi thế của minh
H Mi: biểu diễn cho mục đích của đối thủ nảy là làm nhỏ tối đa lợi thế của đối phương
- Trên cây tìm kiếm sẽ phân lớp thành các lớp Max và Min
Người chơi MAX sẽ chọn các nước đi mà nước đi tiếp theo cua minh dat
điểm số cao nhất Trong khi người chơi MIN đã cố gắng không cho người chơi
MAX đạt được Khi người chơi MAX chọn nước đi bên phải có điểm số là 9, người chơi MIN cũng chọn nước đi bên phải làm cho nước đi tiếp theo của MAX chỉ có điểm số là 1 chứ không phải là 9 Ngược lại người chơi MAX chọn nước đi bên trái,
thi trong tình huống xấu nhất người chơi MAX vẫn được điểm số là 4 Nói chung,
người chơi MAX sẽ tìm cách nhận ra các nước đi tiếp theo của đối phương làm cho
điểm giảm xuống Và tương tự như thế, người chơi MIN phải nhận biết được nước
đi của người chơi MAX làm cho điểm tang lên
Minimax có thé chọn được nước đổi tốt nhất theo hàm mục tiêu nếu hàm lượng giá là tốt nhất Tuy nhiên, Minimax gặp phải một vấn đề đó là không gian tìm kiếm bùng nỗ với hàm mũ khi độ sâu tang dần bởi véi Minimax ta cần thực hiện chiến lược tìm kiếm vét cạn Để giải quyết vấn đề này cần tìm kiếm phương pháp cắt bớt các nhánh tìm kiếm không cải thiện được kết quả
Trang 232.4 Giai thuat Cat tia Alpha - Beta
Ý tưởng: nếu một nhánh tìm kiếm nào đó không thê cải thiện giá trị của hàm
tiện ích mà chúng ta đã có thì không cần xét đến nhánh tìm kiếm đó nữa Việc cắt
tỉa nhánh tìm kiếm tồi không ảnh hưởng tới kết quả cuối cùng của hàm tiện ích
Hinh 2.1: Cat tia Alpha
Hinh 2.2: Cắt tia Beta
Trang 24Vi du:
Hinh 2.3: Alpha - Beta cat tia Giải thuật cắt tỉa Alpha — Beta giam được nhiều nhánh tìm kiếm tôi , giúp tăng tốc tìm kiếm và tăng độ sâu tìm kiếm, từ đó giá trị của hàm tiện ích Trong đó:
- Alpha la nude đi được hàm tiện ích đánh gia la tốt nhất đối với MAX (gia tri toi đa) tính tới hiện tại với nhánh tìm kiếm Nếu v là nước đi tôi (không cải thiện) thì MAX sẽ bỏ qua nước đi tương ứng đối với v
- Beta được định nghĩa tương tự đối với v
Đối với không gian trò chơi lớn thì phuong phap cat tia Alpha — Beta van không phủ hợp vì sau cắt tỉa các nhánh tìm kiếm vẫn lớn với độ sâu tăng dan.
Trang 25CHUONG 3: PHAN TICH VA THIET KE
3.1 Phân tích bài toán
3.1.1 Ý tưởng giai quyết
- Sửdụng chiến lược Minimax, xây dựng từ trạng thái hiện hành
- Su dung ham heuristic dé danh gia trang thai hién tai cua bai toan
- _ Đồng thời sử dung cat tia a, B đề tối giản cây trạng thái
- _ Xây dựng hàm heurictic để đánh giá giá trị thắng thua tại các nút lá: dựa vào hiệu số piữa điểm người và điểm máy Một bên sẽ tối đa hiệu số đó,
và bên kia sẽ tối thiêu hiệu số đó
- _ Bên cạch đó sử dụng hàm tìm kiếm theo nguyên lý tham lam là duyệt hết tất cả các trạng thái Trạng thái nào ăn được nhiều quân nhất thì chọn bước đi đó Nguyên lý này đề làm AI của cấp độ 1
- Xây dựng các thành hàm phân: xét nước đi hợp lệ hay không, xét đến luot cua ai di, xét thang thua, ham di chuyén, xét trang thai kết thúc game, thay đối các hiển thị quân trong Ô cờ,
3.1.2 Áp dụng cơ sử lý thuyết
Như đã trình bày ở chương 2, ta sẽ xây dựng cây tìm kiếm, với mỗi nút là một trạng thái có thê có của bàn cờ Nút sốc biểu diễn cho trạng thái bắt đầu của cuộc chơi Mỗi nút lá biểu diễn cho một trạng thái kết thúc của trò chơi (trạng thái thang, thua hoac hoa) Néu trang thai x duoc biêu diễn bởi nút n thì các con của n
biểu diễn cho tất cả các trạng thái kết quả của các nước đi có thể xuất phát từ trang
thái x
Áp dụng chiến lược Minimax, Hai đối thủ trong một trò chơi được gọi là MIN va MAX MAX dai dién cho déi thu quyét gianh thang loi hay cé gang toi da
Trang 26hóa ưu thế của mình Ngược lại MIN là đối thủ cố gắng tối thiêu hóa điểm số của MAX Ở đây, dựa trên ý tưởng là tối đa và tối thiếu hiệu số giữa số quân ăn được của MAX và số quan an duoc cua MIN
Chiến lược Minimax thê hiện qua quy tắc định gia tri cho các nút trên cây trò chơi như sau:
- - Nếu nút là nút lá gán cho nút đó một giá tri dé phan anh trang thái thắng thua hay hòa của các đấu thủ
- _ Sử dụng giá trị của các nút lá để xác định giá trị của các nút ở các mức trên trong cây trò chơi theo quy tắc:
H_ Nút thuộc lớp MAX thì gán cho nó giá trị lớn nhất của các nút con của nút đó
H_ Nút thuộc lớp MIN thì gán cho nó giá trị nhỏ nhất của các nút con của nút đó
Giá trị được gán cho từng trạng thái theo quy tắc trên chỉ rõ giá trị của trạng thái tốt nhất mà mỗi đối thủ có thê hy vọng đạt được Người chơi sẽ sử dụng các giá trị này để lựa chọn các nước đi cho mình Đối với người chơi MAX khi đến lượt đi, người chơi này sẽ chọn nước đi ứng với trạng thái có giá trị cao nhất trong các trạng thái con, còn với người chơi MỊN khi đến lượt sẽ chọn nước đi ứng với trạng thái có giá trị nhỏ nhất trong các trạng thái con
Như chúng ta đã biết, không phải lúc nào cũng đến được các nút lá mang trạng thái kết thúc, vì độ sâu của cây trò chơi là rất lớn Vì vậy, chúng ta chỉ thực hiện tìm kiếm đến độ sâu có định nào đó Độ sâu cảng lớn, hàm tìm kiếm cảng gan
giá trị tối ưu, cũng có nghĩa là “trình độ suy nghĩ” của máy cảng cao Độ khó của
máy cũng càng cao Vi vay, chung ta thực hiện tim kiếm đến độ sâu cố định nào đó
Ở đây, theo sự đánh giá của nhóm, chúng ta sẽ tìm kiếm ở các độ sâu 1, độ sâu 3 và
độ sâu 7 Đại điện cho các mức theo thứ tự từ đễ, bình thường đến khó Vừa giam tình trạng hao tốn quá nhiều bộ nhớ và thời gian tìm kiếm, cũng như phù hợp với trinh độ của người chơi
Trang 27Ta xây dựng giải thuật Minimax như sau:
if (depth == 0 || board.finish()) { //Néu d6 sau bang 0 hoặc trò chơi kết thúc
1Ÿ (board.ñnish()) { //Nếu trò chơi kết thúc
board.addScore(1); //Gan diém cho máy board.addScore(2); //Gan diém cho nguéi choi
}
//Diém tét nhat bằng điểm của máy trừ cho điểm của người chơi
bestScore = squares[12].getValue() - squares[13].getValue(); } else {
/Khởi tạo một biến I cho nó chạy từ 0 tới tất cả các bước của trò chơi
for (mt1= 0; 1 < moves.sIze(; I++) {
// thực hiền hàm sang trái hoặc phải for (int k = l1;k<3; k++) { int score = 0;
int location = board.action(k, moves.get(1));
if (board.isEat(location)) { score = board eatting(k, location);
if (player = 1) { // max player board.setScoreComputer(score);
currentScore = minimax(board, depth - 1, 2) [0]:
if (currentScore > bestScore) { bestScore = currentScore;
bestLocation = moves.get(i);
Trang 28
bestLocation = moves.get(i);
action = k;
} }
// khôi phục trạng thái bản cờ cũ for (mt J=0; J< 14; J*+) { If==0||J==6) { squares[J| = new Square(J, valueRoot{J], true); } else {
squares[j] = new Square(j, valueRoot[j], false);
} } } }
}
/Trả về trạng thái có sô điểm tốt nhật tại vị trí có nước di tot nhat
return new int[] { bestScore, bestLocation, action };
Khôi phục trạng thái bàn cờ cũ là khi ta thực hiện kiểm tra gia tri cu thé tai một nước đi, sau đó ta phải quay tro lai tran thai nút lá ban dau, thì ta mới tiếp tục
Trang 29kiêm tra giá trị tại nước đi tiếp theo được Nếu không giá trị mà ta nhận được là giá trị tiếp theo của nước ổi ta vừa mới kiêm tra
Ngoài ra, hàm BestScore để đánh giá độ tốt của một trạng thái trên bản cờ, của một người chơi nào đó (MIN hay MAX, 1 hay -1) Đây là hàm quyết định, chỉ
phối hầu hết thời gian và chỉ làm việc trên các nút lá, vì vậy việc thăm các nút
không phải các nút lá có thê bỏ qua
Thuật toán Minimax thăm toàn bộ cây trò chơi bằng việc dùng chiến lược tìm kiếm theo chiều sâu Nên độ phúc tạp của thuật toán tương ứng trực tiếp với kích thước không p1an tìm kiếm Ta có thể tiết kiệm được nhiều thời gian bang việc dùng thuật toán cải tiến Alpha — Beta, thuật toán này không thăm tất cả các nút lá
mà vẫn cho kết quả đúng với thuật toán Minimax phía trên
3.1.2.2 Giái thuật Alpha - Beta
Giải thuật Alpha - Beta là một cái tiến của giai thuat Minimax nham tia nhánh của cây trò chơi, làm giảm số lượng nút phải sinh và lượng giá, do đó có thé
tăng độ sâu của cây tìm kiếm
Ý tưởng của tìm kiếm Alpha-Beta rất đơn giản: Có hai giá trị, gọi là Alpha và Beta được tạo ra trong quá trình tìm kiếm:
- Gia tri Alpha lién quan với các nút MAX và có khuynh hướng không bao
các trạng thái anh em của nó Giả thuyết tất cả đều là nut MIN Gia tri toi da của các
nút MIN này sẽ được truyền ngược lên cho nút cha mẹ (là một nút MAX) Sau đó giá trị này được gán cho ông bả của các nút MIN như là một giá trị Beta kết thúc tốt nhật Tiệp theo thuật toán này sẽ đi xuông các nút cháu khác và kêt thúc việc tìm