KHÔNG GIAN TRẠNG THÁI VÀ CÁC PHƯƠNG PHÁP TÌM KIẾM MÙ´ Giải quyết vấn đề bằng tìm kiếm ´ Tìm kiếm và AI ´ Các chiến lược tìm kiếm ´ Các chiến lược tìm kiếm mù o Tìm kiếm theo bề rộng o Tì
Trang 1Chương 3 KHÔNG GIAN TRẠNG THÁI VÀ CÁC PHƯƠNG PHÁP TÌM KIẾM MÙ
´ Giải quyết vấn đề bằng tìm kiếm
´ Tìm kiếm và AI
´ Các chiến lược tìm kiếm
´ Các chiến lược tìm kiếm mù
o Tìm kiếm theo bề rộng
o Tìm kiếm theo độ sâu
o Tìm kiếm theo độ sâu dần
Nguyễn Đình Công, BM Khoa học máy tính
Trang 2Giải quyết vấn đề bằng tìm kiếm
Các trò chơi đố
2
Trang 3Giải quyết vấn đề bằng tìm kiếm
Bài toán ba thầy tu và ba con quỷ
´Mục tiêu: đưa tất cả người và quỷ sang bờ phải của con sông an toàn
´Điều kiện:
o Nếu số người ở mỗi bờ ít hơn số quỷ thì người sẽ bị quỷ ăn thịt
o Mỗi lượt thuyền chỉ chở được nhiều nhất 2 người và không được trống
3
Nguyễn Đình Công, BM Khoa học máy tính
Trang 4Giải quyết vấn đề bằng tìm kiếm
Bài toán người giao hàng
´Tìm đường đi trong đồ thị gồm một
chuỗi các đỉnh T0,T1, T2, …,Tn sao cho
2
1
Trang 5Giải quyết vấn đề bằng tìm kiếm
“Bài toán Konigsberg”
´ Nhà toán học người Áo Leonhard Euler đã phát minh ra lý thuyết đồ thị để giải quyết “bài toán các cây cầu của Konigsberg” Thành phố Konigsberg nằm trên cả hai bờ và hai hòn đảo của một con sông Người ta nối các đảo và hai bờ sông với nhau bằng bảy chiếc cầu.
5
Nguyễn Đình Công, BM Khoa học máy tính
Trang 6Giải quyết vấn đề bằng tìm kiếm
“Bài toán Konigsberg”
Bài toán Konigsberg đặt câu hỏi là liệu có
thể đi khắp thành phố mà chỉ ngang qua
mỗi cây cầu một lần hay không? Mặc dù
những người dân ở đây không ai tìm được
lối đi nào như vậy, nhưng họ vẫn nghi ngờ
là có thể, đồng thời cũng không ai chứng
minh được là không có khả năng Nhờ phát
minh dạng lý thuyết đồ thị, Euler đã tạo ra
cách biểu diễn phương án lựa chọn cho bản
đồ thành phố
6
Đồ thị của hệ thống cầu Konigsberg
Trang 7Giải quyết vấn đề bằng tìm kiếm
Biểu diễn đồ thị của bài toán
Nút: {A,B,C,D,E}
Cung: {(a,d), (a,b), (a,c), (b,c), (c,d), (c,e), (d,e) }
Nguyễn Đình Công, BM Khoa học máy tính
Trang 8Giải quyết vấn đề bằng tìm kiếm
Biểu diễn đồ thị của bài toán
´Đặc tính đồ thị
oĐồ thị có hướng: là đồ thị với các cung có định hướng, nghĩa là cặp nút có quan hệ
thứ tự trước sau theo từng cung Cung (Ni,Nj) có hướng từ Ni đến Nj, Khi đó Ni là nút
cha và Nj là nút con.
oNút lá: là nút không có nút con.
oPath: là chuỗi có thứ tự các nút mà 2 nút kế tiếp nhau tồn tại một cung.
oĐồ thị có gốc: Trên đồ thị tồn tại nút X sao cho tất cả các path đều đi qua nút đó X
là gốc – Root
oVòng: là một path đi qua nút nhiều hơn một lần
oCây: là graph mà không có path vòng
oHai nút nối nhau: nếu có một path đi qua 2 nút đó
8
Trang 9Giải quyết vấn đề bằng tìm kiếm
Không gian trạng thái
´Định nghĩa:Không gian trạng thái là một hệ thống gồm 4 thành phần
[N,A,S,G] Trong đó:
o N: là tập nút của Graph Mỗi nút là một trạng thái của quá trình giải quyết vấn đề
o A: Tập các cung nối giữa các nút N Mỗi cung là một bước trong giải quyết vấn đề Cung
có thể có hướng
o S: Tập các trạng thái bắt đầu S khác rỗng.
o G: Tập các trạng thái đích G khác rỗng.
´Solution path: Là một path đi từ một nút bắt đầu Si đến một nút kết thúc Gj
´Mục tiêu của các giải thuật tìm kiếm là tìm ra một solution path và/hay solution
path tốt nhất
9
Nguyễn Đình Công, BM Khoa học máy tính
Trang 10Giải quyết vấn đề bằng tìm kiếm
´ Không gian trạn thái của trò chơi Caro: Có tất cả 9 x 8 x 7 x … hay 9! = 362880 trạng thái khác nhau có thể được tạo ra.
10
Trang 11Giải quyết vấn đề bằng tìm kiếm
Trò chơi 8 số
´ Nguyên bản của trò chơi là trò đố 15: có 15 miếng bìa đánh số khác nhau được đặt vừa vào 16 ô vuông theo bảng Có một ô vuông
để trống nên các miếng bìa đó có thể di
chuyển để tạo ra các sắp xếp khác nhau
´ Mục tiêu là tìm ra một chuỗi bước di chuyển các miếng bìa vào ô trống để sắp xếp bảng thành một cấu hình đích nào đó Không gian trạng thái bài toán đủ lớn để xem xét (16! nếu các trạng thái đối xứng được xem xét riêng biệt)
11
Nguyễn Đình Công, BM Khoa học máy tính
Trang 12Giải quyết vấn đề bằng tìm kiếm
Trò chơi 8 số
´ Trò đố 8 số là một phiên bản với kích thước 3 x 3 của trò đố
15 số, vì nó tạo ra không gian trạng thái nhỏ hơn so với trò
đố 15 số nên thường được dùng cho nhiều ví dụ
´ Có 4 cách di chuyển ô trống:
1 Di chuyển lên phía trên (Up)
2 Di chuyển về bên phải (Right)
3 Di chuyển xuống phía dưới (Down)
4 Di chuyển về bên trái (Left)
12
Trang 13Giải quyết vấn đề bằng tìm kiếm
Trò chơi 8 số
13
Nguyễn Đình Công, BM Khoa học máy tính
Trang 14Tìm kiếm và AI
´ Các phương pháp tìm kiếm có mặt mọi chỗ trong các hệ thống AI
Chúng thường là xương sống cho cả các mô đun lõi và các mô đun
ngoại vi
´ Một robot tự hành sử dụng tìm kiếm để quyết định thực hiện hành động nào và thi hành thao tác cảm biến nào, để nhanh chóng lường trước sự
va chạm, để lập kế hoạch đường đi,
´ Các công ty hậu cần sử dụng tìm kiếm để định vị các tài nguyên, lập kế hoạch lộ trình, sắp lịch cho nhân viên…
´ Các tác nhân hoặc các thành phần trong trò chơi sử dụng tìm kiếm để điều hướng, lựa chọn nước đi, lường trước các hành động của tác nhân khác và quyết định các hành động của bản thân nó
14
Trang 15Tìm kiếm và AI
´ Tìm kiếm đóng vai trò chính trong nhiều ứng dụng, ví dụ:
o Tìm đường (bản đồ trực tuyến, internet, hàng không)
o Bài trí VLSI (Very-large-scale integration – Tích hợp ở quy mô lớn)
o Điều hướng robot
o Thiết kế dược phẩm, thiết kế protein
o Các trò chơi video
´ Các vấn đề khó khăn trong tìm kiếm với các bài toán AI
o Đặc tả vấn đề phức tạp
o Không gian tìm kiếm lớn
o Đặc tính đối trượng tìm kiếm thay đổi
Trang 16Các chiến lược tìm kiếm
´ Các chiến lược tìm kiếm mù
o Tìm kiếm theo bề rộng, tìm kiếm theo độ sâu, tìm kiếm theo độ sâu hạn chế, tìm kiếm sâu lặp,…
´ Các chiến lược tìm kiếm có sử dụng thông tin (kinh nghiệm)
o Hàm đánh giá, tìm kiếm tốt nhất đầu tiên, tìm kiếm leo đồi, tìm kiếm A*, tìm kiếm nhánh cận,…
´ Các chiến lược tìm kiếm có đối thủ
o Cây trò chơi, chiến lược tìm kiếm minimax, phương pháp cắt tỉa alpha-beta,…
16
Trang 17Các chiến lược tìm kiếm
´ Các chiến lược tìm kiếm mù
o Trong các chiến lược tìm kiếm mù không có một sự hướng dẫn nào cho việc tìm kiếm, mà ta chỉ phát triển các trạng thái ban đầu cho tới khi gặp một trạng thái đích nào đó
o Có hai kỹ thuật tìm kiếm mù đó là tìm kiếm theo bề rộng và tìm kiếm theo độ sâu
o Khi sử dụng các chiến lược tìm kiếm mù thì số lượng các trạng thái
được phát triển trước khi ta gặp trạng thái đích thường cực kỳ lớn Do
đó các thuật toán tìm kiếm mù kém hiệu quả, đòi hỏi rất nhiều
không gian và thời gian.
17
Nguyễn Đình Công, BM Khoa học máy tính
Trang 18Các chiến lược tìm kiếm
´ Các chiến lược tìm kiếm kinh nghiệm
o Trong rất nhiều vấn đề chúng ta có thể dựa vào sự hiểu biết của chúng ta về vấn
đề, dựa vào kinh nghiệm, trực giác, để đánh giá các trạng thái
o Sử dụng sự đánh giá các trạng thái để hướng dẫn sự tìm kiếm: trong quá trình phát triển các trạng thái, ta sẽ chọn trong số các trạng thái chờ phát triển, trạng thái được đánh giá tốt nhất để phát triển Do đó tốc độ tìm kiếm sẽ nhanh hơn
o Các phương pháp tìm kiếm dựa vào sự đánh giá các trạng thái để hướng dẫn sự tìm kiếm gọi chung là các phương pháp tìm kiếm kinh nghiệm
18
Trang 19Các chiến lược tìm kiếm
´ Cây tìm kiếm
o Quá trình tìm kiếm là quá trình xây dựng cây tìm kiếm Cây tìm kiếm là cây mà các đỉnh được gắn bởi các trạng thái của không gian trạng thái Gốc của cây tìm kiếm tương ứng với trạng thái ban đầu
o Có thể chuyển vấn đề tìm kiếm đồ thị thành vấn đề tìm kiếm trên cây (hình dưới)
19
Nguyễn Đình Công, BM Khoa học máy tính
Trang 20Các chiến lược tìm kiếm
´ Một chiến lược tìm kiếm được xác định bằng việc lựa chọn thứ tự phát triển các nút
´ Các chiến lược tìm kiếm được đánh giá dựa trên các tiêu chí sau đây:
o Tính hoàn thành: nó có luôn tìm ra nghiệm nếu thực sự có nghiệm?
o Độ phức tạp thời gian: số lượng các nút được tạo ra
o Độ phức tạp không gian: số lượng lớn nhất các nút trong bộ nhớ
o Tính tối ưu: nó có luôn tìm thấy nghiệm có giá thấp nhất?
´ Độ phức tạp thời gian và không gian được tính toán dựa trên
o b: nhân tố nhánh lớn nhất của cây tìm kiếm
o d: độ sâu của nghiệm có giá thấp nhất
o m: độ sâu lớn nhất của không gian trạng thái (có thể là ∞)
20
Trang 21Tìm kiếm trong không gian trạng thái (State Space)
và tìm kiếm trong cơ sở dữ liệu (Database)
State Space
´ Không gian tìm kiếm thường là
một graph
´ Mục tiêu tìm kiếm là một path
´ Phải lưu trữ toàn bộ không gian
trong quá trình tìm kiếm
´ Không gian tìm kiếm biến động
liên tục trong quá trình tìm kiếm
Các chiến lược tìm kiếm
Nguyễn Đình Công, BM Khoa học máy tính
Trang 22Các chiến lược tìm kiếm
Chiến lược điều khiển trong không gian trạng thái
´Data-Driven-Search: Quá trình search sẽ đi từ trạng thái hiện thời áp dụng các luật
để đi đến trạng thái kế tiếp và cứ thế cho đến khi đạt được một goal.
´Goal-Driven-Search: Quá trình search sẽ đi từ trạng thái hiện tại (goal tạm thời) tìm
xem luật nào có thể sinh ra trạng thái này Các điều kiện để áp dụng được các luật đó trở thành subgoal Quá trình lặp lại cho đến khi lui về đến các sự kiện ban đầu.
´ Quyết định chọn lựa chiến lược tùy thuộc vào:
o Độ phức tạp của các luật
o Độ phân chia của không gian trạng thái
o Sự hiện hữu của dữ liệu
• Goal đã có hay chưa, nhiều hay ít
• Goal được đặc tả như thế nào: state cụ thể hay mô tả mang tính đặc tính
22
Trang 23Các chiến lược tìm kiếm
Chiến lược điều khiển trong không gian trạng thái – Ví dụ
´Ba và Nam là bà con Ba hơn Nam 250 tuổi Tìm mối quan hệ giữa Ba và Nam
´Trong bài toán này:
o Không gian trạng thái là cây phả hệ
o Mục tiêu tìm kiếm là path nối Ba với Nam
´Giả sử mỗi thế hệ cách nhau 25 năm, như vậy Ba cách nam 10 thế hệ
´Data-Driven-Search: Tìm từ Ba đến Nam
Nếu trung bình mỗi thế hệ có X con thì số trạng thái cần xét là X10
´Goal-Driven search: Tìm từ Nam đến Ba
Mỗi người chỉ có 1 cha và 1 mẹ Số trạng thai cần xét là 210
=> Như vậy Goal-Driven sẽ tốt hơn Data driven nếu số con > 2
23
Nguyễn Đình Công, BM Khoa học máy tính
Trang 24Các chiến lược tìm kiếm
Tìm kiếm trên đồ thị - graph search
´Giải thuật graph search phải có khả năng tìm kiếm ra tất cả các path có
thể có để tìm được nghiệm: PATH từ trạng thái khởi đầu đến goal.
´Graph search thực hiện bằng cách “lần” theo các nhánh của graph Từ một trạng thái, sinh ra các trạng thái con, chọn một trạng thái con, xem
đó là trạng thái xét kế tiếp Lặp lại cho đến khi tìm thấy một trạng thái đích
´“Lần” theo các trạng thái à Đi vào ngõ cụt?
´Khi gặp nhánh không đi tiếp được, giải thuật phải có khả năng quay lui lại trạng thái trước đó để đi sang nhánh khác Do đó giải thuật còn có tên
là giải thuật quay lui - BACKTRACK search.
24
Trang 25Các chiến lược tìm kiếm
Tìm kiếm trên đồ thị - graph search
´Ví dụ:
25
Nguyễn Đình Công, BM Khoa học máy tính
Trang 26Các chiến lược tìm kiếm mù
´ Tìm kiếm theo bề rộng (Breadth-first search)
´ Tìm kiếm theo độ sâu (Depth-first search)
´ Tìm kiếm độ sâu hạn chế (Depth-limited search)
´ Tìm kiếm sâu lặp (Iterative deepening search)
26
Trang 28Breadth-first search
´ Thuật giải:
o Bước 1: Tập Open chứa đỉnh gốc s chờ được xét.
o Bước 2: Kiểm tra tập Open có rỗng không.
• Nếu tập Open không rỗng, lấy một đỉnh ra khỏi tập Open làm đỉnh đang xét p Nếu
p là đỉnh g cần tìm, kết thúc tìm kiếm.
• Nếu tập Open rỗng, tiến đến bước 4.
o Bước 3: Đưa đỉnh p vào tập Close, sau đó xác định các đỉnh kề với đỉnh p vừa xét Nếu các đỉnh v kề với p không thuộc tập Close, đưa chúng vào cuối tập Open Quay lại bước 2.
o Bước 4: Kết luận không tìm ra đỉnh đích cần tìm
Open hoạt động theo quy tắc FIFO
28
Trang 30Breadth-first search
o Sử dụng kỹ thuật vét cạn vì vậy sẽ tìm được lời giải nếu bài toán có lời giải
o Đường đi tìm được đi qua ít đỉnh nhất
o Tìm kiếm một cách máy móc, khi không có thông tin hỗ trợ cho quá trình tìm kiếm, không nhận ra ngay lời giải
o Không phù hợp với không gian bài toán có kích thước lớn:
• Cần nhiều bộ nhớ theo số nút cần lưu trữ
• Cần nhiều công sức xử lý các nút, nhất là khi các nhánh cây dài, số nút nhiều
• Dễ thực hiện các thao tác không thích hợp, thừa, đưa đến việc tăng đáng kể số nút phải xử lý
o Không hiệu qủa nếu lời giải ở sâu
30
Trang 31Breadth-first search
´ Hoàn thành? Chắc chắn sẽ tìm ra nghiệm nếu bài toán có nghiệm (nếu
b là hữu hạn)
´ Thời gian? 1+b+b2+b3+… +bd + b(bd-1) = O(bd+1)
´ Không gian? O(bd+1) (luôn giữ tất cả các nút trong bộ nhớ)
Trong đó:
b: số nhánh tối đa của 1 trạng thái d: độ sâu
´ Tối ưu? Thuật toán là tối ưu nếu giá = 1 ở mỗi bước
´ Không gian là vấn đề quan trọng hơn thời gian
31
Nguyễn Đình Công, BM Khoa học máy tính
Trang 32Depth-first search
´ Tư tưởng của tìm kiếm theo độ sâu là các nút “con cháu” của nút hiện thời được xem xét trước các nút “anh em”.
´ Thuật giải:
o Bước 1: Tập Open chứa đỉnh gốc s chờ được xét.
o Bước 2: Kiểm tra tập Open có rỗng không.
• Nếu tập Open không rỗng, lấy một đỉnh ra khỏi tập Open làm đỉnh đang xét p Nếu p là đỉnh g cần tìm, kết thúc tìm kiếm.
• Nếu tập Open rỗng, tiến đến bước 4.
o Bước 3: Đưa đỉnh p vào tập Close, sau đó xác định các đỉnh kề với đỉnh p vừa xét Nếu các đỉnh v kề với p không thuộc tập Close, đưa chúng vào đầu tập Open Quay
lại bước 2.
o Bước 4: Kết luận không tìm ra đỉnh đích cần tìm.
´ Open hoạt động theo quy tắc LIFO
32
Trang 33[A]
[B C D ] [E F C D]
Trang 34Depth-first search
´ Ưu điểm
o Bảo đảm tìm ra lời giải nếu bài toán có lời giải
o Tiết kiệm thời gian nếu lời giải ở rất sâu
´ Nhược điểm
o Tìm kiếm một cách máy móc, khi không có thông tin hỗ trợ cho quá trình tìm kiếm, không nhận ra ngay lời giải Nếu chọn nút ban đầu không thích hợp có thể không dẫn đến đích của bài toán
o Sử dụng kỹ thuật vét cạn nên không phù hợp với không gian bài toán lớn
34
Trang 35´ Thời gian? O(bd): rất lớn nếu m lớn hơn nhiều so với b nhưng nếu bài toán
có nhiều nghiệm, có thể thực hiện nhanh hơn tìm kiếm theo bề rộng
´ Không gian? O(bd) tức là không gian tuyến tính! (chỉ cần lưu các nút chưa được phát triển là nút con của các nút trên đường đi từ gốc đến nút u)
´ Tối ưu? Thuật toán không tối ưu
35
Nguyễn Đình Công, BM Khoa học máy tính
Trang 36Breath First vs Depth First
´ BFS: open được tổ chức dạng FIFO (Queue)
´ DFS: open được tổ chức dạng LIFO (Stack)
o DFS: có thể bị lặp vô tận Tại sao?
´ Bùng nổ tổ hợp là khó khăn lớn nhất cho các giải thuật này
36
Trang 37Depth limited search
´ DFS có khả năng lặp vô tận do các trạng thái con sinh ra liên tục Độ sâu tăng vô tận
´ Khắc phục bằng tìm kiếm theo độ sâu với mức giới hạn về độ sâu là L, tức là các nút ở độ sâu L không có nút kế tiếp
´ Chiến lược giới hạn:
o Cố định một độ sâu MAX, như các danh thủ chơi cờ tính trước được số nước nhất định
o Theo cấu hình tài nguyên của máy tính
o Meta knowledge trong việc định giới hạn độ sâu
´ Giới hạn độ sâu => co hẹp không gian trạng thái => có thể mất nghiệm
37
Nguyễn Đình Công, BM Khoa học máy tính
Trang 38Depth limited search
´ Thuật giải:
o Bước 1: Tập Open chứa đỉnh gốc s chờ được xét.
o Bước 2: Kiểm tra tập Open có rỗng không.
• Nếu tập Open không rỗng, lấy một đỉnh ra khỏi tập Open làm đỉnh đang xét p Nếu p
là đỉnh g cần tìm, kết thúc tìm kiếm.
• Nếu tập Open rỗng, tiến đến bước 4.
o Bước 3: Nếu L(p)£ L, đưa đỉnh p vào tập Close, sau đó xác định các đỉnh kề
với đỉnh p vừa xét Nếu các đỉnh u kề với p không thuộc tập Close, đưa chúng vào đầu tập Open, đặt L(u)=L(p)+1 Quay lại bước 2.
o Bước 4: Kết luận không tìm ra đỉnh đích cần tìm
Open hoạt động theo quy tắc LIFO
38
Trang 39Iterative Deepening search
´ Nếu cây tìm kiếm chứa nhánh vô hạn, khi sử dụng tìm kiếm theo độ sâu,
ta có thể bị mắc kẹt ở nhánh đó và không tìm ra nghiệm
´ Để khắc phục tình trạng đó, ta tìm kiếm theo độ sâu chỉ tới mức L nào đó; nếu không tìm ra nghiệm, ta tăng độ sâu lên L +1 và lại tìm kiếm theo độ sâu tới mức L+1 Quá trình trên được lặp lại với L lần lượt là 1, 2,…, MAXnào đó sẽ dừng
39
Nguyễn Đình Công, BM Khoa học máy tính