Biểu diễn bài toán, tìm lời giải Biểu diễn bài toán, tìm lời giải Biểu diễn bài toán, tìm lời giải Biểu diễn bài toán, tìm lời giải Biểu diễn bài toán, tìm lời giải Biểu diễn bài toán, tìm lời giải Biểu diễn bài toán, tìm lời giải Biểu diễn bài toán, tìm lời giải Biểu diễn bài toán, tìm lời giải Biểu diễn bài toán, tìm lời giải Biểu diễn bài toán, tìm lời giải Biểu diễn bài toán, tìm lời giải Biểu diễn bài toán, tìm lời giải
Trang 1Ch ươ ng 2: Bi ể u di ễ n bài
toán & tìm l ờ i gi ả i
Trang 2N ộ 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
Trang 4Bà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
Trang 5Bà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
Trang 6Bà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
X
X O
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à:
Trang 8Bà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
Trang 9Bà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
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
Trang 10Bài toán: Tic tac toe
ðồ thị có hướng không
lặp lại (directed acyclic
graph - DAG)
Trang 11Bài toán: 8 puzzle
Có khả năng xảy ra vòng lặp không?
Trang 12Chi ế 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
Trang 13Tạ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.
Trang 14remove 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;
Trang 15Breadth-First-Search (tt)
[ ] [A]
[A B]
[A B C ] [A B C D ] [A B C D E ]
[A ] [B C D ] [C D E F ] [D E F G ] [E F G ] [F G H I ]
A B C D E
0 1 2 3 4 5
Close Open
X Lần lặp
A
Trang 16Nế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
Trang 17remove 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;
Trang 18Depth-First-Search (tt)
[ ] [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 C D ] [E F C D ] [H I F C D ] [I F C D ] [F C D ] [J C D ] [C D ]
A B E H I F J
0 1 2 3 4 5 6 7
Close Open
X Lần lặp
A
Trang 19Breath 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ó
Trang 20Depth 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
Trang 21BT: 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.
Trang 22Heuristic 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à
Trang 23Heuristic 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í
Trang 24Cá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
Trang 25Các ñặ c tr ư ng c ủ a bài toán (tt)
Khả năng phân rã bài toán
Trang 26Các ñặ c tr ư ng c ủ a bài toán (tt)
Các bước giải có thể lờ ñi hay quay lui
Có thể lờ ñi : như BT chứng minh ñịnh lý
Vì: ñịnh lý vẫn ñúng sau một vài bước áp dụng các luật
Có thể quay lui: như BT 8-puzzle
Vì: có thể di chuyển theo hướng ngược lại ñể về TT
trước
Không thể quay lui: như BT chơi cờ
Vì: game over!
Trang 27Không thể quay lui:
Dùng các chiến lược phức tạp hơn vì mổi khi ra quyết ñịnh thì
ñó là quyết ñịnh cuối cùng.
Trang 28Các đặ c tr ư ng c ủ a bài tốn (tt)
Khả năng dự đốn của bài tốn:
Cĩ thể dự đốn được: như BT 8 puzzle
-> cĩ thể đề ra 1 chuổi nước đi và tự tin vào kết qua sẽ xãy ra
-> Cĩ thể quay lui được
Khơng thể dự đốn được: như các game cĩ đối kháng
Cần theo đuổi nhiều kế hoạch
Cĩ chiến lược/đánh giá để chọn kế hoạch tốt
Trang 29Các ñặ c tr ư ng c ủ a bài toán (tt)
Lời giải là tuyệt ñối hay tương ñối
Tuyệt ñối (best-path) : như bài toán TSP
Tính toán khó hơn (tổng quát)
Cần GT tìm toàn diện hơn
Tương ñối (any-path): như bài toán suy luận ñời
thường (xem sau)
Có thể dùng heuristic ñể giải trong thời gian hợp lý
Trang 30Các ñặ c tr ư ng c ủ a bài toán (tt)
Lời giải là trạng thái hay con ñường
Trạng thái: như bài toán tìm ra cách hiểu phù hợp cho
câu Ví dụ:
“The bank president ate a dish of pasta salad with the fork.”
Từng từ như: bank, president, … có thể ñược hiểu theo
Trang 31Các ñặ c tr ư ng c ủ a bài toán (tt)
Vai trò của tri thức là gì?
Cần ít tri thức:
Như bài toán: “chơi cờ”
Tri thức = luật ñể di chuyển hợp lệ, cơ chế ñiều khiển, chiến lược ñiều khiển ñể tăng tốc tìm kiếm
Cần nhiều tri thức
Như bài toán: Hiểu câu chuyện trên tạp chí
Tri thức: nhiều, cả những cái ñã ghi tường minh và cả
Trang 32V ấ n ñề trong thi ế t k ế CT tìm ki ế m
Sự tìm kiếm
Tìm kiếm ~ duyệt cây, từ TT bắt ñầu -> TT ñích
Cả cây tìm kiếm thường không ñược xây dựng sẵn
Cấu trúc ñồ thị thường thay thế cho cây trong biểu diễn KGTT
Các vấn ñề
Xác ñịnh hướng tìm (forward hay backward reasoning)
Cách lựa chọn luật ñể áp dụng (matching)
Cách biểu diễn NODE của quá trình tìm
Các NODE trong ñồ thị có thể ñược phát sinh nhiều
lần, và có thể ñã ñược xem xét trước ñó trong quá trình
Trang 33V ấ n ñề trong thi ế t k ế CT …
Giải thuật kiểm tra NODE lặp lại (DFS):
Xem xét tập NODE ñã tạo ra, ñể xem NODE mới ñã có chưa
Nếu chưa thì thêm NODE mới vào ñồ thị
Trang 34BÀI TP 1
Trang 35BÀI TP 2