Tải bản đầy đủ (.ppt) (32 trang)

CHƯƠNG 3: KỸ THUẬT TÌM KIẾM, Lec 3 Giải quyết vấn đề bằng tìm kiếm: tìm kiếm mù

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.1 MB, 32 trang )

CHƯƠNG

3: KỸ
THUẬT TÌM KIẾM:
Lec 3
Giải quyết vấn đề bằng
tìm kiếm: tìm kiếm mù
TTNT. p.1


Nội dung



Biểu diễn bài toán trong Không Gian Trạng Thái
Các chiến lược tìm kiếm
– Tìm kiếm mù
– Tìm kiếm kinh nghiệm (heuristic).



Tìm kiếm trên không gian trạng thái:
– Tìm kiếm theo chiều rộng (breath – first search)
– Tìm kiếm theo chiều sâu (depth – first search)
– Tìm kiếm sâu bằng cách đào sâu nhiều lần (depth – first
search with iterative deepening)



Sử dụng không gian trạng thái để biễu diễn suy luận
với phép tính vị từ: Đồ thị Và/Hoặc (And/Or Graph)


TTNT. p.2


Giải quyết vấn đề bằng tìm kiếm


Khi biểu diễn một vấn đề như là một đồ thị không gian
trạng thái, chúng ta có thể sử dụng lý thuyết đồ thị để
phân tích cấu trúc và độ phức tạp của các vấn đề cũng
như các thủ tục tìm kiếm.
Riverbank1

2

4

3
1

Island 1
5

6

Island 2

7

Riverbank 2


Hệ thống cầu thành phố Konigsberg và biểu diễn đồ thị tương ứng
TTNT. p.3


Bài toán tìm kiếm



Tìm kiếm: là tìm một đối tượng thoả mãn một số đòi hỏi
nào đó, trong một tập hợp rộng lớn các đối tượng
Các kỹ thuật tìm kiếm đuợc áp dụng rộng rãi trong lĩnh
vực TTNT :
– Tìm kiếm mù : không có hiểu biết gì về các đối tượng để
hướng dẫn tìm kiếm
– Tìm kiếm kinh nghiệm (heuristic) : dựa vào kinh nghiệm và
hiểu biết về vấn đề cần giải quyết để xây dựng hàm đánh giá
hướng dẫn sự tìm kiếm.
• Tìm kiếm tối ưu
• Tìm kiếm có đối thủ : tìm kiếm nước đi trong các trò chơi hai người
(cờ vua, cờ tướng,...)

TTNT. p.4


Không gian trạng thái


