1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Chiến lược minimax và phương pháp cắt tỉa alpha beta

27 2 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Chiến lược Minimax và phương pháp cắt tỉa Alpha-Beta
Chuyên ngành Trí tuệ nhân tạo
Thể loại Bài tiểu luận
Định dạng
Số trang 27
Dung lượng 381,1 KB

Nội dung

Tuy nhiên,việc tìm kiếm nước đi tối ưu trong trò chơi này là một thách thức lớn đối với conngười.. Tổng quan về 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à ch

Trang 1

MỤC LỤC

MỞ ĐẦU 2

I CHIẾN LƯỢC MINIMAX VÀ PHƯƠNG PHÁP CẮT TỈA ALPHA- BETA 3 1 Tổng quan về tìm kiếm đối kháng 3

2 Chiến lược Minimax 3

3 Phương pháp cắt cụt Alpha-Beta 8

4 Các ứng dụng của thuật toán 12

5 Đánh giá thuật toán 13

II GIỚI THIỆU BÀI TOÁN “GAME CỜ CARO” 15

1 Giới thiệu bài toán 15

2 Áp dụng thuật toán để giải quyết bài toán 16

3 Đề xuất giải pháp tối ưu hơn để giải quyết bài toán 21

III DEMO 22

KẾT LUẬN 24

1 Kết quả đạt được 24

2 Hạn chế 24

3 Hướng phát triển 24

TÀI LIỆU THAM KHẢO 25

Trang 2

1 2 3

8 7 5

4 0 6

1 2 3 1 2 3 1 2 3

8 7 5 h=6 8 0 5 8 7 5

0 4 6 g= 1 4 7 6 4 6 0

F= 7

DANH MỤC HÌNH ẢNH

Hình 1 Số nút phải xét giữa hai giải thuật 14

Hình 2 Bàn cờ caro kích thước 19x19 15

Hình 3 Cây trò chơi cho game cờ caro 16

Hình 4 Các phương thức và biến trong lớp CaroAI 19

Hình 5 Các phương thức và biến trong lớp Heuristic 20

Trang 3

MỞ ĐẦU

Trí tuệ nhân tạo (Artificial Intelligence - AI) đã từ lâu trở thành một lĩnhvực nghiên cứu quan trọng trong ngành khoa học máy tính Với khả năng của nótrong việc mô phỏng, phân tích và tự động hóa quá trình tư duy, trí tuệ nhân tạo

đã tạo ra những ứng dụng đáng kinh ngạc và đột phá trong nhiều lĩnh vực, từ y

tế đến giao thông, từ ngôn ngữ tự nhiên đến trò chơi

Trò chơi cờ caro là một trò chơi cổ điển và phổ biến, đòi hỏi người chơi

có khả năng tư duy chiến thuật và tính toán để đạt được chiến thắng Tuy nhiên,việc tìm kiếm nước đi tối ưu trong trò chơi này là một thách thức lớn đối với conngười Đó là lý do tại sao em quyết định áp dụng trí tuệ nhân tạo vào việc xâydựng một hệ thống thông minh có khả năng chơi cờ caro

Qua việc xây dựng một AI thông minh cho trò chơi cờ caro, chúng ta cóthể khám phá và tận dụng tiềm năng của trí tuệ nhân tạo trong việc tạo ra các đốithủ ảo có khả năng chơi cờ thông minh và thách thức người chơi Điều này có thểmang lại lợi ích trong việc nghiên cứu các thuật toán trí tuệ nhân tạo, cũng nhưcung cấp cho người chơi một trải nghiệm thú vị và tăng cường kỹ năng chiếnthuật của họ

Với việc kết hợp giữa trí tuệ nhân tạo và giải thuật Minimax cùng cắt tỉaAlpha-beta, em hy vọng rằng bài tiểu luận này sẽ cung cấp một cái nhìn tổngquan về việc xây dựng một đối thủ AI thông minh cho trò chơi cờ caro Các kỹthuật và phương pháp mà em trình bày có thể được áp dụng và mở rộng cho cáctrò chơi khác, đồng thời khám phá thêm các phương pháp và thuật toán mới đểnâng cao khả năng chơi của AI

Trang 4

I CHIẾN LƯỢC MINIMAX VÀ PHƯƠNG PHÁP CẮT TỈA ALPHA- BETA

