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

25 1.7K 8
THUẬT TOÁN NÂNG CAO GIẢI THUẬT HEURISTIC  ỨNG DỤNG GIẢI THUẬT HEURISTIC TRONG BÀI TOÁN NGƯỜI ĐƯA THƯ

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

THUẬT TOÁN NÂNG CAO GIẢI THUẬT HEURISTIC ỨNG DỤNG GIẢI THUẬT HEURISTIC TRONG BÀI TOÁN NGƯỜI ĐƯA THƯ Trong quá trình nghiên cứu giải quyết các vấn đề – bài toán, người ta đã đưa ra những nhận xét như sau: • Có nhiều bài toán cho đến nay vẫn chưa tìm ra một cách giải theo kiểu thuật toán và cũng không biết là có tồn tại thuật toán hay không. • Có nhiều bài toán đã có thuật toán để giải nhưng không chấp nhận được vì thời gian giải theo thuật toán đó quá lớn hoặc các điều kiện cho thuật toán khó đáp ứng. • Có những bài toán được giải theo những cách giải vi phạm thuật toán nhưng vẫn chấp nhận được.

Báo cáo mơn : thuật tốn nâng cao CH2011_TDL&MMT_NHOM HỌC VIỆN CƠNG NGHỆ BƯU CHÍNH VIỄN THƠNG KHOA ĐÀO TẠO QUỐC TẾ & SAU ĐẠI HỌC oo0oo BÁO CÁO: GIẢI THUẬT HEURISTIC & ỨNG DỤNG GIẢI THUẬT HEURISTIC TRONG BÀI TOÁN NGƯỜI ĐƯA THƯ Mơn học: Thuật tốn nâng cao Giáo viên: PGS.TS.Nguyễn Bá Tường Học viên: Nhóm Hà nội – 03/01/2012 Báo cáo mơn : thuật tốn nâng cao CH2011_TDL&MMT_NHOM LỜI NĨI ĐẦU Trong q trình nghiên cứu giải vấn đề – toán, người ta đưa nhận xét sau: •Có nhiều tốn chưa tìm cách giải theo kiểu thuật tốn khơng biết có tồn thuật tốn hay khơng •Có nhiều tốn có thuật tốn để giải khơng chấp nhận thời gian giải theo thuật tốn q lớn điều kiện cho thuật tốn khó đáp ứng •Có tốn giải theo cách giải vi phạm thuật toán chấp nhận Từ nhận định trên, người ta thấy cần phải có đổi cho khái niệm thuật toán Người ta mở rộng hai tiêu chuẩn thuật tốn: tính xác định tính đắn -Việc mở rộng tính xác định thuật tốn thể qua giải thuật đệ quy ngẫu nhiên -Tính đắn thuật tốn khơng cịn bắt buộc số cách giải toán, cách giải gần Trong thực tiễn có nhiều trường hợp người ta chấp nhận cách giải thường cho kết tốt (nhưng lúc tốt) mà phức tạp hiệu Chẳng hạn giải toán thuật tốn tối ưu địi hỏi máy tính thực hiên nhiều năm sẵn lịng chấp nhận giải pháp gần tối ưu mà cần máy tính chạy vài ngày vài Các cách giải chấp nhận khơng hồn tồn đáp ứng đầy đủ tiêu chuẩn thuật toán thường gọi thuật giải Khái niệm mở rộng thuật toán mở cửa cho việc tìm kiếm phương pháp để giải toán đặt Một thuật giải thường đề cập đến sử dụng khoa học trí tuệ nhân tạo giải thuật Heuristic Trong nội dung báo cáo này, vào tìm hiểu giải thuật Heuristic sử dụng giải thuật Heuristic để giải toán người đưa thư Báo cáo mơn : thuật tốn nâng cao CH2011_TDL&MMT_NHOM Mục lục Tài liệu tham khảo 25 Báo cáo môn : thuật toán nâng cao CH2011_TDL&MMT_NHOM NỘI DUNG THUẬT GIẢI HEURISTIC 1.1 Giới thiệu thuật giải Heuristic Thuật giải Heuristic mở rộng khái niệm thuật toán Nó thể cách giải tốn với đặc tính sau: - Thường tìm lời giải tốt (nhưng khơng lời giải tốt nhất) Giải tốn theo thuật giải Heuristic thường dễ dàng nhanh chóng đưa kết so với giải thuật tối ưu, chi phí thấp - Thuật giải Heuristic thường thể tự nhiên, gần gũi với cách suy nghĩ hành động người 1.2 Hàm Heuristic Trong việc xây dựng thuật giải Heuristic, người ta thường dùng hàm Heuristic Đó hàm đánh giá thô - ước lượng khả dẫn đến lời giải tính từ trạng thái (khoảng cách trạng thái trạng thái đích), giá trị hàm phụ thuộc vào trạng thái toán bước giải Nhờ giá trị này, ta chọn cách hành động tương đối hợp lý bước thuật giải Ta quy ước gọi hàm h Đơi lúc ta đề cập đến chi phí tối ưu thực từ trạng thái dẫn đến lời giải Thông thường, giá trị tính tốn (vì tính đồng nghĩa biết đường đến lời giải !) mà ta dùng sở để suy luận mặt lý thuyết mà ! Hàm h, ta quy ước rằng, trả kết số khơng âm Ta quan sát hình sau minh họa chi phí tối ưu thực chi phí ước lượng Hình Chi phí ước lượng h’ = chi phí tối ưu thực h = 4+5 = (đi theo đường 1-3-7) Ví dụ : bạn thành phố xa lạ mà khơng có đồ tay ta muốn vào khu trung tâm? Một cách suy nghĩ đơn giản, nhắm vào hướng tòa cao ốc khu trung tâm! Báo cáo môn : thuật toán nâng cao CH2011_TDL&MMT_NHOM 1.3 Nguyên lý thuật giải Heuristic  Nguyên lý vét cạn thông minh: Trong tốn tìm kiếm đó, 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 thực kiểu dị tìm đặc biệt dựa vào đặc thù toán để nhanh chóng tìm mục tiêu  Ngun lý tham lam (Greedy): Lấy tiêu chuẩn tối ưu (trên phạm vi tồn cục) tốn để làm tiêu chuẩn chọn lựa hành động cho phạm vi cục bước (hay giai đoạn) trình tìm kiếm lời giải  Nguyên lý thứ tự: Thực hành động dựa cấu trúc thứ tự hợp lý khơng gian khảo sát nhằm nhanh chóng đạt lời giải tốt 1.4 Các phương pháp tìm kiếm Heuristic 1.4.1 Cấu trúc chung tốn tìm kiếm Để tiện lợi cho việc trình bày, ta dành chút thời gian để làm rõ "đối tượng" quan tâm mục Một cách chung nhất, nhiều vấn đề-bài tốn phức tạp có dạng "tìm đường đồ thị" hay nói cách hình thức "xuất phát từ đỉnh đồ thị, tìm đường hiệu đến đỉnh đó" Một phát biểu khác thường gặp dạng toán : Cho trước hai trạng thái T TG xây dựng chuỗi trạng thái T 0, T1, T2, , Tn-1, Tn = TG cho : thỏa mãn điều kiện cho trước (thường nhỏ nhất) Trong :  Ti thuộc tập hợp S (gọi không gian trạng thái : bao gồm tất trạng thái có tốn ) Báo cáo mơn : thuật toán nâng cao  CH2011_TDL&MMT_NHOM cost(Ti-1, Ti) chi phí để biến đổi từ trạng thái Ti-1 sang trạng thái Ti Dĩ nhiên, từ trạng thái Ti-1 ta có nhiều cách để biến đổi sang trạng thái T i Khi nói đến biến đổi cụ thể từ Ti-1 sang Ti ta dùng thuật ngữ hướng (với ngụ ý nói lựa chọn) Hình : Mơ hình chung vấn đề-bài tốn phải giải phương pháp tìm kiếm lời giải Khơng gian tìm kiếm tập hợp trạng thái - tập nút đồ thị Chi phí cần thiết để chuyển từ trạng thái T sang trạng thái T k biểu diễn dạng số nằm cung nối hai nút tượng trưng cho hai trạng thái Đa số toán thuộc dạng mà mơ tả biểu diễn dạng đồ thị Trong đó, trạng thái đỉnh đồ thị Tập hợp S bao gồm tất trạng thái tập hợp bao gồm tất đỉnh đồ thị Việc biến đổi từ trạng thái Ti-1 sang trạng thái Ti việc từ đỉnh đại diện cho T i-1 sang đỉnh đại diện cho T i-1 theo cung nối hai đỉnh 1.4.2 Tìm kiếm chiều sâu tìm kiếm chiều rộng 1.1.1.1 Tìm kiếm chiều sâu (Depth-First Search) Trong tìm kiếm theo chiều sâu, trạng thái (đỉnh) hành, ta chọn trạng thái (trong tập trạng thái biến đổi thành từ trạng thái tại) làm trạng thái hành, lúc trạng thái hành trạng thái đích Trong trường hợp trạng thái hành, ta khơng thể biến đổi thành trạng thái ta quay lui (back-tracking) lại trạng thái trước trạng thái hành (trạng thái biến đổi thành trạng thái hành) để chọn đường khác Nếu trạng thái trước mà biến đổi ta quay lui lại trạng thái trước Nếu quay lui đến trạng Báo cáo mơn : thuật tốn nâng cao CH2011_TDL&MMT_NHOM thái khởi đầu mà thất bại kết luận khơng có lời giải Hình ảnh sau minh họa hoạt động tìm kiếm theo chiều sâu Hình : Hình ảnh tìm kiếm chiều sâu Nó lưu ý "mở rộng" trạng thái chọn mà không "mở rộng" trạng thái khác (nút màu trắng hình vẽ) 1.1.1.2 Tìm kiếm chiều rộng (Breath-First Search) 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 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 trạng thái (mà từ trạng thái ban đầu biến đổi thành) Sau đó, ứng với trạng thái Tk tập S, ta xây dựng tập Sk bao gồm trạng thái Tk bổ sung Sk vào S Quá trình lặp lại lúc S có chứa trạng thái kết thúc S khơng thay đổi sau bổ sung tất Sk Báo cáo mơn : thuật tốn nâng cao CH2011_TDL&MMT_NHOM Hình : Hình ảnh tìm kiếm chiều rộng Tại bước, trạng thái mở rộng, không bỏ sót trạng thái So sánh Tính hiệu Tìm kiếm theo chiều sâu  Hiệu lời giải nằm sâu tìm kiếm có phương án chọn hướng xác Tìm kiếm theo chiều rộng    Hiệu chiến lược phụ thuộc vào phương án chọn hướng   Lượng nhớ sử dụng để lưu trữ Phương án hiệu hiệu chiến lược giảm Thuận lợi muốn tìm lời giải Chỉ lưu lại trạng thái chưa xét đến Hiệu lời giải nằm gần gốc tìm kiếm Hiệu chiến lược phụ thuộc vào độ sâu lời giải Lời giải xa gốc hiệu chiến lược giảm Thuận lợi muốn tìm nhiều lời giải Phải lưu tồn trạng thái Báo cáo mơn : thuật tốn nâng cao CH2011_TDL&MMT_NHOM trạng thái Trường hợp xấu Vét cạn toàn Vét cạn toàn Trường hợp tốt Phương án chọn hướng tuyệt đối xác Lời giải xác định cách trực tiếp Vét cạn tồn Tìm kiếm chiều sâu tìm kiếm chiều rộng phương pháp tìm kiếm có hệ thống chắn tìm lời giải Tuy nhiên, chất vét cạn nên với tốn có khơng gian lớn ta dùng hai chiến lược Hơn nữa, hai chiến lược có tính chất "mù qng" chúng khơng ý đến thơng tin (tri thức) trạng thái thời thông tin đích cần đạt tới mối quan hệ chúng Các tri thức vô quan trọng có ý nghĩa để thiết kế thuật giải hiệu mà ta sửa bàn đến 1.4.3 Tìm kiếm leo đồi 1.1.1.3.Leo đồi đơn giản Tìm kiếm leo đồi theo nghĩa, nói chung, thực chất trường hợp đặc biệt tìm kiếm theo chiều sâu khơng thể quay lui Trong tìm kiếm leo đồi, việc lựa chọn trạng thái định dựa hàm Heuristic  Tư tưởng : 1) Nếu trạng thái bắt đầu trạng thái đích báo tìm lời giải Ngược lại, đặt trạng thái hành (Ti) trạng thái khởi đầu (T0) 2) Lặp lại đạt đến trạng thái kết thúc không tồn trạng thái hợp lệ (Tk) trạng thái hành : Đặt Tk trạng thái hợp lệ trạng thái hành Ti Đánh giá trạng thái Tk :   - Nếu trạng thái kết thúc trả giá trị Báo cáo mơn : thuật tốn nâng cao CH2011_TDL&MMT_NHOM - Nếu trạng thái kết thúc tốt trạng thái hành cập nhật thành trạng thái hành - Nếu khơng tốt trạng thái hành tiếp tục vịng lặp 1.1.1.4.Leo đồi dốc đứng Về bản, leo đồi dốc đứng giống leo đồi, khác điểm leo đồi dốc đứng duyệt tất hướng chọn theo trạng thái tốt số trạng thái có (trong leo đồi chọn theo trạng thái tốt trạng thái hành mà tìm thấy)  Tư tưởng 1) Nếu trạng thái bắt đầu trạng thái đích báo tìm lời giải Ngược lại, đặt trạng thái hành (Ti) trạng thái khởi đầu (T0) 2) Lặp lại đạt đến trạng thái kết thúc (T i) không tồn trạng thái (Tk) tốt trạng thái (Ti)  Đặt S tập tất trạng thái có Ti tốt Ti  Xác định Tk max trạng thái tốt tập S  Đặt Ti = Tk max 1.4.4 Tìm kiếm ưu tiên tối ưu (Best-First Search) Ưu điểm tìm kiếm theo chiều sâu khơng phải quan tâm đến mở rộng tất nhánh Ưu điểm tìm kiếm chiều rộng khơng bị sa vào đường dẫn bế tắc (các nhánh cụt) Tìm kiếm ưu tiên tối ưu kết hợp phương pháp cho phép ta theo đường thời điểm, đồng thời "quan sát" hướng khác Nếu đường "có vẻ" khơng triển vọng đường ta "quan sát" ta chuyển sang theo số đường Để tiện lợi ta dùng chữ viết tắt BFS thay cho tên gọi tìm kiếm ưu tiên tối ưu Một cách cụ thể, bước tìm kiếm BFS, ta chọn theo trạng thái có khả cao số trạng thái xét thời điểm (khác với leo đồi dốc đứng chọn trạng thái có khả cao số trạng thái đến từ trạng thái tại) Như vậy, với tiếp cận này, ta ưu tiên vào 10 Báo cáo mơn : thuật tốn nâng cao CH2011_TDL&MMT_NHOM nhánh tìm kiếm có khả (giống tìm kiếm leo đồi dốc đứng), ta không bị lẩn quẩn nhánh sâu vào hướng mà ta phát hướng tệ, đến mức xấu hướng mà ta chưa đi, ta không tiếp hướng mà chọn theo hướng tốt số hướng chưa Đó tư tưởng chủ đạo tìm kiếm BFS Để hiểu tư tưởng Bạn xem ví dụ sau : Hình : Minh họa thuật giải Best-First Search Khởi đầu, có nút (trạng thái) A nên mở rộng tạo nút B,C,D Các số nút giá trị cho biết độ tốt nút Con số nhỏ, nút tốt Do D nút có khả nên mở rộng tiếp sau nút A sinh nút E,F Đến đây, ta lại thấy nút B có khả (trong nút B,C,E,F) nên ta chọn mở rộng nút B tạo nút G H Nhưng lại lần nữa, hai nút G, H đánh giá khả E, ý lại trở E E mở rộng nút sinh từ E I,J Ở bước kế tiếp, J mở rộng có khả Quá trình tiếp tục tìm thấy lời giải Lưu ý tìm kiếm giống với tìm kiếm leo đồi dốc đứng, với ngoại lệ Trong leo đồi, trạng thái chọn tất trạng thái khác bị loại bỏ, không chúng xem xét lại Cách xử lý dứt khoát đặc trưng leo đồi Trong BFS, bước, có di chuyển chọn khác 11 Báo cáo mơn : thuật tốn nâng cao CH2011_TDL&MMT_NHOM giữ lại, để ta trở lại xét sau trạng thái trở nên khả trạng thái lưu trữ Hơn nữa, ta chọn trạng thái tốt mà không quan tâm đến có tốt hay khơng trạng thái trước Điều tương phản với leo đồi leo đồi dừng khơng có trạng thái tốt trạng thái hành  Thuật giải BEST-FIRST SEARCH 1) Đặt OPEN chứa trạng thái khởi đầu 2) Cho đến tìm trạng thái đích khơng cịn nút OPEN, thực :  Chọn trạng thái tốt (Tmax) OPEN (và xóa Tmax khỏi OPEN)  Nếu Tmax trạng thái kết thúc Ngược lại, tạo trạng thái Tk có từ trạng thái Tmax Đối với trạng thái T k thực : - Tính f(Tk); - Thêm Tk vào OPEN  Nhận xét BFS: - Thông tin khứ tương lai Thông thường, phương án tìm kiếm theo kiểu BFS, độ tốt f trạng thái tính dựa theo hai giá trị mà ta gọi là g h’ o h’ ước lượng chi phí từ trạng thái hành trạng thái đích (thơng tin tương lai) o g "chiều dài quãng đường" từ trạng thái ban đầu trạng thái (thông tin khứ) Lưu ý g chi phí thực (khơng phí ước lượng) Để dễ hiểu, bạn quan sát hình sau : 12 Báo cáo mơn : thuật tốn nâng cao CH2011_TDL&MMT_NHOM Hình : Phân biệt khái niệm g h’ Kết hợp g h’ thành f’ (f’ = g + h’) thể ước lượng "tổng chi phí" cho đường từ trạng thái bắt đầu đến trạng thái kết thúc dọc theo đường qua trạng thái hành Để thuận tiện cho thuật giải, ta quy ước g h’ không âm nhỏ nghĩa tốt - BFS đơn giản Tuy vậy, thực tế, tìm kiếm chiều sâu chiều rộng, ta dùng BFS cách trực tiếp Thông thường, người ta thường dùng phiên BFS AT, AKT A* 1.4.4.1.Thuật giải AT Thuật giải AT phương pháp tìm kiếm theo kiểu BFS với độ tốt nút giá trị hàm g – tổng chiều dài đường từ trạng thái bắt đầu đến trạng thái  Thuật giải AT 1) Đặt OPEN chứa trạng thái khởi đầu 2) Cho đến tìm trạng thái đích khơng cịn nút OPEN, thực :  Chọn trạng thái (Tmax) có giá trị g nhỏ OPEN (và xóa Tmax khỏi OPEN) 13 Báo cáo mơn : thuật toán nâng cao CH2011_TDL&MMT_NHOM  Nếu Tmax trạng thái kết thúc  Ngược lại, tạo trạng thái T k có từ trạng thái Tmax Đối với trạng thái Tk thực : - g(Tk) = g(Tmax) + cost(Tmax, Tk); - Thêm Tk vào OPEN  Vì sử dụng hàm g (mà không dùng hàm ước lượng h’) để đánh giá độ tốt trạng thái nên ta xem AT thuật toán 1.4.4.2.Thuật giải AKT Thuật giải AKT mở rộng AT cách sử dụng thêm thông tin ước lượng h’ Độ tốt trạng thái f tổng hai hàm g h’  Thuật giải AKT 1) Đặt OPEN chứa trạng thái khởi đầu 2) Cho đến tìm trạng thái đích khơng nút OPEN, thực :  Chọn trạng thái (Tmax) có giá trị f nhỏ OPEN (và xóa Tmax khỏi OPEN)  Nếu Tmax trạng thái kết thúc  Ngược lại, tạo trạng thái T k có từ trạng thái Tmax Đối với trạng thái Tk thực : - g(Tk) = g(Tmax) + cost(Tmax, Tk); - Tính h’(Tk) - f(Tk) = g(Tk) + h’(Tk); - Thêm Tk vào OPEN 1.4.4.3.Thuật giải A* 14 Báo cáo mơn : thuật tốn nâng cao CH2011_TDL&MMT_NHOM A* phiên đặc biệt 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ữ trường hợp xét đến A * mở rộng AKT cách bổ sung cách giải trường hợp "mở" nút mà nút có sẵn OPEN CLOSE Khi xét đến trạng thái T i bên cạnh việc lưu trữ giá trị g, h’, f’ để phản ánh độ tốt trạng thái đó, A * cịn lưu trữ thêm hai thông số sau : - Trạng thái cha trạng thái Ti (ký hiệu Cha(Ti) : cho biết trạng thái dẫn đến trạng thái Ti Trong trường hợp có nhiều trạng thái dẫn đến T i chọn Cha(Ti) cho chi phí từ trạng thái khởi đầu đến Ti thấp nhất, nghĩa : g(Ti) = g(Tcha) + cost(Tcha, Ti) thấp - Danh sách trạng thái T i : danh sách lưu trữ trạng thái Tk Ti cho chi phí đến T k thông qua Ti từ trạng thái ban đầu thấp Thực chất danh sách tính từ thuộc tính Cha trạng thái lưu trữ Tuy nhiên, việc tính tốn nhiều thời gian (khi tập OPEN, CLOSE mở rộng) nên người ta thường lưu trữ danh sách riêng  Thuật giải A* 1) Đặt OPEN chứa T0 Đặt g(T0) = 0, h’(T0) = 0, f’(T0) = Đặt CLOSE tập hợp rỗng (Lưu ý: Tập OPEN lưu trữ trạng thái "sẽ xem xét đến sau" tập CLOSE lưu trữ trạng thái "đã xét đến rồi".) 2) Lặp lại bước sau gặp điều kiện dừng  Nếu OPEN rỗng : tốn vơ nghiệm, thoát  Ngược lại, chọn Tmax OPEN cho f’(Tmax) nhỏ - Lấy Tmax khỏi OPEN đưa Tmax vào CLOSE - Nếu Tmax TG thơng báo lời giải Tmax  Nếu Tmax TG : tạo danh sách tất trạng thái Tmax Gọi trạng thái Tk Với Tk, làm bước sau : 15 Báo cáo môn : thuật tốn nâng cao CH2011_TDL&MMT_NHOM - (a1) Tính g(Tk) = g(Tmax) + cost(Tmax, Tk) - (a2) Nếu tồn Tk’ OPEN trùng với Tk : Nếu g(Tk) < g(Tk’) : Đặt g(Tk’) = g(Tk) Tính lại f’(Tk’) Đặt Cha(Tk’) = Tmax - (a3) Nếu tồn Tk’ CLOSE trùng với Tk Nếu g(Tk) < g(Tk’) Đặt g(Tk’) = g(Tk) Tính lại f’(Tk’) Đặt Cha(Tk’) = Tmax Lan truyền thay đổi giá trị g, f’ cho tất trạng thái T i (ở tất cấp) lưu trữ CLOSE OPEN - (a4) Nếu Tk chưa xuất OPEN lẫn CLOSE : Thêm Tk vào OPEN Tính : f' (Tk) = g(Tk)+h’(Tk)  Một số lưu ý thuật tốn A* - - Có số điểm cần giải thích thuật giải Đầu tiên việc sau tìm thấy trạng thái đích TG, để xây dựng lại "con đường" từ T0 đến TG Rất đơn giản, bạn cần lần ngược theo thuộc tính Cha trạng thái lưu trữ CLOSE đạt đến T0 Đó "con đường" tối ưu từ T G đến T0 (hay nói cách khác từ T0 đến TG) Điểm thứ hai thao tác cập nhật lại g(T k’) , f’(Tk’) Cha(Tk’) bước (a2) (a3) Các thao tác thể tư tưởng : "luôn chọn đường tối ưu nhất" Như biết, giá trị g(T k’) nhằm lưu trữ chi phí tối ưu thực tính từ T0 đến Tk’ 16 Báo cáo môn : thuật tốn nâng cao CH2011_TDL&MMT_NHOM Do đó, phát thấy "con đường" khác tốt thông qua T k (có chi phí nhỏ hơn) đường lưu trữ ta phải chọn "con đường" tốt Trường hợp (a3) phức tạp Vì từ T k’ nằm tập CLOSE nên từ Tk’ ta lưu trữ trạng thái xuất phát từ T k’ Nhưng g(Tk’) thay đổi dẫn đến giá trị g trạng thái phải thay đổi theo Và đến lượt trạng thái lại có các trạng thái chúng nhánh kết thúc với trạng thái OPEN (nghĩa khơng có trạng thái nữa) Để thực trình cập nhật này, ta thực trình duyệt theo chiều sâu với điểm khởi đầu T k’ Duyệt đến đâu, ta cập nhật lại g trạng thái đến ( dùng cơng thức g(T) = g(Cha(T)) +cost(Cha(T), T) ) giá trị f’ trạng thái thay đổi theo 17 Báo cáo mơn : thuật tốn nâng cao CH2011_TDL&MMT_NHOM ỨNG DỤNG BÀI TOÁN NGƯỜI ĐƯA THƯ 2.1 Phát biểu tốn Mục đích tốn : để tiết kiệm thời gian đưa thư địa phương Người đưa thư phải qua tất điểm cần phát thư trở vị trí ban đầu với đường ngắn Bài tốn phát biểu lại sau: Giả sử có đồ thị có trọng số dương, tìm đường ngắn qua tất đỉnh đồ thị trở đỉnh ban đầu 2.2 Hạn chế sử dụng thuật toán tối ưu Đồ thị có n đỉnh, thuật tốn tối ưu cho toán thuật toán tìm đường ngắn cho chu trình Haminton Do thuật tốn tối ưu có độ phức tạp O( n!) khơng thể thực thuật tốn Vì cần tìm thuật giải Heuristic cho toán 2.3 Ứng dụng thuật giải cho toán người đưa thư - Theo kinh nghiệm người thực tế ta đoạn đường ngắn cuối ta có hành trình ngắn sử dụng nguyên lý tham lam Thuật giải toán sử dụng nguyên lý tham lam: 18 Báo cáo mơn : thuật tốn nâng cao CH2011_TDL&MMT_NHOM - Ví dụ thuật giải trên: Với đồ thị trọng số dương hình bên Nếu ta xuất phát từ đỉnh sổ 1, đỉnh phải đến ( cạnh 12 có trọng số nhỏ so với đỉnh chưa đến 1), ta đến đỉnh theo thứ tự 5, 3, 4, trở Như đường ngắn theo giải thuật trình bày tìm là: + + + 1+ = 14 2.4 Cài đặt thuật tốn - Ta có dạng ma trận hóa đồ thị ví dụ mục 2.3 , hình sau: - Chương trình viết mơi trường visual C++ 6.0 - Input: ma trận vuông file “graph.txt “ có dạng hình bên, hay nhập ma trận tay - Output: đường theo thuật giải Heuristic, chi phí đường - Tổ chức liệu chương trình: + n: biến cho biết số đỉnh đồ thị 19 Báo cáo mơn : thuật tốn nâng cao CH2011_TDL&MMT_NHOM + G: dùng để trỏ tới giá trị ma trận + v[Gr.n + 1]: dùng để lưu trữ đường theo thuật giải Heuristic + Gr.G[ i][j ]: đồ thị dạng ma trận + x: đỉnh xuất phát + initGraph(Graph &Gr): Hàm dùng để khởi tạo đồ thị từ cấu trúc tổ chức + ReadGraph(Graph &Gr): dùng để đọc đồ thị từ file txt + inputHandle( Graph &Gr): dùng để nhập đồ thị tay + outputGraph(Graph Gr): dùng để xuất đồ thị nhập hình + testGraph(int a, int* v, Graph Gr): Kiểm tra điểm duyệt có trùng với điểm duyệt ma trận không Được gọi hàm topNear(…) + topNear(int a, Graph Gr, int* v) : Hàm tìm đỉnh theo thuật giải Heuristic Được gọi lại hàm FindWay(…) 20 Báo cáo mơn : thuật tốn nâng cao CH2011_TDL&MMT_NHOM + FindWay(int x, Graph Gr, int* v): Hàm tìm đường theo giải thuật Heuristic Dựa theo cách tìm đường có trọng số nhỏ để bước 2.5 Giao diện chương trình 2.5.1 Chương trình dịng lệnh Khi thực thi, chương trình yêu cầu chọn nhập ma trận đồ thị tay hay file “graph.txt” Ví dụ hình chọn nhập ma trận file txt Ta nhập tiếp đỉnh bắt đầu (ở nhập 1), chương trình cho đáp án cho ví dụ trên: Đường là: – – – – – Chi phí cho đường theo giải thuật Heuristic là: 14 21 Báo cáo mơn : thuật tốn nâng cao CH2011_TDL&MMT_NHOM Nếu chọn cách nhập ma trận tay ta phải nhập giá trị ma trận vào - Nhấn ESC để khỏi chương trình, Phím để tiếp tục chương trình với cách duyệt từ đỉnh khác 2.5.2 Chương trình đồ họa - Ý tưởng thuật toán(chỉ áp dụng cho đồ thị đầy đủ) : • Tại địa điểm ban đầu, ta chọn địa điểm để đến, cho đoạn đường ngắn so với địa điểm khác • Khi đến địa điểm tiếp theo, chọn địa điểm tương tự trên., ý không chọn lại địa điểm qua Lặp lại q trình đến khơng cịn địa điển để Thuật toán kết thúc - Cấu trúc chương trình: • Hàm quan trọng hàm Solve, đối số hàm danh sách MyPoint chứa tọa độ địa điểm nhập vào , hàm trả danh sách thứ tự địa điểm đến tính tốn • Hàn Solvo: list Solve(const list& ls) { list lsResult,lsSource;/*hàm lsResult Lưu kết toán*/ lsSource = ls; list::iterator _it,it; it=lsSource.begin(); MyPoint pt= *ls.begin(); lsResult.push_back(pt);/*đưa địa điểm vào danh sách*/ lsSource.erase(it);/*xóa vị trí ban đầu khỏi danh sách, cịn lại danh sách điểm chưa qua*/ while(lsSource.empty()==0) /*lặp lại đến khơng cịn địa điểm để đi.*/ { float dMin; 22 Báo cáo mơn : thuật tốn nâng cao CH2011_TDL&MMT_NHOM _it=it=lsSource.begin(); dMin=GetDistancePointToPoint(pt,*_it); it++; for(;it!=lsSource.end();it++) { float d=GetDistancePointToPoint(pt,*it); if(d

