Tải bản đầy đủ (.doc) (73 trang)

GIẢI THUẬT TÌM KIẾM MINIMAX VÀ ỨNG DỤNG TRONG CÁC TRÒ CHƠI CÓ TỔNG BẰNG KHÔNG

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (830.6 KB, 73 trang )

ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN
----------------
NGUYỄN THỊ LỆ
GIẢI THUẬT TÌM KIẾM MINIMAX VÀ ỨNG DỤNG TRONG
CÁC TRÒ CHƠI CÓ TỔNG BẰNG KHÔNG
Chuyên ngành: Bảo đảm toán học cho máy tính và hệ thống tính toán
Mã số: 60.46.35
LUẬN VĂN THẠC SĨ KHOA HỌC
NGƯỜI HƯỚNG DẪN KHOA HỌC: TS. NGUYỄN THỊ HỒNG MINH
Hà Nội - 2009
2
Mục lục
LỜI NÓI ĐẦU.........................................................................................................5
CHƯƠNG 1: TỔNG QUAN VỀ CÁC VẤN ĐỀ TÌM KIẾM..............................7
1.1 Bài toán tìm kiếm và không gian trạng thái....................................................................7
1.1.1 Bài toán tìm kiếm......................................................................................................7
1.1.2 Không gian tìm kiếm.................................................................................................9
1.2 Các kỹ thuật tìm kiếm cơ bản.........................................................................................12
1.2.1 Tìm kiếm không có thông tin..................................................................................13
1.2.2 Tìm kiếm có thông tin.............................................................................................16
1.2.3 Tìm kiếm đối kháng................................................................................................17
CHƯƠNG 2: GIẢI THUẬT TÌM KIẾM MINIMAX.........................................21
2.1 Giới thiệu........................................................................................................................21
2.1.1 Trò chơi có tổng bằng không (Zero-sum-game).....................................................22
2.1.2Định lý Minimax......................................................................................................27
2.2 Giải thuật Minimax.........................................................................................................28
2.2.1 Ý tưởng....................................................................................................................28
2.2.2 Áp dụng giải thuật Minimax đến độ sâu lớp cố định.............................................32
2.2.3 Thủ tục Minimax.....................................................................................................34
2.2.4 Đánh giá...................................................................................................................39


2.3 Giải thuật cải tiến Alpha-beta.........................................................................................39
2.3.1 Ý tưởng....................................................................................................................41
2.3.2 Giải thuật.................................................................................................................42
2.3.3 Đánh giá...................................................................................................................45
2.4 So sánh giải thuật Minimax và giải thuật Alpha-beta...................................................48
CHƯƠNG 3: ỨNG DỤNG....................................................................................51
3.1 Phân tích bài toán............................................................................................................51
3.1.1 Trò chơi ...................................................................................................................51
3.1.2 Cơ sở lý thuyết.........................................................................................................53
3.2 Cài đặt chương trình.......................................................................................................53
3.2.1 Cấu trúc chương trình và mối quan hệ giữa các lớp chính.....................................53
3.2.2 Lớp Form1...............................................................................................................55
3
3.2.3 Lớp CBoard.............................................................................................................55
3.2.4 Lớp gameAI.............................................................................................................56
3.3 Một số giao diện và kết quả chạy chương trình............................................................67
KẾT LUẬN...........................................................................................................................71
Tài liệu tham khảo................................................................................................................72
4
LỜI NÓI ĐẦU
Lý thuyết trò chơi (game theory) thường được coi là một nhánh của toán học
ứng dụng và kinh tế học ứng dụng nhằm nghiên cứu về các tình huống trong đó các
bên tham gia trò chơi áp dụng những chiến lược ra quyết định nhằm tối ưu hóa kết
quả mình nhận được. Ban đầu Lý thuyết trò chơi được phát triển như một công cụ để
nghiên cứu hành vi kinh tế học, ngày nay Lý thuyết này được sử dụng trong nhiều
ngành khoa học như Sinh học, Triết học, Chính trị học… Đặc biệt Lý thuyết trò chơi
đã thu hút được sự chú ý của các nhà Khoa học máy tính do ứng dụng của nó trong
Trí tuệ nhân tạo và Điều khiển học.
Trí tuệ nhân tạo đã vận dụng Lý thuyết trò chơi để nghiên cứu về các trò chơi
đối kháng và thiết kế chương trình chơi cờ giữa Người và Máy tính. Do bùng nổ tổ

hợp quá lớn của cây trò chơi mà cả người và máy không thể (và không bao giờ) có
thể tìm kiếm vét cạn (hết mọi khả năng). Do đó phương pháp tìm kiếm duy nhất là
chỉ tìm kiếm đến một độ sâu giới hạn nào đó và chọn nước đi dẫn đến một thế cờ có
lợi nhất cho mình. Do phải tính cả khả năng chống trả của đối phương nên ta không
dùng được các thuật toán tìm kiếm thông thường mà phải dùng một thuật toán tìm
kiếm riêng cho cây trò chơi, đó là thuật toán theo chiến lược Minimax. Đây cũng là
chiến lược hiệu quả áp dụng trong các trò chơi có tổng bằng không. Chúng ta đều
biết, nhiều tình huống trong thực tế đặc biệt là trong lĩnh vực Kinh tế, Chính trị có thể
nhìn nhận như một trò chơi có tổng bằng không. Do đó việc nghiên cứu chiến lược
tìm kiếm nước đi cho dạng trò chơi này có thể mang lại những ý nghĩa thực tiễn nhất
định.
Nội dung của luận văn tìm hiểu và nghiên cứu về thuật toán tìm kiếm đối
kháng Minimax, các cải tiến của nó và ứng dụng trong trò chơi có tổng bằng không.
Nội dung bản luận văn được chia làm 3 chương:
 Chương 1 trình bày một cách tổng quan về các vấn đề tìm kiếm : bài toán tìm
kiếm, biểu diễn vấn đề bằng không gian trạng thái và các kỹ thuật tìm kiếm cơ bản.
5
 Chương 2 trình bày giải thuật tìm kiếm Minimax và giải thuật cải tiến Alpha-
beta áp dụng cho các trò chơi với tổng bằng không. Mỗi giải thuật được trình bày
gồm các nội dung: ý tưởng, thủ tục thực hiện giải thuật và đánh giá.
 Chương 3 trình bày một ứng dụng của thuật toán tìm kiếm Minimax áp dụng