1 Tổng quan về 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 đâychú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

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ìmkiế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àycò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ọinướ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

2 Chiến lược 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ỗinước đi tối ưu cho một người chơi trong trò chơi có tổng bằng không 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

Trang 5

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ắngtrong 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ìnhhuố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úptì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ỗibướ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 Akhi đế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ểuhó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 haynhiề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ânloạ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ổngkhác không

2.2 Trò chơi có tổng bằng không

Trò chơi có tổng bằng không là trò chơi có tổng giá trị kết quả (mà ngườithắng được hưởng) là cố định Bất cứ bên nào thắng (+1) cũng làm cho bên kiathua cuộc (-1), tương ứng với tình huống ganh đua thuần tuý, cuối cùng dẫn tớitổ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 Thể thao là những ví dụ điển hình nhất của trò chơi có tổngbằ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

Việc đầu tư kinh doanh chứng khoán cũng chính là một trò chơi có tổngbằ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

Trang 6

đượ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ínhkhác.

2.3 Ý tưởng thuật toán

Hai đối thủ trong một trò chơi được gọi là MIN và MAX MAX đại diệncho đối thủ quyết giành thắng lợi hay cố gắng tối đa hó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 Ta giả thiếtMIN cũng dùng cùng những thông tin như MAX

Một trò chơi như vậy có thể được biểu diễn bởi một cây trò chơi Mỗi mộtnút của cây biểu diễn cho một trạng thái Nút gố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 thắng, thua hoặc hòa) Nếu trạng thái x được 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ừ trạng thái x Do hai đấu thủ luân phiên nhau đi nước của mình nêncác mức (lớp) trên cây trò chơi cũng luân phiên nhau là MAX và MIN Cây tròchơi vì thế còn có tên là cây MIN-MAX Trên cây trò chơi các nút ứng với trạngthái mà từ đó người chơi MAX chọn nước đi sẽ thuộc lớp MAX, các nút ứng vớitrạng thái mà từ đó người chơi MIN chọn nước đi sẽ thuộc lớp MIN Chiến lượcMinimax thể hiện qua quy tắc định trị 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á trị để phản ánh trạng thái thắngthua 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ứctrên trong cây trò chơi theo quy tắc:

+ 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ủanút đó

+ 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ủanút đó

Giá trị được gán cho từng trạng thái theo quy tắc trên chỉ rõ giá trị củatrạ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ơiMAX 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á

Trang 7

trị cao nhất trong các trạng thái con, còn với người chơi MIN 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.

Phân tích:

Ý tưởng cơ bản của chiến lược Minimax theo đệ quy:

- Nếu mức đang xét là người chơi cực tiểu thì áp dụng thuật toánMinimax cho các con của nó Lưu kết quả là giá trị nhỏ nhất

- Nếu mức đang xét là người chơi cực đại thì áp dụng thuật toán Minimaxcho các con của nó Lưu kết quả là giá trị lớn nhất

- Nếu mức đang xét là lá (tầng cuối cùng của cây tìm kiếm), tính giá trịtĩnh của thế cờ hiện tại ứng với người chơi ở đó Ghi nhớ kết quả

Mã giả 1: Thuật toán Minimax

sự hiểu biết và kinh nghiệm

Hàm đánh giá:

Trang 8

Hàm đánh giá Eval ứng với mỗi trạng thái pos của trò chơi cới một giá trị

số Eval(pos) Giá trị này là sự đánh giá độ lợi thế của trạng thái pos Trạng thái pos càng thuận lợi cho MAX thì Eval(pos) là số dương càng lớn, pos càng thuận lợi cho MIN thì Eval(pos) là số âm càng nhỏ, Eval(pos) = 0 là trạng thái không

lợi thế cho ai cả Hàm đánh giá đóng vai trò rất quan trọng trong các trò chơi, nếuhàm đánh giá tốt sẽ định hướng chính xác việc lựa chọn các nước đi tốt Việc thiết

kế hàm đánh giá phụ thuộc vào nhiều yếu tố: các quân cờ còn lại của hai bên, sự

bố trí các quân cờ này,…Để đưa ra hàm đánh giá chính xác đòi hỏi nhiều thờigian tính toán, tuy nhiên, trong thực tế người chơi bị giới hạn thời gian đưa ranước đi Vì vậy, việc đưa ra hàm đánh giá phụ thuộc vào kinh nghiệm của ngườichơi

