các đối thủ chọn ngẫu nhiên các chiến lược đựa vào khả nắng đã được ấn định trước, thì bất cử một trò chơi với n đối thủ nảo trong dó mỗi đối thủ só thể chợn trong giới hạn cho trước nh
Trang 2
ĐẠI HỌC QUỐC GIA HA NOI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
LUT MINH DUC
TÌM HIỂU VE CHIEN LƯỢC TIM KIEM TRONG CAC TRO CIIOI DOL KTIANG VA UNG DUNG VAO TRO CIIOTI 2048
Nganh: Céng nghé théng tin
Chuyên nganh: Hệ thống thông tin
Mã Số: 60480104
LUẬN VAN THAC S¥ NGANH CONG NGHE THONG TIN
NGƯỜI HƯỚNG DẪN KIIOA HỌC: TS LÊ NGUYÊN KIIÔI
HANOI- 2014
Trang 3
Lời CAM ĐOAN
Tôi xin cam đoan luận văn “Tìm hiểu về chiến lược tìm kiếm trong các trò
chơi đối kháng và ứng đụng vào trò chơi 2048" là công trình nghiên cứu của
riêng tôi Các số liệu, kết quả được trình bảy trong luận văn là hoàn toàn trung,
thực Tôi đã trích đẫn đầy đủ các tải liệu tham khảo, công trình nghiên cứu liên quan Ngoại trừ cáo tài liệu tham khảo nảy, luận văn hoàn toàn là công việc của Tiêng tôi
luận văn được hoàn thành trong thời gian tôi là học viên tại Khoa Công
nghệ Thông tín, Trường Đại học Công nghệ, Đại học Quốc gia Hà Nội
T1ả Nội, ngày 2+1 tháng 10 năm 2014
Tiọc viên
Luu Minh Ditc
Trang 4Ll CaM ON
Loi đầu tiên, tôi xin gửi lời cắm ơn và lòng biết ơn sâu sắc nhất tới thầy
hướng đẫn TS Lê Nguyên Khôi đã tận tình hướng dẫn tôi trong suốt quá trình
thực hiện luận văn tốt nghiệp
'Tôi chân thành cảm ơn các thầy, cỏ đã tạo cho tôi những điều kiên thuận
lợi để tôi học tập và nghiên cứu tại trường Đại học Công Nghệ
Tôi xin gới lời cảm ơn tới các bạn trong lớp cao học KI8 đã ủng hộ, khuyến khích tôi trong suốt quá trình học tập tại trường,
Cuối cùng, tôi muốn được gửi lời cảm ơn vô hạn tới gia đình và bạn bẻ,
những người thân yêu luôn bên cạnh và dộng viên tôi trong suốt quá trình thực
hiện luận văn tốt nghiệp
Tôi xin chân thánh cam on!
Hà Nội, ngày 24 tháng 10 năm 2014
TIọc viên
Luu Minh Dic
Trang 5MỤC LỤC
LỜI NÓI ĐẦU,
CHƯƠNG 1: TỦNG QUAN VỀ LÝ THUYẾT TRÒ CHƠI
1.1 Giới thiệu về lý thuyết trò chơi
1.2.2 Khong gian fim kiểm
1.2.3 Cac ky thual tìm kiếm ca ban
1.2.4 Trò chơi đổi kháng
CHƯƠNG 2: THUẬT TOÁN TÌM KIEM MINTMAX
2.1 Thali loin Minimax
2.L1 Giới thiệu
2.1.2 Một số khái niềm trong trở chơi đối ¡kháng
2.1.4 Thuật toán Minmax với đô sầu định trước - 20
2.1.6 Banh giá that toén Minimax peeeneet
2.2 Thuật toin cai tén Minimax Alpha beta, pees sees
2.2.1 Ý tưởng thuật loán
3.2.2 Giải thuật Minnmax Alpha-beta
CHƯƠNG 3: ÁP DỤNG VÀO TRÒ CHƠI 2048
3.1 Thân tích bài toản — "1 ÔỎ
3.2.1 Môi trường phát triển và công nghệ sử đụng
3.2.2 Giao diện của chương trình
Trang 6DANII MUC INI VE Tñnh 1.1: Ví dụ về để thị và các (rạng thái
Hinh 1.2: Trạng thái ban dầu và trạng thải kết thúc của bài toán 8 số 14
1nh 1.3: Cây tìm liễm minh hoa giải thuật DFS
Tũnh 1.4 Đánh giá trạng thái u
Hinh 1.5: Yi dụ biểu diễn một cây trò chơi caro 9 ô
Hình 2.2: Cây tìm kiểm đã được tính trọng số tất cả các nút
Hình 2.3: Minh hug cây tìm kiếm với giải thuật Minimax
Hình 2.4: Mật phần cúa cây trò chơi với ý tướng cắt nhánh alpha
Hình 2.5: Minh hoạ ý tưởng cắt nhánh theo alpha
Hình 3.1: ví dụ một (rạng thái của trò chơi và trạng thái chiến thắng .39
Hình 3.4(@a): Trạng thái có dộ mịn tối uu
Hình 3.4(b): Trạng thái có tính đơn điệu tốt
Tĩnh 3.5: giao diện chỉnh chương trình
Hinh 3.5(b): gian diện cầu hình cho việc chơi tự dộng
Ilinh 3.5(a): giao diện cài đặt cho trò chơi
Tĩnh 3.6: Sơ đồ khối của quá trình chơi tự độn;
Hinh 3.7: Màn hình hiển thị kết quả trong quá trình chạy thử nghiệm #7 Tinh 3.8(a): Màn hình hiển thị một trạng thái kết quả của việc chọn cách di
chuyển và xây dựng nên tăng các con số ở hàng dưới cùng
Hình 3.8(b): Màn hình hiễn thị một trạng thái kết quả của việc chọn cách di
Hình 3.8): Màn hình hiển thị một trạng thái kết quả cúa việc chọn cách
chơi giảm số lân đi chuyển trông 50
Hình 3.8(đ): Mãn hình hién thj mt trang thai két qua cita vige chyn cách
Trang 7
LOI NOI DAU Trong những năm gẦn đây với sự phát triển không ngừng của các thiết bị
đi động và theo đó là sự phát triển về nhu cầu giải trí trên các thiết bị đi động dang bung né mét cách mạnh mẽ Một trong những lĩnh vực phát triển mãnh liệt
nhất ở thế giới số là các trò chơi trên thiết bị di động Từ năm 2000 đến năm
2012 thị trường trò chơi trên thiết bị di động đã tăng trưởng 955% từ 20 triệu người chơi đến 211 triệu người
Năm 2014 chúng ta chứng kién su ra đời của trò chơi rất thú vị trên nền
lang di động đó là trỏ chơi 2048 Đây là một trỏ chơi đỏi hỏi trí tuệ cộng với sự
may mắn và nó đã thu hút nhiễu triệu người trên khắp thể giới tham gia Tuy
nhiên đây là một trò chơi khó và rất tt người có thể dành chiến thắng trong trò
chơi này Xuất phát từ những điểm trên, luận vin nay đưa ra ý tưởng làm sao cho máy có thể thay người tự chơi trỏ chơi này dé dành chiến thắng Lôi đã đưa
Ta ý tưởng về một trẻ chơi đếi kháng để vận dung vào trò chơi 2048 Luận văn nay sẽ lập trung tìm hiểu về trò chơi đối kháng va chiến thuật trong trò chơi đối
kháng, qua đó áp dựng vảo trò chơi 2048 Kết quả cuối cùng của luận văn là xây
đựng lại trò chơi 20-18 cho máy tự động chơi
Trang 8CHƯƠNG 1: TÖNG QUAN VỀ LÝ THUYÉT TRÒ CIIƠI
1.1 Giới thiệu về lý thuyết trò chơi
1.1.1 Giới thiệu
Ly thuyét trò chơi là một nhánh của toán học trong đó nó sử đụng các mô hình để nghiên cứu các tỉnh huồng chiến thuật, các đổi thủ cá gắng làm tối đa
kết quả dạt dược cho mình Trong thời đại công nghệ thông tin phát triển mạnh
như hiện nay thì ý Thuyết rô chơi thu hút được rất nhiều 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[1]
Một số tải liệu ghi lại thì lý thuyết trò chơi xuất hiện lần đầu tiễn vào năm
1713 vào thời điểm đó lắc giá dưa ra lời giải chiến thuật hỗn hợn Minrmax cho một trò đánh bài 2 người Leher Tuy nhiền thì Lý thuyết trò chơi chỉ thực sự tổn
tại là một ngành khi John von Neumamm xuất băn một loạt cdc bai bảo nắm
1828 John von Ncumamn cũng là người dầu tiễn hình thức hỏa Lÿ thuyết trò
chơi trong thời ký trước va trong chiến tranh lạnh, chủ yếu do áp dụng của nó
trong chiến lược quân sự, nổi tiếng là khái niệm đảm bảo phá hủy lẫn
nhau[7][8][9]
lIiện nay Lý thuyết trỏ chơi đã được sử dụng rộng rãi trong nhiều ngảnh
khác nhau như : Kinh tế và kinh doanh, sinh học, chính trị học, triết học, khoa
học máy tính và logic, viễn thông, một số trỏ chơi trên truyền hình
Với sự phát triển của ngành công nghệ thông tin như hiện nay thì Lý
thuyết trò chơi đóng một vai trẻ hết sức quan trọng, dặc biệt trong logic vá khoa
học máy tính Một số lý thuyết logic có cơ sở trong ngữ nghĩa trò chơi Thêm
vào đó những khoa họo gia máy tính đã sử dụng trò chơi để mô phỏng những
tính toán tương tác với nhau
Trong Lý thuyết trẻ chơi nhân loại đã nghiên cứu được rất nhiều thuật
toán hay dỄ ứng dụng vào các trỏ chơi ví dụ như thiết kế trò chơi Nim, thiết
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
Trang 9kiếm Luận văn này đề cập đến thuật toán tìm kiếm MinMax và thuật toán cắt
tỉa Alpha-Bcta trong việc xây dựng chương trình trỏ chơi 2048
1.1.2 John Nash và thuyết cân bằng
Cân bằng Nash: là một khải niêm trong Lý thuyết trỏ chơi, được John Nash
đưa ra với mô hình trẻ chơi với ø đối thủ Cân bằng Tash xác định một chiên
lược tối ưu cho cáo trỏ chơi khi chưa có điều kiện tối ưu nào được xác định trước đó Nội dung cơ bản của khái niềm cân bằng Nash là: Nếu tồn tại một tập
hợp các chiến luge cho một trỏ chơi với đặc tính là không một đối thủ nào có
thể hưởng lợi bằng cách thay déi chiến lược hiện tại của mình khi các đối thủ
khác không thay đối, tập hợp các chiến lược đó và phần thu nhận tương ứng tạo
nên cần bằng Nash Nói cách khác, cân bằng Nash dat duge nếu như thay đổi
một cach den phương của bất cứ ai trong số các đối thủ cũng sẽ làm cho chỉnh
người đó thu lợi it hơn mức có được với chiến lược hiện tại Khái niệm này áp
dụng cho những trò chơi gồm từ hai đối thủ trở lên và Nash đã chỉ ra rằng tất cả các khái niệm khác nhau về giải pháp trong các trò chơi được đưa ra trước đó
đều có cân bang Nash[9]
Vì mỗi quan hệ giữa gi ye dai va gia trị cực tiểu đã được thiết lập,
chúng ta có thể định nghĩa một giá trị cân bằng của trò chơi
Một cặp chiến lược (pg”) được gọi là cân bằng nêu p' tương xứng IỐt với 4ˆ và ngược lại g'tương xửng tốt với p', nghĩa là
Mpg’) < Mpg) < Mp a7)
Một ví dụ đơn giản: trong một trò chơi gồm hai đối thủ củng chọn song song một số bất kỳ Lừ 0 đến 10 Người nào chọn số lớn hơn sẽ thua và phải trả liền
cho người kia Trò chơi này chỉ có 1 cân bing Nash duy nhất: cả hai dối thú dễu
chọn số 0 Bất kỳ sự lựa chọn nào khác (má không biết sự lựa chọn của đổi thủ
kia) cũng có thể làm đối thủ thua cuộc
Một trò chơi có thể có nhiều hoặc không có cân bằng Mash Nash cững
chứng mình rằng nếu cho phép các chiến lược hỗn hợp (mixed siratcgics) tức là
7
Trang 10các đối thủ chọn ngẫu nhiên các chiến lược đựa vào khả nắng đã được ấn định
trước, thì bất cử một trò chơi với n đối thủ nảo trong dó mỗi đối thủ só thể chợn
trong giới hạn cho trước nhiều chiến lược sẽ có ït nhất 1 cân bằng Nash của các
chiến lược hỗn hop
Ví dụ với Song để Tù nhân (Prisoner's đilemma) Song dé nay minh hoa
sự mẫu thuẫn giữa hành vĩ cá nhân có năng lực suy doán và lợi ích của việc hợp
tác Vấn đề mấu chốt là mỗi đối thủ đều cố gắng tổi đa hoá lợi ích của mình mà
không quan tâm tới lợi ích cúa những người khác, tức là đỗi thủ có tỉnh ích ký,
Song đề tủ nhân có 1 cân bang Nash khi cả 2 đối thủ đều không tôn trọng giao tước Tuy nhiên cả 2 đều sai rõ ràng không bằng cả hai cùng hợp tác Chiến lược
hợp tác không bền vi một dối thủ có thể làm tất hơn bằng cách không tôn trong
giao ước trong khi đối thủ của anh ta vẫn hợp tác[ 9]
Lý thuyết kinh tế về đấu giá cũng lả một trong những áp đụng lớn của cân bằng Nash và lý thuyết trò chơi Trước kia, các nhà kinh tế thường chỉ phân tích thị
trường thông qua cung và cầu hàng hoá mà không chú trọng tới quy luật của
“trò chơi” làm cho các hình thức đấu giá trở nên khác biệt với nhau và với các hình thức thị trường khác (thị trường chứng khoán, siêu thị ) Ngày nay nghiên
cứu đầu giá thường dựa trên cân bằng Nash của các quy luật đấu gia
P Ordeshook Giáo sư chính trị học, Học viên công nghệ California, tác giả cuốn
“1y thuyết trò chơi và lý thuyết chính trị" đã việU: “Khải niệm cân bằng Nash có
lẽ là ý tưởng quan trọng nhất trong lý thuyết trà chơi không hợp tác dù trong việc phân tích chiến lược ứng viên / bầu cũ, phân tích nguyên nhân chiến tranh,
, hay hành động của các nhóm quyên lợi, dự bảo về các sự kiện đều tìm lại
trong việc tìm kiểm và mô tả các trạng thái cân bằng Đơn giản hơn, các chiến
lược cân bằng là những dự đoán về con người"[7][9]
Trong thể ký 19, các nhà khoa học khác đã sử dụng lý thuyết cân bằng như Maxwell, Walrus, Gibbs Dau thế kỹ 20, cân bằng kinh tế và hoá học dược sử
dung béi van der Waals, Onnes, Keynes trước khi được Nash sử dụng, Nhiều
Trang 11nhà khoa học khác đã bổ sung cho lý thuyết của Nash trong thập ký 50 và 60
như Scltcn, Harsanyi, và tiếp tủc khám phá các khả năng khác nhau của ƒý
thuyết cân bằng tông thể (General Equilibrium Theory GET) từ thập kỳ 70 tới
thap ky 90, trong dé cé Arrow, Ilicks, va Debreu Ly thuyét này vẫn được giâng
day trong các trường đại học ngày nay L.ý thuyết của Nash đã trở thành một hệ
thống giải thích và chứng minh đa dang hơn rất nhiều so với khái niệm ban đầu của tác giã Hệ thống ấy đang ngày một phát triển trong xã hội, ở cả những nơi
ma Nash có lẽ không bao giờ nghĩ đến [9]
Đình tý Nash: “Tôn tại một cân bằng Nash cho mọi trò chơi gômN người chơi "j9}
Ÿ nghĩa của cân bằng Nash: Trong tré choi gồm N người chơi, mỗi người chơi
có sự lựa chọn các chiến lược để thực hiên Ứng với mỗi người chơi là một sự
chỉ trả của người chơi cho tất cả các kết quả có thể xây ra tương ứng với sự lựa chọn chiến lược của các người chơi Mỗi người chơi có thể lựa chon một chiến lược hỗn hợp và kết hợp các lựa chọn các chiến lược hỗn hợp của những người chơi khác xác định kết quả trưng bình hoặc giá trị kỳ vọng cho mỗi người chơi
Định lí Nash nói rằng mỗi người chơi có một tập các chiến lược hỗn hợp
tối ưu khi biết sự lựa chon chiến lược hỗn hợp của các người chơi khác Mỗi
chiến lược hỗn hợp tôi ưu đưa đến kết quả trong giá trị kỹ vợng lớn nhất có thé
cho người chơi khi biết chiến lược hỗn hợp của các người chơi khác Miệt cân
bằng Nash là một sự lựa chọn của chiến lược hỗn hợp mà kết quả cho mỗi người
chơi là các giá trị kỳ vọng lớn nhất có thể ứng với chién lược hỗn hợp của các
người chơi kháo.[9]
1.2 Bài toán tìm kiêm và không gian m kiếm
1.2.1 Bai toán tìm kiềm
Trong thực tế cuộc sống chúng ta bắt gặp rất nhiều bài toán tìm kiếm Khi chúng ta đứng trước một sự lựa chọn nào đó, chúng ta cần đưa ra quyết định nên
chọn phương dn ndo cho tốt để thoả mãn một hoặc nhiều mục tiêu đã định sẵn
Trang 12Bài toán mã chúng ta đưa ra đó chính là bài toán tìm kiểm và quá trình chúng ta
suy nghĩ để dưa ra sự lựa chọn chính lả quá trinh tìm kiểm Tập hợp những lựa
chọn có thể có của chúng ta là không gian tìm kiếm
Trong khoa học máy tính, hầu hết các bài toán đểu lả bài toán tìm kiếm Một số phương pháp giải bài toán tìm kiểm đơn giản là sử dụng cách thử sai
Cách này xét tất cả các khả năng có thể có trong không gian tìm kiểm và so sánh
nó với mục tiêu tìm kiếm ban đầu để chọn lựa ra kết quả Việc làm này đơn giản
và dễ thực hiện nhưng thường mất nhiều thời gian Một hướng tiếp cân thứ hai cho bài toán tìm kiếm là tiếp cận theo kiểu tìm kiểm theo kinh nghiệm Trong
quá trình tìm kiếm trong không gian trạng thái, sẽ có một số kinh nghiệm được hình thành để loại bô thật sớm những trạng thái không dẫn đến kết quả tốt(tỗi ưu
toàn cue) Phương pháp này được nghiên cửu và áp dụng rất nhiều trong ngành khoa học máy tính
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 dó trong lập hợp rộng lớn các đối tượng 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 cdc mau tin (record), mỗi mẫu tin đều có một KHÓA
(kcy) dùng cho việc tìm kiếm Ta sẽ luôn cỏ một khoá cho trước piống như khoá
của các mẫu tin mà fa cần tìm Mỗi mẫu tìn đượ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 dung rat
da dạng và rộng rãi [5][6][9]
1.2.2 Không gian tìm kiếm
1.2.2.1 Không gian tìm kiếm
'Irong quá trinh giải quyết một bài toán tìm kiêm ta cần xác định được không gian tìm kiếm Không gian tìm kiếm lả không gian chứa tất cả các trạng
thái mà việc tìm kiểm là công việc mả ¡a phải di tìm một trạng trải thoá mãn yêu
cầu nào đó Không gian trạng thái có thể lả liên tục, ching hạn không gian
vecto, hoặc không gian đó chứa các đối tượng rời rạc như tập các nút của đề thị
Trang 13Các bài toán tìm kiếm thưởng ở dạng: tìm một đường đi trong không gian trạng thái từ trạng thái ban đầu đến trạng thái kết thúc đề thoả mãn một yêu cầu
nao đỏ đặt ra từ trước, yêu cầu đó chính là đặc thủ của mỗi bải toán.[6]
Cho trước hai trạng thải 7; vả 7z hãy xây dựng chuỗi trạng thái 7a 7„ Ts
T¡„„ T; = Ts sao cho :
XS Peost(T.,„7,) thỏa mãn một điều kiên cho trước
Trong đó, 7, thuộc tap hợp Š (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à Pceost(T,.,,T,) la chỉ phí để
biến đổi từ trạng thải 7,., sang trạng thái 7, Tuy nhiên, từ một trạng thái 7,., ta
có nhiều cách để biển đổi sang trạng thải 7¡ Khi nói đến một biển đổi cụ thể từ
T,., sang T, 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: Ví dụ về đỗ thị và các trang thái
1.2.2.2 Biểu diễn bằng đồ thị
Đổ thi có khả năng biểu diễn được nhiều cầu trúc và rất nhiều bải toán cụ
thể trong cuộc sông có thể biểu diễn bằng dé thị Ví dụ một mạng lưới giao thông trong một địa phương nào đó có thể được biểu diễn bằng đồ thi như sau: các đỉnh là các nút giao thông, các canh là các con đường, trọng số của mỗi cạnh
là khoảng cách thực tế giữa hai nút giao thông Với khả năng biểu diễn bải toán của đồ thị rất manh nên đỗ thì là một mối quan tâm rất lớn đối với ngành khoa học máy tính
Cấu trúc đỗ thị có thể được mở rộng bằng cách gán trọng số cho mỗi
cạnh Có thể sử dụng đồ thị có trọng số để biểu diễn nhiễu khái niệm khác nhau
11
Trang 14Vi du, nếu đề thị biểu điễn một mạng đường giao thông, các trọng số có thể là
độ dai của mỗi con dường, Một cách khác để mở rộng đỗ thị cơ bản là qui dinh
hướng cho các cạnh của đỗ thị Loại đề thị này được gọi là đỗ thị có hướng Một
để thị có hướng với các cạnh có trọng số được gọi là một lưới
Cách vẽ đỗ thị
Đổ thị được biểu điễn đồ họa bằng cach vẽ một điểm cho mỗi đỉnh và về một cung giữa hai dỉnh nếu chúng được nối bởi một cạnh Nếu đỗ thị là có
hướng thi hướng được chỉ bởi một mũi tên
Không nên lẫn lộn giữa một đỗ hình của đỗ thị với bản thân đề thị (một
cấu trúc trừu tượng, không đề họa) bởi có nhiễu cách xây dựng đồ hình Toàn bộ
van dé nim ở chỗ đỉnh nao được nối với đỉnh nào, và bằng bao nhiêu cạnh
Trong thực hảnh, thường rất khé để xác định xem hai đề hình có cùng biểu diễn
một đỗ thị không Tùy vào bài toán mà dễ hình này có thể phủ hợp và dễ hiểu
hơn đỗ hình kia.[5][6]
Cấu trúc dữ liệu đề thị
Người ta có thể biểu diễn đỗ thị vào trong máy tính bằng nhiều cách khác
nhau Đơn giản nhất là dùng ma trận ké NxN trong dé N 14 sé dinh cia dé thi
‘Tai m4i 6 [i][j] trong ma trân kể đó sẽ lưu quan hệ giữa dinh [1] va đỉnh [j] (1<—
i, j<=N) Người ta cũng cũng có thế biểu điễn đỗ thị bằng cầu trúc đanh sách
Hoặc kết hợp cả ma trận và đanh sách Tuỷ từng bài toán và không gian trạng
thái mả ta lựa chọn phương án lưu trữ nào cho phú hợp Với những đề thị có nhiều đỉnh và là đồ thị thưa thì ta nên dùng danh sách liên kết để hạn chế bộ nhớ
cần dùng Ngược lại dễ thị ít dinh và không thưa thì ta nên sử dụng ma trận dé
lưu trữ, điều nảy cho phép truy cập nhanh hơn
vˆ lanh sách
-_ Danh sách liên thuộc (ncidence iist) - Mũi đình có một danh sách các
cạnh nỗi với đỉnh đó Các cạnh của đỗ thị được có thể được lưu trong một danh sách riêng (có thể cài đặt bằng mảng (arra) hoặc danh sách liên kết
12
Trang 15động (linked lisf)), trong đó mỗi phần tử ghỉ thông tin về một cạnh, bao
pm: cặp dỉnh mả cạnh đó nối (cặp nảy sẽ có thứ tự nêu đỗ thị cỏ hướng),
trợng số và các đữ liệu khác Danh sách liên thuộc của mỗi đỉnh sẽ chiếu tới vị trí của các cạnh tương ứng tại danh sách cạnh này [3]
-_ Danh sách kề (4ÿaceno: lisÐ - Mỗi đính của đề thị có một đanh sách
cdc đỉnh kề nó (nghữa là có một cạnh nối từ đỉnh này đến mỗi đỉnh đó)
‘trong đồ thị vô hướng, câu trúc nay có thé gây trùng lặp Chẳng hạn nêu
đình a nằm trong danh sách của đỉnh b thì đỉnh b cũng phải có trong danh
sách của đỉnh a Lập trình viên có thể chọn cách sử dụng phần không gian
thừa, hoặc có thể liệt kê các quan hệ kể cạnh chỉ một lẫn Biểu diễn dữ
liệu này thuận lợi cho việc từ một đình duy nhất tìm mọi đỉnh được nối với nó, do các đỉnh này đã được liệt kê tường minh |5]
¿Ma trận kề (42ÿaceny madix) - một ma trận N *<N, trong đó N là số
dính của đỗ thị Nếu có một cạnh nào đó nổi đỉnh Ÿšvới dĩnh YY thi
phần tir Miz bang 1, nếu không, nó cỏ giá irị 0 Cầu trúc này tạo thuận
lợi cho việc tìm các đỗ thị con và để đáo eae dd thi ||
c Ma trfn din nap (Admitiance matrix) hoặc ma trận
Kirchhoff (Kirchhoff matrix) hay ma train Laplace (Laplacian
mairix) - được định nghĩa là kết quả thụ được khi lẫy mà trận
bac (degree matrix) tir di ma tran kể Do đó, ma trận này chứa thông,
tin câ về quan hệ kể (có cạnh nỗi hay không) giữa các đính lẫn bậc của
các đỉnh dó [5]
Trang 16Sau đây chúng †a sẽ xem xét một ví đụ về không gian trạng thái được xây đựng
cho bài toán 8 số |1 |
dụ - Bài toán § 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 6 trống só thể được chuyên dịch tới 6
trống đó Yêu cầu của bài toán lả tìm ra một đãy các chuyển dịch dé bién déi trạng thái ban dầu của bảng (hình bên trải) thành một trạng thái xác dị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:
'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 địch các
quan, ta cé bốn phép chuyển: wp (đẩy quân lên ^), đowø (đẩy quân xuống |),
left (day quân sang trái <), right (day 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, lefi, right
Trong vi 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 dé la kha dễ dàng và tự nhiên Song trong nhiễu vấn đỀ việo 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 dề Có thể nói rằng, nếu ta
tim được dang biếu diễn tốt cho các trạng thái của vấn đề, thi van dé hầu như đã
được giải quyết
1.2.3 Các kỹ thuật tìm kiếm cơ bản
Với mỗi bài toản, tuỳ theo yêu cầu và cách biểu diễn không gian trạng
thái mà ta sẽ xây dựng một phường pháp tìm kiểm phủ hợp
Trang 17Có một số phương pháp tìm kiểm cơ bản được áp đụng đó là: Tờn liếm không có thông tin, tìm kiêm có thing tin va tờm kiêm dối kháng Trong dó, 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
1.2.3.1 Tìm kiểm không có thông tin
Tìm kiếm không có thông tin là cách xây dựng một giải thuật tổng quát,
có thể áp dụng cho nhiều bài toán khác nhau Nhược điểm gủa cáo 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 c4y) sé cin một khoảng thời gian đáng kế cho các ví đụ nhỏ I2o đó, để tăng tốc độ quá trình tìm kiếm, đôi khi chỉ có thể dùng
giải thuật tìm kiếm có thông tin
= Tim kiếm trên danh sách
Lả tìm kiểm một phan tử nảo đó trong danh sách đã cho, đây là một phương
pháp tìm kiếm cơ bản và có hai kiểu tìm kiếm danh sách hay dùng: Tìm kiếm tuần tự (hay tìm kiếm tuyển tính), tìm kiểm nhị phân
kiếm tuần tự duyệt toàn bộ các phần tử của danh sách dễ lấy được
phần tử phủ hợp yêu cầu bài toán Cách tìm kiếm này rất tự nhiên và độ phức
tap O(n), rt tn kém thời gian nếu tỉm kiếm trong trường hợp không gian bài toán rất lớn
Tìm kiểm nhị phân là một thuật toán hiệu quả hơn thuật toán tìm kiếm
tuân tự, với độ phức tap 14 O(log #) Thời gian được giảm đáng kể so với thuật
toán tim kiếm tuần tự, tưy nhiền để áp dụng phương pháp nảy thì không gian
trạng thái của bài toán phải được sắp xếp theo một thử tự nảo đó trước khi tiên
hành tìm kiểm
Bảng băm (hash table) cũng được dùng cho tìm kiểm trên đanh sách Mó
đờ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 phụ
phi 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ử
đụng cây tìm kiếm nhị phần cân bằng (self-balancing binary search tree) và đòi
15
Trang 18hỏi thời gian chạy O(og 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 dé cho phép chẻn và xóa nhanh Xem máng
lién két (associative array) dé biết thêm về các cấu trúc đữ liệu tìm kiếm trên
danh sách [1]
= Tim kiếm trên cây
Đa phần cdc bai loan tim kiếm đều quy về xây dựng một cây tìm kiếm và
tiến hanh tim kiểm trên cây dé Cây tìm kiếm có thể dược xác dịnh từ trước hoặc
hình thành dần trong quá trình tìm kiếm
Nguyên lý cơ bản là: Từ một nút của cây có thể xây dựng các nút con của nó
với một chi phí nào đó Thứ tự thăm các nút của cây sẽ cho ta biết phương pháp đuyệt cây theo chiều rộng (BFS) hoặc theo chiều sâu(DTS)
Tìm kiếm theo chiều rộng
Trong lý thuyết đồ thị, tìm kiếm theo chiều rộng (PS) là một thuật Loán
tim kiém trong dé thitrong dé vide tim kiém chi bao gồm 2 thao Lác
5 Thăm một đỉnh của đồ thị,
«Thêm các đỉnh kể với đỉnh vừa thăm vào đanh sách có thể thăm trong
tương lai
Có thể sử dụng thuật toán tìm kiếm theo chiều rộng cho hai mục đích: tìm
kiểm đường đi từ một đỉnh gốc cho trước tới một đính đích, và tìm kiêm đường,
di tir dinh gốc tới tất cả các dinh khác Trong dễ thị không cỏ trọng số, thuật
toán tìm kiếm theo chiều rộng luôn tìm ra đường đi ngắn nhất có thể Thuật toán
BFS bit dầu từ dinh pốc và lần lượt thăm các đỉnh kề với đính gắc Sau đó, với mỗi đỉnh trong số đó, thuật toán lại lần lượt thăm các đỉnh kể với nó mà chưa
được thăm trước đó và lặp lại Xem thêm thuật toán tìm kiểm theo chiều sâu,
trong đỏ cũng sử dụng 2 thao tác trên nhưng có trình tự thăm các dịnh khác với
thuật toán tìm kiếm theo chiều Tông
Trang 19Thuật toán sử dụng một cấu trúc đữ liệu hàng đơi đổ lưu trữ thông tin trung
gian thu được trong quá trình tìm kiểm
1 Chèn đỉnh gốc vào hàng đợi
2 Lay ra đỉnh đầu tiên trong hàng đợi và thăm nó
+ Nếu đỉnh này chính là đính đích, dừng quá trinh tìm kiếm và trả về
kết quả
« — Nếu không phải thì chẻn tất cä các dinh kể với dĩnh vừa thăm
nhưng chưa được thăm trước đó váo hàng đợi
3 Nếu hàng đợi lả rỗng, thì tất cả các dĩnh có thể dến dược dều đã dược
thăm dừng việc tim kiếm và trả về "không thấy"
4 Nếu hàng đợi không rỗng thi quay về bước 2
Tìm kiếm (heo chiều sâu
Tìm kiểm ưu tiên chiều sâu hay tìm kiểm theo chiều sâu (tiếng
Anh: Depth-first search- DF5) là một thuật toán đuyệt hoặc tìm kiếm trên
một cây hoặc một dỗ thị Thuật toán khởi dầu tại gốc (hoặc chọn một đỉnh nao
đó coi như gốc) và phát triển xa nhất có thể theo mỗi nhánh
'Thông thường, I3EB là một đạng tìm kiếm thông tin không dây đủ ma qua
trình tìm kiếm được phát triển tới đỉnh con đầu tiền của nút đang tìm kiểm cho tới khi pặp dược dinh can tim hoặc tới một nút không có con Khi dó giải
thuật quay lui về đỉnh vừa mới tìm kiểm ở bước trước Trong dạng không đệ
quy, tắt cả các đỉnh chờ được phát triển được bả sung vào một ngăn xếp LO
Độ phức tạp không gian của DFS thấp hon ciia BFS (tim kiếm ưu tiên chiều
rông) Đệ phức tạp thời gian của hai thuật toán là tương dương nhau và bằng, S(VỊ ! ED
Trang 20kiểm xong ở cây con trái mới chuyển sang tìm kiếm ở cây cơn phải Thứ tự
thăm viếng các đỉnh là: AB, D, F, E, Ơ, G
Quá trình viễng thăm các đỉnh diễn ra như sau: Sau khi thầm đỉnh A, vì B chưa
được thăm nên theo cạnh AH ta thăm B, tiếp tục theo cạnh BỊ) tới viếng thăm 13
Từ D không thể tiếp tục di xa hon, ta quay lai B Tir B, theo BF đến thim F, từ F
đến thăm E Từ E vi A đã viếng thăm nên la quay lại T, rồi quay lại Ð Tại P vì
tất cả các khả năng từ B đã xem xét nên ta quay lai A ‘tr A, qué trình tiếp tục
với các đỉnh Œ và G
«_ Một số thuật toán tìm kiếm trên đỗ thị tiêu biếu
Thuật toán Diikstra Thuật toán tim đường đi ngắn nhất từ trạng thái ban đầu
dén trang thai kết thúc Dạng của bải toán: Cho một dồ thị có hướng G-(V,B), mét him trọng số w:I:-—> [0, œ) và một đỉnh nguồn s Cần tính toán được đường đi ngắn nhất từ đỉnh nguồn s đến mỗi đỉnh của đồ thị
'Phuật toán Kruskal lả thuật toán xây dựng cây hao trim ngắn nhất bằng cách
chọn thêm dần các cung vào cây (khác với Prim là chọn dần các đỉnh để thêm
vào)
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 1a chon đưa din vào cây T các đỉnh kê “tốt nhất” trong
số các dính còn lại Thời gian thực hiện giải thuật Prim là O@Ÿ)
Thuật toán Floy: Tìm đường đi ngắn nhất giữa mọi cặp đỉnh Trong một số bài toán yêu sầu này là cần thiết, việc áp dụng Floy sẽ giúp giảm Lái nhiều tỉnh toán
18
Trang 21hơn lả sử dụng liên tục thuật toán Dijkstra Độ phức tạp của thuật toán này lả
O(n’)
1.23.2 Tìm kiếm có thông ñn
Tìm kiếm có thông tin 1a tim kiếm mà người ta xây dụng được một hàm
dánh giá củ vai trò hướng dẫn quá trình tìm kiểm Nếu xây dựng dược hàm đánh
giả tốt thi quá trình tìm kiếm sẽ linh hoạt vả hiệu quả Tìm kiểm có thông tin sẽ
hiệu quả hơn nhiều so với tim kiếm không có thông tin Đa số các thuật toán tìm
kiểm có thông tin đều là tìm kiểm trên cây
Trong nhiều van dé, ta có thể sử dụng kinh nghiệm, trí thức của chúng La
về vẫn để để đánh giá các trạng thái của vẫn đề Với mỗi trạng thái u, chúng ta
sẽ xác định một giá trị số híu), số nảy đánh giá “sự gần dich” của trạng thái u
Hàm híu) được gọi là ham danh giá Chủng ta sẽ sử dụng hảm đánh gia dé
hướng dẫn sự tìm kiếm Trong quả trình tìm kiểm, tai mỗi bước ta sẽ chon trang thái để phát triển là trạng thái só giá trị hàm đánh giá nhỏ nhất, trạng (hái này
được xem là trạng thái có nhiều hửa hẹn nhất hướng tới đích [1]
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 tim kiém kinh nghiệm (heuristie soarch) Các giai đoạn
cơ bản để giải quyết vấn để bằng tìm kiểm kinh nghiêm như sau:
s Tìm biểu diễn thích hợp mô tả các trạng thái và các toán tử của vấn để
© — Xây dựng hàm đánh giá
se _ Thiết kế chiến lược chọn trạng thái đễ phát triển ở mỗi bước
Hàm đánh giá
Trong tìm kiếm kinh nghiệm, hàm đánh giá đóng vai trò cực kỳ quan
trọng Chúng ta có xây dung được hảm đánh giá cho ta sự dánh giá đứng các trạng thái thì tìm kiếm mới hiệu quả Kếu hàm đánh giá không chính xác, nó cỏ
thể dẫn ta di chéch hướng và do đó lim kiếm kém hiệu quả
Hảm đánh giá được xây dựng tủy thuộc vào vấn đề Sau đây là một số ví dụ về
hàm đánh giả
Trong bi toán tìm kiểm đường đi trên bản đồ giao thông, la có thể lấy độ
19
Trang 22dai của đường chim bay từ một thành phố tới một thành phế đích làm giá trị của
ham danh gia
Bài toán 8 số Chúng ta có thể đưa ra hai cách xây dựng hàm đánh giá
1lảm h1: Với mỗi trạng thái u thì h1(u) là số quân không nằm đúng vị trí của nó trong trạng thải dich Chang hạn trạng thải dích ở bên phải hình 21, vả u là trạng thái ở bên trái hinh 2.1, thi h1(u) = 4, vì các quân không đúng vị trí là 3, 8, 6val
Hảm h2: h2(u) là tổng khoảng cách giữa vị trỉ của các quân trong trang thái u và
vị trí của nó trong trạng thái đích ở đây khoảng cách được hiểu là số íL nhất các dich chuyển theo hàng hoặc cột để đưa một quân tới vị trí của nó trong trạng,
Vi quan 3 cần ít nhất 2 dịch chuyển, quân 8 cần ít nhất 3 dịch chuyển, quân 6
cần ít nhất 1 dich chuyén va quan 1 cần ít nhất 3 địch chuyên
Hai chiến lược tim kiểm kinh nghiệm quan trọng nhất 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) Có thể xác định các chiến lược này như sau:
Tim kiếm tốt nhất đầu tiên — Tìm kiếm theo bê rộng + Ham danh gia
Tìm kiểm leo đôi = Tìm kiểm theo độ sâu + Hàm đảnh giá
Chúng ta sẽ lần lượt nghiên cứu các kỹ thuật tìm kiếm nảy trong các mục sau
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 - dầu tiên
(best-first-search) va tim kiếm leo đồi (hill-climbing search)
20
Trang 231.2.3.3 Tìm kiểm đôi kháng
Với mỗi trỏ chơi đối kháng ta sẽ xây dựng được một cây trò chơi bao pm
các nước đi có thể của đối thủ này và phản ứng tiếp theo của những người chơi
khác Dựa vào cây tìm kiếm này ta có thể định hình và tính toán ra được một sự
lựa chọn tối ưu cho quyết định chơi của minh Hải toán này có một đặc diễm dễ
nhận ra là: cây trò chơi sẽ phát triển quá nhanh và theo hàm số mũ Điều này khiến cho chúng ta không thể xây dựng được một cây trỏ chơi đầy đủ Các thuật toán tìm kiếm Minmax và cắt tỉa alpha-beta được đưa ra để giải quyết bải toán
này với một độ sâu giới Tiếp theo chúng ta sẽ xét khái niệm thế nào là một trỏ
chơi đối kháng,
Trò chơi đôi khá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
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 ap dụng cho dang bài toán này là thuật toán tìm kiếm
Minimax ta sé trinh bay chỉ tiết trong chương 2
Cây trò chơi
Xét một trỏ chơi trong đẻ hai người thay phiên nhau di nước của mình
như cờ vua, cờ tướng, caro Trò chơi có một trạng thái bắt đầu và mỗi nước đi
sẽ biển đối trạng thái hiện hành thành một trạng thái mới Trẻ chơi sẽ kết thúc theo một quy định nào đó, theo đó thì cuộc chơi sé din đến một trạng thai phản ánh có một người thắng cuộc hoặc một trạng thái mà cả hai đấu thủ không thể
phát triển được nước đi của mình, ta gọi nó là trạng thái hòa cờ Ta tìm cách
phân tích xem từ một trang thái nào đó sẽ dẫn đến đấu thủ nào sẽ thắng với điều
kiện cả hai đấu thủ đều có trình độ như nhau
21
Trang 24Một trỏ chơi như vậy có thể được biểu diễn bởi một cây, gọi là cây trỏ chơi Mỗi
một nú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 trang thái kết thúc của trò
chơi (trang 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
Xét trò chơi carô có 9 ô Hai người thay phiên nhau đi X hoặc O Người
nao di duoc 3 6 thing hàng (ngang, dọc, chéo) thì thắng cuộc Nếu đã hết 6 di
mả chưa phân thắng bai thi hai đấu thủ hòa nhau Một phần của trò choi nay
được biểu diễn bởi cây sau:
Gái Xx|o|X fois X|X|X
xixIo X/O} |olx|o
Lolxio lo[xfo} |ojx]öi
Hình 1.5: Ví dụ biểu diễn một cây trò chơi caro 9 ô
'Tóm lại: Cây trỏ chơi dùng các nút để thể hiện trang 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
Trang 25mộ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 dấu thủ
Goi p là số mức của cây thì độ sâu của cây là đ= p-¡ Mỗi lựa chọn hay bước
chuyên là một nước đi
'Vết cạn
VỏI gạn là duyệt qua tẤt cã gác nút của cây trò choi dé tim ra trạng thải tốt
nhất Nhưng thật đáng tiếc lả điều này không thực hiện được trong thực tế vì cây
trò chơi thông thường sẽ rất lớn Không thé xây đựng được cây trò chơi đầy đủ
và duyệt qua được tit ca các nút của cây đó Một ví dụ đơn giản cho thấy sự
từng nễ tế hợp của cây trỏ chơi
Vi dy, 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) Khư vậy, sau một tầng
ta sẽ có 1ó nút con, mỗi mút này lại có thể có 16 con nữa Tổng số nút con ở độ
sâu thtr hai 14 16x16 = 6” Cứ như vậy ở độ sâu đ sẽ có ð” nút, Nếu giả sử đệ sâu
của cây là 100 (hệ số nhánh 16 và dé sâu 100 đều là những con số còn nhỏ hơn con số thường pặp trong trỏ chơi cờ), thì số nhánh phải duyệt lên đến 16” hay
xp xi 10'* - mét con số quá lớn
Su bing né to hợp dẫn dến việc không thể có một phương án tim kiếm
hoan hão cho các trò chơi tìm kiếm đối kháng, ma ta chỉ có thể tìm kiểm hoàn
hảo đến một độ sâu nhất định mả thôi
ạ VỐN b*#heb2
& Ae»
Hình 1.6: Cây tìm kiểm và sự bủng nễ tổ hợp]1 |
23
Trang 26Chiến lược tìm kiếm trong trù chơi
Tử thuyết trò chơi nghiên cứu cách lựa chọn hành vi tối ưu khi chỉ 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
‘Théng thường người chơi hoặc máy tính cũng chỉ dưa ra lựa chon cho
minh nước đi hiện tại bằng cách tính trước đối thủ sẽ phản ứng như thế nảo
trong một số giới hạn cáo nước đi, thông thường là 8-10 nước với cáo đại kiện
tướng và 2-4 nước với người thường
1.2.4 Trà chơi đối kháng
Các trò chơi đối kháng giữa hai người đã được hình thành từ lâu Và
những người chơi luôn cổ gắng tìm mọi cách để minh giảnh được phần thắng
Liệu rằng một trò chơi có thể đoán trước là thắng, thua hay hoà không? Ý tôi muốn nói rằng, nếu một trò chơi cho trước vị trí ban đầu thì kết quả tốt nhất mà
người chơi dầu tiên dạt dược đã được biết từ trước(ỡ dây tôi giã thiết cả hai
người chơi đều chơi tỗi wu), Van dé 1a cdc trò chơi thường quá phức tạp lên
không có một ai có thể đảm bảo ring mọi nước đi của mình là tổi ưu Do vậy
cho dén nay, chỉ một số lượng nhỏ bài toán đó đã được giái quyết Và trong bai viết nảy tôi xin giới thiệu một cách khá đầy đủ về trỏ chới đối kháng hai người Bài toán đó được phát biểu tổng quất dưới đạng đỗ thị như sau:
Cho đồ thị có bướng G—(E,E) (Đồ thị G củ tập dinh V, tép cạnh là E) Với mỗi
định v  l, ta định nghĩa H(v] — {u | (uu) TH}
Một trò chơi hai người được định nghĩa là một đồ thị có hướng G = (V, E) trong
đó mỗi trạng thái chơi tương ứng với một dinh cia dé thi, hàm Fiv) là qui tắc
chơi tức là Efv) chứa các đính hay trạng thái chơi mà từ v có thể đi đến Hai
người luân phiên nhau đï, ở thế chơi w người chơi chỉ có thể đ sao cho nước v
nhận được thoả mãn v Í H(u) Trò chơi kết thác khi đến lượt đấu mà không thể
&ì nếp được nữa (Thông thuòng lì người không thể & tiếp là người tua
eudel{ 711.9}
24
Trang 27CIIVONG 2: TIUAT TOAN TIM KIEM MINIMAX
2.1 Thuật toan Minimax
2.1.1 Giới thiệu
Trong cáo lrỏ chơi nói chung và trà chơi đối kháng nói riêng, việc lựa
chọn một nước đi tốt cho mình là một điều tối quan trọng rên thực tế khi hai
hay nhiều người chơi tham gia vào các trò chơi đổi kháng, họ thường đưa ra
quyết dịnh chơi cho mình bằng việc lựa chọn thco hình thức định tính và những
kinh nghiệm đã có được Tuy nhiền các nhà toán học và khoa học máy tính
muén định lượng một cách chính xác độ tốt của mỗi nước đi để có thể sài đặt
các trò chơi trên máy Điều đỏ hướng đến sự ra dời của thuật toán Minimax
Minimax là một phương pháp trong lý thuyết quyết định, ý tưởng của
giải thuật này cho trỏ chơi đối kháng là: người chơi Max sẽ luôn tìm cách tối đa
hoá lợi nhuận thu được của mình trong một nước di, ngược lại với người chơi
Min luôn tìm một nước ởi để han chế rối đa lợi nhuận của người chơi Max
2.1.2 Mật số khái niệm trong trò chơi dối kháng
Xét trỏ chơi đối kháng hai người, với mỗi trò chơi sẽ có luật chơi riêng và đặc thủ riêng của nó Tuy thế có một điểm chung trong gác trẻ chơi đối kháng
hai người là hai người sẽ thay phiên nhau thực hiện những nước đi hợp lê cho
đến một trạng thái kết thúc, trạng thái được quy định theo luật của trò chơi Khi
đó trỏ chơi sẽ kết thúc vả gó một người thắng cuộc hoặc có thể trạng thái hoả
xuất hiện Việc thực hiện trò chơi như thế nao sé đánh giá trinh đô của người chơi ở trò chơi đó mức cao hay thấp Ví dụ về trò chơi cờ tưởng: Luật chơi sẽ
giống nhau cho cả hai người, cách di chuyển các con Tướng, Sĩ, Tượng, Xe là
hoản toàn giống nhau đối với cả hai người chơi Cả hai người chơi đểu biết rõ
thông tin về tình trạng hiện tại của bàn cờ
Chúng ta có thể biểu diễn trỏ chơi như một cây mà ở đó mỗi nút là một
trạng thái (rạng thái được mô hình hoá tuỳ thuộc trẻ chơi, ví dụ cờ tướng có thể chọn sự sắp xẾp các quân cờ trên ban cờ là một trạng thái) Ví dụ về cách xây
25
Trang 28đựng một cây trò chơi cho cở tướng:
©_ Nút gốc là trạng thái bàn cờ khi cuéc choi chuẩn bị bắt đầu
© Các nhánh là một cách biến đổi từ trạng thái này sang trạng thái
khác phục thuộc vào sự lựa chọn nước đi cảu người chơi
©- Cáo 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 đứng (chẳng hạn, quân Trắng
thắng hoặc quân Đen thắng hoặc hai bên hòa nhau)
2.1.3 Ý tưởng thuật toán
Hai người chơi tạm gọi là MAX và MIIN Người chơi MAX luôn tìm cách
đi để thu về lợi nhuận lớn nhất cho mình càn người chơi MỊN thì tìm cách đi để tối thiểu hoá lợi nhuận thu dược của người chơi MA X
“Trẻ chơi só thể biểu điễn dưới dạng cây
© Nút gốc là trạng thái ban đầu của trò chơi
« Nút con của một nút bất kỳ là trạng thái có thể biến đổi được từ nút
cha mà người chơi MIN hoặc MAX thực hiện
«©_ Một cây độ sâu d thi người chơi MAX được quyền biển đổi các nút
ở dộ sâu chẵn: 0.2.4.6 Người chơi MIN được quyền biển đổi các
nút ở độ sâu lễ 1,3,5,7
Trong mỗi cây trò chơi các trạng thái ở nút là luôn là trạng thái kết thúc của cuộc chơi, vì vậy trang các cây trò chơi trạng thái nút lá luôn là một trong ba
trưởng hợp sau: “thing” “hoa” hoặc “bại” Nếu chúng ta có thể xây dựng được
một hàm đánh giá cho trạng thái nút lá và đưa ra một giá trị định lượng cho
trạng thải đó, việc thực hiện một quy tắc tính toán và định trị cho các nút thuộc lớp trên của các trạng thái lá là hoàn toàn khả thi Ý tưởng của thuật toản
Minimax nhu sau:
® Điều kiện cần
o_ Xây dựng được cây trò chơi
26
Trang 29o_ Xây dựng được hàm định lượng cho trạng thai nút lá
* Chién luge Minimax:
o Ngum cha thudc lép MAX sé chon nhanh di sao cho khả nắng
dành chiến thắng của minh la cao nhất Vì vậy nhánh được chon sé
là nhánh đẫn đến nút con có giá trị định lượng lớn nhất Gan cho
giá trị nút MAX là giá trị lớn nhất trong các giả trị nút con của nó
có được
© Người chơi thuộc lớp MIN sẽ chợn nhánh đi tốt nhất để hạn chế chiến thắng của đối phương Vì vậy nhánh được chọn sẽ là nhánh dẫn đến nút con cỏ giá trị định lượng thấp nhất (vi định lượng của mỗi nút được tính cho người choi MAX) Gan che giá trị nút MIN
là giá trị nhỏ nhất trơng các giá trị nút con của nó có được
©ö- Ở các trạng thái lá ta đã định lượng được giá trị của nó, bởi vậy quá
trình tính ngược từ lá về gốc theo hai quy tắc trên là hoàn Loàn thực
hiện được
Sau khi đã định lượng được cho toàn bộ các nút của cây trỏ chơi, thì người chơi MAX sẽ chọn nước đi cho mình theo nhánh chứa nút con mả nó vừa nhận giá trị của nút con đó Cũng như vậy, người chơi MIIN sẽ chọn nước đi theo nhánh
chứa nút con có giá trị nhỏ nhất
Vi du vé chiến lược Minimax: Xét cây tìm kiếm trên hình 2.1, dễ nhận thấy
điều kiện cần cho thuật toán Minimax đã được thoả mãn
9 Nút gốc là nút A, cây trò chơi được phát triển từ nút A như hình vẽ
a Cac trong sé cia nút lá đã được gán giá trị
27
Trang 30
Hình 2.2: Cây tìm kiểm đã được tính trọng số tắt cả các nút
Viée gan trong số cho các nút A,H,C,I3,H,F,G,H,I,1 sẽ được tính ngược từ trạng,
thái lá và có kết quả như (hình 2.2) Cụ thể quả trình đó như sau:
s_ Hước 1: Tỉnh giá trị của các nút I,T,G,ILL,I thuộc lớp MAX nén gia tri sé
dược gản cho giả trị Max của những nút con Cụ thể Val(B) = Max(2,5) =
5, tương tự với các nút F,G,H,LJ
s_ Hước 2: Tính giá trị của các nút B,C,D thuộc lớp IMIN, giá trị sẽ được gán
là giá trị Min của những nút con Cụ thể Val() — Min(Val(H), Val(F)) —
MinQ, 9) = 3, trơng tự với các đỉnh C và D
a- Dước 3: Tính giá trị nút gốc Á thuộc lớp MAX nên Val(A) — Max(Val(,
Val(C), Val(D)) — Max(3, 0, 2)- 3
Vậy người chơi MAX sẽ chọn nhanh di theo nat A -> B vi gid tri oda mit A tim
được theo nhánh đi này
28
Trang 312.1.4 Thuật toán Mlinmax với độ sâu định trước
Với các trò phơi phức lạp ta không thể duyệt Loàn bộ không gian để tìm
được nước di tốt nhất Tủo này ta chỉ có thể tìm kiểm trên cây trò chơi với một
chiều cao hạn chế d nào đó Chiến lược này được gọi là tính trước nước đi (1
move lookahead) Vi gia trị các nút trong đồ thị con nảy không phải là trạng thái kết thúc của trò chơi nên chúng không phản ánh giá trị thẳng cuộc hay thua
cuộc Chúng chỉ có thể được gán một giá trị phủ hợp với một hàm đánh giá
heuristic nào đó Giá trị được truyền ngược về nút gốc không cưng cấp thông tin thắng cuộc hay thua cuộc mả chỉ là giá trị heuristic của trạng thải tốt nhất có thể
tiếp cận sau n nước đi kế từ nút xuất phát
Ham danh giá sẽ dánh giá mức dộ tốt của một trạng thái theo cách nhìn
nhận của người chơi MAX Val(u) cảng lớn thì người chơi MAX cảng có lợi riểu chiến lược u được chọn, ngược lại Val(u) cảng nhỏ thì người chơi MAX sẽ càng bất lợi nếu chọn chiến lược u 'rường hợp Val(a) — 0 thì chiến lược u sẽ không làm lợi cho bất kỳ người nào trong cuộc chơi
Việc xây dựng hảm đánh giá là cực kỳ quan trọng trong mỗi cuộc chơi
Hảm đánh giá tốt sẽ làm cho chiển lược chơi theo giải thuật Minimax tốt, ngược lại nếu hàm đánh giá không tốt sẽ làm cho người chơi có thể lựa chọn những
nước di sai lầm Xây dựng được hàm đánh giả tết đỏi hỏi người chơi phai am
hiểu trò chơi và có những kính nghiệm nhất định trong trò chơi đó
Vi du vé hàm đánh giá: Hàm đánh giả cho cử vua Mỗi loại quân được gán mộL giả trị số phủ hợp vớ ¡ “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 lrắng (Đen) được gán giả tri 3 (-3), xe
Trắng (Den) được gán giả trị 5 (-5) vả hậu Trắng (Den) được gần giá trị 9 (-9) TIảm đánh giả của một trạng thái đuợ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 đó Ilàm đánh giá nảy được gọi là hàm tuyển tính
có trọng số, vì có thể biểu điễn dưới dạng: s1wl Is2w2 Isnwn
Trong đó, wi là gid tri cua quan c@ loai i, si 14 s6 quan loai dé
29