cho trò chơi xếp các quân hậu lên bàn cờ có chướng ngại vật.
Trong thời gian học tập và nghiên cứu để hoàn thành luận văn này, tác giả đã
nhận được sự quan tâm, hướng dẫn, đóng góp của các thầy cô, các bạn bè và người
thân.
Trước hết, tác giả xin được dành lời cảm ơn chân thành và lòng biết ơn sâu
sắc nhất tới giáo viên hướng dẫn của mình là Tiến sĩ Nguyễn Thị Hồng Minh, người
đã định hướng, gợi mở những ý tưởng sâu sắc và hiệu quả, đã tận tình chỉ bảo giúp
đỡ tác giả về mọi mặt để có thể hoàn thành nhiệm vụ nghiên cứu.
Luận văn được thực hiện bằng những kiến thức mà tác giả được trang bị trong

suốt 2 năm học tại Khoa Toán - Cơ - Tin, Trường Đại Học Khoa học tự nhiên với sự
giảng dạy nhiệt tình của các giảng viên và sự hăng say học tập của các học viên. Lời
cảm ơn chân thành xin được gửi tới các thầy, cô trong khoa Toán-Cơ-Tin học, đặc
biệt các thầy cô trong bộ môn Tin học, các anh, chị và bạn bè trong cùng lớp cao học
chuyên ngành Bảo đảm toán học cho máy tính và hệ thống tính toán khóa 2007-2009.
Lời cảm ơn cuối cùng xin được dành cho gia đình và những bạn bè thân thiết,
những người đã dành sự quan tâm và động viên hết mực để tác giả hoàn thành tốt bản
luận văn này.
Hà nội, tháng 10 năm 2009
6
CHƯƠNG 1: TỔNG QUAN VỀ CÁC VẤN ĐỀ TÌM KIẾM
1.1 Bài toán tìm kiếm và không gian trạng thái
1.1.1 Bài toán tìm kiếm
Tìm kiếm luôn là thao tác nền móng cho rất nhiều tác vụ tính toán. Các bài
toán tìm kiếm bao gồm việc tìm cách tốt nhất để thu được thông tin cần cho một
quyết định. Mỗi bài toán bất kỳ đều chứa trong đó một bài toán con tìm kiếm theo
một chiều hướng nào đó, các tình huống tồn tại ở đó việc tìm kiếm cần phải xử lý là:
kiểm tra các tài khoản, thanh tra và điều khiển chất lượng…
Mộ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.
Chúng ta có thể kể ra rất nhiều vấn đề mà việc giải quyết nó được quy về vấn
đề tìm kiếm. Trong các trò chơi, chẳng hạn cờ vua, cờ caro vấn đề tìm kiếm được thể
hiện ở chỗ trong số rất nhiều nước đi được phép thực hiện, ta phải tìm ra các nước đi
dẫn tới tình thế có ưu thế thắng. Chứng minh định lý cũng có thể xem như vấn đề tìm
kiếm.
Có nhiều phát biểu bài toán tìm kiếm khác nhau. Trong phần này chúng ta
xem xét một số phát biểu của bài toán tìm kiếm như sau:
Trong lý thuyết tính toán, một bài toán tìm kiếm là một loại bài toán tính toán
được biểu diễn bởi một quan hệ nhị phân. Nếu R là một quan hệ nhị phân sao cho
field(R)


Γ
+


T là một máy Turing, thì T tính f nếu:
- Nếu mỗi x có một số giá trị y mà R(x,y) thì T truy nhập vào với đầu ra z mà R(x,z)
( có thể có nhiều y, và T chỉ cần một trong số chúng)
- Nếu với giá trị x mà không có giá trị y thỏa mãn R(x,y) thì T loại bỏ x.
Chú ý rằng đồ thị của hàm bộ phận là một quan hệ nhị phân, và nếu T tính một hàm
bộ phận thì hầu hết mọi giá trị có thể cho đầu ra.
7
Một quan hệ R có thể được biểu diễn như một bài toán tìm kiếm, và một máy Turing
tính R còn được gọi để giải quyết nó. Mọi bài toán tìm kiếm đều tương ứng với bài
toán quyết định, cụ thể là:
L(R) = { x |

yR(x,y)}.
Tìm kiếm nghĩa là tìm một hay nhiều mẩu thông tin đã được lưu trữ. Thông
thường, thông tin được chia thành các mẩu tin (record), mỗi mẩu tin đều có một
KHÓA (key) dùng cho việc tìm kiếm. Ta sẽ luôn có một khoá cho trước giống như
khoá của các mẩu tin mà ta cần tìm. Mỗi mẩu tin được tìm thấy sẽ chứa toàn bộ
thông tin để cung cấp cho một quá trình xử lý nào đó. Việc tìm kiếm được áp dụng
rất đa dạng và rộng rãi.
Ví dụ: Một Ngân hàng nắm giữ tất cả thông tin của rất nhiều tài khoản khách
hàng và cần tìm kiếm để kiểm tra các biến động. Một hãng Bảo hiểm hay một hệ
thống trợ giúp bán vé xe, vé máy bay….Việc tìm kiếm thông tin để đáp ứng việc sắp
đặt ghế và các yêu cầu tương tự như vậy là thực sự cần thiết.
Một phát biểu Bài toán tìm kiếm thường được sử dụng nhất là: “Cho một bảng
gồm n bản ghi R

