1. Trang chủ
  2. » Luận Văn - Báo Cáo

Báo cáo đồ án giải thuật cắt tỉa alpha beta phương pháp và minh họa

24 4,4K 26

Đ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

Định dạng
Số trang 24
Dung lượng 266 KB

Nội dung

Nớc đi tối u cho Trắng là n-ớc đi dần tới đỉnh con của v là đỉnh tốt nhất cho Trắng trong số các đỉnh con của u.. Nh vậy, để chọn nớc đi tối u cho Trắng tại đỉnh u, ta cần phải xác định

Trang 1

BÁO CÁO ĐỒ ÁN MÔN TRÍ TUỆ NHÂN TẠO

Trang 2

I: Tỡm hiểu về giải thuật cắt tỉa Alpha-Beta.

I.1:Cây trò chơi

I.2:Chiến lợc vét cạn

I.3:Chiến lợc MiniMax

I.4:Thuật toán cắt tỉa Alpha-Beta

I.5: Đánh gía thuật toán Alpha-Beta

I.6: Hớng cải tiến thuật toán AlphaBeta

II: Ứng dụng thuật toán cắt tỉa AlphaBeta cài đặt chơng trình chơi cờ vua.

II.1: Sơ đồ các lớp cơ bản của chơng trình

II.2:Các chức năng chính của chơng trình:

III.3: Hướng phỏt triển của chương trỡnh

Trang 3

I: Tỡm hiểu về giải thuật cắt tỉa Alpha-Beta:

Giải thuật cắt tỉa Alpha –Beta là một giải thuật tỡm kiếm cú đối thủ Một vớ dụ minh họa cho thuật toỏn cắt tỉa Alpha –Beta rừ nhất

mà ta cú thể thấy là cỏc chương trỡnh chơi cờ Vấn đề chơi cờ có thể xem nh vấn đề tìm kiếm nớc đi, tại mỗi lần đến lợt mình, ngời chơi phải tìm trong số rất nhiều nớc đi hợp lệ (tuân theo đúng luật

đi), một nớc đi tốt nhất sao cho qua một dãy nớc đi đã thực hiện, anh ta giành phần thắng Tuy nhiên vấn đề tìm kiếm ở đây sẽ rất phức tạp , bởi vì ở đây có đối thủ, ngời chơi không biết đợc đối thủ của mình sẽ đi nớc nào trong tơng lai Sau đây chúng ta sẽ phát biểu chính xác hơn vấn đề tìm kiếm này

Vấn đề chơi cờ có thể xem nh vấn đề tìm kiếm trong không gian trạng thái Mỗi trạng thái là một tình thế (sự bố trí các quân của hai bên trên bàn cờ)

• Trạng thái ban đầu là sự sắp xếp các quân cờ của hai bên lúc bắt đầu cuộc chơi

và 0 tại các trạng thái kết thúc hòa Trong một số trò chơi khác, chẳng hạn trò chơi tính điểm, hàm kết cuộc có thể nhận giá trị nguyên trong khoảng [-k, k] với k là một số nguyên d-

ơng nào đó

Nh vậy vấn đề của Trắng là, tìm một dãy nớc đi sao cho xen kẽ với các nớc đi của Đen tạo thành một đờng đi từ trạng thái ban đầu tới trạng thái kết thúc là thắng cho Trắng

Trang 4

Để thuận lợi cho việc nghiên cứu các chiến lợc chọn nớc đi, ta biểu diễn không gian trạng thái trên dới dạng cây trò chơi.

đây thực chất chỉ là “nửa nớc” theo cách hiểu của làng cờ

Ví dụ: Xét trò chơi Dodgen (đợc tạo ra bởi Colin Vout) Có hai

quân Trắng và hai quân Đen, ban đầu đợc xếp vào bàn cờ 3*3

(Hình vẽ) Quân Đen có thể đi tới ô trống ở bên phải, ở trên hoặc ở dới Quân Trắng có thể đi tới trống ở bên trái, bên phải, ở trên

Quân Đen nếu ở cột ngoài cùng bên phải có thể đi ra khỏi bàn cờ, quân Trắng nếu ở hàng trên cùng có thể đi ra khỏi bàn cờ Ai đa hai quân của mình ra khỏi bàn cờ trớc sẽ thắng, hoặc tạo ra tình thế bắt

đối phơng không đi đợc cũng sẽ thắng

Trang 5

Giả sử Đen đi trớc, ta có cây trò chơi đợc biểu diễn nh hình trên