Ngày đăng: 29/06/2014, 22:06

Từ khóa liên quan

Mục lục

  • 1. NỘI DUNG THUẬT GIẢI HEURISTIC

  • 1.1. Giới thiệu thuật giải Heuristic

  • 1.2. Hàm Heuristic

  • 1.3. Nguyên lý thuật giải Heuristic

  • Nguyên lý vét cạn thông minh:

  • Nguyên lý tham lam (Greedy):

  • Nguyên lý thứ tự:

  • 1.4. Các phương pháp tìm kiếm Heuristic

  • 1.4.1. Cấu trúc chung của bài toán tìm kiếm

  • 1.4.2. Tìm kiếm chiều sâu và tìm kiếm chiều rộng

  • 1.4.3. Tìm kiếm leo đồi

  • 1.4.4. Tìm kiếm ưu tiên tối ưu (Best-First Search) 

  • 1.4.4.1. Thuật giải AT

  • 1.4.4.2. Thuật giải AKT

  • 1.4.4.3. Thuật giải A*

  • 2. ỨNG DỤNG BÀI TOÁN NGƯỜI ĐƯA THƯ

  • 2.1. Phát biểu bài toán

  • 2.2. Hạn chế khi sử dụng thuật toán tối ưu

  • 2.3. Ứng dụng thuật giải cho bài toán người đưa thư

  • 2.4. Cài đặt thuật toán

Tài liệu cùng người dùng

Tài liệu liên quan