You are on page 1of 27

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:

XÂY DỰNG GAME CỜ CARO BẰNG GIẢI THUẬT MINIMAX

Sinh viên thực hiện : NGÔ TRUNG HIẾU

: NGUYỄN HUY HOÀNG

Ngành : CÔNG NGHỆ THÔNG TIN

Chuyên ngành : CÔNG NGHỆ PHẦN MỀM

Lớp : D15CNPM2

Khóa : 2020-2025

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


PHIẾU CHẤM ĐIỂM

Sinh viên thực hiện:

STT Họ và tên Chữ ký Nhiệm


vụ

1 Nguyễn Huy Hoàng

Mã SV:

2 Ngô Trung Hiếu

Mã SV:

Giảng viên chấm:

Họ và tên Chữ ký Ghi chú

Giảng viên chấm 1:

Giảng viên chấm 2:


MỤC LỤC

LỜI MỞ ĐẦU...............................................................................................................1
CHƯƠNG 1: GIỚI THIỆU VỀ AI VÀ THUẬT TOÁN MINIMAX...........................2
1.1. GIỚI THIỆU VỀ TRÍ TUỆ NHÂN TẠO..............................................................2
1.1.1. Trí tuệ nhân tạo là gì ?............................................................................3
1.1.2. Vai trò của trí tuệ nhân tạo......................................................................5
1.1.3. Lĩnh vực của AI......................................................................................6
1.1.4. Hạn chế của AI........................................................................................7
1.2 GIỚI THIỆU VỀ KỸ THUẬT MINIMAX....................................................8
1.2.1 Tư tưởng.................................................................................................8
1.2.2 Một thuật toán minimax..........................................................................9
1.2.3 Phương pháp..........................................................................................9
1.3 Mô hình bài toán...........................................................................................10
1.4 KẾT LUẬN...................................................................................................11
CHƯƠNG 2: BÀI TOÁN CỜ CARO.........................................................................12
2.1. BÀI TOÁN:....................................................................................................12
2.2. GIẢI QUYẾT BÀI TOÁN.............................................................................13
2.2.1 Ý tưởng:.................................................................................................13
2.2.2 Phương pháp giải quyết nước đi:...........................................................14
2.3 Mô tả bài toán cờ caro theo minmax...............................................................15
CHƯƠNG 3: ĐÁNH GIÁ THỬ NGIỆM...................................................................17
3.1 Cặt đặt với C# Winform................................................................................17
3.1.1 Giao diện khi chạy chương trình..........................................................17
3.1.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..............................................................................18
3.1.3 Giao diện sau khi chơi ( chúng ta sẽ tích vào ô trống cho đến khi một
trong hai người hoặc máy hoàn thành 5 kí tự thẳng hàng và sau đó hệ thống
sẽ thông báo người thắng cuộc và hỏi xem chúng ta có muốn chơi ván mới
không).............................................................................................................19
3.2 Code..............................................................................................................20
KẾT LUẬN.................................................................................................................22
TÀI LIỆU THAM KHẢO...........................................................................................23
MỤC LỤC HÌNH ẢNH

Hình 1: minh họa thuật toán.......................................................................................10


Hình 2 Mô tả cờ...........................................................................................................15
Hình 3: Giao diện khi chạy chương trình...................................................................17
Hình 4: bàn cờ khi bắt đầu chơi..................................................................................18
Hình 5: ván đấu kết thúc.............................................................................................19
Hình 6 Code................................................................................................................21
LỜI MỞ ĐẦU

Trí tuệ nhân tạo là trí tuệ được biểu diễn bởi bất cứ một hệ thống nhân tạo nào.
Thuật ngữ này thường dùng để nói đến các máy tính có mục đích không nhất định và
ngành khoa nghiên cứu về các lý thuyết và ứng dụng của trí tuệ nhân tạo.

