1. Trang chủ
  2. » Luận Văn - Báo Cáo

Ứng Dụng Thuật Toán Tìm Kiếm Vào Bài Toán Rót Nước.docx

29 20 0

Đ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

TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI KHOA CÔNG NGHỆ THÔNG TIN ===== o0o ===== BÀI TẬP LỚN MÔN TRÍ TUỆ NHÂN TẠO Đề tài Ứng dụng thuật toán tìm kiếm vào bài toán rót nước Hà Nội 8/2023 LỜI MỞ ĐẦU Để hoàn t[.]

TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI KHOA CÔNG NGHỆ THƠNG TIN ===== o0o ===== BÀI TẬP LỚN MƠN: TRÍ TUỆ NHÂN TẠO Đề tài: Ứng dụng thuật tốn tìm kiếm vào tốn rót nước Hà Nội - 8/2023 LỜI MỞ ĐẦU Để hoàn thành báo cáo này, chúng em nhận nhiều hướng dẫn từ phía thầy khoa Sự giảng dạy chu đáo, tận tình giúp đỡ nhiệt tình từ thầy giúp chúng em hiểu nhiều vấn đề hoàn thành báo cáo tốt Chúng em tỏ lòng biết ơn sâu sắc với cô Lê Thị Thuỷ, người cô tận tình hướng dẫn giúp đỡ, bảo nhóm em suốt q trình nghiên cứu đề tài hoàn thành báo cáo Sau khoảng thời gian cô Lê Thị Thủy đưa đề tài, chúng em nỗ lực cố gắng việc tìm hiểu đề tài Các bạn nhóm cộng chăm giúp đỡ lẫn báo cáo hoàn hảo đến thời điểm Một lần nhóm em xin cảm ơn giảng viên Lê Thị Thủy, bạn lớp tập thể nhóm làm việc hoàn thành tốt báo cáo Chúng em xin chân thành cảm ơn! MỤC LỤC LỜI MỞ ĐẦU DANH MỤC HÌNH ẢNH DANH MỤC BẢNG BIỂU CHƯƠNG I: KHÔNG GIAN TRẠNG THÁI VÀ CÁC THUẬT TỐN TÌM KIẾM MÙ 1.1 Khơng gian trạng thái .6 1.2 Các thuật tốn tìm kiếm mù .6 1.2.1 Thuật tốn tìm kiếm theo chiều sâu (Depth First Search) .6 1.2.2 Thuật toán tìm kiếm theo chiều rộng (Breadth first search) 1.3 Thuật tốn tìm kiếm Heuristic .11 1.3.1 Thuật toán AT 11 1.3.2 Thuật giải AKT 13 1.3.3 Thuật giải A* .16 PHẦN II: XÂY DỰNG CHƯƠNG TRÌNH 23 2.1 Mơ tả toán 23 2.1.1 Không gian trạng thái .23 2.1.2 Lời giải 24 2.2 Cài đặt thuật toán 25 TÀI LIỆU THAM KHẢO 29 DANH MỤC HÌNH ẢNH Hình 1: Lưu trạng thái đỉnh 25 Hình 2: Khởi tạo biến cần thiết 26 Hình 3: Thuật tốn DFS 26 Hình 4: Tìm đường 27 Hình 5: Chạy thử chương trình 27 DANH MỤC BẢNG BIỂU Bảng 1: Ví dụ thuật giải tìm kiếm theo chiều sâu Bảng 2: Ví dụ thuật giải tìm kiếm theo chiều rộng 10 Bảng 3: Ví dụ thuật giải AT 13 Bảng 4: So sánh thuật toán DFS BFS 22 Biểu đồ 1: Ví dụ thuật tốn tìm kiếm theo chiều sâu Biểu đồ 2: Ví dụ thuật tốn tìm kiếm theo chiều rộng 10 Biểu đồ 3: Ví dụ thuật tốn AT 12 Biểu đồ 4: Ví dụ thuật tốn AKT 16 Biểu đồ 5: Ví dụ thuật tốn A* 19 Biều đồ 1: Khơng gian trạng thái tốn người lái đị 24 Biều đồ 2: Đồ thị tốn người lái đị 25 CHƯƠNG I: KHÔNG GIAN TRẠNG THÁI VÀ CÁC THUẬT TỐN TÌM KIẾM MÙ 1.1 Khơng gian trạng thái Khơng gian trạng thái tập hợp tất trạng thái toán ứng với cấu trúc biểu diễn Một khơng gian trạng thái (state space) [N, A, S, GD] đó: N (node) nút hay trạng thái đồ thị A (arc) tập cung (hay liên kết) nút S (solution) tập chứa trạng thái đích tốn ( S c N ^ S !0) Các trạng thái GD (Goal Description) mơ tả theo hai đặc tính: + Đặc tính đo lường trạng thái gặp trình tìm kiếm VD: Tictac-toe, 8-puzzle, + Đặc tính đường hình thành q trình tìm kiếm VD: TSP Đường lời giải (solution path) đường qua đồ thị từ nút thuộc S đến nút thuộc GD 1.2 Các thuật tốn tìm kiếm mù 1.2.1 Thuật tốn tìm kiếm theo chiều sâu (Depth First Search) a, Tư tưởng chiến lược tìm kiếm theo chiều sâu Từ đỉnh xuất phát duyệt đỉnh kề Các đỉnh đồ thị duyệt theo nhánh đến nút Nếu chưa tìm thấy đỉnh TG quay lui tới đỉnh để sang nhánh khác Việc tìm kiếm kết thúc tìm thấy đỉnh TG hết đỉnh b, Thuật tốn tìm kiếm theo chiều sâu Lưu trữ: Sử dụng hai danh sách DONG MO đó: DONG: Chứa đỉnh xét, hoạt động theo kiểu FIFO (hàng đợi) MO: chứa đỉnh xét , hoạt động theo kiểu LIFO (ngăn xếp) MO = Ø; MO = MO ∪ {T0} while (MO != Ø) { n = get(MO) // lấy đỉnh đầu danh sach MO if (n==TG) // n trạng thái kết thúc return TRUE // tìm kiếm thành cơng, dừng DONG = DONG ∪ {n} //đánh dấu n xét for đỉnh kề v n if (v chưa đc xét) //v chưa DONG MO = MO ∪ {v} //đưa v vào đầu DS MO father(v)=n// lưu lại vết đường từ n đến v } c, Ví dụ thuật tốn theo chiều sâu Cho đồ thị hình vẽ sau: Biểu đồ 1: Ví dụ thuật tốn tìm kiếm theo chiều sâu Đỉnh đầu T0=A, TG = {R} Tìm đường p từ To đến TG phương pháp tìm kiếm theo chiều sâu? n B(n) MO DONG A A B, C, D B, C, D A B M, N M, N, C, D A,B M X, Y X, Y, N, C, D A,B,M X Ø Y, N, C, D A,B,M,X Y R, S R, S, N, C, D A,B,M,X,Y R đích dừng Bảng 1: Ví dụ thuật giải tìm kiếm theo chiều sâu Xây dựng đường có hành trình: p = A -> B -> M -> Y -> R Nhận xét: + Nếu đồ thị G tồn đường từ T0 đến đỉnh TG  Goal hàm DFS Goal hàm DFS dừng lại cho đường p có độ dài khơng ngắn + Với DFS đỉnh duyệt theo nhánh (theo chiều sâu) + Thuật tốn DFS có độ phức tạp O(bd) với b bậc d chiều sâu Tuy nhiên trường hợp xấu O(bd) 1.2.2 Thuật tốn tìm kiếm theo chiều rộng (Breadth first search) a.Tư tưởng chiến lược tìm kiếm theo chiều rộng • Từ đỉnh xuất phát duyệt tất đỉnh kề • Làm tương tự với đỉnh vừa duyệt • Q trình duyệt kết thúc tìm thấy đỉnh TG hết đỉnh để duyệt b.Thuật tốn tìm kiếm theo chiều rộng Lưu trữ: Sử dụng hai danh sách DONG MO hoạt động theo kiểu FIFO (hàng đợi) DONG: Chứa đỉnh xét MO: Chứa đỉnh xét MO = Ø; MO = MO ∪ {T0} while (MO != Ø) { n = get(MO) // lấy đỉnh đầu danh sach MO if (n==TG) // n trạng thái kết thúc return TRUE // tìm kiếm thành công, dừng DONG = DONG ∪ {n} //đánh dấu n xét for đỉnh kề v n if (v chưa đc xét) //v chưa DONG MO = MO ∪ {v} //đưa v vào cuối DS MO father(v)=n// lưu lại vết đường từ n đến v } Chúng ta có số nhận xét sau thuật tốn tìm kiếm theo chiều rộng: Trong tìm kiếm theo chiều rộng, trạng thái sinh trước phát triển trước, danh sách MỞ xử lý hàng đợi Trong bước 2, ta cần kiểm tra xem n có trạng thái kết thúc hay khơng Nói chung trạng thái kết thúc xác định số điều kiện đó, ta cần kiểm tra xem n có thỏa mãn điều kiện hay khơng Nếu tốn có nghiệm (tồn đường từ trạng thái ban đầu tới trạng thái đích), thuật tốn tìm kiếm theo chiều rộng tìm nghiệm, đồng thời đường tìm ngắn Trong trường hợp tốn vơ nghiệm khơng gian trạng thái hữu hạn, thuật toán dừng cho thơng báo vơ nghiệm Đánh giá tìm kiếm theo chiều rộng: Bây ta đánh giá thời gian nhớ mà tìm kiếm theo chiều rộng địi hỏi Giả sử, trạng thái phát triển sinh b trạng thái kề Ta gọi b nhân tố nhánh Giả sử rằng, nghiệm tốn đường có độ dài d Bởi nhiều nghiệm tìm đỉnh mức d tìm kiếm, số đỉnh cần xem xét để tìm nghiệm là: + b + b2 +… + bd-1 + k Trong k 1, 2, …, bd Do số lớn đỉnh cần xem xét là: + b + b2 +… + bd-1 Như vậy, độ phức tạp thời gian thuật toán tìm kiếm theo chiều rộng O(bd) Độ phức tạp khơng gian O(bd), ta cần lưu vào danh sách MỞ tất đỉnh tìm kiếm mức d, số đỉnh bd C, Ví dụ thuật tốn tìm kiếm theo chiều rộng: Cho đồ thị hình vẽ sau: Biểu đồ 2: Ví dụ thuật tốn tìm kiếm theo chiều rộng Đỉnh đầu T0=A, TG= {N} Tìm đường p từ To đến TG phương pháp tìm kiếm theo chiều rộng? n B(n) MO DONG A A B, C, D B, C, D A B M, N C, D, M, N A,B C L D, M, N, L A,B,C D O, P M, N, L, O, P A,B,C,D M X, Y N, L, O, P, X, Y A,B,C,D,M N đích dừng Bảng 2: Ví dụ thuật giải tìm kiếm theo chiều rộng Xây dựng đường có hành trình: p = A -> B -> N Nhận xét: + Nếu đồ thị tồn đường từ T0 đến đỉnh TG -> Goal hàm BFS dừng lại cho đường p có độ dài ngắn + Với BFS đỉnh duyệt theo mức (theo chiều rộng) + Thuật toán BFS có độ phức tạp O(bd) với b bậc d chiều sâu C, Ví dụ thuật tốn AKT Chọn hàm f(n) = g(n) + h(n) Trong đó: h(n) thơng tin liên quan đến số đĩa cọc g(n) số lần chuyển đĩa từ T0 đến trạng thái n ▪ ▪ ▪ ▪ Nếu cọc chưa có đĩa h = Nếu cọc có đĩa nhỏ h = Nếu cọc có đĩa to h = Nếu cọc có đĩa đĩa nhỏ đĩa to h = Biểu đồ 4: Ví dụ thuật tốn AKT 1.3.3 Thuật giải A* a, khái niệm * KT A phiên đặc biệt A áp dụng cho trường hợp đồ thị Thuật tốn tìm đường từ nút khởi đầu tới nút đích cho trước (hoặc tới nút thỏa mãn điều kiện đích) Thuật tốn sử dụng "đánh giá heuristic" để xếp loại nút theo ước lượng tuyến đường tốt qua nút Thuật toán duyệt nút theo thứ tự đánh giá heuristic Ý tưởng trực quan Xét tốn tìm đường - tốn mà A* thường dùng để giải A* xây dựng tăng dần tất tuyến đường từ điểm xuất phát tìm thấy đường chạm tới đích Tuy nhiên, tất thuật tốn tìm kiếm có thơng tin (informed tìm kiếm thuật tốn), xây dựng tuyến đường "có vẻ" dẫn phía đích Để biết tuyến đường có khả dẫn tới đích, A* sử dụng "đánh giá heuristic" khoảng cách từ điểm cho trước tới đích Trong trường hợp tìm đường đi, đánh giá khoảng cách đường chim bay - đánh giá xấp xỉ thường dùng cho khoảng cách đường giao thông Điểm khác biệt A* tìm kiếm theo lựa chọn tốt cịn tính đến khoảng cách qua Điều làm cho A* "đầy đủ" "tối ưu", nghĩa là, A* ln ln tìm thấy đường ngắn tồn đường A* không đảm bảo chạy nhanh thuật tốn tìm kiếm đơn giản Trong môi trường dạng mê cung, cách để đến đích trước hết phải phía xa đích cuối quay lại Trong trường hợp đó, việc thử nút theo thứ tự "gần đích thử trước" gây tốn thời gian b, Thuật tốn • A* phiên đặc biệt AKT áp dụng cho trường hợp KGTT đồ thị • A* sử dụng tập DONG để lưu TT xét • A* mở rộng AKT với việc bổ sung cách giải trường hợp xét đỉnh mà có tập MO DONG • Khi xét TT Ti, việc lưu giá trị f, g, h để phản ánh chi phí TT đó, A* có lưu thơng số: • TT cha Ti (Cha(Ti)), Ti có nhiều Cha chọn Cha(Ti) cho Cost(T0>Ti) đạt • Danh sách TT Ti: TT Tk cho Cost(T0- >Tk) thông qua Ti đạt void Asao(){ MO = {T0}, DONG=, g(T0)=0, Tính h(T0), f(T0)=g(T0)+h(T0); while (MO!=){ n=getnew(MO)//lấy đỉnh n cho f(n) đạt if (n==TG) return TRUE; else { for (mB(n)) { if (m(MODONG)){ Tính h(m), g(m), f(m)=g(m)+h(m); Cha(m)=n; MO=MO{m}; }else{ g(m) = min{gold(m),gnew(m)}; Cập nhật lại MO; } } } DONG = DONG{n}; } return FALSE; } c, Các tính chất Cũng tìm kiếm theo chiều rộng (breadth-first search), A* thuật toán đầy đủ (complete) theo nghĩa ln ln tìm thấy lời giải tốn có lời giải Nếu hàm heuristic h có tính chất thu nạp (admissible), nghĩa khơng đánh giá cao chi phí nhỏ thực việc tới đích, thân A* có tính chất thu nạp (hay tối ưu) sử dụng tập đóng Nếu khơng sử dụng tập đóng hàm h phải có tính chất đơn điệu (hay qn) A* có tính chất tối ưu Nghĩa khơng đánh giá chi phí từ nút tới nút kề cao chi phí thực Phát biểu cách hình thức, với nút x,y y nút x: h(x) ≤ g(y) – g(x) + h(y) A* cịn có tính chất hiệu cách tối ưu (optimally efficient) với hàm heuristic , có nghĩa khơng có thuật tốn sử dụng hàm heuristic mà phải mở rộng nút A*, trừ có số lời giải chưa đầy đủ mà dự đốn xác chi phí đường tối ưu d, Ví dụ Trạng thái ban đầu T0 = A, trạng thái đoch Goal = {B}, số ghi cạnh cung độ dài đường đi, số cạnh đỉnh giá trị hàm h Biểu đồ 5: Ví dụ thuật tốn A* Ban đầu OPEN = {A, g(A) = 0, f(A) = 14} Phát triển đỉnh A sinh đỉnh C, D, E F Tính giá trị hàm f đỉnh ta có: OPEN = { g(C) = 9, f(C) = + 15 = 24, cha(C) = A, g(D) = 7, f(D) = +6 = 13, cha(D) = A, g(E) = 13, f(E) = 13 + = 21, cha(E) = A, g(F) = 20, f(F) = 20 +7 = 27, cha(F) = A } CLOSE = {A, g(A) = 0, f(A) = 14} Do f(D) = 13 nho nên chọn D để phát triển Phát triển D, ta nhận đỉnh H E g(H) = g(D) + cost(D, H) = + = 15, f(H) = 15 + 10 = 25 g(E) = g(D) + cost(D, E) = + = 11, f(E) = 11 + =19 Bây ta bo sung hai đỉnh vào tập OPEN Tuy nhiên tập OPEN lúc có đỉnh E nên cần phải so sánh g(E) có g(E) vùa tonh Ta so sánh hai giá trị giữ lại giá trị nho Do OPEN = {g(C) = 9, f(C) = + 15 = 24, cha(C) = A, g(E) = 11, f(E) = 11 + 8= 19, cha(E) = D, g(F) = 20, f(F) = 20 +7 = 27, cha(F) = A, g(H) = 15, f(H) = 15 + 10 = 25, cha(H) = D } CLOSE = {A, g(A) = 0, f(A) = 14, D, g(D) = 7, f(D) = + = 13, cha(D) = A } Với lập luận tương tự ta chọn đỉnh E để phát triển Các đỉnh E K I OPEN = {g(C) = 9, f(C) = + 15 = 24, cha(C) = A, g(F) = 20, f(F) = 20 +7 = 27, cha(F) = A g(H) = 15, f(H) = 15 + 10 = 25, cha(H) = D, g(K) = 17, f(K) = 17 + = 19, cha(K) = E, g(I) = 19, f(I) = 19 + = 23, cha(I) = E } CLOSE = {A, g(A) = 0, f(A) = 14, D, g(D) = 7, f(D) = + = 13, cha(D) = A E, g(E) = 11, f(E) = 11 + = 19, cha(E) = D } Chọn đỉnh K để phát triển Các đỉnh tiếp K B OPEN = {g(C) = 9, f(C) = + 15 = 24, cha(C) = A, g(F) = 20, f(F) = 20 +7 = 27, cha(F) = A

Ngày đăng: 30/08/2023, 02:16

Xem thêm:

w