1
, R
2
, …., R
n
. Mỗi bản ghi R
i
(1

i

n) tương ứng với 1 khóa k
i
. Hãy
tìm bản ghi có giá trị khóa tương ứng bằng X cho trước. X được gọi là khóa tìm kiếm
hay đối trị tìm kiếm. Công việc tìm kiếm sẽ hoàn thành khi có một trong hai tình
huống sau đây xảy ra.
1. Tìm được bản ghi có giá trị khóa tương ứng bằng X, lúc đó ta nói: phép tìm kiếm
được thỏa (Successful).
2. Không tìm được bản ghi nào có khóa bằng X cả: phép tìm kiếm không thỏa.
(unsuccessful).
Thuật ngữ thường được dùng trong việc mô tả cấu trúc dữ liệu của việc tìm kiếm là
TỪ ĐIỂN và BẢNG KÝ HIỆU. Một ví dụ điển hình như ta muốn xây dựng hệ thống
tra từ điển Tiếng Anh chẳng hạn. Ở đây, “khoá” là từ và “mẩu tin” là diễn giải cho từ
đó, mỗi mẩu tin chứa định nghĩa, cách phát âm và các thông tin khác. BẢNG KÝ
8
HIỆU chính là từ điển cho chương trình và các mẩu tin chứa thông tin mô tả đối
tượng được đặt tên.
Một cách tổng quát, bài toán tìm kiếm có thể được phát biểu dựa vào không gian
trạng thái với bộ 4 (S, T

o
, Op, T
G
) hoặc bộ 5: (S, T
0
, Op, T
G
,, Pcost).
Trong đó: S là tập các trạng thái, T
0
là trạng thái ban đầu, Op là tập các toán tử hay
tập các phép chuyển trạng thái mà có thể chuyển một trạng thái này sang trạng thái
khác, T
G
là trạng thái đích. Pcost là chi phí đường đi. Mục đích của bài toán là tìm ra
cách chuyển từ trạng thái ban đầu sang trạng thái đích, nếu theo bộ 5 có thêm Pcost
thì bài toán cần tìm nghiệm tốt nhất nghĩa là tìm cách chuyển từ trạng thái ban đầu
đến trạng thái đích với chi phí nhỏ nhất (hoặc lớn nhất).
Phát biểu chi tiết hơn của cách biểu diễn này chúng ta sẽ xét trong mục không gian
tìm kiếm dưới đây.
1.1.2 Không gian tìm kiếm
1.1.2.1 Không gian tìm kiếm
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. Đó có thể là không gian liên tục,
chẳng hạn không gian các véctơ thực n chiều; hoặc cũng có thể là không gian các đối
tượng rời rạc như tập các nút của đồ thị hay tập các lời giải của bài toán [7].
Một cách chung nhất, nhiều bài 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 đồ
thị, tìm đường đi hiệu quả nhất đến một đỉ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 T
0
và T
G
hãy xây dựng chuỗi trạng thái T
0
, T
1
, T
2
, ..., T
n-1
, T
n
= T
G
sao cho :


n
i1i
TPcost(T
1
),
thỏa mãn một điều kiện cho trước (thường là nhỏ nhất).
9
Trong đó, T
i
thuộc tập hợp S (gọi là không gian trạng thái – state space) bao

gồm tất cả các trạng thái có thể có của bài toán và Pcost(T
i-1
,T
i
) là chi phí để biến đổi
từ trạng thái T
i-1
sang trạng thái T
i
. Tuy nhiên, từ một trạng thái T
i-1
ta có nhiều cách
để biến đổi sang trạng thái T
i
. Khi nói đến một biến đổi cụ thể từ T
i-1
sang T
i
ta sẽ
dùng thuật ngữ hướng đi (với ngụ ý nói về sự lựa chọn).
Hình 1.1: Mô hình chung của các vấn đề-bài toán phải giải quyết bằng phương pháp
tìm kiếm lời giải. Không gian tìm kiếm là một tập hợp trạng thái - tập các nút của đồ
thị. Chi phí cần thiết để chuyển từ trạng thái này sang trạng thái khác

được biểu diễn
dưới dạng các con số nằm trên cung nối giữa hai nút tượng trưng cho hai trạng thái.
1.1.2.2 Biểu diễn vấn đề trong không gian trạng thái
Ta sẽ xét việc biểu diễn một vấn đề trong không gian trạng thái sao cho việc
giải quyết vấn đề được quy về việc tìm kiếm trong không gian trạng thái. Một phạm
vi rộng lớn các vấn đề, đặc biệt các câu đố, các trò chơi, có thể mô tả bằng cách sử

dụng khái niệm trạng thái và phép chuyển trạng thái hay là phép chuyển (phép biến
đổi trạng thái).
Ví dụ: Trong trò chơi cờ vua, mỗi cách bố trí các quân 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 lúc đầu cuộc chơi. Mỗi nướ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.
T
0
T
G
10
Như vậy muốn biểu diễn một vấn đề trong không gian trạng thái, ta cần xác
định các yếu tố sau:
- Trạng thái ban đầu
- Tập hợp các phép chuyển trạng thái. Trong đó mỗi toán tử hay phép chuyển mô tả
một hành động hoặc một phép biến đổi có thể đưa một trạng thái tới một trạng thái
khác.
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.
Ta sẽ ký hiệu không gian trạng thái là S, trạng thái ban đầu là T
0
(T
0

S). Mỗi
phép chuyển R có thể xem như một ánh xạ R: S

S. Nói chung R là một ánh xạ
không xác định khắp nơi trên S.
- Một tập hợp T

