Tải bản đầy đủ (.pdf) (35 trang)

Biểu diễn bài toán, tìm lời giải

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 (283.48 KB, 35 trang )

Chương 2: Biểu diễn bài
toán & tìm lời giải

1


Nội dung
Bài toán
Biểu diễn bài toán
Tìm kiếm

Các chiến lược ñiều khiển
Các ñặc trưng của bài toán
Vấn ñề trong thiết kế CT tìm kiếm

2


Mô hình ứng dụng của TTNT
TTNT = Presentation & Search

Tri Thức
Knowledge
Engineering

Tìm kiếm
Search
Suy luận
Heurictic

3




Bài toán
Giải bài toán bằng cách tìm kiếm, gồm:
Cấu trúc bài toán: tìm ñường ñi trên ñồ thị
Biểu diễn bài toán bằng không gian trạng thái
Giải bài toán = Tìm ra một trạng thái/con ñường trong không gian
trạng thái (trạng thái ñầu -> trạng thái ñích)

Trạng thái
Biểu diễn một bước nào ñó của bài toán
Trong trò chơi, như tic-tac-toe, mỗi bàn cờ có thể là trạng thái
X

Trạng thái

O

O

Trạng thái

Trạng thái
4


Bài toán (tt)
Chuyển trạng thái, luật chuyển
Biểu diễn cho sự có thể của việc chuyển từ trạng thái
nào ñó ñến trạng thái khác.

Ví dụ: trong trò chơi, ñó là luật chơi của game.

O

O
O

5


Bài toán (tt)
Trạng thái ñầu
Trạng thái xuất phát của bài toán
Một bài toán có thể có nhiều trạng thái khởi
ñầu
Ví dụ: game tic-tac-toe, trạng thái rỗng

Trạng ñích
Trạng thái mà bài toán ñã ñược giải
Một bài toán có thể có nhiều trạng thái ñích
Ví dụ: game tic-tac-toe, trạng thái ñích là:

O

X

X
X O
6



Bài toán (tt)
Không gian trạng thái: một hệ thống gồm 4 thành
phần [N,A,S,G]
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 ñề
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
S: Tập các trạng thái bắt ñầu. S khác rỗng.
G: Tập các trạng thái ñích. G Không rỗng
Không gian trạng thái sẽ ñược xây dựng DẦN khi
chương trình chạy
Với bài toán lớn, không ñủ thời gian, không gian ñể
ñặc tả cho từng trạng thái cụ thể, và ñường chuyển cụ
thể
7


Bài toán (tt)
Các vấn ñề khó khăn trong tìm kiếm với các bài
toán TTNT
ðặc tả vấn ñề phức tạp
Không gian tìm kiếm lớn
ðặc tính ñối tượng tìm kiếm thay ñổi
ðáp ứng thời gian thực

Khó khăn về kỹ thuật
Bộ nhớ và tốc ñộ truy xuất

8



Bài toán (tt)
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 tính của trạng thái/nút là
phức tạp & biến ñộng

Database
Không gian tìm kiếm là
một list hay tree
Tìm kiếm một record/nút
Phần tử ñã duyệt qua là
không còn dùng tới
Không gian tìm kiếm là cố
ñịnh trong quá trình tìm
kiếm
Thuộc tính của một
record/nút là cố ñịnh

9


Bài toán: Tic tac toe

ðồ thị có hướng không
lặp lại (directed acyclic
graph - DAG)

10


Bài toán: 8 puzzle
Có khả năng xảy ra
vòng lặp không?

11


Chiến lược ñiều khiển
Sự cần thiết của chiến lược ñiều khiển
ðể giải ñược và giải nhanh bài toán

Các yêu cầu của 1 chiến lược tốt
Tạo ra sự thay ñổi
Có tính hệ thống.
Chọn luật radom -> tốt hơn so với trường hợp ñầu, nhưng quá
trình giải có thể dài hơn
-> Cần xây dựng khả năng duyệt một cách có hệ thống

Hai cách duyệt có hệ thống: Breadth-First_Search –
BrFS và Depth-First-Search (DFS) ñược trình bày sau

12



Breadth-First-Search
Tạo biến Open.
ðưa TT bắt ñầu vào Open.
Lặp: (ñến khi gặp TT ñích) OR (Open trống):
E = RemoveFirst(Open).
Với mỗi luật so trùng ñược với E:
Áp dụng luật ñể sinh TT mới.
Nếu TT mới là TT ñích thì thoát, trả về TT này.
Ngược lại: ðưa TT mới vào CUỐI của Open.

13


Breadth-First-Search (tt)
Procedure Breath_first_search;
BEGIN
Open :=[start]; Close:=[ ];
WHILE (Open <>[ ]) do
BEGIN
remove X which is the leftmost of Open;
IF (X=goal) THEN return (Success)
ELSE BEGIN
generate children of X; Put X to Close;
remove children of X which is in Open or Close;
Put remain children on RIGHT end of Open;
END;
END;
Return (FAIL);
END;


14


Breadth-First-Search (tt)
A
B

C

D
Laàn laëp X

