MỞ ĐẦULý thuyết trò chơi game theory thường được coi là một nhánh của toán học ứngdụng và kinh tế học ứng dụng nhằm nghiên cứu về các tình huống trong đó các bêntham gia trò chơi áp dụng
Trang 1KHOA CÔNG NGHỆ THÔNG TIN 1
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
Đề tài : “ Giới thiệu về lý thuyết trò chơi, thuật toán min max và ứng dụng cho trò chơi cờ vua “
Giảng viên hướng dẫn : PGS TS ĐỖ TRUNG TUẤN – DH KHTN Sinh viên thực hiện: PHẠM NGỌC ANH
Lớp : D10CNPM3 Khoá: 2010
Hệ : ĐẠI HỌC CHÍNH QUY
Hà Nội, tháng 11 / 2014
Trang 2LỜI CẢM ƠN
Để hoàn thành đồ án tốt nghiệp này , lời đầu tiên em xin chân thành cảm ơn cácthầy cô Trường Học viện Công Nghệ Bưu Chính Viễn Thông,đặc biệt là các thầy côtrong khoa công nghệ thông tin đã dạy dỗ, trang bị cho em những kiến thức bổ íchtrong suốt 4,5 năm học vừa qua
Em xin bày tỏ lòng biết ơn sâu sắc nhất tới thầy Đỗ Trung Tuấn, giảng viêntrường Đại Học Khoa Học Tự Nhiên đã tạo điều kiện tốt nhất và đã hướng dẫn emtrong quá trình làm đồ án tốt nghiệp
Nhân dịp này , em xin gửi lời cảm ơn chân thành tới gia đình, bạn bè, nhữngngười thân đã cổ vũ, động viên tiếp thêm cho em nghị lực để có thể hoàn thành đồ ánmột cách tốt nhất
Em xin chân thành cảm ơn !
Hà nội, ngày tháng năm 2014
Sinh viênPhạm Ngọc Anh
Trang 3NHẬN XÉT , ĐÁNH GIÁ , CHO ĐIỂM
(Của người hướng dẫn)
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
Điểm : ……….……(bằng chữ :…….………) Đồng ý/ Không đồng ý cho sinh viên bảo vệ trước hội đồng chấm đồ án tốt nghiệp ?
, ngày tháng năm 20
CÁN BỘ - GIẢNG VIÊN HƯỚNG DẪN
Trang 4NHẬN XÉT , ĐÁNH GIÁ , CHO ĐIỂM
(Của người phản biện)
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
Điểm : ………(bằng chữ :.………….………) Đồng ý/ Không đồng ý cho sinh viên bảo vệ trước hội đồng chấm đồ án tốt nghiệp ?
, ngày tháng năm 20
CÁN BỘ - GIẢNG VIÊN PHẢN BIỆN
Trang 5MỤC LỤC
MỞ ĐẦU 1
CHƯƠNG 1 : GIỚI THIỆU VỀ LÝ THUYẾT TRÒ CHƠI 2
1.1 Giới thiệu về lý thuyết trò chơi 2
1.2 Biểu diễn trò chơi 2
1.2.1 Dạng chuẩn tắc 3
1.2.2 Dạng mở rộng 3
1.3 Các loại trò chơi trong lý thuyết trò chơi 4
1.3.1 Trò chơi đối xứng và bất đối xứng 4
1.3.2 Trò chơi có tổng bằng không và có tổng khác không 5
1.3.3 Trò chơi đồng thời và trò chơi tuần tự 5
1.3.4 Trò chơi thông tin hoàn hảo và không hoàn hảo 6
1.3.5 Trò chơi dài vô tận 6
1.4 Ứng dụng của lý thuyết trò chơi 6
1.4.1 Kinh tế và kinh doanh 6
1.4.2 Sinh học 7
1.4.3 Khoa học máy tính và logic 8
1.4.4 Chính trị học 8
1.4.5 Triết học 8
1.5 Kết luận 9
CHƯƠNG 2 : TỔNG QUAN VỀ CÁC VẤN ĐỀ TÌM KIẾM 10
2.1 Bài toán tìm kiếm 10
2.2 Bài toán tìm kiếm trong không gian trạng thái 10
2.2.1 Phát biểu bài toán 10
2.2.2 Một số ví dụ : 11
2.2.3 Các tiêu chuẩn đánh giá thuật toán tìm kiếm 12
2.2.4 Thuật toán tìm kiếm tổng quát và cây tìm kiếm 12
2.3 Tìm kiếm không có thông tin (tìm kiếm mù) 14
2.3.1 Định nghĩa 14
2.3.2 Tìm kiếm theo chiều rộng (Breadth-first search – BFS) 14
Trang 62.3.3 Tìm kiếm theo chiều sâu (Depth-First-Search: DFS) 15
2.3.4 Tìm kiếm sâu dần (Iterative Depending Search - IDS) 16
2.4 Tìm kiếm có thông tin 18
2.4.1 Tìm kiếm tham lam (Greedy Search) 19
2.4.2 Thuật toán A* 19
2.5 Tìm kiếm cục bộ 22
2.6 Kết luận 23
CHƯƠNG 3 : THUẬT TOÁN TÌM KIẾM MINIMAX (MIN MAX) 25
3.1 Giới thiệu về thuật toán Minimax 25
3.2 Định lý min max 25
3.3 Giải thuật min max 26
3.3.1 Ý tưởng 26
3.3.2 Áp dụng thủ tục minimax đến độ sâu lớp cố định 27
3.3.3 Thủ tục minimax 28
3.3.4 Đánh giá 32
3.4 Thuật toán minimax cải tiến : alpha – beta 33
3.4.1 Ý tưởng 34
3.4.2 Giải thuật 36
3.4.3 Đánh giá 38
3.5 So sánh giải thuật alpha-beta và giải thuật minimax 40
3.6 Kết luận 41
CHƯƠNG 4 : ỨNG DỤNG VÀO TRÒ CHƠI CỜ VUA 42
4.1 Giới thiệu trò chơi cờ vua 42
4.2 Cơ sở lý thuyết 42
4.3 Cài đặt chương trình 42
4.3.1 Cài đặt cho AI 43
Phương thức Minimax 43
Phương thức Alphabeta 44
4.4 Giao diện trò chơi 45
KẾT LUẬN 47
TÀI LIỆU THAM KHẢO 51
Trang 7DANH MỤC CÁC BẢNG , SƠ ĐỒ, HÌ
Hình 1 1 Ví dụ về trò chơi đối kháng 3
Hình 1 2 Ví dụ về một trò chơi dạng mở rộng 4
Hình 1 3 Một trò chơi bất đối xứng 4
Hình 1 4 Một trò chơi có tổng bằng 0 5Y Hình 2 1 Trò đó 8 ô 11
Hình 2 2Thuật toán tìm kiếm tổng quát 13
Hình 2 3 cây tìm kiếm cho bài 8 ô 13
Hình 2 4 Thuật toán tìm kiếm theo chiều rộng 14
Hình 2 5 Thuật toán tìm kiếm theo chiều sâu 15
Hình 2 6 Tìm kiếm sâu dần 17
Hình 2 7 cây tìm kiếm theo thuật toán sâu dần 17
Hình 2 8 Thuật toán A* 20
Hình 2 9 Bài toán tìm kiếm cục bộ với không gian trạng thái và hàm mục tiêu 2 Hình 3 1 giải thuật minimax với không gian trạng thái giả 28
Hình 3 2 minh họa chiến lược chơi của người và máy 29
Hình 3 3 thuật toán alpha –beta cắt tỉa nhánh 34
Hình 3 4 minh họa giải thuật anpha-beta 37
Hình 3 5 độ “cắt bỏ” của alpha-beta 38
Hình 3 6 So sánh giải thuật minimax và alpha-beta 40
Hình 3 7 Khảo sát sự bùng nổ tổ hợp, Thuật toán Alpha-beta chỉ làm giảm sự bùng nổ tổ hợp chứ không chống được nó Hệ số phân nhánh trong các đồ thị trên là 40 4 Hình 4 1 Giao diện trò chơi 45
Hình 4 2 Giao diện khi máy thắng 46
Trang 8MỞ ĐẦU
Lý thuyết trò chơi (game theory) thường được coi là một nhánh của toán học ứngdụng và kinh tế học ứng dụng nhằm nghiên cứu về các tình huống trong đó các bêntham gia trò chơi áp dụng những chiến lược ra quyết định nhằm tối ưu hóa kết quảmình nhận được.Ban đầu Lý thuyết trò chơi được phát triển như một công cụ đểnghiên cứu hành vi kinh tế học, ngày nay Lý thuyết này được sử dụng trong nhiềungành khoa học như Sinh học, Triết học, Chính trị học… Đặc biệt Lý thuyết trò chơi
đã thu hút được 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
Trong báo cáo này,em xin được trình bày đề tài : “Giới thiệu về lý thuyết trò
chơi, thuật toán min max và ứng dụng cho trò chơi cờ vua “
Nội dung đồ án gồm 4 chương :
Chương 1 : Giới thiệu về lý thuyết trò chơi
Chương 2 : Tổng quan về các vấn đề tìm kiếm
Chương 3 : Giới thiệu thuật toán Minimax
Chương 4 : Ứng dụng vào trò chơi cờ vua
Trang 9CHƯƠNG 1 : GIỚI THIỆU VỀ LÝ THUYẾT TRÒ CHƠI
Trong chương 1 này , đồ án sẽ giới thiệu về lý thuyết trò chơi, các loại trò chơitrong lý thuyết trò chơi cũng như ứng dụng trọng các ngành khoa học trong thực tế
1.1 Giới thiệu về lý thuyết trò chơi
Lý thuyết trò chơi là một nhánh của Toán học ứng dụng Ngành này sử dụng các
mô hình để nghiên cứu các tình huống chiến thuật , trong đó các đối thủ lựa chọn cáchành động khác nhau để cố gắng làm tối đa kết quả thu được cho mình
Ban đầu, lý thuyết trò chơi được phát triển như là một công cũ để nghiên cứuhành vi kinh tế học Ngày nay , nó được sử dụng trong nhiều ngành khoa học, từ Sinhhọc tới Triết học Lý thuyết trò chơi đã có sự phát triển lớn từ khi John von Neumann
là người đầu tiên hình thức hóa nó trong thời kỳ trước và trong Chiến tranh Lạnh, chủyếu do áp dụng nó trong chiến lược quân sự, nổi tiếng nhất là khải niệm “đảm bảo pháhủy lẫn nhau” (mutual assured destruction) Bắt đầu từ những năm 1970, lý thuyết tròchơi bắt đầu được áp dụng cho nghiên cứu về hành vi động vật, trong đó có sự pháttriển của các loài qua chọn lọc tự nhiên Do các trò chơi hay như Song đề tùnhân(prisoner’s dilemma), trong đó lợi ích cá nhân làm hại cho tất cả mọi người, lýthuyết trò chơi đã bắt đầu được dùng trong Chính trị học, Đạo đức học và Triết học.Cuối cùng, lý thuyết trò chơi đã thu hút được 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
Bên cạnh các mối quan tâm có tính chất hàn lâm, lý thuyết trò chơi đã nhận được
sự chú ý trong văn hóa đại chúng John Nash, một nhà lý thuyết trò chơi, người đãnhận được giải thưởng Nobel , đã là chủ đề trong cuốn hồi ký năm 1998 của tác giảSylvia Nasar và trong bộ phim Một tâm hồn đẹp (A Beautyful Mind) năm 2001 Một
số trò chơi truyền hình đã sử dụng các tình huốn của lý thuyết trò chơi , trong đó cóFriend of Foe ? và Survivor
Tuy tương tự với lý thuyết quyết định, nhưng lý thuyết trò chơi nghiên cứu cácquyết định đưa ra trong một môi trường trong đó các đối thủ tương tác với nhau Nóicách khác, Lý thuyết trò chơi nghiên cứu cách lựa chọn hành vi tối ưu khi chi 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á nhânkhác
1.2 Biểu diễn trò chơi
Các trò chơi được nghiên cứu trong lý thuyết trò chơi là các đối tượng toán họcđược định nghĩa rõ ràng Một trò chơi bao gồm một tập các người chơi / đấu thủ, một
Trang 10tập các nước đi (hoặc chiến lược) mà người chơi có thể chọn, và một đặc tả về cơ chếthưởng phạt cho mỗi tổ hợp của các chiến lược Có hai dạng biểu diễn trò chơi thườngthấy đó là dạng chuẩn tắc và dạng mở rộng
1.2.1 Dạng chuẩn tắc
Trò chơi chuẩn tắc (hoặc dạng chiến lược (strategic form)) là một ma trận chobiết các thông tin về các đấu thủ, chiến lược và cơ chế thưởng phạt Như ví dụ dướiđây , có hai đấu thủ , một người chọn hàng , người kia chọn cột Mỗi đấu thủ có haichiến lược, mỗi chiến lược được biểu diễn bởi một ô được xác định bởi số hiệu hàng
và số hiệu cột của nó Mức thưởng phạt được ghi trong ô đó Giá trị thứ nhất là mứcthưởng phạt cho đấu thủ chơi theo hàng, giá trị thứ hai là mức thưởng phạt cho đấu thủchơi theo cột Giả sử đấu thủ 1 chơi hàng trên và đấu thủ 2 chơi cột trái Khi đó, đấuthủ 1 nhận 4 điểm và đấu thủ 2 nhận 3 điểm
Hình 1 1 Ví dụ về trò chơi đối kháng
Khi một trò chơi được biểu diễn bằng dạng chuẩn tắc, người ta coi rằng mỗi đấuthủ hành động một cách đồng thời, hoặc ít nhất không biết về hành động của ngườikia Nếu các đấu thủ có thông tin về lựa chọn của các đấu thủ khác, trò chơi thườngđược biểu diễn bằng dạng mở rộng
1.2.2 Dạng mở rộng
Các trò chơi dạng mở rộng cố gắng mô tả các trò chơi có thứ tự quan trọng Ởđây, các trò chơi được biểu diễn bằng cây (như trong hình bên trái) Mỗi đỉnh (hoặcnút) biểu diễn một điểm mà người chơi có thể lựa chọn Người chơi được chỉ rõ bằngmột số ghi cạnh đỉnh Các đoạn thẳng đi ra từ đỉnh đó biểu diễn các hành động có thểcho người chơi đó Mức thưởng phạt được ghi rõ tại đáy cây
Trang 11Hình 1 2 Ví dụ về một trò chơi dạng mở rộng
Trong trò chơi trong hình, có hai người chơi Đấu thủ 1 đi trước vàchọn F hoặc U Đấu thủ 2 nhìn thấy nước đi của Đấu thủ 1 và chọn Ahoặc R Giả
sử Đấu thủ 1 chọn U và sau đó Đấu thủ 2 chọn A Khi đó, Đấu thủ 1 được 8 điểm
và Đấu thủ 2 được 2 điểm
Các trò chơi mở rộng còn có thể mô tả các trò chơi đi-đồng-thời Hoặc có mộtđường chấm chấm hoặc một đường tròn vẽ quanh hai đỉnh khác nhau để biểu diễnrằng chúng đều thuộc cùng một tập hợp thông tin (nghĩa là, người chơi không biết họđang ở điểm nào)
1.3 Các loại trò chơi trong lý thuyết trò chơi
1.3.1 Trò chơi đối xứng và bất đối xứng
Trò chơi đối xứng là một trò chơi mà phần lợi cho việc chơi một chiến thuật nào
đó chỉ phụ thuộc vào chiến thuật được sử dụng, chứ không phụ thuộc vào người nàođang chơi Nếu như tính danh của những người chơi có thể thay đổi mà không làmthay đổi phần lợi thế đối với chiến thuật chơi, thì một trò chơi là đối xứng Nhiều tròchơi 2x2 thường được nghiên cứu là đối xứng Những biểu diễn chuẩn của trò chơicon gà, song đề tù nhân, đi săn nai là những trò chơi đối xứng
Hình 1 3 Một trò chơi bất đối xứng
Trang 12Đa số những trò chơi bất đối xứng được nghiên cứu là những trò chơi mà các tậphợp chiến thuật khác nhau được sử dụng bởi hai người chơi Chẳng hạn, trò chơi tốihậu thư và tương tự như vậy trò nhà độc tài có chiến thuật khác nhau cho mỗi ngườichơi Tuy vậy, có thể xảy ra trường hợp một trò chơi có những chiến thuật giống nhaucho cả hai người chơi, nhưng vẫn bất đối xứng Chẳng hạn, trò chơi được minh họabên trên là bất đối xứng mặc dù cho có cùng tập các chiến thuật cho cả 2 người chơi.
1.3.2 Trò chơi có tổng bằng không và có tổng khác không
Hình 1 4 Một trò chơi có tổng bằng 0
Trong trò chơi tổng bằng không, với mọi tổ hợp của các chiến lược chơi, tổngđiểm của tất cả các người chơi trong ván chơi luôn bằng 0 Nói một cách không chínhthức, đấu thủ này hưởng lợi trên thiệt hại của các đấu thủ khác Một ví dụ là trò Poker,trong đó người này thắng số điểm bằng đúng số điểm mà người kia thua Các loại cờ
cổ điển như cờ vây, cờ vua và cờ tướng cũng là các trò chơi tổng bằng không Nhiềutrò chơi mà các nhà lý thuyết trò chơi nghiên cứu, trong đó có song đề tù nhân nổitiếng, là các trò chơi tổng khác không, do có một số kết cục có tổng kết quả lớn hơnhoặc nhỏ hơn không Nói một cách không chính thức, trong các trò chơi tổng kháckhông, một thu hoạch của đấu thủ này không nhất thiết tương ứng với một thiệt hạicủa một đấu thủ khác Có thể biến đổi một trò chơi bất kỳ thành một trò chơi tổngbằng không bằng cách bổ sung một đấu thủ "bù nhìn" sao cho các thiệt hại của đấu thủnày bù lại tổng thu hoạch của các đấu thủ khác
1.3.3 Trò chơi đồng thời và trò chơi tuần tự
Trong các trò chơi đồng thời (simultaneous game), cả hai đấu thủ thực hiện cácnước đi một cách đồng thời, hoặc nếu không thì đấu thủ này sẽ không biết về các hànhđộng trước đó của các đối thủ khác (và như vậy cũng tạo "hiệu ứng" đồng thời) Trongcác trò chơi tuần tự (sequential game), người đi sau có biết một số (nhưng không nhấtthiết toàn bộ) thông tin về các nước đi trước
Biểu diễn dạng chuẩn tắc được dùng để biểu diễn các trò chơi đồng thời,còn Biểu diễn dạng mở rộng được dùng cho các trò chơi tuần tự
Trang 131.3.4 Trò chơi thông tin hoàn hảo và không hoàn hảo
Các trò chơi thông tin hoàn hảo (games of perfect information) lập thành một tậpcon quan trọng của các trò chơi tuần tự Một trò chơi được gọi là có thông tin hoàn hảonếu mọi đấu thủ biết tất cả các nước đi mà tất cả các đấu thủ khác đã thực hiện Do vậychỉ có các trò chơi tuần tự mới có thể là các trò chơi thông tin hoàn hảo Hầu hết cáctrò chơi được nghiên cứu trong lý thuyết trò chơi là các trò chơi thông tin không hoànhảo, tuy một số trò chơi hay như cờ vây, cờ vua lại là trò chơi thông tin hoàn hảo.Tính chất thông tin hoàn hảo thường bị nhầm lẫn với khái niệm thông tin đầy đủ.Tính chất thông tin đầy đủ đòi hỏi rằng mỗi người chơi biết về các chiến lược và thànhquả thu được của các người chơi khác, nhưng không nhất thiết biết về các hành độngcủa họ
1.3.5 Trò chơi dài vô tận
Bởi các lý do hiển nhiên, các trò chơi được nghiên cứu bởi các kinh tế gia vànhững người chơi trong thế giới thực nhìn chung là kết thúc trò chơi trong hữu hạn cácbước đi Các nhà toán học lý thuyết không bị cản trở bởi điều đó, và lý thuyết gia vềtập hợp đặc biệt nghiên cứu về các trò chơi kết thúc sau vô hạn các bước đi, bới ngườithắng (hay là phần lợi) là không biết được cho đến sau khi các bước đi đó đã hoànthành
Sự chú ý thường không phải là quá nhiều về cách nào tốt nhất để chơi trò chơi,
mà đơn giản là chỉ phụ thuộc vào người chơi hay người kia có hay không một chiếnthuật chiến thắng (Có thể chứng minh rằng, sử dụng tiên đề chọn lựa,là có những tròchơi với—ngay cả là đầy đủ thông tin hoàn toàn, và chỉ có kết quả là "thắng" hay
"thua"— và khôngngười chơi nào có chiến thuật để chiến thắng.) Sự tồn tại của nhữngchiến thuật như vậy, cho những trò chơi được thiết kế một cách thông minh, có nhữngkết quả quan trọng trong lý thuyết miêu tả tập hợp
1.4 Ứng dụng của lý thuyết trò chơi
1.4.1 Kinh tế và kinh doanh
Các nhà kinh tế học đã sử dụng lý thuyết trò chơi để phân tích một diện rộng cáchiện tượng kinh tế, trong đó có đấu giá, mặc cả, duopoly và oligopoly, các tổchức mạng lưới xã hội và các hệ thống bầu cử Nghiên cứu này thường tập trung vàomột tập cụ thể các chiến lược được biết với tên các trạng thái cân bằng trong trò chơi.Nổi tiếng nhất là cân bằng Nash của nhà toán học John Nash, người đã được giảithưởng Nobel cho công trình nghiên cứu của ông về lý thuyết trò chơi
Công dụng đầu tiên là để cung cấp thông tin cho chúng ta về việc là toàn bộ dân
số sẽ thực sự hành xử như thế nào Một số học giả tin rằng bằng cách tìm ra những
Trang 14điểm cân bằng của những trò chơi họ có thể dự đoán được dân số sẽ hành xử như thếnào khi đối phó với những tình huống giống như trò chơi đang được nghiên cứu Quanđiểm đặc biệt này về lý thuyết trò chơi đã bị chỉ trích gần đây Thứ nhất, nó bị chỉ tríchbởi vì những giả sử được ra bởi các lý thuyết gia trò chơi thường bị vi phạm Một số lýthuyết gia trò chơi có thể giả sử rằng những người chơi luôn hành xử hợp lý để làm tối
ưu hóa phần thắng của anh ta (mô hình Homo economicus), nhưng người thật thườnghành động hoặc là không hợp lý, hoặc là hành động hợp lý để là tối ưu phần thắng củamột nhóm người lớn hơn (hành động vị tha) Những lý thuyết gia trò chơi trả lời bằngcách so sánh những giả sử của họ với những giả sử được sử dụng trong vật lý Do vậytrong khi những giả sử của họ không phải luôn luôn đúng, họ có thể xem lý thuyết tròchơi như là một lý tưởng khoa học hợp lý giống như là các mô hình được sử dụng bởicác nhà vật lý Tuy nhiên, những chỉ trích thêm của việc sử dụng này của lý thuyết tròchơi đã được giảm đi bởi vì một số thí nghiêm cho thấy rằng các cá nhân không chơinhững chiến lược cân bằng Ví dụ, trong trò chơi Centipede, Đoán 2/3 trung bình,
và trò Nhà độc tài, người ta thường không chơi với cân bằng Nash Sự tranh cãi vẫntiếp diễn liên quan đến sự quan trọng của những thí nghiệm này
Thay vào đó, một số tác giả cho rằng cân bằng Nash không đưa ra những dựđoán cho toàn dân số con người, nhưng thiên về cung cấp một lời giải thích tại saonhững dân số chơi theo cân bằng Nash vẫn duy trì ở trong trạng thái đó Tuy nhiên,câu hỏi tại sao dân số đạt đến những điểm đó vẫn là bài toán mở
Một số lý thuyết gia trò chơi đã xoay qua lý thuyết tiến hóa trò chơi để lý giảinhững lo lắng này Những mô hình này giả sử hoặc là không có sự hợp lý nào hoặc
là hợp lý bị chặntrên phần của các người chơi Mặc cho tên gọi, lý thuyết tiến hóa tròchơi không cần thiết giả sử chọn lọc tự nhiên theo nghĩa của sinh học Lý thuyết tiếnhóa trò chơi bao gồm cả sinh học cũng như là tiến hóa văn hóa và cũng như các môhình học tập cá nhân (ví dụ, biến động của trò chơi giả)
Trang 15Trong sinh học, lý thuyết trò chơi đã được sử dụng để hiểu được nhiều hiệntượng khác nhau Nó được sử dụng lần đầu để giải thích sự tiến hóa (và bền vững)của tỷ lệ giới tính khoảng 1:1.Ronald Fisher (1930) đề nghị rằng tỉ lệ giới tính 1:1 làkết quả của những lực tiến hóa tác động lên những cá nhân là những người có thể đượcxem như là cố gắng làm tối đa số cháu chắt của mình.
Thêm vào đó, những nhà sinh vật đã sử dụng lý thuyết trò chơi tiến hóa và ESS
để giải thích sự nổi lên của liên lạc giữa muông thú (Maynard Smith & Harper, 2003)
Sự phân tích của các trò chơi tín hiệu và các trò chơi liên lạc khác đã cung cấp một sốtrực giác vào trong sự tiến hóa của việc liên lạc giữa muôn thú
Cuối cùng, các nhà sinh vật đã sử dụng trò chơi diều hâu-bồ câu (cũng được biếtđến như là con gà) để phân tích những hành vi đánh nhau và tranh giành lãnh thổ
1.4.3 Khoa học máy tính và logic
Lý thuyết trò chơi đã đóng một vai trò ngày càng quan trọng trong logic vàtrong 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ọc gia máy tính đã sử dụng trò chơi để mô phỏngnhững tính toán tương tác với nhau
1.4.4 Chính trị học
Các nghiên cứu trong khoa học chính trị cũng có sử dụng lý thuyết trò chơi Mộtthuyết trò chơi giải thích cho lý thuyết dân chủ hòa bình rằng tính công khai và tranhluận cởi mở trong các nền dân chủ sẽ gởi một thông điệp rõ ràng và khả tín về các mụctiêu đến những chế độ khác Ngược lại, khó mà biết được những chủ đích của của cáclãnh đạo phi dân chủ (độc tài), rằng sẽ có sự nhượng bộ chung hiệu quả nào, và các lờihứa hẹn có được tôn trọng hay không Do đó, sẽ tồn tại sự việc không tin tưởng vàkhông mong muốn nhằm tạo ra sự nhượng bộ chung nếu ít nhất một trong các thànhphần của sự bàn cãi này là thành phần phi dân chủ
1.4.5 Triết học
Lý thuyết trò chơi đã được đưa vào một vài sử dụng trong triết học Hai bài báobởi W.V.O Quine (1960, 1967), David Lewis (1969) sử dụng lý thuyết trò chơi đểphát triển một triết lý của hội nghị Khi làm việc đó, ông đã cung cấp những phân tíchđầu tiên của kiến thức chung và sử dụng nó trong việc phân tích những cách chơitrong những trò chơi được quản lý Thêm vào đó, ông lần đầu tiên đề nghị rằng người
ta có thể hiểu được ý nghĩa dưới các điều kiện của trò chơi đánh tín hiệu Đề nghị sau
đã được theo đuổi bởi một vài triết gia tính từ Lewis (Skyrms 1996, Grim et al 2004).Trong đạo đức, một số tác giả đã cố gắng theo đuổi dự án này, bắt đầubởi Thomas Hobbes, bằng cách suy diễn ra đạo đức từ những lợi ích cá nhân Bởi vì
Trang 16những trò chơi giống như Prisoner's Dilemma đưa ra những mâu thuẫn rõ ràng giữađạo đức và lợi ích cá nhân, giải thích tại sao hợp tác là cần thiết bởi lợi ích cá nhân làmột phần quan trọng của dự án này Chiến lược chung này là một phần của quanđiểm hợp đồng xã hội tổng quát trong triết học chính trị(chẳng hạn, xem Gauthier
1987 và Kavka 1986)
Cuối cùng, một số tác giả khác đã cố gắng sử dụng lý thuyết tiến hóa trò chơi đểgiải thích sự phát triển trong quan điểm con người về đạo đức và những hành xử tươngứng của muông thú Những tác giả này đã xem xét một số trò chơi bao gồm Song đề tùnhân, săn nai, và trò mặc cả của Nash như để cung cấp một lời giải thích về sự pháttriển của các quan điểm về đạo đức(xem, e.g., Skyrms 1996, 2004; Sober và Wilson1999)
1.5 Kết luận
Như vậy, qua chương 1, đồ án đã đưa ra được các khái niệm về lý thuyết tròchơi, các vấn đề có liên quan cũng như ứng dụng của lý thuyết trò chơi vào thực tế.Đây sẽ là tiền đề giúp việc áp dụng vào trò chơi cờ vua được chính xác và hiệu quả
Trang 17CHƯƠNG 2 : TỔNG QUAN VỀ CÁC VẤN ĐỀ TÌM KIẾM
Trong rất nhiều các thao tác tính toán, tìm kiếm luôn là thao tác nền móng Cácbài toán tìm kiếm bao gồm việc tìm cách tốt nhất để thu được thông tin cần cho mộtquyết định.Trong chương 2 này , đồ án sẽ giới thiệu một cách tổng quan về các vấn đềtìm kiếm và một số thuật toán tìm kiếm phổ biến
2.1 Bài toán tìm kiếm
Hiện nay, có một lớp các bài toán có thể phát biểu và giải quyết dưới dạng tìmkiếm Sau đây là một số ví dụ với các bài toán như vậy :
- Trò chơi: nhiều trò chơi, ví dụ cờ vua , thực chất là quá trình tìm kiếm nước đicủa các bên trong số những nước mà luật chơi cho phép, để giành lấy ưu thế cho bênmình
- Lập thời khóa biểu : lập thời khóa biểu là lựa chọn thú tự, thời gian, tài nguyên(máy móc, địa điểm, con người) thỏa mãn một số tiêu chí nào đó Như vậy, lập thờikhóa biểu có thể coi như quá trình tìm kiếm một trong số tổ hợp phương án sắp xếpphương án đáp ứng yêu cầu đề ra
- Tìm đường đi: trong số những đường đi, lựa chọn đường đi tới đích, có thể thỏamãn tiêu chí nào đó như tiêu chí tối ưu về độ dài, thời gian, giá thành ,…
- Lập kế hoạch: là lựa chọn chuỗi hành động cơ sở cho phép đạt mục tiêu đề rađồng thời thỏa mãn các yêu cầu phụ
2.2 Bài toán tìm kiếm trong không gian trạng thái
2.2.1 Phát biểu bài toán
Một cách tổng quát, một vấn đề có thể giải quyết thông qua tím kiếm bằng cáchxác định tập hợp tất cả các phương án, đối tượng, hay trạng thái liên quan, gọi chung
là không gian trạng thái Thủ tục tìm kiếm sau đó sẽ khảo sát không gian trạng tháitheo một cách nào đó để tìm ra lời giải cho vấn đề Tùy vào cách thức khảo sát khônggian trạng thái cụ thể, ta sẽ có những phương pháp tìm kiếm khác nhau
Để có thể khảo sát không gian trạng thái, thuật toán tìm kiếm bắt đầu từ một trạngthái xuất phát nào đó, sau đó sử dụng những phép biến đổi trạng thái để nhận biết vàchuyển sang trạng thái khác Quá trình tìm kiếm kết thúc khi tìm ra lời giải, tức là khiđạt tới trạng thái đích
Bài toán tìm kiểm cơ bản có thể phát biểu thông qua các thành phần chính sau:
Trang 18 Tập các trạng thái Q Đây chính là không gian trạng thái của bài toán.
Tập (không rỗng) các trạng thái xuất phát S (S ⊆ Q) Thuật toán tìm kiếm sẽxuất phát từ một trong những trạng thái này để khảo sát không gian tìm kiếm
Tập (không rỗng) các trạng thái đích G (G ⊆ Q) Trạng thái đích có thể đượccho một cách tường minh, tức là chỉ ra cụ thể đó là trạng thái nào, hoặc khôngtường minh Trong trường hợp sau, thay vì trạng thái cụ thể, bài toán sẽ quyđịnh một số điều kiện mà trạng thái đích cần thỏa mãn Ví dụ, khi chơi cờ vua,thay vì chỉ ra vị trí cụ thể quân cờ, ta chỉ có quy tắc cho biết trạng thái chiếuhết
Các toán tử, còn gọi là hành động hay chuyển động Thực chất đây là một ánh
xạ P: Q→Q, cho phép chuyển từ trạng thái hiện thời sang các trạng thái khác.Với mỗi trạng thái n, P (n) là tập các trạng thái được sinh ra khi áp dụng toán tửhay chuyển động P
Giá thành c: Q x Q → R Trong một số trường hợp, quá trình tìm kiếm cần quantâm tới giá thành đường đi Giá thành để di chuyển từ nút x tới nút hàng xóm yđược cho dưới dạng số dương c (x, y)
2.2.2 Một số ví dụ :
Bài toán đố 8 ô :
Cho hình chữ nhật được chia thành chín ô như trên hình dưới, trong đó tám ôđược đánh số từ 1 đến 8 và một ô trống Có thể thay đổi vị trí các số bằng cách dichuyển ô trống Mỗi lần di chuyển, ô trống có thể đổi chỗ với một ô số ở ngay phíatrên, phía dưới, bên phải hoặc bên trái
Hình 2 1 Trò đó 8 ô
Yêu cầu của bài toán là thực hiện các di chuyển để chuyển từ một sắp xếp các ô(ví dụ trên hình bên trái) sang một cách sắp xếp khác (hình bên phải) Ngoài ra có thể
có yêu cầu phụ, ví dụ cần di chuyển sao cho số lần đổi chỗ ô trống là tối thiểu
Trò đố 8 ô có thể phát biểu như bài toán tìm kiếm với các thành phần sau :
Trang 19- Trạng thái (state): mỗi trạng thái là một sắp xếp cụ thể vị trí các ô.
- Hành động (action): mỗi hành động tương ứng với một di chuyển ô trống trái,phải, lên, xuống
- Mục tiêu và kiểm tra (goal & test): so sánh với trạng thái đích
- Giá thành (cost): bằng tổng số lần dịch chuyển ô trống
Bài toán n con hậu
Cho một bàn cờ vua kích thước n x n Cần xếp n con hậu lên bàn cờ sao chokhông có đôihậu nào đe dọa nhau
Đây cũng là bài toán tìm kiếm với các thành phần cụ thể như sau:
- Trạng thái: sắp xếp của cả n con hậu trên bàn cờ, hoặc sắp xếp của 0 đến n conhậu trênbàn cờ
2.2.3 Các tiêu chuẩn đánh giá thuật toán tìm kiếm
Với bài toán tìm kiếm được phát biểu như trên, nhiều thuật toán tìm kiếm có thể
sử dụng để khảo sát không gian và tìm ra lời giải Thuật toán tìm kiếm được đánh giátheo bốn tiêu chuẩn sau:
Độ phức tạp tính toán: được xác định bằng khối lượng tính toán cần thực hiện
để tìm ra lời giải Thông thường, khối lượng tính toán được xác định bằng số lượngtrạng thái cần xem xét trước khi tìm ra lời giải
Yêu cầu bộ nhớ: được xác định bằng số lượng trạng thái cần lưu trữ đồng thời
trong bộ nhớ khi thực hiện thuật toán
Tính đầy đủ: nếu bài toán có lời giải thì thuật toán có khả năng tìm ra lời giải đó
không? Nếu có, ta nói rằng thuật toán có tính đầy đủ, trong trường hợp ngược lại ta nóithuật toán không có tính đầy đủ
Tính tối ưu: nếu bài toán có nhiều lời giải thì thuật toán có cho phép tìm ra lời
giải tốt nhất không?
2.2.4 Thuật toán tìm kiếm tổng quát và cây tìm kiếm
Thuật toán tổng quát dựa trên nguyên lý chung như sau:
Trang 20Ý tưởng chung : xem xét trạng thái, sử dụng các hàm biến đổi trạng thái để di
chuyển trong không gian trạng thái cho tới khi đạt đến trạng thái mong muốn
Hình 2 2Thuật toán tìm kiếm tổng quát.
Thuật toán tìm kiếm tổng quát sinh ra một cây tìm kiếm, trong đó mỗi trạng tháitương ứngvới một nút trên cây Trạng thái xuất phát tương ứng với gốc cây, nhữngtrạng thái được mở rộngtạo thành các nút thế hệ tiếp theo
Hình 2 3cây tìm kiếm cho bài 8 ô
Trang 212.3 Tìm kiếm không có thông tin (tìm kiếm mù)
2.3.1 Định nghĩa
Tìm kiếm không có thông tin, còn gọi là tìm kiếm mù (blind, uninformed search)
là phương pháp duyệt không gian trạng thái chỉ sử dụng các thông tin theo phát biểucủa bài toán tìm kiếm tổng quát trong quá trình tìm kiếm
Tìm kiếm không có thông tin bao gồm một số thuật toán khác nhau Điểm khácnhau căn bản của các thuật toán là ở thứ tự mở rộng các nút biên Sau đây ta sẽ xemxét các thuật toán tìm theo chiều rộng, tìm theo chiều sâu và tìm kiếm sâu dần
2.3.2 Tìm kiếm theo chiều rộng (Breadth-first search – BFS)
Nguyên tắc của tìm kiếm theo chiều rộng là trong số những nút biên lựa chọn nútnông nhất (gần nút gốc nhất) để mở rộng
Khi mở rộng một nút ta cần sử dụng con trỏ ngược để ghi lại nút cha của nút vừađược mở ra Con trỏ này được sử dụng để tìm ngược lại đường đi về trạng thái xuấtphát khi tìm được trạng thái đích
Có thể nhận thấy, để thực hiện nguyên tắc tìm kiếm theo chiều rộng, ta cần lựachọn nút được thêm vào sớm hơn trong danh sách nút biên O để mở rộng Điều này cóthể thực hiện dễ dàng bằng cách dùng một hàng đợi để lưu các nút biên
Hình 2 4Thuật toán tìm kiếm theo chiều rộng
Tính chất của tìm kiếm theo chiều rộng
Đối chiếu với các tiêu chuẩn ở trên, tìm kiếm theo chiều rộng có những tính chấtsau:
Thuật toán có tính đầy đủ, tức là nếu bài toán có lời giải, tìm kiếm theo chiềurộng đảm bảo tìm ra lời giải
Trang 22Có tính tối ưu Đảm bảo tìm ra lời giải nằm gần nút gốc nhất Tuy nhiên, trongtrường hợp giá thành đường đi giữa các nút không bằng nhau thì điều này chưa đảmbảo tìm ra đường đi ngắn nhất.
Độ phức tạp của thuật toán lớn (giả sử mỗi bước có b node được mở rộng trên bnhánh và có d mức, khi đó độ phức tạp của thuật toán là O(bd))
2.3.3 Tìm kiếm theo chiều sâu (Depth-First-Search: DFS)
Nguyên tắc của tìm kiếm theo chiều sâu là trong số những nút biên lựa chọn nútsâu nhất (xa nút gốc nhất) để mở rộng
Để thực hiện nguyên tắc trên, ta cần lựa chọn nút được thêm vào sau cùng trongtập nút biên O để mở rộng Điều này có thể thực hiện dễ dàng bằng cách dùng mộtngăn xếp để lưu các nút biên, các nút được thêm vào và lấy ra theo nguyên lý LIFO(Last-in-First-out)
Hình 2 5Thuật toán tìm kiếm theo chiều sâu
Tính chất thuật toán tìm kiếm theo chiều sâu
- Thuật toán không đầy đủ trong trường hợp số trạng thái là vô hạn (cứ đi theonhánh không đúng mãi mà không chuyển sang nhánh khác được)
- Thuật toán không tối ưu: thuật toán có thể mở rộng những nhánh dẫn tới lời giảikhông tối ưu trước, đặc biệt trong trường hợp có nhiều lời giải
- Độ phức tạp của thuật toán ở trường hợp xấu nhất là O(bm) với m là độ sâu tối
đa Trên thực tế DFS tìm ra lời giải nhanh hơn BFS, đặc biệt nếu tồn tại nhiềulời giải
- Bộ nhớ cần nhớ tối đa b*m (mỗi mức chỉ nhớ b node, với m mức) Để đánh giá
độ phức tạp không gian của tìm kiếm theo độ sâu ta có nhận xét rằng, khi ta phát triển
Trang 23một đỉnh u trên cây tìm kiếm theo độ sâu, ta chỉ cần lưu các đỉnh chưa được phát triển
mà chúng là các đỉnh con của các đỉnh nằm trên đường đi từ gốc tới đỉnh u Như vậyđối với cây tìm kiếm có nhân tố nhánh b và độ sâu lớn nhất là m, ta chỉ cần lưu ít hơnb*m đỉnh Ưu cầu bộ nhớ so với tìm theo chiều rộng là ưu điểm nổi bật nhất của tìmtheo chiều sâu
2.3.4 Tìm kiếm sâu dần (Iterative Depending Search - IDS)
Mặc dù có ưu điểm rất lớn là không yêu cầu nhiều bộ nhớ như tìm theo chiềurộng, tìm theo chiều sâu có thể rất chậm hoặc bế tắc nếu mở rộng những nhánh sâu (vôtận) không chứa lời giải Để khắc phục, có thể sử dụng kỹ thuật tìm kiếm với độ sâuhữu hạn: tìm kiếm theo phương pháp sâu dần nhưng không tiếp tục phát triển mộtnhánh khi đã đạt tới một độ sâu nào đó, thay vào đó, thuật toán chuyển sang phát triểnnhánh khác
Kỹ thuật này có thể sử dụng trong trường hợp có thể dự đoán được độ sâu của lờigiải bằng cách dựa trên đặc điểm bài toán cụ thể Chẳng hạn, nếu ta biết rằng đi từ Hànội vào Vinh không đi qua quá 4 thành phố khác thì có thể dùng 4 làm giới hạn chiềusâu khi tìm kiếm đường đi Một số bài toán khác cũng có thể dự đoán trước giới hạn
độ sâu như vậy
Tuy nhiên, trong trường hợp chung, ta thường không có trước thông tin về độ sâucủa lời giải Trong trường hợp như vậy có thể sử dụng phương pháp tìm kiếm sâu dần.Thực chất tìm kiếm sâu dần là tìm kiếm với độ sâu hữu hạn, trong đó giới hạn độ sâuđược khởi đầu bằng một giá trị nhỏ, sau đó tăng dần cho tới khi tìm được lời giải.Phương pháp: Tìm theo DFS những không bao giờ mở rộng các node có độ sâuquá một giới hạn nào đó Giới hạn độ sâu sẽ được tăng dần cho đến khi tìm được lờigiải (VD: nếu giới hạn là 2 mà không tìm được thì sẽ tăng lên 3)
IDS(Q, S, G, P)
Đầu vào: thuật toán tìm kiếm
Đầu ra: trạng thái đích
Khởi tạo: O←S (O: danh sách các node mở, bước này làm nhiệm vụ gán S cho O)
C ← 0 (C là giới hạn độ sâu tìm kiếm)
While(O ≠ Ø) do
1 Thực hiện 3 bước
Lấy node n đầu tiên ra khỏi O
Trang 24 If n ∈ G, return (đường đi tới) n
If độ sâu (n) nhỏ hơn hoặc bằng C, then thêm P(n) vào đầu O
2 C++, O←S
Return: Không có lời giải
Hình 2 6Tìm kiếm sâu dần
Hình 2 7cây tìm kiếm theo thuật toán sâu dần
Tính chất của thuật toán tìm kiếm sâu dần
- Thuật toán đầy đủ
- Thuật toán tối ưu (nếu có nhiều lời giải, có thể tìm ra được lời giải gần gốcnhất)
Trang 25- Yêu cầu bộ nhớ nhỏ (b*d) do tại mỗi bước lặp, thuật toán thực hiện tìm kiếmsâu dần
- Độ phức tạp tính toán O(bd).Trong tìm kiếm sâu lặp, ta phải phát triển lặp lạinhiều lầncùng một trạng thái Điều đó làm cho ta có cảm giác rằng, tìm kiếmsâu lặp lãng phí nhiềuthời gian Thực ra thời gian tiêu tốn cho phát triển lặp lạicác trạng thái là không đáng kểso với thời gian tìm kiếm theo bề rộng Thật vậy,mỗi lần gọi thủ tục tìm kiếm sâu hạn chếtới mức d, nếu cây tìm kiếm có nhân tốnhánh là b, thì số đỉnh cần phát triển là:
1+b+b2
+ +b d
Nếu nghiệm ở độ sâu d, thì trong tìm kiếm sâu lặp, ta phải gọi thủ tục tìm kiếmsâu hạnchế với độ sâu lần lượt là 0, 1, 2, , d Do đó các đỉnh ở mức 1 phải phát triểnlặp d lần,các đỉnh ở mức 2 lặp d-1 lần, , các đỉnh ở mức d lặp 1 lần Như vậy tổng sốđỉnh cầnphát triển trong tìm kiếm sâu lặp là:
(d +1)∗1+db+(d −1)b2
+…+2 b d −1+1 bd
Do đó thời gian tìm kiếm sâu dần là O(bd)
2.4 Tìm kiếm có thông tin
Đối với tìm kiếm mù, việc mở rộng các nút thuân theo một quy luật và khôngdựa vào thông tin hỗ trợ của bài toán Kết quả của việc tìm kiếm như vậy là việc dichuyển trong không gian tìm kiếm không có định hướng, dẫn tới phải xem xét nhiềutrạng thái Đối với những bài toán thực tế có không gian trạng thái lớn, tìm kiếm mùthường không thực tế do có độ phức tạp tính toán và yêu cầu bộ nhớ lớn
Để giải quyết vấn đề trên, chiến lược tìm kiếm có thông tin sử dụng thêm nhữngthông tin phụ từ bài toán để định hướng tìm kiếm, cụ thể là lựa chọn thứ tự mỏ rộngnút theo hướng mau dẫn tới đích hơn
Nguyên tắc chung của tìm kiếm có thông tin là sử dụng một hàm f (n) để đánhgiá độ “tốt” tiềm năng của nút n, từ đó chọn nút n có hàm f tốt nhất để mở rộng trước.Trên thực tế, việc xây dựng hàm f (n) phản ánh chính xác độ tốt của nút thườngkhông thực hiện được, thay vào đó ta sử dụng các giá trị ước lượng cho f (n)
Trong phần này ta sẽ xem xét hai chiến lược tìm kiếm có thông tin, đó là tìmkiếm tham lam và tìm kiếm A*
2.4.1 Tìm kiếm tham lam (Greedy Search)
Phương pháp: xem xét mở rộng nút có giá thành đường đi tới đích nhỏ nhất trước.
Trang 26Trong phương pháp này, để đánh giá độ tốt của một nút, ta sử dụng hàm đo giáthành đường đi từ nút đó tới đích Tuy nhiên, do không biết được chính xác giá thànhđường đi từ một nút tới đích, ta chỉ có thể ước lượng giá trị này Hàm ước lượng độtốt, hay giá thành đường đi từ một nút n tới địch gọi là hàm heuristic và ký hiệu h(n).Như vậy, đối với thuật toán tham lam, ta có f(n) = h(n).
Do hàm h(n) chỉ là hàm ước lượng giá thành đường đi tới đích nên có thể nóirằng tìm kiếm tham lam mở rộng nút trông có vẻ gần đích nhất trước các nút khác.Thuật toán được gọi là “tham lam” do thuật toán chỉ quan tâm tới việc lựa chọn núttrông có vẻ tốt nhất ở mỗi bước mà không quan tâm tới việc trong tương lai việc dùngnút đó có thể không phải là tối ưu
Điều kiện của hàm h(n): h(n) ≥0
Nhận xét: tìm kiếm heuristic tương tự DFS nhưng cho phép quay lui khi gặp bế
tắc
Ví dụ hàm heuristic h(n) Khi tìm đường trên bản đồ, hàm heuristic cho mộtthành phố cóthể tính bằng khoảng cách theo đường chim bay giữa thành phố đó vớithành phố đích cần đến
Đặc điểm:
- Không có tính đầy đủ do có khả năng tạo thành vòng lặp ở một số nút
- Độ phức tạp về thời gian: O(bm) (thuật toán nhanh hơn BFS, và có thể cũngnhanh hơn DFS nếu tồn tại heuristic tốt) Tuy nhiên trong trường hợp heuristickhông tốt thì thuậttoán sẽ đi sai hướng và do vậy gần giống với tìm sâu
- Độ phức tạp về không gian lưu trữ: O(bm) (lưu tất cả các nút trong bộ nhớ)
- Thuật toán không tối ưu
2.4.2 Thuật toán A*
Một trong những nhược điểm của tìm kiếm tham lam là không cho lời giải ngắnnhất Lýdo tìm kiếm tham lam không đảm bảo tìm ra đường đi ngắn nhất là do thuậttoán chỉ quan tâm tớikhoảng cách ước lượng từ một nút tới đích mà không quan tâmtới đường đi từ nút xuất phát tớinút đó Trong trường hợp khoảng cách từ nút xuất pháttới nút đang xét lớn sẽ làm tổng độ dàiđường đi từ xuất phát tới đích qua nút hiện thờilớn lên
Để khắc phục nhược điểm này, thuật toán A* sử dụng hàm đánh giá f(n) với haithànhphần, thành phần thứ nhất là đường đi từ nút đang xét tới nút xuất phát, thànhphần thứ hai làkhoảng cách ước lượng tới đích
Trang 27Phương pháp: khắc phục nhược điểm của thuật toán tham lam, thuật toán A* sẽ
tính f(n) =g(n) + h(n) Trong đó:
- g(n) là giá thành đường đi từ nút xuất phát đến nút n
- h(n) là giá thành ước lượng đường đi từ nút n đến nút đích, h(n) là hàmheuristic
Thuật toán A* yêu cầu hàm h(n) là hàm chấp nhận được (admissible)
Định nghĩa: Hàm h(n) được gọi là chấp nhận được nếu h(n) không lớn hơn
khoảng cách thực tếtừ n tới nút đích
Hình 2 8Thuật toán A*
Trang 28Nhận xét :
- Thuật toán cho kết quả tối ưu nếu hàm heuristic h là hàm chấp nhận được
- Thuật toán đầy đủ trừ trường hợp có vô số các node với hàm f có giá trị rất nhỏnằm giữanode xuất phát và node đích
- Thời gian: O(mb)
- Trong tất cả các thuật toán tìm kiếm tối ưu thì thuật toán A* hiệu quả nhất với
độ phứctạp của thuật toán là nhỏ nhất
Trang 292.5 Tìm kiếm cục bộ
Các thuật toán tìm kiếm ở trên đều dựa trên việc khảo sát không gian tìm kiếmmột cách hệ thống bằng cách ghi lại những đường đi đã qua cùng với thông tin vềphương án đã hoặc chưa được xem xét tại mỗi trạng thái trên đường đi Vấn đề củathuật toán như vậy là việc sử dụng đường đi để khảo sát không gian tìm kiếm một cách
hệ thống làm tăng số lượng trạng thái cần xem xét đồng thời đòi hỏi ghi nhớ nhiềutrạng thái và do vậy không thích hợp với bài toán có không gian trạng thái lớn
Trong phần này ta sẽ xem xét các thuật toán tìm kiếm cục bộ (local search), cònđược gọi là tìm kiếm cải thiện dần (iterative improvement) Tìm kiếm cục bộ thườngđược sử dụng cho những bài toán tối ưu hóa tổ hợp hoặc tối ưu hóa rời rạc, tức lànhững bài toán trong đó cần tìm trạng thái tối ưu hoặc tổ hợp tối ưu trong không gianrời rạc các trạng thái, và không quan tâm tới đường đi dẫn tới trạng thái đó
Bài toán tối ưu hóa tổ hợp (tối ưu hóa rời rạc) có những đặc điểm sau :
- Tìm trạng thái tối ưu cực đại hóa hoặc cực tiểu hóa hàm mục tiêu Không quantâm tớiđường đi
- Không gian trạng thái rất lớn
- Không thể sử dụng các phương pháp tìm kiếm trước để xem xét tất cả khônggian trạngthái
- Thuật toán cho phép tìm lời giải tốt nhất với độ phức tạp tính toán nhỏ Thuậttoán cũngchấp nhận lời giải tương đối tốt
Ví dụ: tối ưu hóa tổ hợp là lớp bài toán có nhiều ứng dụng trên thực tế Có thể kể
ra một sốví dụ sau: bài toán lập lịch, bảng biểu, thiết kế transitor, triệu con hậu,…Tìm kiếm cục bộ được thiết kế cho bài toán tìm kiếm với không gian trạng tháirất lớn vàcho phép tìm kiếm trạng thái tương đối tốt với thời gian tìm kiếm chấp nhậnđược
Ý tưởng : nguyên tắc chung của tìm kiếm cục bộ
- Chỉ quan tâm đến trạng thái đích, không quan tâm đến đường đi
- Mỗi trạng thái tương ứng với một lời giải (chưa tối ưu) → cải thiện dần bằngcách chỉ quan tâm tới một trạng thái hiện thời, sau đó xem xét để để chuyểnsang trạng thái hàmxóm của trạng thái hiện thời (thường là trạng thái có hàmmục tiêu tốt hơn)
- Thay đổi trạng thái bằng cách thực hiện các chuyển động (trạng thái nhận được
từ trạngthái n bằng cách thực hiện các chuyển động được gọi là hàng xóm củan)