G
các trạng thái kết thúc (trạng thái đích). T
G
là tập con của không
gian S. Trong nhiều vấn đề (chẳng hạn các loại cờ) có thể có nhiều trạng thái đích và
ta không thể xác định trước được các trạng thái đích. Nói chung trong phần lớn các
vấn đề hay, ta chỉ có thể mô tả các trạng thái thỏa mãn một số điều kiện nào đó.
Khi biểu diễn một vấn đề thông qua các trạng thái và các phép chuyển, thì
việc tìm nghiệm của bài toán được quy về việc tìm đường đi từ trạng thái ban đầu tới
trạng thái đích. (Một đường đi trong không gian trạng thái là một dãy phép chuyển
dẫn một trạng thái tới một trạng thái khác).
Chúng ta có thể biểu diễn không gian trạng thái bằng đồ thị định hướng, trong
đó mỗi đỉnh đồ thị tương ứng với một trạng thái. Nếu có phép chuyển R biến đổi
trạng thái u thành trạng thái v, thì có cung gán nhãn R đi từ đỉnh u tới đỉnh v. Khi đó
một đường đi trong không gian trạng thái sẽ là một đường đi trong đồ thị.
Sau đây chúng ta sẽ xem xét một ví dụ về không gian trạng thái được xây dựng cho
bài toán 8 số.
Ví dụ : Bài toán 8 số. Cho bảng 3x3 ô và tám quân mang số hiệu từ 1 đến 8, còn lại
một ô trống. Mỗi quân ở cạnh ô trống có thể được chuyển dịch tới ô trống đó. Yêu
cầu của bài toán là tìm ra một dãy các chuyển dịch để biến đổi trạng thái ban đầu của
11
bảng (hình bên trái) thành một trạng thái xác định nào đó, chẳng hạn trạng thái trong
hình bên phải. Xem hình minh họa dưới đây:
Hình 1.2: Trạng thái ban đầu và trạng thái kết thúc của bài toán 8 số.
Trong bài toán này, trạng thái ban đầu là trạng thái ở bên trái hình, còn trạng
thái kết thúc ở bên phải hình. Tương ứng với các quy tắc chuyển dịch các quân, ta có
bốn phép chuyển: up (đẩy quân lên

), down (đẩy quân xuống


), left (đẩy quân
sang trái

), right (đẩy quân sang phải

). Rõ ràng là, các phép chuyển này chỉ là
các phép chuyển bộ phận; chẳng hạn, từ trạng thái ban đầu (hình bên trái), ta chỉ có
thể áp dụng các phép chuyển down, left, right.
Trong ví dụ trên việc tìm ra một biểu diễn thích hợp để mô tả các trạng thái
của vấn đề là khá dễ dàng và tự nhiên. Song trong nhiều vấn đề việc tìm hiểu được
biểu diễn thích hợp trong các trạng thái của vấn đề là hoàn toàn không đơn giản. Việc
tìm ra dạng biểu diễn tốt cho các trạng thái đóng vai trò hết sức quan trọng trong quá
trình giải quyết một vấn đề. Có thể nói rằng, nếu ta tìm được dạng biểu diễn tốt cho
các trạng thái của vấn đề, thì vấn đề hầu như đã được giải quyết.
1.2 Các kỹ thuật tìm kiếm cơ bản
Có nhiều kỹ thuật tìm kiếm khác nhau để giải quyết các bài toán tìm 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ả.
Chúng ta sẽ tìm hiểu về một số kỹ thuật tìm kiếm cơ bản trong các mục tiếp
theo, bao gồm: Tìm kiếm không có thông tin, tìm kiếm có thông tin và tìm kiếm đối
kháng. Trong đó, tập trung vào kỹ thuật tìm kiếm đối kháng để làm cơ sở cho phát
triển chương 2 của luận văn này.
28316475 12384765
12
1.2.1 Tìm kiếm không có thông tin
Một giải thuật tìm kiếm không có thông tin là giải thuật không tính đến bản
chất cụ thể của bài toán. Khi đó, các giải thuật dạng này có thể được cài đặt tổng
quát, và cùng một cài đặt có thể được sử dụng trong một diện rộng các bài toán (do
sử dụng trừu tượng hóa). Nhược điểm của các giải thuật này là phần lớn các không
gian tìm kiếm có kích thước cực kì lớn, và một quá trình tìm kiếm (đặc biệt tìm kiếm

theo cây) sẽ cần một khoảng thời gian đáng kể cho các ví dụ nhỏ. Sau đây ta sẽ giới
thiệu một số dạng tìm kiếm không có thông tin tiêu biểu ứng với các cách tổ chức dữ
liệu.
1.2.1.1 Tìm kiếm trên danh sách
Các giải thuật tìm kiếm trên danh sách là loại giải thuật tìm kiếm cơ bản nhất.
Mục đích là tìm trong một tập hợp một phần tử chứa một khóa nào đó. Các giải thuật
tìm kiếm tiêu biểu nhất trên danh sách là: Tìm kiếm tuần tự (hay tìm kiếm tuyến
tính), tìm kiếm nhị phân.
Tìm kiếm tuần tự kiểm tra từng phần tử trong danh sách theo thứ tự của danh
sách đó. Nó có thời gian chạy khá lớn: O(n), trong đó n là số phần tử trong danh sách,
nhưng có thể sử dụng cho một danh sách bất kỳ mà không cần tiền xử lý.
Tìm kiếm nhị phân là một thuật toán cao cấp hơn so với thuật toán tìm kiếm
tuần tự với thời gian chạy là O(log n). Đối với các danh sách lớn, thuật toán này tốt
hơn hẳn tìm kiếm tuyến tính nhưng nó đòi hỏi danh sách phải được sắp xếp từ trước
và đòi hỏi khả năng truy cập ngẫu nhiên. Thuật toán tìm kiếm nội suy tốt hơn so với
thuật toán tìm kiếm nhị phân đối với danh sách rất lớn và với phân bố gần đều.
Ngoài ra bảng băm (hash table) cũng được dùng cho tìm kiếm trên danh sách.
Nó đòi hỏi thời gian hằng số trong trường hợp trung bình, nhưng lại cần nhiều chi phí
về không gian bộ nhớ và thời gian chạy O(n) cho trường hợp xấu nhất. Một phương
pháp tìm kiếm khác dựa trên các cấu trúc dữ liệu chuyên biệt sử dụng cây tìm kiếm
nhị phân cân bằng (self-balancing binary search tree) và đòi hỏi thời gian chạy O(log
13
n). Các giải thuật loại này có thể coi là mở rộng của tư tưởng chính về tìm kiếm nhị
phân để cho phép chèn và xóa nhanh.
1.2.1.2 Tìm kiếm trên cây
Tìm kiếm trên cây là trung tâm của các kỹ thuật tìm kiếm. Các thuật toán này
tìm kiếm trên các cây gồm các nút, cây này có thể là cây tường minh hoặc được xây
dựng dần trong quá trình tìm kiếm.
Nguyên lý cơ bản là: một nút được lấy ra từ một cấu trúc dữ liệu, các nút con
của nó được xem xét và bổ sung vào cấu trúc dữ liệu đó. Bằng cách thao tác trên cấu

trúc dữ liệu này, cây tìm kiếm được duyệt theo các thứ tự khác nhau, chẳng hạn theo
từng mức ( tìm kiếm theo chiều rộng) hoặc đi tới một nút lá trước rồi quay lui (tìm
kiếm theo chiều sâu).
Tìm kiếm theo chiều rộng
Tìm kiếm chiều rộng mang hình ảnh của vết dầu loang. Từ trạng thái ban đầu,
ta xây dựng tập hợp S bao gồm các trạng thái kế tiếp (mà từ trạng thái ban đầu có thể
biến đổi thành). Sau đó, ứng với mỗi trạng thái T
k
trong tập S, ta xây dựng tập S
k
bao
gồm các trạng thái kế tiếp của T
k
rồi lần lượt bổ sung các S
k
vào S. Quá trình này cứ
lặp lại cho đến lúc S có chứa trạng thái kết thúc hoặc S không thay đổi sau khi đã bổ
sung tất cả S
k
.
Tìm kiếm theo chiều sâu
Trong tìm kiếm theo chiều sâu, tại trạng thái (đỉnh) hiện hành, ta chọn một
trạng thái kế tiếp (trong tập các trạng thái có thể biến đổi thành từ trạng thái hiện
hành) làm trạng thái hiện hành cho đến lúc trạng thái hiện hành là trạng thái đích.
Trong trường hợp tại trạng thái hiện hành, ta không thể biến đổi thành trạng thái kế
tiếp thì ta sẽ quay lui (back-tracking) lại trạng thái trước trạng thái hiện hành (trạng
thái biến đổi thành trạng thái hiện hành) để chọn đường khác. Nếu ở trạng thái trước
này mà cũng không thể biến đổi được nữa thì ta quay lui lại trạng thái trước nữa và
14
cứ thế. Nếu đã quay lui đến trạng thái khởi đầu mà vẫn thất bại thì kết luận là không