Không gian tìm kiếm : bao gồm tất cả các đối tượng mà ta cần quan tâm tìm
kiếm (có thể là không gian liên tục (không gian các véc tơ thực n chiều) hoạc
không gian các đối tượng rời rạc.




Toán tử : mô tả hành động hoặc phép biến đổi để đưa một trạng thái tới trạng
thái khác
Ví dụ : Bài toán tìm đường đi : các con đường nối các thành phố sẽ được biểu
diễn bởi các toán tử --->Giải bài toán bằng tìm một dãy các toán tử để đưa
trạng thái ban đầu (điểm xuất phát) về trạng thái kết thúc (điểm đích)



Biểu diễn một bài toán trong không gian trạng thái, cần xác định các yếu tố :
+ Trạng thái ban đầu
+ Một tập hợp các toán tử
+ Một tập hợp các trạng thái kết thúc (trạng thái đích).

Không gian trạng thái có thể được biểu diễn bởi một đồ thị có hướng: mỗi đỉnh
của đồ thị tương đương với một trạng thái, nếu toán tử R biến đổi trạng thái u
thành trạng thái v thì cung (u,v) được gán nhãn R
TTNT. p.5


Một phần KGTT triển khai
trong Tic-tac-toe
Đồ thị có hướng không
lặp (directed acyclic
graph - DAG)

TTNT. p.6



Trò đố 8 ô hay 15 ô
Trạng thái ban đầu






Trò đố
15 ô

Trò đố


11

14

10

6

1

2

9

4


Trạng thái đích
7

1

2

3

4

5

12

13

14

5

13

15

11

15


6

12

8

3

10

8

7

2

8

Cần biểu diễn KGTT
3 cho
5 7bài toán này như thế nào?
6

2

1

1

9


2

8
7

3
4

6

5

TTNT. p.7


KGTT của 8-puzzle sinh ra bằng phép
“di chuyển ô trống”
Có khả năng xảy ra
vòng lặp không?

TTNT. p.8


Một ví dụ của bài toán TSP



Cần biểu diễn KGTT cho bài toán này như thế nào?


TTNT. p.9


KGTT của bài toán TSP
Mỗi cung được
đánh dấu bằng
tổng giá của con
đường từ nút bắt
đầu đến nút hiện
tại.

TTNT. p.10


Cây tìm kiếm


Quá trình tìm kiếm được xem như quá trình xây dựng cây tìm kiếm.



Cây tìm kiếm:

– Gốc = trạng thái ban đầu
– Đỉnh = trạng thái của không gian trạng thái

A

A
D


B

B

D

C

C
I

F

E
G

K

Đồ thị không gian trạng thái

I
G

G

E
G

F

K

Cây tìm kiếm

F

C

K

E
G

F
K

K

K

TTNT. p.11


Các chiến lược tìm kiếm


Tìm kiếm mù: không có sự hướng dẫn nào cho tìm kiếm, 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 đó.




Tìm kiếm kinh nghiệm (heuristic): tìm kiếm dựa vào hiểu biết về các vấn đề,
dựa vào kinh nghiệm, trực giác để đánh giá các trạng thái

TTNT. p.12


Tìm kiếm theo bề rộng
Trạng thái chọn để 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
 Thuật toán:
Procedure Breadth_first_Search;
begin
1. Khởi tạo dsách L chỉ chứa trạng thái ban đầu;
2. Loop do
2.1 if L rỗng then {thông báo tìm kiếm thất bại; stop};
2.2 Loại trạng thái u đầu danh sách L;
2.3 if u là trạng thái kết thúc then
{thông báo tìm kiếm thành công; stop};
2.4 for mỗi trạng thái v kề u do
{Đặt v vào cuối danh sách L;
father(v) ← u};
end;


TTNT. p.13


Đánh giá thuật toán



Danh sách L được xử lý như hàng đợi



Nếu bài toán có nghiệm (tồn tại đường đi từ trạng thái ban đầu tới trạng thái
đích) thì thuật toán sẽ tìm ra nghiệm và đường đi là ngắn nhất.



Nếu bài toán vô nghiệm, không gian trạng thái hữu hạn, thuật toán dừng và
thông báo vô nghiệm.



Gọi b là nhân tố nhánh, nghiệm của bài toán là đường đi có độ dài d, độ phức
tạp O(bd).

TTNT. p.14


Tìm kiếm theo độ sâu
Trạng thái chọn phát triển là trạng thái được sinh ra sau cùng.
 Thuật toán:
Procedure Depth_first_Search;
begin
1. Khởi tạo dsách L chỉ chứa trạng thái ban đầu;
2. Loop do
2.1 if L rỗng then {thông báo tìm kiếm thất bại; stop};
2.2 Loại trạng thái u đầu danh sách L;

2.3 if u là trạng thái kết thúc then
{thông báo tìm kiếm thành công; stop};
2.4 for mỗi trạng thái v kề u do
{Đặt v vào đầu danh sách L;
father(v) ← u};
end;


TTNT. p.15


Đánh giá thuật toán


Nếu bài toán có nghiệm, không gian trạng thái hữu hạn thì thuật toán sẽ tìm ra
nghiệm. Nếu không gian trạng thái vô hạn thì có thể không tìm ra nghiệm 
không nên dùng thuật toán này với bài toán có cây tìm kiếm chứa các nhánh vô
hạn.



Nghiệm bài toán là đường đi có độ dài d, cây tìm kiếm có nhân tố nhánh b, độ
phức tạp trong trương hợp tồi nhất O(bd), độ phức tạp không gian là O(db).

TTNT. p.16


Các chiến lược cho TK-KGTT



TK hướng từ dữ liệu (Data-driven Search)

– Suy diễn tiến (forward chaining)


TK hướng từ mục tiêu (Goal-driven Search)

– Suy diễn lùi (backward chaining)

TTNT. p.17


TK hướng từ dữ liệu


Việc tìm kiếm đi từ
dữ liệu đến mục tiêu



Thích hợp khi:
– Tất cả hoặc một phần dữ liệu được cho từ đầu.
– Có nhiều mục tiêu, nhưng chỉ có một số ít các phép toán có thể
áp dụng cho một trạng thái bài toán.
– Rất khó đưa ra một mục tiêu hoặc giả thuyết ngay lúc đầu.

TTNT. p.18


TK hướng từ mục tiêu



Việc tìm kiếm đi từ
mục tiêu trở về
dữ liệu.



Thích hợp khi:
– Có thể đưa ra mục tiêu hoặc giả thuyết ngay lúc đầu.
– Có nhiều phép toán có thể áp dụng trên 1 trạng thái của bài
toán => sự bùng nổ số lượng các trạng thái.
– Các dữ liệu của bài toán không được cho trước, nhưng hệ
thống phải đạt được trong quá trình tìm kiếm.
TTNT. p.19


Các phương pháp tìm kiếm trên đồ thị
KGTT:
Phát triển từ giải thuật quay lui (back –
tracking):


Tìm kiếm rộng (breath-first search)



Tìm kiếm sâu (depth-first search)




TK sâu bằng cách đào sâu nhiều lần (depth-first search with iterative
deepening)

TTNT. p.20


Tìm kiếm theo chiều rộng
1.
2.
2.
3.
4.
5.
6.

Open = [A]; closed = []
Open = [B,C,D];
closed = [A]
Open = [C,D,E,F];
closed = [B,A]
Open = [D,E,F,G,H];
closed = [C,B,A]
Open = [E,F,G,H,I,J];
closed = [D,C,B,A]
Open = [F,G,H,I,J,K,L];
closed = [E,D,C,B,A]
Open = [G,H,I,J,K,L,M];
L đã có trong open);
closed = [F,E,D,C,B,A]



