Preview text:
lOMoARcPSD| 59629529
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 TRÍ TUỆ NHÂN TẠO
Đ Ề TÀI : XÂY DỰNG GAME CỜ CARO BẰNG GIẢI THUẬT MINIMAX
Sinh viên thực hiện
: H À HUY HO À N
: ĐỖ CHUNG HIẾU
: HO À NG VĂN ĐẠI
Giảng viên hướng dẫn : VŨ VĂN ĐỊNH Ngành
: CÔNG NGHỆ THÔNG TIN Chuyên ngành
: CÔNG NGHỆ PHẦN MỀM Lớp
: Công nghệ phần mềm 1 Khóa : D 15 lOMoARcPSD| 59629529 PHIẾU CHẤM ĐIỂM
Hà Nội, tháng năm 2022
STT Họ và tên sinh viên Nội dung thực hiện Điểm Chữ ký 1 Hà Huy Hoàn 20810310039 2 Đỗ Chung Hiếu 20810310029 3 Hoàng Văn Đại
Họ và tên giảng viên Chữ ký Ghi chú Giảng viên chấm 1: Giảng viên chấm 2: lOMoARcPSD| 59629529 lOMoARcPSD| 59629529 MỤC LỤC
LỜI MỞ ĐẦU.....................................................................................................1
CHƯƠNG 1: TỔNG QUAN VỀ TRÍ TUỆ NHÂN TẠO VÀ THUẬT
TOÁN MINIMAX..............................................................................................2
1.1 Tổng quan về trí tuệ nhân tạo.....................................................................2
1.1.1. Trí tuệ nhân tạo là gì?.........................................................................2
1.1.2. Lịch sử phát triển của trí tuệ nhân tạo................................................2
1.1.3. Ứng dụng vai trò của trí tuệ nhân tạo.................................................4
1.2. Giới thiệu về giải thuật MINIMAX...........................................................5
1.2.1. Tư tưởng.............................................................................................5
1.2.2. Phương pháp.......................................................................................5
1.2.3. Mô hình bài toán.................................................................................6
1.3. Ưu điểm và nhược điểm............................................................................7
CHƯƠNG 2: BÀI TOÁN CỜ CARO...............................................................8
2.1. Bài toán......................................................................................................8
2.2. Giải quyết bài toán.....................................................................................8
CHƯƠNG 3: ĐÁNH GIÁ VÀ THỬ NGHIỆM.............................................12
3.1. Công nghệ sử dụng..................................................................................12
3.2. Triển khai.................................................................................................12
3.2. Giao diện khi bắt đầu chơi.......................................................................13
3.3. Giao diện sau khi chơi.............................................................................14
KẾT LUẬN........................................................................................................16
TÀI LIỆU THAM KHẢO................................................................................17 LỜI MỞ ĐẦU
Bài toán cờ caro là một bài toán thú vị, tương đối kinh điển của thuật toán
minimax – một thuật toán quan trọng và phổ biến trong trí tuệ nhân tạo. Cờ caro
là bài toán về việc chơi một ván cờ caro. Một mặt các ô vuông chúng ta điền vào
đó “x” và “o” tương trưng cho một trong hai đội thi đấu và điền được 3 quân
giống nhau theo hàng ngang, dọc, chéo. Ai được trước sẽ là người chiến thắng. lOMoARcPSD| 59629529
Chính vì vậy chúng em đã đi đến việc lựa chọn đề tài “XÂY DỰNG GAME
CỜ CARO BẰNG GIẢI THUẬT MINIMAX” cho bài tập lớn môn trí tuệ nhân
tạo. Chúng em xin cảm ơ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 cứu và thực hiện đề tài.
Mặc dù đã hoàn thành, nhưng chắc chắn vẫn không thể chánh được những
thiếu sót, vì vậy chúng em mong được nhận thêm nhiều những góp ý từ thầy cô
để hoàn thiện tốt hơn.
Chúng em xin chân thành cảm ơn! lOMoARcPSD| 59629529
CHƯƠNG 1: TỔNG QUAN VỀ TRÍ TUỆ NHÂN TẠO VÀ THUẬT TOÁN MINIMAX
1.1 Tổng quan về trí tuệ nhân tạo
1.1.1. Trí tuệ nhân tạo là gì?
Trí Tuệ Nhân Tạo - AI (Artificial Intelligence) hoặc trí thông minh nhân tạo
là công nghệ mô phòng các quá trình suy nghĩ và học tập của con người cho máy
móc, đặc biệt là hệ thống máy tính. Trí tuệ nhân tạo này do con người lập trình
ra với mục đích tự động hóa các hành vi thông minh như con người, từ đó cắt
giảm bớt nhân công là con người và có tính chuẩn xác cao hơn.
Sự khác biệt của trí tuệ nhân tạo so với các lập trình logic trước kia chính
là khả năng suy nghĩ độc lập của chúng, thay vì việc mọi thứ được lập trình sẵn
và cỗ máy đó sẽ thực hiện các thao tác theo logic được con người đặt ra, AI - Trí
Tuệ Nhân Tạo sẽ tự xem xét tình huống và đưa ra phương án tối ưu nhất, qua
đó tiết kiệm chi phí cũng như vận hành cho công việc hiệu quả hơn. Ngoài ra khả
năng tự tính toán đó sẽ khiến Ai đưa ra những ý kiến mới, giúp con người thêm
nhiều ý tưởng hơn trong phát triển.
AI rất hữu ích trong phân tích dự đoán. Tùy thuộc vào dữ liệu thu được
trong quá khứ, phân tích dự đoán cho phép dự đoán tương lai có học thức.
1.1.2. Lịch sử phát triển của trí tuệ nhân tạo
Nghiên cứu AI sớm vào những năm thập niên 60 đã khám phá các vấn đề
mà công nghệ này có thể giải quyết. Vào những năm 1960, Bộ Quốc phòng Hoa
Kỳ đã quan tâm đến loại công việc này và bắt đầu đào tạo máy tính để bắt chước
lý luận cơ bản của con người. Ví dụ, Cơ quan Dự án Nghiên cứu Quốc phòng Tiên
tiến (DARPA) đã hoàn thành các dự án lập bản đồ đường phố vào những năm
1970. Và DARPA đã sản xuất trợ lý cá nhân thông minh vào năm 2003…
Trí tuệ nhân tạo là đột phá công nghệ mới nhất, là ngành khoa học đang
định hình lại xã hội của chúng ta. Đồng thời trí tuệ nhân tạo có tác động sâu sắc
đến các ngành công nghiệp máy móc và công ty cung cấp năng lượng.
Với sự phát triển nhanh chóng về kiến thức và tiến bộ trong trí tuệ nhân
tạo đang thúc đẩy mạnh mẽ nhu cầu về các dịch vụ kỹ thuật số mới để giúp khai
thác công nghệ này với tiềm năng cao nhất. Cải thiện các sản phẩm đã có trên
thị trường để tất cả chúng ta đưa vào sử dụng trong cuộc sống hàng ngày sẽ là
cốt lõi cho tương lai của trí tuệ nhân tạo AI.
Đa số trọng tâm của các nghiên cứu trí tuệ nhân tạo ban đầu được lấy từ
cách tiếp cận bằng thực nghiệm của tâm lý học, và xem trọng cái gọi là "trí tuệ
ngôn ngữ" - việc hiểu biết ngôn ngữ con người. lOMoARcPSD| 59629529
Các hướng nghiên cứu về trí thông minh nhân tạo không liên quan đến
ngôn ngữ bao gồm ngành robotic và ngành thông minh tập thể (colective
intelligence). Hai hướng tiếp cận này tập trung vào việc chủ động tác động lên
môi trường hoặc việc đưa ra quyết định bằng đồng thuận về một vấn đề nào đó.
Các hướng nghiên cứu này có nguồn gốc từ các mô hình thông minh xuất phát
từ sinh học và chính trị học.
Lý thuyết trí tuệ nhân tạo còn được rút ra từ các nghiên cứu về động vật,
đặc biệt là côn trùng, do có thể dễ dàng được mô phỏng con trùng bằng robot
cũng như các động vật với nhận thức phức tạp hơn, ví dụ như loài khỉ, chúng có
thể bắt chước con người trong nhiều trường hợp nhưng lại hạn chế về sự phát
triển trong việc lập kế hoạch và nhận thức. Các nhà nghiên cứu về trí tuệ nhân
tạo đưa ra kết luận rằng những loài động vật, có nhận thức đơn giản hơn con
người, đáng ra có thể dễ dàng mô phỏng được. Tuy nhiên, đến giờ vẫn chưa có
mô hình tính toán đủ tốt mô phỏng trí thông minh của động vật.
Có những bài báo đưa ra khái niệm trí thông minh của máy (machine
intelligence) như bài A Logical Calculus of the Ideas Immanent in Nervous
Activity (Tính toán logic của các ý tưởng nội tại trong hoạt động thần kinh) (1943),
do Warren McCulloch và Walter Pitts viết; On Computing Machinery and
Intelligence (Về bộ máy tính toán và trí thông minh) (1950), được viết bởi Alan
Turing; và Man-Computer Symbiosis viết bởi J.C.R. Licklider. Xem thêm phần
điều khiển học (cybernetics) và Thử thách Turing.
Với sự phát triển của các kỹ thuật thực hành dựa trên các nghiên cứu về
trí tuệ nhân tạo, những người ủng hộ ngành trí tuệ nhân tạo đã cho rằng phe
chống đối ngành này đã liên tục thay đổi lập trường của họ trong các vấn đề như
máy chơi cờ hay nhận dạng tiếng nói, mà trước đây chúng đã từng được coi là
thông minh, để phủ nhận các thành tựu của ngành trí tuệ nhân tạo. Bởi vậy,
Douglas Hofstadter, trong cuốn Gödel, Escher, Bach, đã chỉ ra rằng chính sự
chuyển dịch đó đã định nghĩa trí thông minh là bất cứ việc gì mà con người làm
được còn máy móc thì không.
John von Neumann (trích dẫn trong E.T. Jaynes) đã thấy trước được điều
này vào năm 1948 khi trả lời một lời bình luận tại một buổi diễn thuyết cho rằng
may móc không thể suy nghĩ: "Bạn nhất quyết rằng có một điều gì đó mà máy
móc không thể làm được. Nếu bạn nói cho tôi một cách chính xác đó là điều gì,
thì tôi sẽ luôn luôn làm được một cái máy mà sẽ chỉ thực hiện được điều đó!".
Von Neumann được cho là đã có ý nói đến luận đề Church-Turing khi khẳng định
rằng bất kì một thủ tục có hiệu lực nào cũng có thể được mô phỏng bởi một máy
tính (tổng quát) nào đó. lOMoARcPSD| 59629529
Vào năm 1969 McCarthy và Hayes đã bắt đầu thảo luận về bài toán khung
(frame problem) với bài luận của họ, Some Philosophical Problems from the
Standpoint of Artificial Intelligence (Một số vấn đề triết học từ điểm khởi đầu
của trí tuệ nhân tạo).
Công việc ban đầu này đã mở đường cho tự động hóa và lý luận chính thức
mà chúng ta thấy trong các máy tính ngày nay, bao gồm các hệ thống hỗ trợ
quyết định và hệ thống tìm kiếm thông minh có thể được thiết kế để bổ sung và
tăng cường khả năng của con người.
Ngày nay, hầu hết các thuật toán AI đang đạt đến trạng thái ngang bằng
với con người, có nghĩa là chúng có thể thực hiện một nhiệm vụ với trí thông
minh giống như con người. Chúng cũng hiện diện trong các tương tác hàng ngày
trên Internet, từ hệ thống đề xuất đến các thuật toán xếp hạng tìm kiếm.
1.1.3. Ứng dụng vai trò của trí tuệ nhân tạo
Các thuật toán AI của ngày nay có khả năng thực hiện các nhiệm vụ của
nó tốt hơn rất nhiều so với con người. Chúng đã phát triển đến mức hiệu quả hơn
nhiều và chính xác như con người. Họ cũng đưa ra một cách tiếp cận dễ tiếp cận
hơn để các công ty mở rộng quy mô và cung cấp nhân lực cho các nhiệm vụ lao
động lặp đi lặp lại với chi phí thấp. Chúng cũng có những lợi ích khác, chẳng hạn
như: Giảm tỉ lệ lỗi, hiệu quả chi phí, trải nghiệm được cá nhân hóa,…
- Vai trò của trí tuệ nhân tạo trong y tế: ứng dụng tiêu biểu nhất của
trí tuệ nhân tạo trong lĩnh vực y tế phải kể đến chính là máy bay không người
lái, được dùng trong những trường hợp cứu hộ khẩn cấp. Đây là thiết bị bay
không có người lái với tốc độ nhanh hơn xe chuyên dụng đến 40% và thích
hợp để sử dụng tại những vị trí có địa hình hiểm trở.
- Vai trò của trí tuệ nhân tạo trong kinh doanh:
+ Riêng trong lĩnh vực kinh doanh, trí tuệ nhân tạo AI góp phần
mang đến những trải nghiệm tốt hơn cho hệ thống khách hàng. Thông qua việc
thu thập cũng như phân tích dữ liệu, trí tuệ AI có thể nắm bắt thông tin cũng như
hành vi sử dụng dịch vụ của khách hàng, từ đó mang lại những giải pháp hữu ích trong kinh doanh.
+ Còn với lĩnh vực truyền thông, trí tuệ nhân tạo trong marketing
đóng vai trò quan trọng, góp phần làm thay đổi những cách thức tiếp cận với
khách hàng mục tiêu. Với những ưu điểm của công nghệ AI, các công ty, tổ chức
có thể triển khai những chiến dịch quảng cáo đúng thời điểm, đúng khách hàng
mục tiêu dựa trên những phân tích chính xác về nhân khẩu học, thói quen, hành vi và nhu cầu.
- Vai trò của trí tuệ nhân tạo trong giáo dục: lOMoARcPSD| 59629529
+ Các hoạt động giáo dục như chấm điểm, dạy kèm có thể được tự
động hóa nhờ công nghệ AI.
Rất nhiều trò chơi, phần mềm giáo dục ra đời phổ biến để đáp ứng những nhu cầu
của các em học sinh, sinh viên để cải thiện và nâng cao trình độ học tập của mỗi người.
+ Chúng còn có thể chỉ ra những vấn đề mà các khóa học nên cải
thiện: Nếu nhiều học sinh gửi đáp án sai cho bài tập, hệ thống sẽ thông báo cho
các giáo viên đồng thời gửi thông điệp đến với các em học sinh để chỉnh sửa đáp án cho phù hợp nhất.
+ Trí tuệ nhân tạo thay thế con người bởi còn có khả năng theo dõi
sự tiến bộ của học sinh để từ đó đưa ra những thông báo đến với các giáo viên khi
phát hiện ra nhiều vấn đề đối với kết quả học tập của học sinh.
+ Trí tuệ nhân tạo cung cấp nhiều dữ liệu bổ ích để giúp các em
sinh viên lựa chọn được những khóa học tốt nhất cho mình.
1.2. Giới thiệu về giải thuật MINIMAX
Giải thuật MINIMAX là một thuật toán đệ quy lựa chọn bước đi kế tiếp
trong một trò chơi có hai người. Xét một trò chơi đối kháng trong đó hai người
thay phiên đi nước đi của mình như tic-tac-toe, cờ vua, cờ tướng, cờ caro, cờ
vây… Khi chơi bạn có thể khai triển hết không gian trạng thái nhưng khó khăn
chủ yếu là bạn phải tính toán được phản ứng và nước đi của đối thủ mình như thế
nào? Cách xử lý đơn giản là bạn giả sử đối thủ của bạn cũng sử dụng kiến thức
về không gian trạng thái giống bạn. Giải thuật Minimax áp dụng giả thuyết này
để tìm kiếm không gian trạng thái của trò chơi. 1.2.1. Tư tưởng
Giải thuật Minimax là một thuật toán đệ quy cho việc lựa chọn bước đi kế
tiếp trong một trò chơi có hai người chơi. Một giá trị được gán cho mỗi vị trí hay
một trạng thái của trò chơi. Giá trị này được tính toán bằng một hàm tính giá trị
vị trí và nó cho biết độ tốt nếu như một người chơi đạt được đến đó. Người chơi
sau đó đi một bước làm tối đa giá trị tối thiểu của vị trí là kết quả từ tập hợp những
bước đi có thể của đối thủ. Nếu đó là phiên A sẽ đi, A sẽ cho một giá trị cho mỗi
bước đi hợp pháp của anh ta.. 1.2.2. Phương pháp
Hai đối thủ trong trò chơi được gọi là MIN và MAX luân phiên thay thế
nhau đi. MAX đại diện cho người quyết dành thắng lợi và cố gắng tối đa hóa ưu
thế của mình, ngược lại người chơi đại diện cho MIN lại cố gắng giảm điểm số
của MAX và cố gắng làm cho điểm số của mình càng âm càng tốt. Giả thiết đưa
ra MIN và MAX có kiến thức như nhau về không gian trạng thái trò chơi và cả
hai đối thủ đều cố gắng như nhau lOMoARcPSD| 59629529
Mỗi Node biểu diễn cho một trạng thái trên cây trò chơi. Node lá là Node
chứa trạng thái kết thúc của trò chơi
Giải thuật MINIMAX thể hiện bằng cách định trị các Node trên cây trò chơi:
- Node thuộc lớp MAX thì gán cho nó giá trị lớn nhất của con Node đó.
- Node thuộc lớp MIN thì gán cho nó giá trị nhỏ nhất của con Node đó.
Từ các giá trị này người chơi sẽ lựa chọn cho mình nước đi tiếp theo hợp lý nhất
1.2.3. Mô hình bài toán
Trong ví dụ sau đây của một trò chơi tổng bằng 0, khi A và B đi các bước
cùng một lúc, minh họa cho thuật toán MINIMAX. Nếu như mỗi người chơi có
3 lựa chọn và ma trận có lợi cho A là: B chọn B1 B chọn B2 B chọn B3 A chọn A1 +3 -2 +2 A chọn A2 -1 0 +4 A chọn A3 -4 -3 +1
Hình 1.1: Hình minh họa thuật toán
Và B có ma trận lợi như nhau nhưng ngược dấu (i.e. nếu các lựa chọn là
A1 và B1 thì B trả 3 cho A) sau đó lựa chọn minimax đơn giản cho A là A2 bởi
vì kết quả xấu nhất là sau khi phải trả 1, trong khi lựa chọn minimax đơn giản cho
B là B2 bởi vì kết quả xấu nhất là sau đó không phải trả gì cả. Tuy vậy, lời giải
này là không ổn định, bởi vì nếu B tin rằng A sẽ chọn A2 thì B sẽ chọn B1 để
thắng 1; sau đó nếu A tin rằng B sẽ chọn B1 thì A sẽ chọn A1 để thắng 3; và sau
đó B sẽ chọn B2; và cuối cùng cả hai người chơi sẽ nhận ra sự khó khăn của việc
chọn lựa. Do đó một chiến lược ổn định hơn là cần thiết.
Một số chọn lựa bị thống trị bởi những người khác có thể loại bỏ: A sẽ
không chọn A3 bởi vì hoặc A1 hay A2 sẽ sinh ra một kết quả tốt hơn, bất kể là B
chọn gì; B sẽ không chọn B3 bởi vì B2 sẽ sinh ra kết quả tốt hơn, bất kể là A chọn cái gì. lOMoARcPSD| 59629529
A có thể tránh việc phải trả số lượng dự định (expected payment) hơn 1/3
bằng cách chọn A1 với xác suất 1/6 và A2 với xác suất 5/6, bất kể là B đã chọn
gì. B có thể tính chắc phần lợi dự định (expected gain) ít nhất 1/3 bằng cách sử
dụng một chiến thuật ngẫu nhiên của việc chọn B1 với xác suất 1/3 và B2 với xác
suất 2/3, bất kể là A chọn gì. Những chiến lược minimax hỗn hợp bây giờ là ổn
định và không thể nào cải tiến nữa.
1.3. Ưu điểm và nhược điểm -
Ưu điểm: Tìm kiếm được mọi nước đi tiếp theo sau đó lựa chọn nước
đi tốt nhất, vì giải thuật có tính chất vét cạn nên không bỏ soát trạng thái. -
Nhược điểm: Đối với các trò chơi có không gian trạng thái lớn như
caro, cờ tướng… việc chỉ áp dụng giải thuật Minimax có lẽ không còn hiệu quả
nữa do sự bùng nổ tổ hợp quá lớn.
Giải thuật áp dụng nguyên lý vét cạn không tận dụng được thông tin của
trạng thái hiện tại để lựa chọn nước đi, vì duyệt hết các trạng thái nên tốn thời gian. lOMoARcPSD| 59629529
CHƯƠNG 2: BÀI TOÁN CỜ CARO 2.1. Bài toán
Giới thiệu đề tài “Game Caro” Game gồm có 2 người chơi, một người cầm
quân X, một người cầm quân O. Hai người chơi sẽ lần lượt đưa đánh quân tương
ứng của mình trên một bàn cờ MxN ô (thường thì M = N).
Luật chơi: Quân X là quân được đánh trước. Hai người chơi có thể đánh
vào bất kỳ ô nào trên bàn cờ miễn là ô đó chưa được đánh. Trò chơi kết thúc khi
một trong hai người chơi có 3 quân thằng hàng liên tiếp nhau (ngang, dọc hoặc chéo).
2.2. Giải quyết bài toán
Có 2 người chơi là Min và Max. -
Một chiến lược tối ưu là một chuỗi các nước đi giúp đưa đến
trạng thái đích mong muốn. -
Chiến lược của MAX bị ảnh hưởng ( phụ thuộc ) vào các nước đi
của MIN –và ngược lại. -
MAX cần chọn một chiến lược giúp cực đại hóa giá trị của hàm
mục tiêu – với giả sử là MIN đi các nước đi tối ưu. lOMoARcPSD| 59629529 -
Chiến lược này được xác định bằng việc xét các giá
trịMINIMAX đối với mỗi nút trong cây biểu diễn trò chơi. -
MAX chọn các nước đi tương ứng với giá trị MINIMAX
cực đại( MIN chọn các nước đi ứng với giá trị MINIMAX cực tiểu.
Áp dụng vào game Caro: Người chơi cầm quân X đóng vai trò như Max,
người chơi cầm quân O đóng vai trò như Min. Để quyết định nước đi tiếp theo,
ta xây dựng một thủ tục đệ quy gồm 2 hàm max_value() để tìm nước đi tiếp theo
cho quân X, min_value() để tìm nước đi tiếp theo cho quân O. Để giảm thời gian
của giải thuật đệ quy, ta giới hạn độ sâu của giải thuật bằng 4.
Minh họa các hình dưới đây: lOMoARcPSD| 59629529 lOMoARcPSD| 59629529
CHƯƠNG 3: ĐÁNH GIÁ VÀ THỬ NGHIỆM
3.1. Công nghệ sử dụng
- Ngôn ngữ lập trình: JavaScript.
- Trình biên dịch: Visual Studio Code. 3.2. Triển khai - Code thuật toán lOMoARcPSD| 59629529 lOMoARcPSD| 59629529
Hình: Code thuật toán minimax
3.2. Giao diện khi bắt đầu chơi
- Sau khi bắt đầu chúng ta sẽ bắt đầu tích vào những ô trống để chơi lOMoARcPSD| 59629529 Hình
3.3. Giao diện sau khi chơi
- Chúng ta sẽ tích vào ô trống cho đến khi máy tính hoàn thành 3 ký tự
thành hàng ngang, dọc, chéo và sau đó hệ thống sẽ thông báo người thắng và
refresh lại để bắt đầu lại ván mới. lOMoARcPSD| 59629529 Hình: KẾT LUẬN
Với kiến thức hiện có của mình, chúng em đã hoàn thàng các yêu cầu ở
trên khi tiến hàng thực hiện để tài “XÂY DỰNG GAME CỜ CARO BẰNG
GIẢI THUẬT MINIMAX”. Tuy nhiên, trong quá trình làm sẽ không tránh khỏi
nhữn thiếu sót, hoặc cũng sẽ có nhưng chỗ còn vướng mắc. Chính vì vậy, chúng
em mong được sự góp ý giúp đỡ của thầy giáo để đề tài của nhóm em được hoàn thiện hơn.
Chúng em xin gửi lời cảm ơn chân thành tới thầy Vũ Văn Định là giảng
viên giảng dạy môn Trí tuệ nhân tạo của lớp D15CNPM1 đã tận tình hướng dẫn
chúng em để hoàn thành đề tài này!
Chúng em xin chân thành cảm ơn! lOMoARcPSD| 59629529
TÀI LIỆU THAM KHẢO
1. https://viblo.asia/p/thuat-toan-minimax-ai-trong-game-APqzeaVVzVe
2. https://vi.wikipedia.org/wiki/Minimax
3. https://websitehcm.com/thuat-toan-mini-max-trong-tri-tue-nhan-tao/
4. https://www.youtube.com/watch?v=fTBEjsrZKso