I.2:Chiến lợc vét cạn:

Dùng 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 dẫn đến nớc thắng

để đi quân là đảm bảo thắng lợi Nếu mà đúng nh vậy thì các loại

cờ sẻ trở thành một cho chơi vô cùng buồn tẻ Rất tiếc rằng vấn đề này không thể thực hiện nổi do sự 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 (gọi hệ số nhánh con tại mỗi nút là 16) Nh vậy một tầng sẻ có 16 nút con và 16 nút con này lại có 16 nút con nữa Tổng số nút con ở độ sâu thứ 2 sẽ là 16*16=b2 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 là 16 và độ sâu là

100 đều là những con số nhỏ hơn con số thờng gặp trong trò chơi) thì khi đó số nhánh phải duyệt đã lên đến 16100.Đây là một con số lớn khủng khiếp Để hình dung con số đó lớn nh thế nào , ta giả sử tất các nguyên tử trong vũ trụ đều trở thành máy tính để tính nớc đi với tốc độ một giây tính đợc 1010 (10 tỷ) nớc đi, và nếu chúng hoạt

động cật lực từ thời vụ nổ cho đến nay(theo một số lý thuyết thì thế giới của chúng ta đợc hình thành sau một vụ nổ gọi là vụ nổ lớn bigbang, trớc đây cở 15 tỷ năm) thì đến bây giờ mới có thể đi đợc nớc đi đầu tiên Nh vậy áp dụng thuật toán vét cạn với các trò chơi

cờ là điều không thể

Trang 6

I.3:Chiến l ợc MiniMax:

Quá trình chơi cờ là quá trình Trắng và Đen thay phiên nhau đa ra quyết định, thực hiện một trong số các nớc đi hợp lệ Trên cây trò chơi, quá trình đó sẽ tạo ra đờng đi từ gốc tới lá Giả sử tới một thời

điểm nào đó, đờng đi đã dẫn tới đỉnh u Nếu u là đỉnh Trắng (Đen) thì Trắng (Đen) cần chọn đi tới một trong các đỉnh Đen (Trắng) v

là con của u Tại đỉnh Đen (Trắng) v mà Trắng (Đen) vừa chọn,

Đen (Trắng) sẽ phải chọn đi tới một trong các đỉnh Trắng (Đen) w

là con của v Quá trình trên sẽ dừng lại khi đạt tới một đỉnh là lá của cây

Giả sử Trắng cần tìm nớc đi tại đỉnh u Nớc đi tối u cho Trắng là

n-ớc đi dần tới đỉnh con của v là đỉnh tốt nhất (cho Trắng) trong số các đỉnh con của u Ta cần giả thiết rằng, đến lợt đối thủ chọn nớc

đi từ v, Đen cũng sẽ chọn nớc đi tốt nhất cho anh ta Nh vậy, để chọn nớc đi tối u cho Trắng tại đỉnh u, ta cần phải xác định giá trị các đỉnh của cây trò chơi gốc u Giá trị của các đỉnh lá (ứng với các trạng thái kết thúc) là giá trị của hàm kết cuộc Đỉnh có giá trị càng lớn càng tốt cho Trắng, đỉnh có giá trị càng nhỏ càng tốt cho Đen

Để xác định giá trị các đỉnh của cây trò chơi gốc u, ta đi từ mức thấp nhất lên gốc u Giả sử v là đỉnh trong của cây và giá trị các

đỉnh con của nó đã đợc xác định Khi đó nếu v là đỉnh Trắng thì giá trị của nó đợc xác định là giá trị lớn nhất trong các giá trị của các

Trang 7

đỉnh con Còn nếu v là đỉnh Đen thì giá trị của nó là giá trị nhỏ nhất trong các giá trị của các đỉnh con.

Ví dụ: Xét cây trò chơi trong hình 4.3, gốc a là đỉnh Trắng Giá trị

của các đỉnh là số ghi cạnh mỗi đỉnh Đỉnh i là Trắng, nên giá trị của nó là max(3,-2) = 3, đỉnh d là đỉnh Đen, nên giá trị của nó là min(2, 3, 4) = 2

Việc gán giá trị cho các đỉnh đợc thực hiện bởi các hàm đệ qui MaxVal và MinVal Hàm MaxVal xác định giá trị cho các đỉnh Trắng, hàm MinVal xác định giá trị cho các đỉnh Đen

function MaxVal(u);

begin

if u là đỉnh kết thúc then MaxVal(u) ơ f(u)

else MaxVal(u) ơ max{MinVal(v) | v là đỉnh con của u}