(vì

TTNT. p.21


Tìm kiếm theo chiều sâu
1.
2.
3.
4.
5.
6.
7.
8.
9.

Open = [A]; closed = []
Open = [B,C,D]; closed = [A]
Open = [E,F,C,D];closed =
[B,A]
Open = [K,L,F,C,D];
closed = [E,B,A]
Open = [S,L,F,C,D];
closed = [K,E,B,A]
Open = [L,F,C,D];
closed = [S,K,E,B,A]
Open = [T,F,C,D];
closed = [L,S,K,E,B,A]

Open = [F,C,D];
closed = [T,L,S,K,E,B,A]


TTNT. p.22


Tìm kiếm Sâu hay Rộng? (1)


Có cần thiết tìm một đường đi ngắn nhất đến mục tiêu hay không?



Sự phân nhánh của không gian trạng thái



Tài nguyên về không gian và thời gian sẵn có



Khoảng cách trung bình của đường dẫn đến trạng thái mục tiêu.



Yêu cầu đưa ra tất cả các lời giải hay chỉ là lời giải tìm được đầu tiên.

TTNT. p.23



Tìm kiếm sâu bằng cách đào sâu nhiều lần
(depth-first iterative deepening)






Độ sâu giới hạn (depth bound): giải

thuật TK sâu sẽ quay lui khi
trạng thái đang xét đạt đến độ sâu giới hạn đã định.
TK Sâu bằng cách đào sâu nhiều lần: TK sâu với độ sâu giới hạn
là 1, nếu thất bại, nó sẽ lặp lại GT TK sâu với độ sâu là
2,… GT tiếp tục cho đến khi tìm được mục tiêu, mỗi lần
lặp lại tăng độ sâu lên 1.
GT này có độ phức tạp về thời gian cùng bậc với TK Rộng và TK Sâu.

TTNT. p.24


The 8-puzzle searched by a production system with
loop detection and depth bound 5

Trò chơi ô đố 8-puzzle

TTNT. p.25



×