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

GIẢI THUẬT HEURISTIC ỨNG DỤNG GIẢI THUẬT HEURISTIC TRONG BÀI TOÁN NGƯỜI ĐƯA THƯ

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.18 MB, 17 trang )

Thuậ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Ư
Nội dung Tiểu luận
Ứng dụng bài toán người đưa thư2
Hỏi đáp3
Nộ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
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
Nộ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
Nộ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
Nộ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
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
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
Một trạng thái là một đỉnh của đồ thị
Cá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
Cá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
Các phương pháp
tìm kiếm Heuristic

Tìm kiếm Leo Đồi

Định nghĩa
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 (T
i
) 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
Cá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
2
3
3
4
4
1
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
Nộ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
Ứ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.
Ứ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.
Ứ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 đó
ỨNG DỤNG BÀI TOÁN NGƯỜI ĐƯA THƯ

Chương trình Đề Mô
Thử
việc &
đào tạo
?

×