có lời giải.
Tìm kiếm chiều sâu và tìm kiếm chiều rộng đều là các phương pháp tìm kiếm
có hệ thống và chắc chắn tìm ra lời giải. Tuy nhiên, do bản chất là vét cạn nên với
những bài toán có không gian lớn thì ta không thể dùng hai chiến lược này được. Hơn
nữa, hai chiến lược này đều có tính chất "mù quáng" vì chúng không chú ý đến
những thông tin (tri thức) ở trạng thái hiện thời và thông tin về đích cần đạt tới cùng
mối quan hệ giữa chúng. Các tri thức này vô cùng quan trọng và rất có ý nghĩa để
thiết kế các giải thuật hiệu quả hơn. Do đó hai chiến lược trên được cải tiến thành
một số thuật toán tìm kiếm mới trên cây bao gồm: tìm kiếm lặp sâu dần, tìm kiếm
chiều sâu giới hạn, tìm kiếm hai chiều và tìm kiếm chi phí đều [7].
1.2.1.3 Tìm kiếm trên đồ thị
Nhiều dạng bài toán tìm kiếm cụ thể trên đồ thị như: Tìm đường đi ngắn nhất,
tìm cây bao trùm nhỏ nhất, tìm bao đóng bắc cầu,…Tuy nhiên ứng với mỗi dạng bài
toán có một số giải thuật tìm kiếm thích hợp để giải quyết. Chẳng hạn thuật toán
Dijkstra, thuật toán Kruskal, giải thuật láng giềng gần nhất và giải thuật Prim
[3]. Các thuật toán này có thể được coi là các mở rộng của các thuật toán tìm kiếm
trên cây: tìm kiếm theo chiều sâu, tìm kiếm theo chiều rộng.
Thuật toán Dijkstra là một thuật toán giải quyết bài toán đường đi ngắn nhất nguồn
đơn trong một đồ thị có hướng không có cạnh mang trọng số âm. Thuật toán này có
thể tính toán tất cả các đường đi ngắn nhất từ một đỉnh xuất phát cho trước s tới mọi
đỉnh khác mà không làm tăng thời gian chạy.
Thuật toán Kruskal là thuật toán xây dựng cây bao trùm ngắn nhất bằng cách chọn
thêm dần các cung vào cây.
Thuật toán Prim: là thuật toán nhằm xây dựng cây bao trùm ngắn nhất. Tư tưởng
của thuật giải Prim là chọn đưa dần vào cây T các đỉnh kề “tốt nhất” trong số các
đỉnh còn lại. Thời gian thực hiện giải thuật Prim là O(n
2
).
15
1.2.2 Tìm kiếm có thông tin

Các kỹ thuật tìm kiếm không có thông tin trong một số trường hợp rất kém
hiệu quả và thậm chí không áp dụng được. Để tăng tốc độ của các quá trình tìm kiếm
ta có thể dùng các giải thuật tìm kiếm có thông tin. Trong mục này chúng ta sẽ hệ
thống một số chiến lược tìm kiếm có thông tin hay còn gọi là chiến lược tìm kiếm
heuristic (tìm kiếm kinh nghiệm), đó là các phương pháp sử dụng hàm đánh giá để
hướng dẫn sự tìm kiếm.
Trong nhiều vấn đề, ta có thể sử dụng kinh nghiệm, tri thức của chúng ta về
vấn đề để đánh giá các trạng thái của vấn đề. Với mỗi trạng thái u ta xác định một giá
trị số h(u), số này đánh giá “sự gần đích” của trạng thái u. Hàm h(u) được gọi là hàm
đánh giá. Trong tìm kiếm có thông tin người ta sử dụng hàm đánh giá này như một
đánh giá heuristic đặc thù cho bài toán cần giải quyết với vai trò hướng dẫn cho quá
trình tìm kiếm. Một cách đánh giá heuristic tốt sẽ làm cho quá trình tìm kiếm có
thông tin hoạt động hiệu quả hơn hẳn một phương pháp tìm kiếm không có thông tin
bất kỳ. Trong quá trình tìm kiếm, tại mỗi bước ta sẽ chọn trạng thái để phát triển là
trạng thái có giá trị hàm đánh giá là nhỏ nhất, trạng thái này được xem là trạng thái có
nhiều hứa hẹn nhất hướng tới đích.
Các kỹ thuật tìm kiếm sử dụng hàm đánh giá để hướng dẫn sự tìm kiếm được
gọi chung là các kỹ thuật tìm kiếm có thông tin hay tìm kiếm kinh nghiệm (tìm kiếm
heuristic). Các giai đoạn cơ bản để giải quyết vấn đề bằng tìm kiếm heuristic như
sau:
- Tìm biểu diễn thích hợp mô tả các trạng thái và các toán tử hay phép chuyển
của vấn đề
- Xây dựng hàm đánh giá
- Thiết kế chiến lược chọn trạng thái để phát triển ở mỗi bước.
Hai chiến lược tìm kiếm có thông tin quan trọng là tìm kiếm tốt nhất - đầu tiên (best-
first-search) và tìm kiếm leo đồi (hill-climbing search).
16
Tìm kiếm tốt nhất đầu tiên: là tìm kiếm theo chiều rộng được hướng dẫn
bởi hàm đánh giá. Nhưng nó khác tìm kiếm theo chiều rộng ở chỗ, trong tìm kiếm
theo chiều rộng ta lần lượt phát triển tất cả các đỉnh ở mức hiện tại để sinh các đỉnh