end;

function MinVal(u);

Trang 8

if u là đỉnh kết thúc then MinVal(u) ơ f(u)

else MinVal(u) ơ min{MaxVal(v) | v là đỉnh con của u}

for mỗi w là đỉnh con của u do

if val <= MinVal(w) then

{val ơ MinVal(w); v ơ w}

end;

Thủ tục chọn nớc đi nh trên gọi là chiến lợc Minimax, bởi vì Trắng

đã chọ đợc nớc đi dẫn tới đỉnh con có giá trị là max của các giá trị các đỉnh con, và Đen đáp lại bằng nớc đi tới đỉnh có giá trị là min của các giá trị các đỉnh con

Về mặt lí thuyết, chiến lợc Minimax cho phép ta tìm đợc nớc đi tối

u cho Trắng Song nó không thực tế, chúng ta sẽ không có đủ thời gian để tính đợc nớc đi tối u Bởi vì thuật toán Minimax đòi hỏi ta phải xem xét toàn bộ các đỉnh của cây trò chơi Trong các trò chơi hay, cây trò chơi là cực kỳ lớn Chẳng hạn, đối với cờ vua, chỉ tính

đến độ sâu 40, thì cây trò chơi đã có khoảng 10120 đỉnh! Nếu cây có

Trang 9

độ cao m, và tại mỗi đỉnh có b nớc đi thì độ phức tạp về thời gian của thuật toán Minimax là O(bm).

Để có thể tìm ra nhanh nớc đi tốt (không phải là tối u) thay cho việc sử dụng hàm kết cuộc và xem xét tất cả các khả năng dẫn tới các trạng thái kết thúc, chúng ta sẽ sử dụng hàm đánh giá và chỉ xem xét một bộ phận của cây trò chơi

Toàn bộ ý tởng của thuật toán này là dựa trên việc chuyển đổi mỗi thế cờ thành một con số để đánh giá Rất tiếc là con số này thờng không tốt và không đủ để đánh giá hết mọi điều Mặt khác, thuật toán này có thể rất tốn kém(chạy chậm)do việc sinh các nớc đi và l-ợng giá rất tốn thời gian tinh toán, do vậy độ sâu của cây trò chơi cũng bị hạn chế nhiều Ta cần có thêm những cải tiến để cải thiện tình hình này

I.4:Thuật toán cắt tỉa Alpha-Beta:

Trong chiến lợc tìm kiếm Minimax, để tìm kiếm nớc đi tốt cho Trắng tại trạng thái u, cho dù ta hạn chế không gian tìm kiếm trong phạm vi cây trò chơi gốc u với độ cao h, thì số đỉnh của cây trò chơi này cũng còn rất lớn với h ≥ 3 Chẳng hạn, trong cờ vua, nhân

tố nhánh trong cây trò chơi trung bình khoảng 35, thời gian đòi hỏi phải đa ra nớc đi là 150 giây, với thời gian này trên máy tính thông thờng chơng trình của bạn chỉ có thể xem xét các đỉnh trong độ sâu

3 hoặc 4 Một ngời chơi cờ trình độ trung bình cũng có thể tính trớc

đợc 5, 6 nớc hoặc hơn nữa, và do đó chơng trình của bạn mới đạt trình độ ngời mới tập chơi!

Khi đánh giá đỉnh u tới độ sâu h, một thuật toán Minimax đòi hỏi

ta phải đánh giá tất cả các đỉnh của cây gốc u tới độ sâu h Song ta

có thể giảm bớt số đỉnh cần phải dánh giá mà vẫn không ảnh hởng gì đến sự đánh giá đỉnh u Phơng pháp cắt cụt alpha-beta cho phép

ta cắt bỏ các nhánh không cần thiết cho sự đánh giá đỉnh u

T tởng của kỹ thuật cắt cụt alpha-beta là nh sau: Nhớ lại rằng,

chiến lợc tìm kiếm Minimax là chiến lợc tìm kiếm theo độ sâu Giả

Trang 10

sử trong quá trính tìm kiếm ta đi xuống đỉnh a là đỉnh Trắng, đỉnh a

có ngời anh em v đã đợc đánh giá Giả sử cha của đỉnh a là b và b

có ngời anh em u dã đợc đánh giá, và giả sử cha của b là c Khi đó

ta có giá trị đỉnh c (đỉnh Trắng) ít nhất là giá trị của u, giá trị của

đỉnh b (đỉnh Đen) nhiều nhất là giá trị v Do đó, nếu eval(u) >

