Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 26 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
26
Dung lượng
547,5 KB
Nội dung
Ket-noi.com diễn đàn công nghệ, giáo dục Đề tài Giới thiệu lý thuyết trò chơi Thuật toán Min-Max&Alpha-Beta ứng dụng trò chơi cờ Caro Mục lục Mục lục Lời mở đầu .3 I.Giới thiệu lý thuyết trò chơi ứng dụng II.Giới thiệu trò chơi đối kháng lịch sử chương trình cờ 2.1.Trò chơi đối kháng 2.2 Lịch sử chương trình cờ 2.3.Giới thiệu trò chơi Cờ caro (Gomoku) .8 III.Phân tích toán .12 3.1 Biểu diễn toán dạng trò chơi (Game Tree) 12 3.2.Chiến lược tìm kiếm 13 3.2.1 Thuật toán vét cạn liệu có sử dụng? 13 3.2.2.Không gian tìm kiếm nước & chiến lược tìm kiếm cờ Caro 14 IV Thuật toán 14 4.1.Thuật toán Min-Max 14 4.2.Thuật toán cắt tỉa Alpha-Beta .19 Giới thiệu sản phẩm .22 Kết Luận 25 Tài Liệu Tham Khảo 25 Ket-noi.com diễn đàn công nghệ, giáo dục Lời mở đầu Lý thuyết trò chơi nhánh toán học, sử dụng mô hình để nghiên cứu tình chiến thuật, đối thủ cố gắng làm tối đa kết thu mình.Trong thời đại công nghệ thông tin phát triển mạnh Lý thuyết trò chơi thu hút nhiều ý nhà khoa học máy tính ứng dụng Trí tuệ nhân tạo điều khiển học… Trong báo cáo này, em trình bày ứng dụng Lý thuyết trò chơi, giải thuật tìm kiếm Min-Max, Alpha-Beta ứng dụng việc xây dựng chương trình trò chơi đối kháng, cụ thể trò chơi cờ caro pubawin@yahoo.com I Giới thiệu lý thuyết trò chơi ứng dụng Theo số tài liệu lần lý thuyết trò chơi xuất thư viết James Waldegrave năm 1713, thư tác giả đưa lời giải chiến thuật hỗn hợp Minimax cho trò đánh người Leher.Tuy nhiên Lý thuyết trò chơi thực tồn ngành John von Neumann xuất mốt loạt báo năm 1828.John von Neumann người hình thức hóa Lý thuyết trò chơi thời ký trước chiến tranh lạnh, chủ yếu áp dụng chiến lược quân sự, tiếng khái niệm đảm bảo phá hủy lẫn (mutual assured destruction) Sau nhiều năm phát triển Lý thuyết trò chơi sử dụng rộng rãi nhiều ngành khác : Kinh tế kinh doanh, sinh học, trị học, triết học, khoa học máy tính logic, viễn thông, số show game truyền hình … Trong thời đại Công nghệ thông tin phát triển Lý thuyết trò chơi đóng vai trò quan trọng, đặc biệt logic khoa học máy tính.Một số lý thuyết logic có sở ngữ nghĩa trò chơi.Thêm vào khoa học gia máy tính sử dụng trò chơi để mô tính toán tương tác với Một số thuật toán Lý thuyết trò chơi giúp xây dựng, phát triển trò chơi hay, : thiết kế trò chơi Nim; thiết kế kiểu trò chơi có nhân, có tính đối xứng; thuật toán liên quan đến chiến lược tìm kiếm,…Bài báo cáo đề cập đến thuật toán tìm kiếm MinMax thuật toán cắt tỉa Alpha-Beta việc xây dựng chương trình trò chơi cờ caro (Gomoku) Ket-noi.com diễn đàn công nghệ, giáo dục II Giới thiệu trò chơi đối kháng lịch sử chương trình cờ 2.1.Trò chơi đối kháng Trò chơi đối kháng diễn đối thủ.Nhìn chung trò chơi thường có đặc điểm : - Mỗi trò chơi có luật chơi mà đấu thủ phải cố gắng để giành phần thắng mình.Trận đấu phải có kết thúc hòa phân định thắng thua không kéo dài vô tận - Mỗi đấu thủ nước tới lượt - Các đấu thủ biết thông tin tình trạng trận đấu Một số trò chơi đối kháng : Tictactoe, Cờ caro (Gomoku), cờ vua, cờ tướng, …như hình Cờ vua Cờ tướng pubawin@yahoo.com Tictactoe Gomoku 2.2 Lịch sử chương trình cờ Vào năm 1950, Alan Turing - nhà nghiên cứu người Anh tiên phong lĩnh vực máy tính số, viết chương trình chơi cờ Vào lúc đó, Turing phải viết chạy chương trình ông bút chì giấy Chương trình đó, chủ nhân nó, chơi cờ tồi, đạt mục đích: cho thấy máy tính chơi cờ Cũng vào năm đó, Claude Shannon vạch chiến lược cho máy tính chơi cờ tốt Nhưng vào năm 1950 tốc độ máy tính chậm nên không dám tiên đoán liệu máy tính thắng người không, dù trò chơi đơn giản trò Checker Năm 1958, chương trình chơi cờ lần hạ đối phương người Người thua cô thư kí đội lập trình nó, cô chưa chơi cờ trước dậy chơi cờ trước đấu Đối với ngày chiến công thật nhỏ nhoi, cho thấy tri thức đưa vào chương trình chơi cờ Lượng tri thức đo xác học chơi Sau chiến thắng đó, số người nhóm lập trình cờ tiên đoán vào năm 60 có chương trình chơi cờ liệt vào hàng ngũ kiện tướng giới Vào năm cuối thập kỷ 60, Spassky trở thành Ket-noi.com diễn đàn công nghệ, giáo dục kiện tướng cờ giới chương trình chơi cờ chiếm thứ hạng cao hàng ngũ người chơi cao cấp Nhưng nhiều người cho máy tính không giải nhiệm vụ thông minh, đạt chức Vô địch cờ giới Lời tiên đoán nhắc lại lần vào năm 70, liên quan đến đánh cược David Levy, kiện tướng quốc tế người Anh (theo phân loại Liên đoàn cờ quốc tế đẳng cấp cao bao gồm: Kiện tướng quốc tế, Đại kiện tướng Vô địch giới) John McCarthy, nhà nghiên cứu lĩnh vực trí tuệ nhân tạo Lời thách đấu đưa vào năm 1978 Trận đấu diễn chương trình cờ tốt thời đó, CHESS 4.7 bị Levy hạ trận đấu có năm ván Toronto với thành tích ba ván người thắng, hoà máy thắng Levy không chiến thắng mà đút túi số tiền đánh cược 1000 bảng Nếu mục đích đánh cược làm cho nhà nghiên cứu phải nghĩ kĩ trước tiên đoán đến ngày thắng lợi, lần đánh cược cho thấy: tiên đoán sai năm 1958-1968 1968-1978, chuyên gia chương trình cờ lại tiếp tục tiên đoán tiếp máy tính đạt đến vô địch cờ giới thập kỉ Nhưng lần nữa, vào năm 1988, Vô địch cờ giới người Trong năm tiếp theo, Deep Thought, chương trình cờ mạnh từ xưa đến chiến thắng cách dễ dàng Kiện tướng Quốc tế Levy Bộ não Deep Thought có 250 chip hai xử lí bảng mạch đơn, có khả xét 750.000 cờ giây tìm trước đến 10 nước Cũng năm đó, máy tính hạ Đại kiện tướng (Bent Larsen) Deep Thought trở thành trăm người chơi cờ mạnh giới Nhưng trận đấu diễn vào năm 1989 nhà Vô địch giới Garry Kasparov Deep Thought bị nhà vô địch đè bẹp Các lời tiên đoán lại đến lần trước Đã ba lần nhà nghiên cứu tiên đoán: 'trong thập kỉ tới' Nhưng lần họ lại sửa lại là: 'trong năm tới' pubawin@yahoo.com Trong năm 1993, Deep Thought hạ Judit Polgar - lúc Đại kiện tướng trẻ lịch sử người phụ nữ chơi hay giới, trận đấu ván Trong năm 1996, Deep Blue (tên Deep Thought lúc thuộc hãng IBM) máy tính song song có 32 xử lí với 256 mạch tích hợp cỡ lớn, khả xét từ đến 400 triệu nước giây) thắng Gary Kasparov ván trận đấu ván, lại thua toàn trận (với tỉ số máy thắng 1, hoà thua 3) Cuối đích mà người chờ đợi tới, sau năm từ lời tiên đoán cuối 39 năm từ lúc có chương trình chơi cờ đầu tiên, Deep Blue chiến thắng nhà đương kim Vô địch giới Garry Kasparov vào tháng 5/1997 chiến dài đầy khó khăn, với tỷ số sát nút thắng, thua hoà 2.3.Giới thiệu trò chơi Cờ caro (Gomoku) Ket-noi.com diễn đàn công nghệ, giáo dục Cờ caro môn cờ logic lâu đời cổ xưa Trái Đất Cờ caro sáng tạo từ nhiều văn minh khác cách độc lập Nó bắt đầu xuất từ năm 2000 trước CN sông Hoàng Hà, Trung Quốc Một số nhà khoa học tìm thấy chứng chứng minh Caro phát minh Hy lạp cổ đại Châu Mỹ trước thời Colombo Môn cờ cổ Trung Quốc Wutzu Cờ Caro du nhập từ Trung Quốc vào Nhật Bản từ khoảng năm 270 trước CN Nó thường gọi Gomoku có tên gọi khác tuỳ theo thời gian địa phương Kakugo, gomoku-narabe, Itsutsu-ishi Người ta tìm thấy trò chơi cổ từ di tích Nhật năm 100 sau CN thấy biến thể Caro Nó lan truyền nhanh chóng với tên Kakugo (trò quân) Các nhà sử học nói vào kỷ 17 18, người chơi trò này-người già người trẻ Năm 1858, sách trò chơi xuất bản, gọi Kakugo Nó tiếp tục chơi, gọi với nhiều tên khác Goren, Goseki, Gomokunarabe, Gomoku phát triển ngày thành thể loại phức tạp họ hàng đông đúc nó, Renju (chuỗi ngọc trai) pubawin@yahoo.com Luật chơi Gomoku cổ sau: - Bàn cờ 15 x 15, quân đen trước - Ai tạo quân liền trước thắng Khi trình độ kỳ thủ Gomoku nâng cao, họ nhận chơi đơn giản Gomoku lợi lớn cho bên tiên tức bên Đen (thực tế ưu thắng) Sau số nhà toán học chứng minh chơi với luật Gomoku bàn cờ rộng 15x15 Đen chắn thắng (sure win), sau cách cụ thể tìm ra, hệ thống phân loại.Và vậy, từ Gomoku lâm vào giai đoạn khủng hoảng Khả đánh thắng 100 phần trăm Đen làm trò chơi ý nghĩa Có nhiều cải tiến đề xuất, số bị bỏ qua nhanh chóng, số khác làm xuất biến thể Gomoku Ý tưởng chung cải tiến đề số hạn chế cho Đen, nhằm cân ưu tiên Dưới số biến thể phổ biến: - Gomoku Hiện chơi thức với bàn 13x13 Không có hoà Nếu hết đất Trắng thắng Chưa tìm chứng minh cho thấy Đen chắn thắng Tuy nhiên Đen có ưu lớn Ket-noi.com diễn đàn công nghệ, giáo dục III Phân tích toán 3.1 Biểu diễn toán dạng trò chơi (Game Tree) Trò chơi biểu diễn gồm gốc, nút, nhánh - Gốc trạng thái ban đầu trò chơi.Với trò chơi cụ thể trạng thái (ở thời điểm) lại đặc trưng thông số riêng - Các nút (Node) thể tình trạng trò chơi, gồm nút cha (Parent Node) nút (Children Node) - Các nhánh nối nút thể nước đi, tức cho biết từ tình trò chơi chuyển sang tình khác thông qua nước - Các (leave) hay gọi nút (leave node), thể thời điểm kết thúc mà kết trò chơi rõ ràng - Ngoài thông số độ sâu (Fly) hay gọi mức cây, số tầng Thường vị trí kết thúc trò chơi (nút lá) gán trọng số, chẳng hạn gán cho chiến thắng, cho hòa -1 cho thua trận.Tại nút có trọng số tương ứng xác định cách đó.Dựa vào trò chơi này, người ta tìm nước “tốt” để giành phần thắng cho (nếu có thể), cách tìm kiếm để tìm nước tốt Dưới ví dụ trò chơi qua trò chơi bốc sỏi Ket-noi.com diễn đàn công nghệ, giáo dục Giả thiết có hộp bi, số lượng bi hộp (1,2,2) Mỗi lượt chơi người chơi bốc hộp bi, với số lượng tùy ý.Người chơi bốc bi cuối người thua Dựa vào đánh giá trò chơi dưới, ta thấy nút mà có trọng số 1, tức theo nhánh mà cuối đến người chơi Max giành thắng lợi 3.2 Chiến lược tìm kiếm Như với trò chơi đối kháng, mà ta biểu diễn trò chơi dạng trò chơi, vấn đề đặt phải tìm chiến thuật trò chơi để chiếm lợi thế.Tức phải có chiến lược tìm kiếm tốt để đảm bảo đường “tốt” 3.2.1 Thuật toán vét cạn liệu có sử dụng? Nếu thuật toán vét cạn thực dùng để tìm kiếm trò chơi ta cần chọn nhánh dẫn tới nút chiến thắng để đi, trò chơi pubawin@yahoo.com 13 không hấp dẫn thường có.Và thực tế là, trò chơi đối kháng sau vài lượt lại sinh nhiều khả đánh (bùng nổ tổ hợp), có số trường hợp tìm kiếm theo kiểu vét cạn hết khả này.Do không dùng thuật toán vét cạn cho chiến lược tìm kiếm 3.2.2 Không gian tìm kiếm nước & chiến lược tìm kiếm cờ Caro Như biết, cờ caro sau nước số ô trống giảm.Vì việc tìm kiếm nước việc tìm kiếm không gian ô trống lại, sau lượt không gian tìm kiếm giảm dần Chiến lược thường người lẫn máy dùng phân tích cờ sau nước bên.Tức trò chơi, việc tìm kiếm nước chọn nút cho nước “tốt” Và để đánh giá nút thường phải “nhìn xa”, liên quan đến độ sâu (tương đương với việc người chơi phải “nhìn xa xem bàn cờ có khả biến đổi sau mốt sô nước, từ đánh giá độ tốt xấu cờ tại) Với máy tính cờ đánh giá tốt cờ nhờ so sánh điểm cờ lượng giá trả lại.Vì không gian tìm kiếm lớn nên giới hạn cho máy tính tìm kiếm đọ sâu định, tất nhiên độ sâu lớn chương trình “thông minh” trả giá mặt thời gian… IV Thuật toán 4.1.Thuật toán Min-Max Trong người chơi người gọi người chơi cực đại (Max) đối thủ họ người chơi cực tiểu (Min).Cả đấu thủ cố gắng nước để điểm tuyệt đối lớn hay cao có thể.Tức người chơi Max Ket-noi.com diễn đàn công nghệ, giáo dục tìm cách làm điểm cao làm điểm đối thủ bớt âm (giảm trị số) Trong người chơi Min ngược lại, cố gắng làm cho điểm âm làm cho điểm đối thủ giảm Giải thuật tìm kiếm Min-Max sử dụng để xác định tất “diễn biến” trò chơi tầng yêu cầu.Điểm số ban đầu gán cho lá, sau cách lượng giá nước đi, điểm số gán cho tầng qua giải thuật Min Max, thuật giải thực lát cắt cho trước tính điểm Ý tưởng thuật giải Min-Max theo đệ quy - Nếu mức xét người chơi cực tiểu áp dụng thuật toán Min-Max cho nó.Lưu kết giá trị nhỏ - Nếu mức xét người chơi cực đại áp dụng thuật toán Min-Max cho nó.Lưu kết giá trị lớn - Nếu mức xét (tầng cuối tìm kiếm), tình giá trị tĩnh cờ ứng với người chơi đó.Ghi nhớ kết Mã MinMax(x) { // x nút muốn tính điểm If x is a leaf Return score of x; Else If x in a minNode For allChildren of x : v1,…,vn Return {MinMax(v1),…,Min-Max(vn)} Else For allChildren of x : v1,…,vn Return max {Min-Max(v1),…,Min-Max(vn)} } pubawin@yahoo.com 15 Tuy nhiên có kích thước lớn ta tìm hết tất nút mà ta giới hạn số tầng xem mô gần Min-Max (chưa biết) cách gán trọng số cho nó.Trọng số trọng số không xác tuyệt đối mà ước lượng.Trọng số nhận theo cách gọi tính toán với giúp đỡ hàm lượng giá, hàm xây dựng vởi người dùng dựa hiểu biết kinh nghiệm Mã function MinMax (pos, depth): integer; { if depth = then //Đạt đến giới hạn MinMax = Eval (pos) //Tính giá trị cờ pos else { Gen (pos); // Sinh nước từ cờ pos while lấy nước m { pos = Tính cờ nhờ m; value = MinMax (pos, depth-1); // Tính điểm pos } } } Tham số depth – độ sâu tìm kiếm giúp ta biết phải tìm đến đâu, tham số pos cho biết cờ để từ biết cách tính tiếp Giá trị trả hàm điểm cờ pos Hàm lượng giá Eval đánh giá chất lượng cờ pos Các cờ pos' cờ tạo từ pos cách nước hợp lệ x Do ta phải có lệnh thực quân để đến cờ Để biết từ cờ pos nước nào, ta dùng thủ tục Ket-noi.com diễn đàn công nghệ, giáo dục Gen có tham số cờ cha pos Thủ tục cất cờ pos' vào nhớ (dạng danh sách) Việc ta lấy cờ áp dụng tiếp thủ tục MinMax cho để tính điểm value Mã function MinMax (pos, depth): integer; { if depth = then MinMax = Eval (pos) // Tính giá trị cờ pos else { best = -INFINITY; Gen (pos); // Sinh nước từ cờ pos while lấy nước m { pos = Tính cờ nhờ m; value = -Minimax (pos, depth - 1); if value > best then best = value; } MinMax = best; //Trả giá trị tốt } } Thông thường, bàn cờ biểu diễn biến toàn cục Do thay cho truyền tham số bàn cờ pos vào thủ thục MinMax người ta biến đổi biến toàn cục nhờ thực nước "thử" (nước dẫn đến bàn cờ pos) Sau MinMax thực việc tính toán dựa vào bàn cờ lưu biến toàn cục thuật toán dùng số thủ tục để loại bỏ nước Như MinMax bỏ tham số pos sau: pubawin@yahoo.com 17 Mã function MinMax (depth): integer; { if depth = then MinMax = Eval // Tính cờ pos biến toàn cục else { best = -INFINITY; Gen; // Sinh nước từ cờ pos while lấy nước m { thực nước m; value = -MinMax (depth - 1); bỏ thực nước m; if value > best then best = value; } MinMax = best; } } • Đánh giá thuật toán : Giả sử hệ số nhánh trung bình a , xét độ sâu b số nút đáy phải lượng giá ab Thực tế số nhánh lớn nên cần xét độ sâu nhỏ (cỡ nhỏ 10) số nút cần xét lớn Ket-noi.com diễn đàn công nghệ, giáo dục Hình vẽ ví dụ với số nhánh Depth Node Count 1 390625 … n 5n 4.2.Thuật toán cắt tỉa Alpha-Beta Thuật toán cắt tỉa Alpha – Beta cải tiến thuật toán Min – Max với tư tưởng “Nếu thấy việc làm tệ không nên thời gian xem tệ đến mức ” Thuật toán làm giảm số nút cần thiết việc tìm kiếm để không lãng phí thời gian tìm kiếm nước bất lợi rõ cho người chơi.Giải thuật Alpha – Beta cải tiến so với Min – Max cách thêm vào tham số alpha beta.Chúng cho biết giá trị nằm khảng [alpha, beta] điểm không cần xem xét nữa.Thủ tục Alpha – Beta bắt đầu nút gốc với giá trị alpha - infinity beta + infinity Thủ tục tự gọi đệ quy với khoảng cách giá trị alpha beta ngày hẹp dần Mã evalutemin(x, B) // x nút Min { Alpha=+infinity; pubawin@yahoo.com 19 if x = leaf return the score; else for all children v of u { Val = evalutemax(v, B); alpha= Min{alpha, Val}; if Alpha= Beta then exit loop; } return Alpha; } Mã function AlphaBeta(alpha, beta, depth): integer; { if depth = then AlphaBeta = Eval // Tính giá trị cờ pos else { best = -INFINITY; Gen; //Sinh nước từ vị trí pos Ket-noi.com diễn đàn công nghệ, giáo dục while (còn lấy nước m) and (best < beta) { if best > alpha then alpha = best; thực nước m; value = -AlphaBeta(-beta, -alpha, depth-1); bỏ thực nước m; if value > best then best = value; } AlphaBeta = best; } } • Đánh giá thuật toán : Người ta tính toán là, điều kiện lý tưởng thuật toán Alpha – Beta phải xét số nút theo công thức + 2.ab/2 - b chắn + a(b+1)/2 + ab/2 - b lẻ Trong a số nhánh trung bình cây, b độ sâu Qua công thức ta thấy thuật toán Alpha – Beta phải xét số nút thuật toán Min – Max nhiều Chẳng hạn lấy a = 30, b=6 số nút phải xét với thuật toán Alpha – Beta 53999 số nút cần xét với thuật toán MinMax xấp xỉ 2.2 x 1023 pubawin@yahoo.com 21 Giới thiệu sản phẩm Chương trình lập trình ngôn ngữ C#, code chương trình ghi CD kèm Dưới số hình ảnh chương trình chạy thực tế Ket-noi.com diễn đàn công nghệ, giáo dục Khi bạn chiến thắng pubawin@yahoo.com 23 Khi máy chiến thắng Ket-noi.com diễn đàn công nghệ, giáo dục Kết Luận Như qua báo cáo ta thấy tầm quan trọng Lý thuyết trò chơi, nhiều lý thuyết giải thuật tìm kiếm Min – Max, giải thuật cắt tỉa Alpha – Beta ứng dụng vào trò chơi đối kháng Tài Liệu Tham Khảo http://vi.wikipedia.org/wiki/Lý_thuyết_trò_chơi http://www.ocf.berkeley.edu/~yosenl/extras/alphabeta/alphabeta.html Trí tuệ nhân tạo Một số chương trình Gomoku mã nguồn mở pubawin@yahoo.com 25 Ket-noi.com diễn đàn công nghệ, giáo dục [...]... giáo dục while (còn lấy được một nước đi m) and (best < beta) do { 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; } AlphaBeta = best; } } • Đánh giá thuật toán : Người ta đã tính toán được là, trong điều kiện lý tưởng thì thuật toán Alpha – Beta chỉ phải xét số nút theo công thức + 2.ab/2 - 1... Đánh giá thuật toán : Giả sử hệ số nhánh trung bình của cây là a , xét độ sâu b thì số nút ở đáy phải lượng giá là ab Thực tế số nhánh khá lớn nên chỉ cần xét ở độ sâu nhỏ (cỡ nhỏ hơn 10) thì số nút cần xét cũng đã rất lớn Ket-noi.com diễn đàn công nghệ, giáo dục Hình vẽ ví dụ với số nhánh là 5 Depth Node Count 0 1 1 5 8 390625 … n 5n 4.2 .Thuật toán cắt tỉa Alpha- Beta Thuật toán cắt tỉa Alpha – Beta là... cây Qua công thức trên thì ta thấy được thuật toán Alpha – Beta phải xét số nút ít hơn thuật toán Min – Max khá nhiều Chẳng hạn lấy a = 30, b=6 thì số nút phải xét với thuật toán Alpha – Beta là 53999 trong khi số nút cần xét với thuật toán MinMax là xấp xỉ 2.2 x 1023 pubawin@yahoo.com 21 Giới thiệu sản phẩm Chương trình được lập trình bằng ngôn ngữ C#, code và chương trình được ghi trong CD đi kèm... Min {alpha, Val}; if Alpha= Beta then exit loop; } return Alpha; } Mã 2 function AlphaBeta (alpha, beta, depth): integer; { if depth = 0 then AlphaBeta = Eval // Tính giá trị thế cờ pos else { best =... thuật toán Min – Max 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 rõ cho người chơi.Giải thuật Alpha – Beta cải tiến so với Min – Max bằng cách thêm vào 2 tham số là alpha và beta. Chúng cho biết các giá trị nằm ngoài khảng [alpha, beta] ... tục Alpha – Beta được bắt đầu tại nút gốc với giá trị của alpha là - infinity và beta là + infinity Thủ tục sẽ tự gọi đệ quy chính nó với khoảng cách giữa các giá trị alpha và beta ngày càng hẹp dần Mã 1 evalutemin(x, B) // x là nút Min { Alpha= +infinity; pubawin@yahoo.com 19 if x = leaf return the score; else for all children v of u { Val = evalutemax(v, B); alpha= Min {alpha, Val}; if Alpha