ở mức tiếp theo, còn trong tìm kiếm tốt nhất - đầu tiên ta chọn đỉnh để phát triển là
đỉnh tốt nhất được xác định bởi hàm đánh giá (tức là đỉnh có giá trị hàm đánh giá là
nhỏ nhất), đỉnh này có thể ở mức hiện tại hoặc ở các mức trên.
Thuật toán tìm kiếm leo đồi: thực chất là thuật toán tìm kiếm theo chiều sâu
được hướng dẫn bởi hàm đánh giá. Song khác với tìm kiếm theo chiều sâu, khi ta
phát triển một đỉnh u thì bước tiếp theo, ta chọn trong số các đỉnh con của u đỉnh có
nhiều hứa hẹn nhất để phát triển, đỉnh này cũng được xác định bởi hàm đánh giá.
1.2.3 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 đi cho người chơi trong các trò chơi đối kháng. Chơi cờ
có thể xem như vấn đề tìm kiếm trong không gian trạng thái. Sau đây chúng ta sẽ
xem thế nào trò chơi đối kháng và chiến lược tìm kiếm nào sẽ được áp dụng.
1.2.3.1 Trò chơi đối kháng
Trong các trò chơi đấu trí như các trò chơi cờ Vua, cờ Tướng, cờ vây, cờ caro
(go-moku), có một cây trò chơi bao gồm tất cả các nước đi có thể của cả hai đấu thủ
và các cấu hình bàn cờ là kết quả của các nước đi đó. Ta có thể tìm kiếm trên cây này
để có được một chiến lược chơi hiệu quả. Các trò chơi này còn gọi là các trò chơi đối
kháng, diễn ra giữa hai đấu thủ. Nói chung, các trò chơi đó đều có thể chuyển về một
dạng bài toán tìm kiếm đặc biệt: tìm đường đi đến các điểm cao nhất giữa hai đấu
thủ. Trong trò chơi này phải tính đến mọi nước đi mà đối thủ của ta có thể sử dụng.
Đặc điểm của các trò chơi trên như sau:
- Có hai đấu thủ, mỗi người chỉ đi một nước khi tới lượt.
- Các đấu thủ đều biết mọi thông tin về tình trạng trận đấu.
- 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.
17
Thông thường các trò chơi này hay được gọi là các loại cờ, đôi khi còn được gọi là
các trò chơi Minimax (dựa trên tên của thuật toán tìm kiếm cơ bản áp dụng cho
chúng). Thuật toán áp dụng cho dạng bài toán này là thuật toán tìm kiếm Minimax ta
sẽ trình bày chi tiết trong chương 2.

1.2.3.2 Cây trò chơi
Các trạng thái bàn cờ khác nhau (hay còn gọi là một thế cờ, tình huống cờ)
trong quá trình chơi có thể biểu diễn thành một cây tìm kiếm (được gọi là cây trò
chơi - hình 1.3) và ta sẽ tiến hành tìm kiếm trên cây để tìm được nước đi tốt nhất.
Cây trò chơi có các nút là các tình huống khác nhau của bàn cờ, các nhánh nối giữa
các nút sẽ cho biết từ một tình huống bàn cờ chuyển sang tình huống khác thông qua
chỉ một nước đi đơn nào đó. Tuy nhiên, các nước đi này diễn ra theo cặp do hai đấu
thủ lần lượt tiến hành. Độ sâu của cây trò chơi là số tầng của cây. Thuật ngữ “nước
đi” được thống nhất là một lần đi của một đấu thủ hoặc một lần đi phản ứng lại của
đối thủ bên kia. Chú ý điều này khác với thói quen dùng trong thực tế một nước đi
bao gồm lần đi của ta và một lần đi của đối thủ. Nói cách khác, nước đi ở đây thực
chất chỉ là "nửa nước" theo cách hiểu của làng cờ.

Tóm lại: Cây trò chơi dùng các nút để thể hiện trạng thái của trò chơi. Cây này là một
dạng của cây ngữ nghĩa, có các nhánh ứng với việc chuyển cấu hình sau một nước đi.
Có thể xem hai nhánh xuất phát từ một nút là hai quyết định của hai đấu thủ [5].
Gọi p là số mức của cây thì độ sâu của cây là d= p-1. Mỗi lựa chọn hay bước chuyển
là một nước đi.
Trạng thái bàn cờ gốc (ply=0)
Lượt “ta” đi
Trạng thái bàn cờ mới (ply=1)
Lượt đối phương đi
Trạng thái bàn cờ mới (ply=2)
Hình 1.3: Cây trò chơi
18
1.2.3.3. Vét cạn
Dùng một thuật toán vét cạn để tìm kiếm trên cây trò chơi dường như là một ý
tưởng đơn giản. Ta chỉ cần chọn nhánh cây sẽ dẫn tới nước thắng để đi quân là đảm
bảo thắng lợi. Nếu đúng vậy, các loại cờ sẽ trở thành các trò chơi buồn tẻ, và không
còn đâu những bí quyết huyền ảo thần kì và bàn cờ sẽ chẳng khác gì bàn tính. Rất

tiếc rằng, cách làm này lại không thể thực hiện được do có hiện tượng bùng nổ tổ
hợp. Ví dụ, nếu từ một thế cờ, trung bình có khả năng đi được 16 nước đi khác nhau
(ta gọi đó là hệ số nhánh con tại mỗi nút là b = 16). Như vậy, sau một tầng ta sẽ có 16
nút con, mỗi nút này lại có thể có 16 con nữa. Tổng số nút con ở độ sâu thứ hai là
16x16 = b
2
. Cứ như vậy ở độ sâu d sẽ có b
d
nút. Nếu giả sử độ sâu của cây là 100 (hệ
số nhánh 16 và độ sâu 100 đều là những con số còn nhỏ hơn con số thường gặp trong
trò chơi cờ), thì số nhánh phải duyệt lên đến 16
100
hay xấp xỉ 10
120
- một con số quá
lớn.
Vì số các khả năng tăng quá nhanh, chỉ có một số ít những vấn đề đơn giản là
thích hợp với kiểu tìm kiếm vét hết mọi khả năng này (kiểu tìm kiếm vét cạn đòi hỏi
phải kiểm tra tất cả các đỉnh). Do đó, các phương pháp tìm kiếm khác đã ra đời và
phát triển. Ngược lại, nếu có một phương pháp luôn luôn chính xác nhằm đánh giá
một thế cờ này là tốt hay kém so với thế kia, thì trò chơi trở thành đơn giản bằng cách
chọn nước đi dẫn tới thế cờ tốt nhất. Do đó sẽ không cần phải tìm kiếm gì nữa. Rất
tiếc, các thủ tục như vậy không hề có. Ta cần có chiến lược tìm kiếm trong trò chơi.
Th
ời
gi
an
Số đỉnh
Hàm mũ
b