eval(v), ta không cần đi xuống để đánh giá đỉnh a nữa mà vẫn

không ảnh hởng gì dến đánh giá đỉnh c Hay nói cách khác ta có thể cắt bỏ cây con gốc a Lập luận tơng tự cho trờng hợp a là đỉnh

Đen, trong trờng hợp này nếu eval(u) < eval(v) ta cũng có thể cắt

bỏ cây con gốc a

Để cài đặt kỹ thuật cắt cụt alpha-beta, đối với các đỉnh nằm trên ờng đi từ gốc tới đỉnh hiện thời, ta sử dụng tham số α để ghi lại giá trị lớn nhất trong các giá trị của các đỉnh con đã đánh giá của một

đ-đỉnh Trắng, còn tham số β ghi lại giá trị nhỏ nhất trong các đ-đỉnh con đã đánh giá của một đỉnh Đen Giá trị của α và β sẽ đợc cập nhật trong quá trình tìm kiếm α và β đợc sử dụng nh các biến địa phơng trong các hàm MaxVal(u, α, β) (hàm xác định giá trị của

đỉnh Trắng u) và Minval(u, α, β) (hàm xác định giá trị của đỉnh

Đen u)

Hai tham số của thủ tục này (theo các đặt tên truyền thống )đợc gọi

là alpha beta và dùng để theo dõi các triển vọng Chúng cho biết các giá trị nằm ngoài khoảng [alpha, beta] là các điểm “thật sự tồi”

và không cần phải xem xét nữa Khoảng [alpha,beta] còn đợc gọi là cửa sổ alpha, beta Trong ngữ cảnh của các trò chơi nguyên tắc

Trang 11

alpha-beta nói rằng, mỗi khi xem xét một nút bất kì, nên kiểm tra các thông tin đã biết về các nút cha, ông của nó Rất có thể do có

đủ thông tin từ cha, ông nên không cần phải làm bất cứ việc gì nữa cho nút này Cũng vậy,nguyên tắc này cũng giúp chỉnh sửa hoặc xác định chính xác giá trị tại nút cha, ông của nó Nh trên nói, một cách để tiện theo dõi quá trình tính toán là dùng các tham số alpha

và beta để ghi lại các thông tin theo dõi cần thiết Thủ tục

AlphaBeta đợc bắt đầu tại nút gốc với giá trị của alpha là âm vô cùng và beta là dơng vô cùng Thủ tục sẽ tự gọi đệ qui chính nó với khoảng cách giữa các giá trị alpha và beta ngày càng hẹp hơn

function MaxVal(u, α, β);

begin

if u là lá của cây hạn chế hoặc u là đỉnh kết thúc

then MaxVal ơ eval(u)

Trang 12

function MinVal(u, α, β);

begin

if u là lá của cây hạn chế hoặc u là đỉnh kết thúc

then MinVal ơ eval(u)

MinVal ơ β;}

end;

Thuật toán tìm nớc đi cho Trắng sử dụng kỹ thuật cắt cụt beta, đợc cài đặt bởi thủ tục Alpha_beta(u,v), trong đó v là tham biến ghi lại đỉnh mà Trắng cần đi tới từ u

alpha-procedure Alpha_beta(u,v);

begin

α ơ -∞;

Trang 13

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);

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

if value > best then best := value;

end ;

AlphaBeta := best;

end;

end;

Trang 14

Lời gọi thủ tục AlphaBeta đầu tiờn với độ sõu tỡm kiếm 4 và thế cờ hiện tại pos cú dạng như sau:

AlphaBeta(-INFINITY, +INFINITY, 4);

So với thuật toán MiniMax thì thuật toán AlphaBeta đã đa thêm hai biến alpha, beta làm hai mức ngỡng Ta thấy cứ mỗi khi

best>=beta thì thuật toán không thực hiện tiếp vòng lặp, có nghĩa

là nó không chịu mở rộng tiếp những nhánh còn lại nữa Các nhánh

đó đã bị cắt bỏ và do đó sẽ tiết kiệm đợc thời gian Việc cắt bỏ này hoàn toàn an toàn với những lý do ta đã xét ở trên Ta thấy rằng mỗi lần hàm này đợc gọi thì chỉ có tham số beta đợc dùng để so sánh cắt bỏ, còn tham số alpha không đợc dùng Tuy nhiên khi áp dụng thuật toán này cho cây con thì ta đã hoán vị hai giá trị alpha, beta cho nhau và đảo cả dấu Do đó alpha sẽ có tác dụng cho độ sâu sau, rồi độ sâu sau nữa lại đến lợt beta Nói cách khác, một giá trị chỉ luôn ảnh hởng đến ngời chơi cực đại , còn giá trị kia luôn