Tuy rằng trí thông minh nhân tạo có nghĩa rộng như là trí thông minh trong
khoa học viễn tưởng, nó là một trong những ngành trọng yếu của tin học. Trí thông
minh nhân tạo liên quan đến cách cư xử, sự học hỏi và khả năng thích ứng thông
minh của máy móc. Ngày nay, các hệ thống nhân tạo được dùng thường xuyên
trong kinh tế, y dược, các ngành kỹ thuật và quân sự, cũng như trong các phần mềm
máy tính thông dụng trong gia đình và trò chơi điện tử.
Để áp dụng những kiến thức về AI được học trên lớp cũng như tìm hiểu qua internet,
nhóm chúng em đi đến quyết định chung là xây dựng trò chơi cờ ca rô .
Trong quá trình làm bài tập lớn, chúng em xin chân thành cảm ơn thầy đã
tận tình hướng dẫn, cảm ơn các bạn đã đóng góp những ý kiến bổ ích để trò chơi
được tốt hơn. Do chưa có nhiều kinh nghiệm cũng như kiến thức về AI còn hạn hẹp
nên trò chơi chưa được tối ưu lắm. Mong thầy và các bạn góp ý để game được tốt
hơn.

1
CHƯƠNG 1: GIỚI THIỆU VỀ AI VÀ THUẬT TOÁN MINIMAX

1.1. GIỚI THIỆU VỀ TRÍ TUỆ NHÂN TẠO

Trong công nghệ thông tin, trí tuệ nhân tạo là một ngành mới, nhưng phát triển
mạnh mẽ và đem lại nhiều kết quả to lớn. Con người thường tự cho mình là sinh vật
thông minh vì khả năng trí tuệ đóng vai trò quan trọng trong cuộc sống.Trong văn
học cũng đã từng có những câu chuyện đề cao về trí thông minh của con người.

Vào năm 1943, Warren McCulioch và Walter Pitts bắt đầu thực hiện nghiên cứu ba
cơ sở lý thuyết cơ bản: triết học cơ bản và chức 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 của Turing. Các tác giả đã nghiên cứu
đề 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ữ lập trình 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 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á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á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. Ted Shortliffe xây
dự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 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 thứ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.

2
Vào những năm 1990 và đầu thế kỷ 21, AI đã đạ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, 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ă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
các mối quan 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ự 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.1. Trí tuệ nhân tạo là gì ?

Để hiểu trí tuệ nhân tạo (artificial intelligence) là gì chúng ta bắt đầu với khái
niệm sự bay nhân tạo (flying machines), tức là cái máy bay.

Đã từ lâu, loài người mong muốn làm ra một cái máy 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. Không có gì ngạc nhiên khi những ý tưởng đầu
tiên làm máy bay là từ nghiên cứu cách con chim bay. Những chiếc má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ự sang một trang mới kể từ anh em nhà
Wright thiết kế máy bay dựa trên các nguyên lý của khí động lực học
(aerodynamics).

Các máy bay hiện nay, như đã thấy, có sức trở rất lớn và bay được quãng
đường có thể vòng quanh thế giới. Nó không nhất thiết phải có nguyên lý bay của
con chim nhưng vẫn bay được như chim (dáng vẻ), và còn tốt hơn chim.

Quay lại câu hỏi Trí tuệ nhân tạo là gì. Trí tuệ nhân tạo là trí thông minh của
máy do con người tạo ra. Ngay từ khi chiếc máy tính điện tử đầu tiên ra đời, các
nhà khoa học máy tính đã hướng đến phát hiển hệ thống máy tính (gồm cả phần

3
cứng và phần mềm) sao cho nó có khả năng thông minh như loài người. Mặc dù
cho đến nay, theo quan niệm của người viết, ước mơ này vẫn còn xa mới thành
hiện thực, tuy vậy những thành tựu đạt được cũng không hề nhỏ: chúng ta đã làm
được các hệ thống (phần mềm chơi cờ vua chạy trên siêu máy tinh GeneBlue) có
thể thắng được vua cờ thế giới; chúng ta đã làm được các phần mềm có thể chứng
minh được các bài toán hình học; v.v. Hay nói cách khác, trong một số lĩnh vực,
máy tính có thể thực hiện tốt hơn hoặc tương đương con người (tất nhiên không
phải tất cả các lĩnh vực). Đó chính là các hệ thống thông minh.

Có nhiều cách tiếp cận để làm ra trí thông minh của máy (hay là trí tuệ nhân
tạo), chẳng hạn là nghiên cứu cách bộ não người sản sinh ra trí thông minh của loài
người nhưthế nào rồi ta bắt chước nguyên lý đó, nhưng cũng có những cách khác
sử dụng nguyên lý hoàn toàn khác với cách sản sinh ra trí thông minh của loài
người mà vẫn làm ra cái máy thông minh như hoặc hơn người; cũng giống như
máy bay hiện nay bay tốt hơn con chim do nó có cơ chế bay không phải là giống
như cơ chế bay của con chim.