b*b=b
2
d
1
b
d
19
Hình 1.4: Cây tìm kiếm và sự bùng nổ tổ hợp
1.2.3.4 Chiến lược tìm kiếm trong trò chơi
Trong Lý thuyết trò chơi đã nghiên cứu các tình huống chiến thuật trong đó
các đối thủ lựa chọn các hành động khác nhau để cố gắng làm tối đa kết quả nhận
được. Nói cách khác, Lý thuyết trò chơi nghiên cứu cách lựa chọn hành vi tối ưu khi
chi phí và lợi ích của mỗi lựa chọn là không cố định mà phụ thuộc vào lựa chọn của
các cá nhân khác.
Một chiến lược thường được cả người lẫn máy dùng là phân tích thế cờ chỉ
sau một số nước đi nào đó của cả hai bên. Sau khi "nhìn xa" xem bàn cờ có những
khả năng biến đổi như thế nào sau một số nước, ta sẽ đánh giá độ xấu tốt của các thế
cờ nhận được. Tiếp theo, ta sẽ chọn nước đi sẽ dẫn tới một thế cờ tốt nhất trong số đó
có cân nhắc đến cách đi của cả hai bên. Với máy, thế cờ này được đánh giá là tốt hơn
thế cờ kia nhờ so sánh điểm của thế cờ đó do bộ lượng giá trả lại. Chúng ta chỉ có
khả năng xét trước một số hữu hạn các nước (ví dụ đại kiện tướng chơi cờ vua có thể
xét trước 8-10 nước đi, người thường chỉ 2-4 nước đi). Rõ ràng là nếu xét càng sâu
thì chơi càng giỏi. Nhưng không thể thực hiện điều này với độ sâu quá lớn được, do
số nút ở độ sâu đó có thể trở nên rất lớn và không đủ thời gian để phân tích. Nếu
dừng ở một độ sâu hợp lý thì bộ phân tích có thể hoàn thành việc tính toán trong một
thời gian hạn định.
Để nghiên cứu chiến lược cụ thể được áp dụng trong các trò chơi đối kháng
chúng ta sẽ tìm hiểu trong chương 2.
20
CHƯƠNG 2: GIẢI THUẬT TÌM KIẾM MINIMAX

2.1 Giới thiệu
Thuật toán Minimax là thuật toán tìm kiếm chuyên dùng để trả về chuỗi nước
đi tối ưu cho một người chơi trong trò chơi có tổng bằng không [8]. Minimax (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 (minimize) tổn thất vốn được dự tính có thể là tối đa (maximize). Có 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).
Thuật toán này cũng được mở rộng cho nhiều trò chơi phức tạp hơn và giúp đưa ra
các quyết định chung khi có sự hiện diện của sự không chắc chắn.
Một phiên bản của giải thuật áp dụng cho các trò chơi như tic-tac-toe, khi mà
mỗi người chơi có thể thắng, thua, hoặc hòa. Nếu người chơi A có thể thắng trong
một nước đi, thì "nước đi tốt nhất" chính là nước đi để dẫn đến kết quả thắng đó. Nếu
người B biết rằng có một nước đi mà dẫn đến tình huống người A có thể thắng ngay
ở nước đi tiếp theo, trong khi nước đi khác thì sẽ dẫn đến tình huống mà người chơi
A chỉ có thể tốt nhất là hòa thì nước đi tốt nhất của người B chính là nước đi sau.
Ta sẽ nắm rõ, thế nào là một nước đi "tốt nhất". Giải thuật Minimax giúp tìm
ra nước đi tốt nhất, bằng cách đi ngược từ cuối trò chơi trở về đầu. Tại mỗi bước, nó
sẽ ước định rằng người A đang cố gắng tối đa hóa cơ hội thắng của A khi đến phiên
anh ta, còn ở nước đi kế tiếp thì người chơi B cố gắng để tổi thiểu hóa cơ hội thắng
của người A (nghĩa là tối đa hóa cơ hội thắng của B).
Lý thuyết trò chơi coi trò chơi là sự kết hợp hoặc trao đổi giữa hai hay nhiều
đối thủ ở đó mỗi đối thủ cố gắng lựa chọn tối ưu hành động (hay nước đi) của mình
nhằm đạt được lợi ích tối đa. Trong lý thuyết trò chơi có một cách phân loại các trò
chơi thành hai loại: trò chơi có tổng bằng không và trò chơi có tổng khác không.
Trong những trò chơi có tổng khác không, lợi ích thu được của người chơi này
không nhất thiết dẫn tới sự mất mát của người chơi kia. Các tình huống này tồn tại
với điều kiện tổng kết quả (mà người thắng được hưởng) không bị giới hạn hay cố
21
định. Về bản chất đây là trường hợp kiến tạo kết quả thay vì chia sẻ kết quả giữa các
đối thủ. Chẳng hạn như khi nghe hoà nhạc, người ta không phải thích một bản hoà
tấu vì người khác không thích nghe. Việc ai đó không thích nghe chẳng có ảnh hưởng

gì tới sở thích của bạn trong điều kiện bạn không phải nghe lời bình luận của người
đó .
Trong luận văn này trò chơi có tổng bằng không, cụ thể là trò chơi có tổng
bằng không với hai người chơi sẽ được quan tâm nghiên cứu kỹ hơn.
2.1.1 Trò chơi có tổng bằng không (Zero-sum-game)
Trò chơi có tổng bằng không là trò chơi có tổng giá trị kết quả (mà người
thắng được hưởng) là cố định. Bất cứ bên nào thắng (+1) cũng làm cho bên kia thua
cuộc (-1), tương ứng với tình huống ganh đua thuần tuý, cuối cùng dẫn tới tổng (+1-
1) = 0.
Cờ vua là một trò chơi có tổng bằng không bởi 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 là thua và
ngược lại [8]. Thể thao là những ví dụ điển hình nhất của trò chơi có tổng bằng
không. Nhà vô địch chỉ có thể đạt được vinh quang khi toàn bộ các đối thủ khác đều
thua cuộc. Trong một giải bóng đá tổng số trận thắng luôn bằng tổng số trận thua
cũng là bởi cái tính chất tổng bằng không ấy [11].
Việc đầu tư kinh doanh chứng khoán cũng chính là một trò chơi có tổng bằng
không, bởi vì ở đó, 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. Nhà đầu tư có thể mất trắng hoặc thắng lớn, lợi nhuận mà anh ta thu được có
thể đổi bằng cả gia tài, đôi khi mạng sống của những nhà đầu tư tài chính khác.
Mô hình toán học của trò chơi có tổng bằng không với hai người chơi [11][10].
Có hai người chơi, P
1
và P
2
. P
1
có một tập m chiến lược thuần túy A={a
1
, a
2

,…, a
m
},
P
2
có một tập n chiến lược thuần túy B={b
1
, b
2
, …, b
n
}.
1. Mỗi người chơi sẽ được lợi với mỗi cặp (a
i
, b
j
) của chiến lược. Lợi nhuận của P
1
ký hiệu là U
1
(a
i
, b
j
) và lợi nhuận của P
2
ký hiệu là U
2
(a
i

, b
j
). Vì đây là trò chơi có
22
tổng bằng không nên U
1
(a
i
, b
j
)= -U
2
(a
i
, b
j
) với mọi i và j. Để đơn giản ta ký hiệu lợi
nhuận của trò chơi là M(a
i
, b
j
)= abs(U
1
(a
i
, b
j
)).
Lợi nhuận thu được khi dùng chiến lược hỗn hợp
2. Mỗi người chơi có thể dùng chiến thuật hỗn hợp bằng việc tạo ra một hàm mật độ