E

H

F

I

G

J

0
1
2
3
4

5
6
7

A
B
C
D
E
F
G

Open

Close

[A ]
[B C D ]
[C D E F ]
[D E F G ]
[E F G ]
[F G H I ]
[G H I J ]
[H I J ]

[]
[A]
[A B]
[A B C ]
[A B C D ]

[A B C D E ]
[A B C D E F ]
[A B C D E F ]
15


Depth-First-Search
Nếu TT ñầu là ñích -> dừng, trả về success
Ngược lại: Lặp ñến khi gặp succes hay gặp error
Phát sinh TT con của TT bắt ñầu, gọi là E. Nếu không
có con nào thì báo error
Gọi DFS với E như TT bắt ñầu
Nếu success ñược trả về thì trả về success. Ngược lại:
tiếp tục lặp

16


Depth-First-Search (tt)
Procedure depth_first_search;
Begin
Open :=[start]; Close:=[ ];
While (Open <>[ ]) do
begin
remove X which is the leftmost of Open;
If (X=goal) the return (Success)
else begin
generate children of X; Put X to Close;
remove children of X which is in Open or Close;
Put remain children on LEFT end of Open;

End;
End;
Return (FAIL);
End;

17


Depth-First-Search (tt)
A
Laàn laëp X Open

B

C

E

H

F

I

D
G

J

0

1
2
3
4
5
6
7
8
9

[A]
A [B C D ]
B [E F C D ]
E [H I F C D ]
H [I F C D ]
I [F C D ]
F [J C D ]
J [C D ]
C [GD]
G

Close
[]
[A]
[A B]
[A B E ]
[A B E H ]
[A B E H I ]
[A B E H I F ]
[A B E H I F J ]

[A B E H I F J C
]
18


Breath First vs Depth First
Breath First: open ñược tổ chức dạng FIFO (Queue)
Depth First: open ñược tổ chức dạng LIFO (Stack)
ðặc tính
Breath First search hiệu quả khi lời giải nằm gần gốc của cây
tìm kiếm, tìm nhiều lời giải, luôn tìm ra nghiệm có số cung
nhỏ nhất
Depth First search hiệu quả khi lời giaỉ nằm sâu trong cây tìm
kiếm và có một phương án chọn hướng ñi chính xác

Kết quả
Breath First search chắc chắn tìm ra kết quả nếu có
Depth First có thể sa lầy vào ñường quá dài

Bùng nổ tổ hợp là khó khăn lớn nhất cho các giải thuật này
19


Depth first search có giới hạn
Depth first search 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 cách giới hạn ñộ sâu của giải thuật
Sâu bao nhiêu thì vừa?
Chiến lược giới hạn:
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
Theo cấu hình resource của máy tính
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
20


BT: Traveling Salesman Problem (TSP)
Mô tả: người bàn hàng có N thành phố phải ñi
qua, chỉ ñi qua 01 lần/Tp. Mỗi cặp TP có con
ñường nối. Tìm con ñường ngắn nhất ñi vòng qua
các thành phố và trở lại Tp ban ñầu.
Số con ñường: (N-1)!
->Bùng nổ tổ hợp -> cần chiến lược mới như sau
Kỹ thuật: Nhánh và Cận (branch-and-bound):
Giữ con ñường ngắn nhất ñang xét.
Dừng việc xem xét 1 con ñường nào ñó nếu nó có trị lớn hơn
con ñường ngắn nhất ñang xét.
21


Heuristic search (informed search)
Là kỹ thuật cải tiến hiệu quả quá trình tìm kiếm
General-purpose:
Người láng giềng gần nhất:
Bằng cách chọn cách tốt nhất tại mỗi bước.
TSP: Tại mổi thành phố, chọn TP kế tiếp gần nhất -> time là
N2 ( cũ là N!)


Special-purpose: hai cách tham gia vào tìm kiếm:
Chính trong các luật.
Hàm heuristic: ñáng giá ưu thế của từng TT cụ thể và
chọn TT mong muốn. Có một trade-off giữa thời gian
tính hàm và thời gian có lợi do hàm mang lại
22


Heuristic search
Ví dụ
Chess: Ưu thế trên ñối thủ
TSP: Tổng khoảng cách hiện tại
8 puzzle: Tổng khoảng cách các miếng sai vị trí

23


Các ñặc trưng của bài toán
Một số khía cạnh cần phân tích khi chọn kỹ thuật
giải BT:
Khả năng phân rã bài toán
Khả năng lờ ñi và quay lui
Khả năng dự ñoán toàn cục
ðích là trạng thái hay con ñường
Lượng tri thức cần ñể giải bài toán
Có cần sự can thiệp của con người trong quá trình giải
không?
24



Các ñặc trưng của bài toán (tt)
Khả năng phân rã bài toán
Phân rã ñược: như BT tính tích phân ký hiệu
Giải bằng cách
Chia nhỏ BT lớn thành các BT con ñộc lập
Giải từng BT nhỏ
Kết hợp thành BT lớn

Không phân rã ñược: BT thế giới các khối (??)

25


×