Như vậy, trí tuệ nhân tạo ở đây là nói đến khả năng của máy khi thực hiện
các công việc mà con người thường phải xử lý; và khi dáng vẻ ứng xử hoặc kết quả
thực hiện của máy là tốt hơn hoặc tương đương với con người thì ta gọi đó là máy
thông minh hay máy đó có trí thông minh. Hay nói cách khác, đánh giá sự thông
minh của máy không phải dựa trên nguyên lý nó thực hiện nhiệm vụ đó có giống
cách con người thực hiện hay không mà dựa trên kết quả hoặc dáng vẻ ứng xử bên
ngoài của nó có giống với kết quả hoặc dáng vẻ ứng xử của con người hay không.

Các nhiệm vụ của con người thường xuyên phải thực hiện là: giải bài toán
(tìm kiếm, chứng minh, lập luận), học, giao tiếp, thể hiện cảm xúc, thích nghi với
môi trường xung quanh, v.v., và dựa trên kết quả thực hiện các nhiệm vụ đó để kết
luận rằng một ai đó có là thông minh hay không. Môn học Trí tuệ nhân tạo nhằm

4
cung cấp các phương pháp luận để làm ra hệ thống có khả năng thực hiện các
nhiệm vụ đó: giải toán, học, giao tiếp, v.v. bất kể cách nó làm có như con người
hay không mà là kết quả đạt được hoặc dáng vẻ bên ngoài như con người.

1.1.2. Vai trò của trí tuệ nhân tạo

Trí tuệ nhân tạo bao quát rất nhiều lĩnh vực nghiên cứu hẹp. Nó nghiên cứu từ các
lĩnh vực tổng quát như máy nhận biết, suy luận logic, đến các bài toán như chơi cờ,
chứng minh định lý, tim kiểm đường đi. Thường thì các nhà khoa học ở các lĩnh vực
khác tìm đến với trí tuệ nhân tạo ở các kỹ thuật hệ thống hóa và tự động hóa các xử
lý trí thức cũng như các phương pháp thuộc lĩnh vực mang tính người.

Trí tuệ nhân tạo nghiên cứu kỹ thuật làm cho máy tính có thể “suy nghĩ một
cách thông minh" và mô phỏng quá trình suy nghĩ của con người khi đưa ra những
quyết định, lời giải. Trên cơ sở đó, thiết kế các chương trình cho máy tính để giải
quyết bài toán.

Sự ra đời và phát triển của trí tuệ nhân tạo đã tạo ra một bước nhảy vọt về
chất trong kỹ thuật và kỹ nghệ xử lý thông tin. Trí tuệ nhân tạo chính là cơ sở của
công nghệ xử lý thông tin mới, độc lập với công nghệ xử lý thông tin truyền thống
dựa trên văn bản giấy tờ. Điều này được thể hiện qua các mặt sau:

- Nhờ những công cụ hình thức hóa (các mô hình logic ngôn ngữ, logic mở...),
các tri thức thủ tục và tri thức mô tả có thể diễn được trong máy. Do vậy quá trình
giải bài toán được tiến hành hữu hiệu hơn.

- Mô hình logic ngôn ngữ đã mở rộng khả năng ứng dụng của máy tính trong
lĩnh vực đòi hỏi tri thức chuyên gia ở trình độ cao, rất khó như: Y học, sinh học, địa
lý, tự động hóa.

5
- Một số phần mềm trí tuệ nhân tạo thể hiện tính thích nghi và tính mềm dẻo
đối với các lớp bài toán thuộc nhiều lĩnh vực khác nhau. Khi máy tính được trang bị
các phần mềm trí tuệ nhân tạo ghép mạng sẽ cho phép giải quyết những bài toán cỡ
lớn và phân tán.

1.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 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ứ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ồm
cá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án lậ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ột phạ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ậ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, tức 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ó độ phức 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 thức lớ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ínhbiểu đạt đủ tốt (tùy theo từng ứng dụng) và có thể lập luận hiệu quả.

6
⮚ 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 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á tri
thứ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ụng trê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ữ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 thức hóa học
DENDRAL, …

⮚ Robotics…

1.1.4. Hạn chế của AI.

Trí tuệ nhân tạo mang lại rất nhiều giá trị cuộc sống cho con người nhưng cũng
tiềm ẩn nhiều nguy cơ.