Ví dụ 1: Hàm đánh giá cho cờ vua Mỗi loại quân được gán một giá trị sốphù hợp với “sức mạnh” của nó Chẳng hạn, quân tốt Trắng (Đen) được gán giátrị 1 (-1), mã hoặc tượng Trắng (Đen) được gán giá trị 3 (-3), xe Trắng (Đen)được gán giá trị 5 (-5) và hậu Trắng (Đen) được gán giá trị 9 (-9) Hàm đánh giácủa một trạng thái được tính bằng cách lấy tổng giá trị của tất cả các quân cờtrong trạng thái đó Hàm đánh giá này được gọi là hàm tuyến tính có trọng số, vì

có thể biểu diễn dưới dạng:

s1w1 + s2w2 + … + snwn

Trong đó, wi là giá trị của quân cờ loại i, si là số quân loại đó Đây là cáchđánh giá đơn giản, vì nó không tính đến sự bố trí của các quân cờ, các mốitương quan giữa chúng

Mã giả 2: Áp dụng thuật toán Minimax đến độ sâu lớp nhất định

Để hạn chế không gian tìm kiếm, khi xác định nước đi cho MAX tại đỉnh

u, ta chỉ xem xét cây gốc u tại độ sâu depth nào đó Áp dụng chiến lược Minimax cho cây trò chơi gốc u, độ sâu depth và sử dụng hàm đánh giá để xác

định giá trị cho các lá của cây

function Minimax(pos, depth) : integer;

{

if depth = 0 then         //Đạt đển giới hạn

    Minimax = Eval(pos)   //Tính giá trị thể cờ pos

else

Trang 9

{ best = -INFINITY;

        Gen(pos); //Sinh ra mọi nước đi từ thể cờ pos

        While còn lấy đươc một nước đi m do

{         pos = Tính thể cờ mới nhờ đi m ;

        value = Minimax(pos, depth- 1 ); //Tính điểm cua pos

if value > best then best = value;

        }

Minimax = best; //Tra vểH giá trị tốt nhất     }

}

2.4 Ưu, nhược điểm của thuật toán

- 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

- Đối với các trò chơi có không giantrạ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ạnkhông tận dụng được thông tin củatrạ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ốnthời gian

- Thời gian tính toán và không gianlưu trữ tăng lên nhanh chóng với sốlượng nút trong cây trò chơi

Trang 10

nhất là 2 điểm dù là các lượng giá của các nút khác cho kết quả như thế nào đinữa.

Bây giờ, ta lại giả sử nút tiếp theo được lượng giá và cho kết quả là 1.Nếu đi vào nhánh này thì đối phương sẽ đảm bảo làm điểm của người chơi cựcđại không thể vượt quá được giá trị 1 dù là các lượng giá của các nút khác chokết quả như thế nào đi nữa Do đó đến đây, nước đi tốt nhất là chọn nước đi bêntrái với đảm bảo là ít nhất đạt được 2 điểm Và do đó, hoàn toàn không cần thiếtphải lượng giá nút còn lại

3.2 Ý tưởng thuật toán

Thuật toán cắt tỉa Alpha-beta là cải tiến của thuật toán Minimax với tư tưởng

“Nếu đã thấy một việc làm là tệ thì không nên mất thời gian xem nó tệ đến mức nào”.

Thuật toán làm giảm số nút cần thiết của việc tìm kiếm để không lãng phíthời gian tìm kiếm những nước đi đã bất lợi cho người chơi Tìm kiếm Alpha-

beta thực hiện theo kiểu tìm kiếm sâu với hai giá trị, gọi là alpha và beta được

tạo ra trong quá trình tìm kiếm:

Trang 11

- Giá trị alpha liên quan với các nút MAX và có khuynh hướng không bao

Để bắt đầu thuật toán tìm kiếm Alpha-beta, ta đi xuống hết độ sâu lớp

theo kiểu tìm kiếm sâu, đồng thời áp dụng đánh giá heuristic cho một trạng thái

và tất cả các trạng thái anh em của nó Giả thuyết tất cả đều là nút MIN Giá trịtối đa 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útMAX) 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 kiếm đối với nút cha mẹ của chúng nếu gặp bất kỳ một giá