và việc chơi mỗi chiến lược thuần túy với một xác suất cố định. Ký hiệu p
i
là xác suất
mà người chơi 1 sẽ chơi a
i

j
q
là xác suất mà người chơi 2 chọn b
j
. Vì p và q là xác
suất nên chúng phải thỏa mãn:
(a)

i
i
p

0,

j
j
q


0.
(b)
.q ,p
n
1j

j
m
i
i
11
1
==
∑∑
==
Một chiến thuật hỗn hợp dùng một hàm mật độ cụ thể được ký hiệu là p=
),...,,(
21 m
ppp
ở đó p
i
= Pr(a
i
) là xác suất mà
i
a
được chơi, tương tự, với người
chơi 2 hàm mật độ q=
),...,,(
21 n
qqq
ở đó
j
q
= Pr(b
j

) là xác suất mà b
j
được chơi.
Với mỗi cặp chiến thuật ngẫu nhiên
),( qp
lợi nhuận (kết cục)
),( qpM
được định
nghĩa là:
∑∑
= =
=
m
i
n
j
jjii
qbaMpqpM
1 1
),(),(
Ta ký hiệu lợi nhuận do người chơi 1 dùng chiến lược thuần túy a
i
và người chơi 2
dùng chiến lược hỗn hợp q là:
.),(),
1
(
j
n
j

jii
qbaMq aM

=
=
Tương tự ta cũng có công thức của M(p, b
j
)
M(p, b
j
)=

=
m
i
iji
pbaM
1
),(
Ở đây chiến lược thuần túy và chiến lược hỗn hợp được hiểu như sau:
23
- Chiến lược thuần tuý (Pure Strategy): Là chiến lược dựa trên phán đoán các chiến
lược của đối thủ.
- Chiến lược hỗn hợp (Mixed Strategy): Là chiến lược khi không dự đoán được chiến
lược của đối thủ.
Sự đảm bảo cực đại (Maximum Security)
3. Ta dùng P và Q để ký hiệu lần lượt là tập tất cả các chiến lược hỗn hợp sẵn có của
người chơi 1 và người chơi 2.
4. Mục đích của người chơi 1 là để chọn một chiến lược ngẫu nhiên p từ P sao cho
cực đại M(p,q). Cùng thời điểm đó, mục đích của người chơi 2 là chọn một chiến

lược ngẫu nhiên q từ Q sao cho cực đại lợi ích của nó, nghĩa là làm cực tiểu M(p, q).
Các luật chơi yêu cầu mỗi người chơi chọn chiến lược của mình một cách hoàn hảo
bỏ qua sự lựa chọn của đối thủ.
5. Mỗi chiến lược hỗn hợp p thuộc P, mức độ đảm bảo của người chơi 1 được định
nghĩa là:
v
1
(p)=
),(min qpM
q
.
Bởi vì

=
=
n
j
jj
qbpMqpM
1
),(),(
là tổng trọng số của n lợi ích M(p,b
j
), giá trị M( p,q)
này đạt cực tiểu khi tất cả các giá trị M(p,b
j
) được gán bằng giá trị nhỏ nhất của
chúng, ta ký hiệu giá trị nhỏ nhất này là v
1
(p) và được xác định như sau:

v
1
(p)= min[M(p, b
1
), M(p, b
2
),…, M(p,b
n
)].
Có thể coi v
1
(p) là lợi nhuận của người chơi 1 sẽ nhận được nếu người chơi 2 biết
người chơi 1 sẽ chọn chiến lược p. (Bởi vì nếu người chơi 2 biết điều này thì sẽ chọn
chiến lược tốt hơn để đáp lại). Ta có thể định nghĩa v
2
(q) cho người chơi 2 một cách
tương tự. (Nhưng dùng cực đại thay vì cực tiểu).
v
2
(p)= max[M(a
1
, q), M(a
2
, q),…, M(a
m
, q)].
24
- Theo giả thiết, người chơi 1 muốn cực đại mức độ đảm bảo của nó, vì vậy người
chơi 1 phải chọn một chiến lược p
*

sao cho:
v
1
(p
*
)

v
1
(p)

p

P.
Ký hiệu v
1
là mức độ đảm bảo cực đại thì
v
1
(p
*
)= v
1
=
)()(max
11
pvpv
p

(1)

Với tất cả các chiến lược hỗn hợp, ta biết rằng:
v
1
=
).),(),(m
**
Qq qpMqp Min
q
∈∀≤
(2)
Bất đẳng thức (1) có nghĩa là chiến lược mà cho lợi nhuận v
1
là chiến lược mạnh hơn
tất cả các chiến lược khác. Bất đẳng thức (2) nghĩa là v
1
là giá trị thấp nhất (lợi nhuận
cực tiểu) mà người chơi 1 có thể nhận được khi chơi chiến lược p
*
, nếu người chơi 2
không chọn chiến lược khôn ngoan thì người chơi 1 sẽ nhận được lợi lớn hơn v
1
. Nếu
người chơi 1 không chơi chiến lược p
*
thì người chơi 1 có thể nhận được lợi nhuận
thấp hơn v
1
.

Chiến lược p

*
được gọi là chiến lược Maximin.
Sự tổn thất cực tiểu
6. Bởi vì trò chơi có tổng bằng không, nên khi người chơi 2 cực đại mức độ đảm
bảo của nó thì lợi nhuận của người chơi 1 sẽ đạt cực tiểu. Nếu người chơi 2 dùng
chiến lược q thì người chơi 1 không thể nhận được một giá trị lớn hơn.
v
2
(q)=
).,(max qpM
p
Giá trị v
2
đôi lúc được gọi là tổn thất. Người chơi 1 cố gắng để cực đại mức đảm bảo,
người chơi 2 cố gắng cực tiểu tổn thất. Vì vậy người chơi 2 muốn cực tiểu tổn thất
của nó, thì người chơi 2 phải chọn một chiến lược q
*
sao cho:
v
2
= v
2
(q
*
)

v
2
(q)


q

Q.
(3)
Lặp lại phân tích mà ta đã làm với người chơi 1 nhưng với người chơi 2 ta có:
25

×