Rất nhiều chuyên gia lo lắng rằng khi trí tuệ nhân tạo đạt tới một ngưỡng nào
đó thì đó cũng là thời điểm loài người bị tận diệt. Rất nhiều các bộ phim đã khai thác
đề tài này với nhiều góc nhìn, nhưng qua đó đều cảnh báo mọi người về mối nguy hại
đặc biệt này.

7
Dự báo trong 5 đến 10 năm tới ngành khoa học máy tính này sẽ phát triển lên tới
đỉnh cao.Lúc này sẽ là đỉnh điểm của những thành tựu tương lai.

1.2 GIỚI THIỆU VỀ KỸ 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 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.

8
1.2.2 Một thuật toán 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.3 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.

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.

9
1.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 thuật toán minimax. Nếu như mỗi người chơi có 3 chọn lựa
và ma trận lợi cho A là:

B chọn B chọn B chọn


B1 B2 B3

A chọn +3 -2 +2
A1

A chọn -1 0 +4
A2

A chọn -4 -3 +1
A3

Hình 1: 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 đó
10
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 và có thể bị 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ì. 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.4 KẾT LUẬN


- Ư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.

11
CHƯƠNG 2: BÀI TOÁN CỜ CARO.

2.1. BÀI TOÁN:

Cờ Caro chính là môn có logic lâu đời và cổ xưa nhất trên Trái Đất. Cờ Caro
đã được sáng tạo từ nhiều nền văn minh khác nhau một cách độc lập. Cổ Caro là một
trong các trò chơi phổ biến hiện nay. Vì nó là một trò chơi sử dụng tư duy khá nhiều
cũng như trò chơi này rất lôi cuốn và tạo cảm giác hưng phấn thủ vị cho người chơi,
Cờ Caro không phân biệt kén chọn người chơi, không phân biệt ai cả nó là trò chơi
tác động tư duy suy nghĩ của con người rất nhiều. Cờ Caro khá thông dụng ở nhiều
nước trong đó không thể không kể đến Việt Nam, đặc biệt là nó khá phổ biến với các
bạn học sinh nước ta, chỉ đơn giản từ tờ giấy được kẻ thành các ô vuông nhỏ và 2
người chơi là có thể chơi được trò cờ Caro này rồi. Từ thủa ban đầu con người (mọi
người chơi trò này) đã thi đấu với nhau trên giấy, vì giấy ta cần yêu cầu nó phải là
được kẻ đều thành các ô, nếu là giấy ô ly thì có thể nói là không gian ô quá nhỏ còn
nếu là giấy kẻ ngay hay là giấy A4 thì có vẻ như sẽ tiêu tốn khá nhiều thời gian trong
việc chuẩn bị kẻ lên không gian chơi cờ. Không chỉ vậy, đây là một trò chơi yêu cầu
có đối thủ luân phiên nhau thực hiện các bước đi nên nếu một người có như cầu
muốn chơi trò này thì lại không thể tự mình chơi một mình được. Chính vì vậy, con
người dần tiến tới lập trình chơi cờ Caro trên máy tính vừa không cần phải phi công
kẻ từ dòng từ ở trên trang giấy mà còn có thể thực hiện chơi game này với máy tính
khi chỉ có một mình. Cờ Caro thể hiện tính chất đối kháng cao trong thi đấu game đòi
hỏi suy nghĩ của người chơi. Chương trình có chế độ chơi giữa máy tính, khi chạy sẽ
có bản có được hiện ra, trong quá trình chơi sẽ có thông báo máy (người) thắng cuộc.

12
2.2. GIẢI QUYẾT BÀI TOÁN.

2.2.1 Ý tưởng:

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. • 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. b. Á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.