trị nào lớn hơn hoặc bằng giá trị beta này Quá trình này gọi là cắt tỉa Beta (β cut) Cách làm tương tự cũng được thực hiện cho việc cắt tỉa Alpha (α cut) đối

với các nút cháu của một nút MAX

Hai quy luật cắt tỉa dựa trên các giá trị alpha và beta là:

1 Quá trình tìm kiếm có thể có kết thúc bên dưới một nút MIN nào có giá trị

beta nhỏ hơn hoặc bằng giá trị alpha của một nút cha MAX bất kỳ của nó.

2 Quá trình tìm kiếm có thể kết thúc bên dưới một nút MAX nào có giá

trị alpha lớn hơn hoặc bằng giá trị beta của một nút cha MIN bất kỳ của

Việc cắt tỉa Alpha-beta như vậy thể hiện quan hệ giữa các nút ở lớp n và các nút ở lớp n+2 và do quan hệ đó toàn bộ các cây con bắt nguồn ở lớp n+1

đều có thể loại khỏi việc xem xét

Chú ý rằng giá tị truyền ngược thu được hoàn toàn giống như kết quảMinimax, đồng thời tiết kiệm được các bước tìm kiếm một cách đáng kể

Trang 12

- Nếu như mức đang xét là của MIN, thực hiện các công việc sau cho đếnkhi tất cả các con của nó đã được xét với thủ tục Alpha – beta hoặc cho đến khi

alpha là bằng hoặc lớn hơn beta.

+ Áp dụng thủ tục Alpha – beta với giá trị alpha và beta hiện tại cho một

con Ghi nhớ lại kết quả

+ So sánh giá trị ghi nhớ với giá trị beta, nếu giá trị đó nhỏ hơn thì đặt beta bằng giá trị mới này Ghi nhớ lại beta (thu hẹp khoảng [alpha, beta] bằng cách giảm giá trị beta).

- Nếu như mức đang xét là của MAX, thực hiện các công việc sau chođến khi tất cả các con của nó đã được xét với thủ tục Alpha – beta hoặc cho đến

khi alpha là bằng hoặc lớn hơn beta.

+ Áp dụng thủ tục Alpha – beta với giá trị alpha và beta hiện tại cho một

con Ghi nhớ lại kết quả

+ So sánh giá trị ghi nhớ với giá trị alpha, nếu giá trị đó nhỏ hơn thì đặt alpha bằng giá trị mới này Ghi nhớ lại alpha (thu hẹp khoảng [alpha, beta] bằng cách giảm giá trị alpha).

Trang 13

Mã giả thuật toán cắt cụt Alpha-beta:

function AlphaBeta(alpha, beta, depth) : integer;

begin

  if (depth = 0 ) or (pos là nút lá) then

    Result : = Eval { Tính giá trị thể cờ pos }

  else

  begin

    best : = -INFINITY;

    Gen; { Sinh ra mọi nước đi từ vị trí pos }

    while (còn lấy được một nước đi m) and (best < beta)

do

    begin

      if best > alpha then alpha : = best;

      Thực hiện nước đi m ;

      value : = -AlphaBeta(-beta, -alpha, depth- 1 );

      Bo thực hiện nước đi m ;

      if value > best then best : = value;

    end;

    Result : = best;

  end;

end;

4 Các ứng dụng của thuật toán

Thuật toán Minimax và phương pháp cắt cụt Alpha-Beta là hai phươngpháp quan trọng trong lĩnh vực trò chơi và trí tuệ nhân tạo Dưới đây là một sốứng dụng của hai phương pháp này trong thực tế:

- Trò chơi điện tử: Cả thuật toán Minimax và phương pháp cắt cụt

Alpha-Beta được sử dụng rộng rãi trong phát triển trò chơi điện tử Chúng giúp máytính đưa ra những quyết định tối ưu và tính toán các nước đi hay hành động dựatrên hành vi của người chơi hoặc đối thủ ảo

- Trò chơi bài: Thuật toán Minimax và phương pháp cắt cụt Alpha-Beta

cũng có thể được áp dụng trong các trò chơi bài như Poker, Bridge, hay Chess.Chúng giúp tính toán và ước lượng xác suất chiến thắng trong các tình huốngkhác nhau, từ đó đưa ra quyết định tốt nhất cho người chơi

Ngày đăng: 15/04/2024, 13:59

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w