GIẢI THUẬT HEURISTIC ỨNG DỤNG GIẢI THUẬT HEURISTIC TRONG BÀI TOÁN NGƯỜI ĐƯA THƯ Thuật giải Heuristic là một sự mở rộng khái niệm thuật toán Giải bài toán theo thuật giải Heuristic thường dễ dàng và nhanh chóng đưa ra kết quả hơn so với giải thuật tối ưu, vì vậy chi phí thấp hơn Thể hiện khá tự nhiên, gần gũi với cách suy nghĩ và hành động của con người
Trang 1Thuật toán nâng cao
GVHD:Nguyễn Bá Tường
Học viên: Nhóm 3
GIẢI THUẬT HEURISTIC &
ỨNG DỤNG GIẢI THUẬT HEURISTIC TRONG BÀI TOÁN NGƯỜI ĐƯA THƯ
Trang 2Nội dung Tiểu luận
Ứng dụng bài toán người đưa thư
2
Hỏi đáp
3
Trang 3Nội dung thuật giải Heuristic
Giới thiệu thuật giải Heuristic
Thể hiện khá tự nhiên, gần gũi với cách suy nghĩ và hành động của con người
Thuật giải Heuristic là một sự
mở rộng khái niệm thuật toán
Thường tìm
được lời giải tốt Heuristic thường dễ dàng và Giải bài toán theo thuật giải
nhanh chóng đưa ra kết quả hơn
so với giải thuật tối ưu, vì vậy chi
phí thấp hơn
Trang 4Nội dung thuật giải Heuristic
Hàm
Heuristic
Đó là các hàm đánh giá thô - một ước lượng
về khả năng dẫn đến lời giải tính từ trạng thái
hiện tại (khoảng cách giữa trạng thái hiện tại
và trạng thái đích)
Chi phí ước lượng h’ = 6 và chi phí tối ưu thực sự h = 4+5 = 9
Trang 5Nội dung thuật giải Heuristic
Nguyên lý thuật giải
Heuristic
khi không gian tìm kiếm lớn,
ta thường tìm cách giới hạn lại không gian tìm kiếm hoặc thực hiện một kiểu dò tìm
đặc biệt dựa vào đặc thù của bài toán để nhanh chóng tìm ra mục tiêu
Lấy tiêu chuẩn tối ưu của bài toán để làm
tiêu chuẩn chọn lựa hành động cho phạm vi cục bộ của từng bước trong
quá trình tìm kiếm lời giải
Thực hiện hành động dựa trên một cấu trúc thứ tự hợp lý của không gian khảo sát nhằm nhanh chóng đạt được
một lời giải tốt
Nguyên lý tham lam
Nguyên lý thứ tự Nguyên lý vét
cạn thông minh
Trang 6Nội dung thuật giải Heuristic
Các phương pháp tìm kiếm Heuristic
Cấu trúc chung của bài toán tìm kiếm
Tìm kiếm chiều rộng
Item 1
Item 2
Item 5
Item 3
Item 4
Tìm kiếm chiều sâu
Tìm kiếm leo đồi Tìm kiếm ưu tiên tối ưu
Trang 7Các phương pháp tìm kiếm Heuristic
Cấu trúc chung của bài toán tìm kiếm
Nhiều vấn đề-bài toán phức tạp đều có dạng "tìm đường đi trong đồ thị"
Xuất phát từ một đỉnh của một đồ thị, tìm đường đi hiệu quả nhất đến một đỉnh nào đó
Đa số các bài đều có thể được biểu diễn dưới dạng đồ thị
Vấn đề chung
Vấn đề chung
Một trạng thái là một đỉnh của đồ thị
Trang 8Các phương pháp tìm kiếm Heuristic
Tìm kiếm chiều sâu(DFS)
Là thuật toán duyệt hoặc tìm kiếm trên một cây
hoặc đồ thị Thuật toán khởi đầu tại gốc
và phát triển xa nhất có thể theo mỗi nhánh
Tìm kiếm chiều sâu bắt đầu từ đỉnh xuất phát, đi
theo cạnh trái, tiếp tục tìm kiếm xong ở cây con
trái mới chuyển sang tìm kiếm ở cây con phải.
Ví dụ: Thứ tự thăm viếng các đỉnh là:
A, B, D, F, E, C, G
Trang 9Các phương pháp tìm kiếm Heuristic
Tìm kiếm chiều rộng(BFS)
Ngược lại với tìm kiếm
theo kiểu chiều sâu,
tìm kiếm chiều rộng
mang hình ảnh của vết
dầu loang
Từ trạng thái ban đầu,
ta xây dựng tập hợp S bao gồm các trạng thái
kế tiếp Ứng với mỗi trạng thái Tk trong tập
S, ta xây dựng tập Sk bao gồm các trạng thái
kế tiếp của Tk rồi lần lượt bổ sung các Sk vào S lặp lại cho đến lúc S có chứa trạng thái kết thúc
Trang 10Các phương pháp tìm kiếm Heuristic
Tìm kiếm Leo Đồi
Định nghĩa
Leo đồi đứng dốc
Leo đồi đứng dốc
Tìm kiếm leo đồi, thực chất chỉ là trường hợp đặc biệt của tìm kiếm theo chiều sâu nhưng không thể quay lui
Là leo đồi nhưng sẽ duyệt tất cả các hướng đi có thể
và chọn đi theo trạng thái
tốt nhất trong số các trạng
thái kế tiếp có thể có
Nếu trạng thái bắt đầu cũng là trạng thái đích thì báo là đã tìm được lời giải Ngược lại, đặt trạng thái hiện hành (Ti) là trạng thái khởi đầu
Tư tưởng
Lặp lại cho đến khi đạt đến trạng thái kết thúc hoặc cho đến khi không tồn tại một trạng thái tiếp theo hợp lệ (Tk) của trạng thái hiện hành
Trang 11Các phương pháp tìm kiếm Heuristic
Tìm kiếm ưu tiên tối ưu
Định nghĩa:Tìm kiếm ưu tiên tối ưu sẽ kết hợp 2 phương pháp tìm kiếm theo chiều rộng và theo chiều sâu là không phải quan tâm đến sự mở rộng của tất cả các nhánh và không bị sa vào các đường dẫn bế tắc
2
3
4
1
Thuật giải AT : là một phương pháp tìm kiếm theo kiểu BFS với độ tốt của nút là giá trị hàm g – tổng chiều dài con đường đã đi từ trạng thái bắt đầu đến trạng thái hiện tại
Thuật giải AKT: Thuật giải AKT mở rộng AT bằng cách sử dụng thêm thông tin ước lượng h’ Độ tốt của một trạng thái f là tổng của hai hàm g
và h’
Thuật giải A*: A* là một phiên bản đặc biệt của AKT áp dụng cho trường hợp đồ thị Thuật giải A* có sử dụng thêm tập hợp CLOSE để lưu trữ những trường hợp đã được xét đến
Trang 12Nội dung thuật giải Heuristic ỨNG DỤNG BÀI TOÁN NGƯỜI ĐƯA THƯ
Phát biểu bài toán
Hạn chế khi sử dụng thuật toán tối ưu
Cài đặt thuật toán
1
2
3
4 Chương trình Demo
Trang 13ỨNG DỤNG BÀI TOÁN NGƯỜI ĐƯA THƯ
Phát biểu bài toán
Mục đích bài toán :
Để tiết kiệm thời gian đi đưa thư trong một địa phương.
Người đưa thư phải đi qua tất cả các điểm cần phát thư rồi trở về
vị trí ban đầu với đường đi ngắn nhất.
Bài toán có thể phát biểu lại như sau: Giả sử có một đồ thị có
trọng số dương, tìm đường đi ngắn nhất qua tất cả các đỉnh của
đồ thị rồi trở về đỉnh ban đầu.
Trang 14ỨNG DỤNG BÀI TOÁN NGƯỜI ĐƯA THƯ
Hạn chế khi sử dụng thuật toán tối
ưu
Đồ thị có n đỉnh, khi đó thuật toán tối ưu cho bài toán này sẽ là
thuật toán tìm đường đi ngắn nhất cho chu trình Haminton Do
đó thuật toán tối ưu sẽ có độ phức tạp là O( n!) và không thể
thực hiện thuật toán.
Vì vậy sẽ sử dụng thuật giải Heuristic cho bài toán này.
Trang 15ỨNG DỤNG BÀI TOÁN NGƯỜI ĐƯA THƯ
Cài đặt thuật toán
Thử việc &
đào tạo
Chương trình được viết trên môi trường Visual C++ 6.0
Công cụ lập trình
Input
Output
Một ma trận vuông trong file “graph.txt “ có dạng như hình bên, hay nhập ma trận bằng tay
Đường đi theo thuật giải Heuristic, và chi phí của đường đi đó
Trang 16ỨNG DỤNG BÀI TOÁN NGƯỜI ĐƯA THƯ
Chương trình Đề Mô
Thử việc &
đào tạo
Trang 17?