int max_value(state s, int dept){

if(

terminal_test() || dept >= 4

return eval(s);

v = -;

for(duyệt tất cả các trạng thái con s’ của s){

v = max(v, min_value(s’, dept + 1));

13
return v;

int min_value(state s, int dept){

if(terminal_test() || dept >= 4 )

return eval(s); v =+;

for(duyệt tất cả các trạng thái con s’ của s){

v = min(v, max_value(s’, dept+ 1));

return v;

Hàm xác định trạng thái kết thúcterminal_test():

2.2.2 Phương pháp giải quyết nước đi:

Tìm kiếm nước đi:

Giới thiệu về không gian tìm kiếm :

Trong trò chơi caro,cứ sau mỗi nước cờ,mỗi đối thủ sẽ chọn ra từ những ô
trống để đi,do đó,sau mỗi 1 nước đi thì số ô trống còn lại sẽ giảm đi.Như vậy,việc tìm
nước đi tiếp theo cho trạng thái có sẵn chỉ là việc tìm kiếm những ô trống còn
lại,đồng thời,không gian tìm kiếm sẽ thu he theo số nước đi đã tạo.

Không gian chon nước đi từ mỗi trạng thái ban đầu là hữu hạ,nhưng không
gian tìm kiếm một nước đi dẫn đến chiến thắng là rất lớn.Do đó ta không thể vét sạch
không gian tìm kiếm nước đi này mà phải giới hạn không gian tìm kiếm.

14
2.3 Mô tả bài toán cờ caro theo minmax.

Trò chơi cờ caro được thực hiện bởi hai đối thủ trên bàn cờ hình vuông có kích
thước N*N ( N tùy ý ).Hai ký hiêu X và O sẽ đại diện cho hai quân cờ.Người chơi có
nhiệm vụ thay phiên nhau điền ký hiệu của mình vào các ô trên bàn cờ.Người thắng
sẽ là người dẫn đầu tiên tạo được 5 quân của mình thành một chuỗi liên tiếp trên một
hàng ,doc,chéo.

Hình 2 Mô tả cờ

15
Như hình trên ta thấy là trạng thái hiện tại của game đang đến lượt đánh của
người chơi X đại diện cho MAX. Ta tạm quy định giá trị MAX lúc game thắng cho X
= +10 và MIN lúc game thua cho X = -10 và lúc game hòa = 0. Lúc này ở lượt 1,
MAX có thể đi được 1 trong 3 nước như hình. Vậy làm sao để chọn 1 trong 3 nước đó
nước nào là tốt nhất để đi. Chúng ta dựa vào giá trị của từng nước để chọn nước tốt
nhất, như ở đây 3 node đó thuộc lớp MAX nên chọn giá trị lớn nhất. Chúng ta bắt đầu
tìm giá trị của từng node đó. Ở lớp MAX trong lượt 1, thì ta có node 1,2,3 được đánh
số từ trái sáng phải như hình. Node 3 chúng ta đã là node lá và có giá trị là +10. Còn 2
node 1,2 thì chưa biết giá trị của nó tại lượt 1 nên chúng ta dựa vào giá trị của các
node con để định giá trị và bằng giá trị bé nhất của các node con ở lớp MIN tại lượt 2.
Cứ tiếp tục tương tự như vậy đến lúc gặp node lá thì từ node lá đó ta suy ngược lại và
ta tính được node 1 có giá trị là -10 và node 2 là 0. Vậy nước đi tốt nhất ở đây là như
node 3 có giá trị lớn nhất là +10.

16
CHƯƠNG 3: ĐÁNH GIÁ THỬ NGIỆM

3.1 Cặt đặt với C# Winform

3.1.1 Giao diện khi chạy chương trình

Hình 3: Giao diện khi chạy chương trình

17
3.1.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

Hình 4: bàn cờ khi bắt đầu chơi

18
3.1.3 Giao diện sau khi chơi ( chúng ta sẽ tích vào ô trống cho đến khi một trong
hai người hoặc máy hoàn thành 5 kí tự thẳng hàng và sau đó hệ thống sẽ thông báo
người thắng cuộc và hỏi xem chúng ta có muốn chơi ván mới không)

Hình 5: ván đấu kết thúc

19
3.2 Code

20
Hình 6 Code

21
KẾT LUẬN

Với kiến thức hiện có của mình, chúng em đã hoàn thành các yêu cầu ở
trên khi tiến hành thực hiện đề tài “ÁP DỤNG THUẬT TOÁN MINIMAX
GIẢI QUYẾT BÀI TOÁN CỜ CARO”. Tuy nhiên, trong quá trình làm sẽ
không tránh khỏi những 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, để bài này
được hoàn thiện hơn !

Chúng em xin gửi lời cảm ơn chân thành tới giảng viên giảng dạy môn
Nhập môn Trí tuệ nhân tạo đã 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!

22
TÀI LIỆU THAM KHẢO

1 Nhập môn trí tuệ nhân tạo,TS Ngô Hữu Phúc ( học viện kĩ thuật quân sự).

2 Nhập môn trí tuệ nhân tạo Artificial intelligence,Phạm Thọ Hoàn,

23

You might also like