Biểu diễn vấn đề trong không gian trạng thái Phát triển trạng thái và cây tìm kiếm Các chiến lược tìm kiếm Các chiến lược tìm kiếm mù Tìm kiếm theo bề rộng Tìm kiếm theo bề sâu Tìm kiếm sâu lặp Quy vấn đề về các vấn đề con. Tìm kiếm trên đồ thị vàhoặc Quy vấn đề về các vấn đề con Đồ thị vàhoặc Tìm kiếm trên đồ thị vàhoặc
Trang 1Các chiến lược tìm kiếm mù
Vương Trần Nguyên Khôi – 08110161
Trần Ngọc Long - 08110154
Trần Thanh Phong - 08110226
Trang 2Nội dung
• Biểu diễn vấn đề trong không gian trạng thái
• Phát triển trạng thái và cây tìm kiếm
• Các chiến lược tìm kiếm
• Các chiến lược tìm kiếm mù
Trang 3Biểu diễn vấn đề TRONG KHÔNG GIAN TRẠNG THÁI (KGTT)
Tìm kiếm mù
Trang 4Định nghĩa biểu diễn vấn đề trong KGTT
Một không gian trạng thái (state space) được biểu diễn bằng một nhóm gồm bốn yếu tố [N, A, S, GD], trong đó:
N (node) là tập hợp các nút hay các trạng thái của đồ thị Tập này tương ứng với các trạng thái trong quá trình giải bài toán
A (arc) là tập các cung (hay các liên kết) giữa các nút Tập này tương ứng với các bước trong quá trình giải bài toán
S (Start) là một tập con không rỗng của N, chứa (các) trạng thái ban đầu của bài toán
GD (Goal Description) là một tập con không rỗng của N, chứa (các) trạng thái đích của bài toán Các trạng thái trong GD được mô tả theo một trong hai đặc tính:
o Đặc tính có thể đo lường được các trạng thái gặp trong quá trình tìm kiếm
o Đặc tính của đường đi được hình thành trong quá trình tìm kiếm Đường đi của lời giải (solution path) là đường đi qua đồ thị này từ một nút trong
S đến một nút trong GD
Trang 5Bài toán đường đi của người đưa hàng
C
DC
EA
225 225
400 400
325 300
Trang 6Phát triển trạng thái và cây tìm kiếm
Tìm kiếm mù
Trang 7Phát triển không gian trạng thái
• Giả sử u là một trạng thái nào đó và R là một là một toán tử biến đổi u thành trạng thái v Ta sẽ gọi v là trạng kề của u, hoặc v được sinh ra từ trạng thái u bởi toán tử R Quá trình áp dụng các toán tử để sinh ra trạng thái kề u được gọi là phát triển trạng thái u.
Trang 9Bài toán trò chơi n2 -1
15 - puzzles 8 - puzzles
Trang 10Bài toán trò chơi n2 -1
Không gian trạng thái trong trò chơi n2 -1
Trang 11Cây tìm kiếm
Cây tìm kiếm là cây mà các đỉnh được gắn nhã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 Nếu một đỉnh ứng với trạng thái u, thì các đỉnh con của nó ứng với các trạng thái v kề u Chúng ta có thể xem quá trình tìm kiếm như quá trình xây dựng cây tìm kiếm.
Trang 12F
KD
Trang 13Các chiến lược tìm kiếm
Tìm kiếm mù
Trang 14Các chiến lược tìm kiếm
• Có thể phân các chiến lược tìm kiếm thành 2 loại:
• Các chiến lược tìm kiếm mù (blind search) Trong các chiến lược tìm kiếm này, không có một sự hướng dẫn nào cho tìm kiế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 đó.
• Các chiến lược tìm kiếm kinh nghiệm (tìm kiếm hueristic) Trong các chiến lược tìm kiếm này, chúng ta có thể dựa vào sự hiểu biết, dựa vào kinh nghiệm, dựa vào trực giác để đánh giá các trạng thái, sau
đó sử dụng sự đánh giá này để 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 một trong số các trạng thái chờ phát triển, trạng thái được đánh giá là tốt nhất để phát triển Do
đó tốc độ tìm kiếm nhanh hơn.
Trang 15Các CHIẾN LƯỢC TÌM KiẾM MÙ
Tìm kiếm mù
Trang 16Tìm kiếm theo chiều rộng
Tư tưởng của chiến lược tìm kiếm theo chiều rộng là tại mỗi bước ta sẽ chọn trạng thái để phát triển là trạng thái được sinh ra trước các trạng thái chờ phát triển khác
Chúng ta sử dụng 1 danh sách để lưu cái trạng thái được sinh ra và chờ phát triển
Để lưu vết đường đi ta dùng thêm mảng phụ để truy vết sau khi hoàn tất
Trang 17Thuật toán tìm kiếm theo chiều rộng
void Breadth_First_Search (){
<list> OPEN // Lưu trạng thái được sinh và chờ phát triển
<list> CLOSE // Lưu trạng thái đã phát triển
OPEN u0 //uo là trạng thái bắt đầu
CLOSE = {ø}
while (OPEN != ø){
Xóa u ở đầu OPEN Thêm u vào CLOSE if(u là đích){
Thông báo tìm kiếm thành công;
exit;
} for mỗi trạng thái v kề u do
if(v không có trong OPEN và CLOSE)
Thêm v vào cuối OPEN
father(v) u; // Cha của đỉnh v }
Thông báo tìm thất bại;
}
Trang 18Thuật toán tìm kiếm theo chiều rộng
VD: Xét đồ thị không gian trạng thái ban đầu là A, trạng thái kết thúc là F
Trang 19Thuật toán tìm kiếm theo chiều rộng
Nếu bài toán vô nghiệm không gian trạng thái hữu hạn, thuật toán sẽ dừng và cho kết quả vô nghiệm
Trang 20Tìm kiếm theo chiều sâu
Tư tưởng của chiến lược tìm kiếm theo chiều sâu là tại mỗi bước ta sẽ chọn trạng thái để phát triển là trạng thái được sinh ra sau cùng trong các trạng thái chờ phát triển khác
Chúng ta sử dụng 1 danh sách để lưu các trạng thái được sinh ra và chờ phát triển
Để lưu vết đường đi ta dùng thêm mảng phụ để truy vết sau khi hoàn tất
Trang 21Thuật toán tìm kiếm theo chiều sâu
void Depth_First_Search (){
<list> OPEN // Lưu trạng thái được sinh và chờ phát triển
<list> CLOSE // Lưu trạng thái đã phát triển
OPEN u0 //uo là trạng thái bắt đầu
CLOSE = {ø}
while (OPEN != ø){
Xóa u ở đầu OPEN Thêm u vào CLOSE if(u là đích){
Thông báo tìm kiếm thành công;
exit;
} for mỗi trạng thái v kề u do
if(v không có trong OPEN và CLOSE)
Thêm v vào đầu OPEN
father(v) u; // Cha cua đỉnh v }
Thông báo tìm thất bại;
}
Trang 22Thuật toán tìm kiếm theo chiều sâu
VD: Xét đồ thị không gian trạng thái ban đầu là A, trạng thái kết thúc là F
Trang 23Thuật toán tìm kiếm theo chiều sâu
Nhận xét
Trạng thái nào được sinh ra sau sẽ được phát triển trước, do đó danh sách L
được xử lý như ngăn xếp
Nếu bài toán có nghiệm và không gian trạng thái hữu hạn, thì thuật toán tìm kiếm theo chiều sâu sẽ tìm ra nghiệm tuy nhiên đường đi tìm được không nhất thiết là ngắn nhất
Trong trường hợp không gian trạng thái vô hạn thì tìm kiếm theo chiều sâu có thể lặp đến vô hạn ngay cả khi bài toán có nghiệm
Độ phức tạp tính toán
Giả sử mỗi trạng thái khi được phát triển sẽ sinh ra b trạng thái kề Ta sẽ gọi b là nhân tố nhánh và giả sử nghiệm của bài toán có độ dài d Khi đó đồ phức tạp thời gian trong trường hợp xấu nhất là O(bd), độ phức tạp không gian là O(bd)
Trang 24Thuật toán tìm kiếm sâu lặp
Tìm kiếm sâu lặp được đưa ra nhằm khắc phục tình trạng có thể không dừng của tìm kiếm sâu khi cây tìm kiếm chứa nhánh vô hạn Trong cách tìm kiếm này ta tìm kiếm theo độ sâu chỉ ở mức d nào đó,
nếu không tìm ra nghiệm, ta tăng độ sâu lên d+1
đến một độ xâu max nào đó.
Trang 25Thuật toán tìm kiếm sâu lặp
void Depth_Limited_Search (int d){ // d là độ sâu tối đa
<list> OPEN // Lưu trạng thái được sinh và chờ phát triển
<list> CLOSE // Lưu trạng thái đã phát triển
OPEN u0 //uo là trạng thái bắt đầu
for (mỗi trạng thái v kề u)
if(v không có trong OPEN và CLOSE)
Thêm v vào đầu OPEN
father(v) u; // Cha cua đỉnh v
Trang 26Thuật toán tìm kiếm sâu lặp
VD: Xét đồ thị không gian trạng thái ban đầu là A, trạng thái kết thúc là F
5 C1 [E2, F2, D1] [A0, B1, I2, G2, C1]
6 E2 [K3, F2, D1] [A0, B1, I2, G2, C1, E2]
7 K3 [F2, D1] [A0, B1, I2, G2, C1, E2]
8 F2 [D1] [A0, B1, I2, G2, C1, E2, F2]
Hoạt động của thuật toán:
Trang 27- Không gian bộ nhớ như tìm kiếm theo chiều sâu O(bd)
- Chi phí thời gian O(bd)
Trang 28Quy vấn đề về các vấn đề con Tìm kiếm trên đồ thị và/hoặc
Tìm kiếm mù
Trang 29Quy vấn đề về các vấn đề con
• Có thế biểu diễn việc quy một vấn đề về các vấn đề con bởi các trạng thái và các toán tử
• Bài toán cần giải là trạng thái ban đầu
• Các bài toán sơ cấp là các trạng thái kết thúc
• Mỗi cách quy bài toán về các bài toán con được biểu diễn bởi một toán tử (toán tử A B,C biểu diễn việc quy bài toán A về hai bài toán B và C)
• Chú ý: Trong không gian trạng thái biểu diễn việc quy vấn đề về các bài toán con, các toán tử có thể là đa trị, nó biến đổi một trạng thái thành nhiều trạng thái nhất.
Trang 30Quy vấn đề về các vấn đề con
con như sau:
Lời giải vấn đề ban đầu nhận được bằng cách liên kết tất cả các lời giải của các vấn đề sơ cấp cấu thành, tức là:
Trang 31Đồ thị VÀ/HOẶC
• Đồ thị VÀ/HOẶC được xây dựng như sau:
o Mỗi bài toán ứng với một đỉnh của đồ thị
o Đối với mỗi toán tử quy một bài toán về một bài toán khác, chẳng hạn R: ab, thì trong đồ thị sẽ có cung gán nhãn R đi từ đỉnh a đến đỉnh b
o Đối với mỗi toán tử quy một bài toán về một số bài toán con, chẳng hạn R: ab,c,d ta đưa vào một đỉnh mới a1, đỉnh này biểu diễn tập các bài toán con {b,c,d} và trong đồ thị sẽ có cung gán nhãn R đi từ đỉnh a đến đỉnh a1
a
b
Đồ thị biểu diễn toán tử R: ab
Đồ thị biểu diễn toán tử R: ab,c,d
a
a1
Trang 32Cây nghiệm
• Cây nghiệm là một cây, trong đó:
o Gốc của cây ứng với các bài toán cần giải
o Tất cả các lá của cây là các đỉnh kết thúc (đỉnh ứng với bài toán sơ cấp)
o Nếu u là đỉnh trong cây, thì các đỉnh con của u là tất cả các đỉnh kề u theo một toán tử nào đó
• Ví dụ: Giả sử chúng ta có không gian trạng thái sau:
Trạng thái ban đầu (bài toán cần giải) là a
Trang 34• Các đỉnh không giải được được xác định đệ quy như sau:
o Các đỉnh không phải là đỉnh kết thúc và không có đỉnh kề, là các đỉnh
không giải được
o Nếu u không phải là đỉnh kết thúc và với mọi toán tử R áp dụng được tại u đều có một đỉnh v kề u theo R không giải được, thì u không giải được
Trang 35Cây nghiệm
Nhận xét:
• Nếu bài toán a giải được thì sẽ có một cây nghiệm gốc a, và ngược lại nếu
có một cây nghiệm gốc a thì a giải được Hiển nhiên là, một bài toán giải
được có thể có nhiều cây nghiệm, mỗi cây nghiệm biểu diễn một cách giải bài toán đó
• Thứ tự giải các bài toán con trong một cây nghiệm như sau Bài toán ứng với đỉnh u chỉ được giải sau khi tất cả các bài toán ứng với các đỉnh con của u
đã được giải
Trang 36Tìm kiếm trên đồ thị VÀ/HOẶC
• Vấn đề tìm kiếm trên đồ thị VÀ/HOẶC là để xác định được đỉnh ứng với bài toán ban đầu là giải được hay không giải được, và nếu nó giải được thì xây dựng một cây nghiệm cho nó Do đó, thay cho điều kiện kết thúc quá trình tìm kiếm trên đồ thị thông thường là đạt tới một đỉnh đích nào đó, ta sẽ sử dụng điều kiện kết thúc là đỉnh đầu giải được hay không giải được
• Thủ tục tìm kiếm theo độ sâu trên đồ thị VÀ/HOẶC để đánh dấu các đỉnh là giải được hoặc không giải được được biểu diễn bởi hàm đệ quy Solvable(u) Hàm
này nhận giá trị true nếu đỉnh u giải được và nhận giá trị false nếu đỉnh u
không giải được
Trang 37Tìm kiếm trên đồ thị VÀ/HOẶC
for mỗi v kề u theo R do
if Solvable(v) = false then {
Trang 38Tìm kiếm trên đồ thị VÀ/HOẶC
• Nếu bài toán ban đầu giải được, thì bằng cách sử dụng hàm Operator
ta sẽ xây dựng được cây nghiệm.
Trang 39ThE END
Reference
Giáo trình Trí Tuệ Nhân Tạo - Dương Minh Trí
Trí Tuệ Nhân Tạo - Võ Huỳnh Trâm & Trần Nhân Bình.