ảnh hởng đến ngời chơi cực tiểu Chúng là các ngỡng của họ ỡng giữa các nớc đi chấp nhận và không chấp nhận) Những nớc đi quan tâm phải nằm lọt giữa hai giá trị này Dần dần khoảng cách giữa hai giá trị alpha-beta càng ngày càng thu hẹp và dẫn đến các nhánh cây có gía trị nằm ngoài khoảng này nhanh chóng bị cắt bỏ

Trang 15

(ng-Ví dụ Xét cây trò chơi gốc u (đỉnh Trắng) giới hạn bởi độ cao h =3

Số ghi cạnh các lá là giá trị của hàm đánh giá áp dụng chiến lợc Minimax và kỹ thuật cắt cụt, ta xác định đợc nớc đi tốt nhất cho Trắng tại u, đó là nớc đi dẫn tới đỉnh v có giá trị 10 Cạnh mỗi đỉnh

ta cũng cho giá trị của cặp tham số (α, β) Khi gọi các hàm

MaxVal và MinVal để xác định giá trị của đỉnh đó Các nhánh bị cắt bỏ đợc chỉ ra trong hình trên

I.5: Đánh gía thuật toán Alpha-Beta:

Trong điều kiện lý tởng thuật toán AlphaBeta chỉ phải xét số nút theo công thức:

Trang 16

thuật toán Minimax(hơn 102 triệu nút) là 102400000/74118 =1382 lần.

Dới đây là bảng so sánh số nút phải xét giữa hai thuật toán

Minimax và AlphaBeta

Ta có nhận xét sau:

Số lần tăng số nút khi tăng độ sâu của Minimax luôn là hệ số phân nhánh b, trong trờng hợp này là 40 Số lần tăng của AlphaBeta ít hơn nhiều: chỉ cỡ 1.7 lần khi tăng từ d lẻ sang d chẵn và 23.2 lần khi d chẵn sang lẻ- trung bình chỉ tăng khoảng 6 lần khi tăng d

Số nút của AlphaBeta tăng chậm hơn rất nhiều lần so với Minimax

Tỉ số nút phải xét giữa hai thuật toán này càng cao khi d càng lớn.Qua công thức tính số nút cho ta thấy số nút phải xét khi dùng AlphaBeta ít hơn nhiều so với MiniMax nhng vẫn là hàm số mũ và vẫn dẫn tới bùng nổ tổ hợp Thuật toán alphabeta hoàn toàn không chống đợc sự bùng nổ tổ hợp mà chỉ làm giảm tốc độ bùng nổ.Tuy nhiên trong thực tế số nút phải xét(lợng giá) thờng nhiều hơn trong

điều kiện lý tởng nhng nó vẫn đủ để tiết kiệm khá nhiều thời gian Trong cùng một khoảng thời gian thuật toán AlphaBeta có thể tìm

Trang 17

đến độ sâu gấp hai lần thuật toán Minimax Ta có đồ thị so sánh giữa hai thuật toán:

I.6: Hớng cải tiến thuật toán AlphaBeta:

Thuật toán AlphaBeta đã giúp chúng ta tiết kiệm nhiều thời gian so với Minimax mà vẫn đảm bảo kết quả tìm kiếm chính xác Tuy nhiên lợng tiết kiệm này không ổn định-phụ thuộc vào số nút mà

nó cắt bỏ Trong trờng hợp xấu nhất thuật toán không cắt đợc một nhánh nào và phải xét số nút đúng bằng Minimax Ta cần đẩy

mạnh việc cắt bỏ nhờ đẩy mạnh sự thu hẹp của cửa sổ tìm kiếm alpha-beta Cửa sổ naỳ đợc thu hẹp một bớc khi gặp một giá trị mới tốt hơn giá trị cũ Khi gặp giá trị tốt nhất thì cửa sổ này thu hẹp nhất Do đó nếu càng sớm gặp giá trị tốt nhất thì cửa sổ càng nhanh chóng thu hẹp nhất Nh vậy thì phải làm sao cho các nút ở lá đợc sắp xếp theo trật tự từ cao xuống thấp Trật tự này càng tốt bao nhiêu thì thuật toán càng nhanh bấy nhiêu

Ngày đăng: 23/05/2014, 14:23

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w