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

BÁO CÁO ĐỒ ÁN MÔN TRÍ TUỆ NHÂN TẠO Đề bài: Giải thuật cắt tỉa Alpha-Beta.Phương pháp minh họa. Hà nội tháng 4-2008 Các vấn đề sẽ trình bày I: Tỡm hiu v gii thut ct ta 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: Hng phỏt trin ca chng trỡnh I: Tỡm hiu v gii thut ct ta Alpha-Beta: Gii thut ct ta Alpha Beta l mt gii thut tỡm kim cú i th. Mt vớ d minh ha cho thut toỏn ct ta Alpha Beta rừ nht m ta cú th thy l cỏc chng trỡnh chi 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. Các toán tử là các nớc đi hợp lệ. Các trạng thái kết thúc là các tình thế mà cuộc chơi dừng, thờng đợc xác định bởi một số điều kiện dừng nào đó. Một hàm kết cuộc (payoff function) ứng mỗi trạng thái kết thúc với một giá trị nào đó. Chẳng hạn nh cờ vua, mỗi trạng thái kết thúc chỉ có thể là thắng, hoặc thua (đối với Trắng) hoặc hòa. Do đó, ta có thễ xác định hàm kết cuộc là hàm nhận giá trị 1 tại các trạng thái kết thúc là thắng (đối với Trắng), -1 tại các trạng thái kết thúc là thua (đối với Trắng) 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. Để 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. I.1:Cây trò chơi. Cây trò chơi đợc xây dựng nh sau. Gốc của cây ứng với trạng thái ban đầu. Ta sẽ gọi đỉnh ứng với trạng thái mà Trắng (Đen) đa ra n- ớc đi là đỉnh Trắng (Đen). Nếu một đỉnh là Trắng (Đen) ứng với trạng thái u, thì các đỉnh con của nó là tất cả các đỉnh biểu diễn trạng thái v, v nhận đợc từ u do Trắng (Đen) thực hiện nớc đi hợp lệ nào đó. Do đó, trên cùng một mức của cây các đỉnh đều là Trắng hoặc đều là Đen, các lá của cây ứng với các trạng thái kết thúc. Độ sâu của cây trò chơi là số tầng của cây(chính là độ sâu d của cây). Thuật ngữ nớc đi chỉ bao gồm một lần đi của một đối thủ hoặc một lần đi phản ứng lại của đối thủ bên kia. 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ờ. Ví dụ: Xét trò chơi Dodgen (đợc tạo ra bởi Colin Vout). Có hai quân Trắng 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. 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 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=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 là 16 độ 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 16 100 .Đâ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 10 10 (10 tỷ) nớc đi, 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ể. I.3:Chiến l ợc MiniMax: Quá trình chơi cờ là quá trình Trắng Đ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 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 đỉ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 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); begin 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} end; Trong các hàm đệ quy trên, f(u) là giá trị của hàm kết cuộc tại đỉnh kết thúc u. Sau đây là thủ tục chọn nớc đi cho trắng tại đỉnh u. Trong thủ tục Minimax(u,v), v là biến lu lại trạng thái mà Trắng đã chọn đi tới từ u. procedure Minimax(u, v); begin val ơ - ; 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, Đ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 10 120 đỉnh! Nếu cây có độ cao m, 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(b m ). Để 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 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á 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 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 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, 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ả 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 b có ngời anh em u dã đợc đánh giá, 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 sẽ đợc cập nhật trong quá trình tìm kiếm. đợ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) 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 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 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 [...]... (best < beta) do begin if best > alpha then alpha := best; thc hin nc i m; value := -AlphaBeta( -beta, -alpha, depth-1); b thc hin nc i m; if value > best then best := value; end; AlphaBeta := best; end; end; Li gi th tc AlphaBeta u tiờn vi sõu tỡm kim 4 v th c hin ti pos cú dng 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. .. 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 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... các hàm MaxVal 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: -2*bd/2-1 với d chẵn - b(d+1)/2+bd/2-1 với d lẻ Với b=40 d =4 ta có số nút phải xét là 2x402 - 1 = 3199 Nh vậy trong điều kiện lý tởng thì số nút phải xét nhờ AlphaBeta(chỉ khoảng... 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 đến độ sâu gấp hai lần thuật toán Minimax Ta có đồ thị so sánh giữa hai thuật. .. 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ỏ 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... xét nhờ AlphaBeta(chỉ khoảng 3 nghìn nút) ít hơn thuật toán Minimax (hơn 2,5 triệu nút) là 2560000/3199 khoảng 800 lần Còn với b=40 d=5 ta có số nút phải là 403+405/2-1=74118 Số nút phải xét nhờ AlphaBeta ít hơn 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 AlphaBeta Ta có nhận xét sau: Số lần tăng số nút khi... else { for mỗi đỉnh v là con của u do { ơ min[, MaxVal(v, , )]; // Cắt bỏ các cây con từ các đỉnh v còn lại if then exit }; MinVal ơ ;} end; Thuật toán tìm nớc đi cho Trắng sử dụng kỹ thuật cắt cụt alphabeta, đợ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 procedure Alpha_ beta( u,v); begin ơ -; ơ ; for mỗi đỉnh w là con của u do if MinVal(w,... 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 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... 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 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ỏ 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 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... 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 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 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) else { for mỗi đỉnh v là con của u do { ơ max[, MinVal(v, , )]; // Cắt bỏ các cây con . BÁO CÁO ĐỒ ÁN MÔN TRÍ TUỆ NHÂN TẠO Đề bài: Giải thuật cắt tỉa Alpha-Beta. Phương pháp và minh họa. Hà nội tháng 4-2008 Các vấn đề sẽ trình bày I: Tỡm hiu v gii thut ct ta Alpha-Beta. . 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. khoảng thời gian thuật toán AlphaBeta có thể tìm đế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

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