Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 18 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
18
Dung lượng
743,25 KB
Nội dung
TRƯỜNG ĐẠI HỌC GIAO THƠNG VẬN TẢI TP HỒ CHÍ MINH KHOA CÔNG NGHỆ THÔNG TIN -o0o - TIỂU LUẬN MÔN HỌC GIẢI THUẬT NÂNG CAO GVHD: TS Nguyễn Thị Phương Chi SVTH: Nguyễn Văn Chiến Tp Hồ Chí Minh, Tháng năm 2020 MỤC LỤC CÁC CẤU TRÚC DỮ LIỆU CHO CÁC TẬP RỜI NHAU CÁC THAO TÁC LÊN CẤU TRÚC DỮ LIỆU CÁC TẬP RỜI NHAU MỘT ỨNG DỤNG CỦA CÁC T ẬP DỮ LIỆU RỜI NHAU BIỂU DIỄN CÁC TẬP RỜI NHAU DÙNG DANH SÁCH LIÊN KẾT THAO TÁC UNION KHÔNG DÙNG HEURISTIC HEURISTRIC ĐỂ TĂNG TỐC ĐỘ UNION HEURISTIC HỢP THEO TRỌNG SỐ PHÂN TÍCH CÁC THAO TÁC LÊN T ẬP RỜI NHAU BIỂU DIỄN CÁC TẬP RỜI NHAU BẰNG DANH SÁCH LIÊN K ẾT: THỜI GIAN CHẠY 10 BIỂU DIỄN CÁC TẬP RỜI NHAU BẰNG RỪNG 11 BIỂU DIỄN TẬP BẰNG CÂY 13 HEURISTIC NÉN ĐƯỜNG DẪN 14 CÁC HEURISTIC HỢP THEO THỨ HẠNG VÀ NÉN ĐƯỜNG DẪN 15 ẢNH HƯỞNG CỦA CÁC HEURISTIC LÊN THỜI GIAN CHẠY 16 GIẢI THUẬT NÂNG CAO TS NGUYỄN THỊ PHƯƠNG CHI CÁC CẤU TRÚC DỮ LIỆU CHO CÁC TẬP RỜI NHAU Bài tốn ví dụ: Xác định thành phần liên thơng đồ thị vô hướng a b c d e f g h j i CÁC THAO TÁC LÊN CẤU TRÚC DỮ LIỆU CÁC TẬP RỜI NHAU Cấu trúc liệu tập rời định nghĩa Một tập S tập động rời nhau, S={S1,S2….Sk} Mỗi tập Si tưởng trưng phần tử đại diện phần tử Các thao tác MAKE-SET(x): tập tập gồm phần tử x, tập r ời nên x không nằm tập khác UNION(x,y): tạo tập hội tập động Sx Sy chưa x y, với điều kiện Sx Sy rời FIND_SET(x): trả trỏ đến phần tử đại diện tập chưa x Để cho gọn dùng tập rời để gọi cấu trúc liệu tập rời NGUYỄN VĂN CHIẾN GIẢI THUẬT NÂNG CAO TS NGUYỄN THỊ PHƯƠNG CHI MỘT ỨNG DỤNG CỦA CÁC TẬP DỮ LIỆU RỜI NHAU Xác định thành phần liên thông đồ thị vô hướng Thủ tục CONNECTED-COMPONENTS xác định thành phần liên thông - đồ thị vô hướng V[G] tập đỉnh đồ thị G, E[G] tập canhj đồ thị G CONNECTED-COMPONENTS(G) For duyệt qua đỉnh v V[G] Do MAKE-SET(v) For cạnh (u,v) E[G] Do if FIND-SET(u) FIND-SET(v) then UNION(u,v) Bài tập: chứng tỏ sau tất cạnh xử lý CONNECTEDCOMPONENTS đỉnh nằm thành phần liên thông chúng nằm tập Thủ tục SAME-COMPONENT xác định đỉnh có thành phần liên thông hay - không SAME-COMPONENT(u,v) If FIND-SET(u) =FIND-SET(v) then Return True Else return False Ví dụ: đồ thị với thành phần liên thông a b c d NGUYỄN VĂN CHIẾN e g f h j i GIẢI THUẬT NÂNG CAO TS NGUYỄN THỊ PHƯƠNG CHI (a) Edge Collection of disjoint sets initial sets {a} {b} {c} {d} {e} {f} {g} {h} {i} {j} (b,d) {a} {b,d} {c} {e} {f} {g} {h} {i} {j} (e,g) {a} {b,d} {c} {e,g} {f} {h} {i} {j} (a,c) {a,c} {b,d} {e,g} {f} {h} {i} {j} (h,i) {a,c} {b,d} {e,g} {f} {h,i} {j} (a,b) {a,b,c,d} {e,g} {f} {h,i} {j} (e,f) {a,b,c,d} {e,f,g} {h,i} {j} (b,c) {a,b,c,d} {e,f,g} {h,i} {j} (b) NGUYỄN VĂN CHIẾN GIẢI THUẬT NÂNG CAO TS NGUYỄN THỊ PHƯƠNG CHI BIỂU DIỄN CÁC TẬP RỜI NHAU DÙNG DANH SÁCH LIÊN KẾT Biểu diễn tập rời dùng danh sách liên kết (linked-list representation of disjoint sets): - Biểu diễn tập danh sách liên kết Trong danh sách liên kết Đối tượng đứng đầu dùng làm phần tử đại diện tập Mỗi đối tượng danh sách liên kết chứa - Phần tử tập - Con trỏ đến đối tượng chứa phần tử kết tiếp - Con trỏ đến phần t đại diện tập Con trỏ head đến đại diện tập Con trỏ tail đến phần tử cuối danh sách Hiện thực thao tác - Hiện thực MAKE-SET(x): tạo danh sách liên kết gồm đối tượng x - Hiện thực FIND-SET(x): tar trỏ đến đại diện tập chứa x - Hiện thwucj UNION(x,y): Gắn danh sách x vào đuôi danh sách y Cập nhật trỏ đối tượng danh sách cũ x để chúng đến địa diện tập, tức đầu danh sách cũ y NGUYỄN VĂN CHIẾN GIẢI THUẬT NÂNG CAO NGUYỄN VĂN CHIẾN TS NGUYỄN THỊ PHƯƠNG CHI GIẢI THUẬT NÂNG CAO TS NGUYỄN THỊ PHƯƠNG CHI THAO TÁC UNION KHÔNG DÙNG HEURISTIC Ví dụ: chuỗi gồm 2n – thao tác lên n đối tượng mà cần 𝛩(n2) thời gian NGUYỄN VĂN CHIẾN GIẢI THUẬT NÂNG CAO TS NGUYỄN THỊ PHƯƠNG CHI HEURISTRIC ĐỂ TĂNG TỐC ĐỘ UNION Nhận xét: Khi hợp hai danh sách UNION, trỏ (chỉ đến đại diện mới) phần tử danh sách gắn vào đuôi danh sách phải cập nhật Giả sử danh sách cs chứa thêm chiều dài Heuristic trọng số hợp theo (weighted-union heuristic): hợp hai danh sách - gắn danh sách ngắn vào đuôi danh sách dài (nếu danh sách dài nhâu gắn tùy ý) NGUYỄN VĂN CHIẾN GIẢI THUẬT NÂNG CAO TS NGUYỄN THỊ PHƯƠNG CHI HEURISTIC HỢP THEO TRỌNG SỐ NGUYỄN VĂN CHIẾN GIẢI THUẬT NÂNG CAO TS NGUYỄN THỊ PHƯƠNG CHI PHÂN TÍCH CÁC THAO TÁC LÊN TẬP RỜI NHAU Phân tích thười gian chạy thao tác dựa hai tham số sau - n, số thao tác MAKE-SET -m, số tổng cộng thao tác MAKE-SET, UNION, FIND-SET Nhận xét: - sau n-1 lần gọi UNION lên t ập rời cịn lại tập -m ≥ n NGUYỄN VĂN CHIẾN GIẢI THUẬT NÂNG CAO TS NGUYỄN THỊ PHƯƠNG CHI BIỂU DIỄN CÁC TẬP RỜI NHAU BẰNG DANH SÁCH LIÊN KẾT: THỜI GIAN CHẠY Định lý (Theorem 22.1) Bằng cách dùng biểu diễn danh sách liên kết cho acsc tập rời heuristic hợp theo trọng số (weighted-union heuristic), dãy gồm có m thao tác MAKE-SET, UNION, FIND-SET, có n thao tác MAKE-SET, tốn O(m+n lg n) thời gian Chứng minh - Mỗi MAKE-SET chạy thười gian O(1) - Mỗi FIND-SET chạy thười gian O(1) - Xác định thười gian chạy thao tác UNION: Thời gian chạy thao tác UNION thời gian tổng cộng lấy phần tử lần cập nhật trỏ đến phần tử đại diện tập chứa phần tử Xét đối tượng x tập tập rời Mỗi lần trỏ đến phần tử đại diệncủa tập chứa x cập nhật, x phải nằm tập nhỏ => - Lần cập nhật tr ỏ x: tập kết phải có phần tử - Lần cập nhật tr ỏ x: tập kết phải có 22 phần tử -… - Lần k cập nhật tr ỏ x: tập kết phải có 2k phần tử Vì tập có nhiều n phần tử nên 2k≤ 𝑛 Vậy số lần cập nhật trỏ x nhiều l ắm k ≤ lg n Vì x phần tử nên thời gian tổng cộng để cập nhật tr ỏ hần tử O(n lg n) - Thời gian chạy tổng cộng dãy m thao tác là: O(m) + O(n lgn) = O(m + n lg n) NGUYỄN VĂN CHIẾN 10 GIẢI THUẬT NÂNG CAO TS NGUYỄN THỊ PHƯƠNG CHI BIỂU DIỄN CÁC TẬP RỜI NHAU BẰNG RỪNG Biểu diễn tập rời rừng (disjoint -set forest) - Biểu diễn tập có gốc: Mỗi nút chứa phần tử tập Mỗi nút chứa trỏ đến cha Gốc chứa đại diện tập cha Ví dụ - Hai sau biểu diễn tập {b, c, e, h} {d, f, g} - C f phần tử đại diện t ập {b, c, e, h} {d, f, g} Hiện thực thao tác lên t ập rời biểu diễn rừng - Hiện thực MAKE-SET: tạo có nút - Hiện thực FIND-NET cách đuổi theo trỏ đến nút cha tìm nút gốc Các nút ghé qua gọi FIND-SET tạo thành đường dẫn (find path) - Hiện thực UNION: cho trỏ gốc đến gốc Ví dụ: NGUYỄN VĂN CHIẾN 11 GIẢI THUẬT NÂNG CAO NGUYỄN VĂN CHIẾN TS NGUYỄN THỊ PHƯƠNG CHI 12 GIẢI THUẬT NÂNG CAO TS NGUYỄN THỊ PHƯƠNG CHI BIỂU DIỄN TẬP BẰNG CÂY Dùng hai heuristic để giảm thời gian chạy dãy thao tác lên tập rời thực rừng: - Heuristic hợp theo thứ hạng (union by rank) thực thi UNION: Duy trì cho nút rank Rank cận cho độ cao (*) nút Mọi nút khởi tạo với rank = Khi hợp theo thứ hạng hai cây, nút gốc có rank nhỏ làm thành nút gốc có rank lớn Nếu hai rank tùy ý lấy nút gốc x làm nút cha, tăng thêm rank nút x - Hueristic nén đường dẫn (path compression) (*) Độ cao nút số cạnh nằm đường đơn dài từ nút đến nút Ví dụ: (số bên cạnh đối tượng rank nó.) NGUYỄN VĂN CHIẾN 13 GIẢI THUẬT NÂNG CAO TS NGUYỄN THỊ PHƯƠNG CHI HEURISTIC NÉN ĐƯỜNG DẪN - Heuristic nén đường dẫn (path compression) Chạy qua hai giai đoạn thực thi FIND-SET: Giai đoạn “chạy lên” để tìm gốc cây, Giai đoạn “chạy xuống” để cập nhật nút đường dẫn để chúng trươc tiếp đến gốc Minh họa heuristic nénđường dẫn thao tác FIND-SET - Các hình tam giác tượng trưng có gốc nút hình (a) Mỗi nút có trỏ đến nút cha NGUYỄN VĂN CHIẾN 14 GIẢI THUẬT NÂNG CAO TS NGUYỄN THỊ PHƯƠNG CHI CÁC HEURISTIC HỢP THEO THỨ HẠNG VÀ NÉN ĐƯỜNG DẪN Các thủ tục thực accs heuristic hợp theo thứ hạng nén đường dẫn: MAKE-SET, UNION, FIND-SET - Cha nút x p[x] MAKE-SET(x) p[x] ← x rank[x] ← UNION(x, y) LINK(FIND-SET(x), FIND-SET(y)) LINK(x, y) if rank[x] > rank[y] then p[y] ← 𝑥 else p[x] ← 𝑦 if rank[x] = rank[y] then rank[y] ← 𝑟𝑎𝑛𝑘 [𝑦] + FIND-SET(x) if x ≠ 𝑝[𝑥 ] then p[x] ← 𝐹𝐼𝑁𝐷 − 𝑆𝐸𝑇(𝑃[𝑥 ]) return p[x] NGUYỄN VĂN CHIẾN 15 GIẢI THUẬT NÂNG CAO TS NGUYỄN THỊ PHƯƠNG CHI ẢNH HƯỞNG CỦA CÁC HEURISTIC LÊN THỜI GIAN CHẠY Thời gian chạy dãy thao tác gồm m MAKE-SET, UNION, FIND-SET, có n thao tác MAKE-SET: - Nếu dùng heuristic hợp theo thứ hạng O(m lg n) - Nếu dùng heuristic nén đường dẫn, với f số thao tác FIND-SET Θ(f log1 + f ln) n) f ≥ n Θ(n + f lg n) - f < 𝑛 Nếu dùng hai heurisric hợp theo thứ hạng nén đường dẫn O(m α(m, n)) - α(m, n) hàm đảo hàm Ackermann - ứng dụng thực tế, α(m, n) ≤ Không chứng minh chận liệt kê NGUYỄN VĂN CHIẾN 16 ... diện tập, tức đầu danh sách cũ y NGUYỄN VĂN CHIẾN GIẢI THUẬT NÂNG CAO NGUYỄN VĂN CHIẾN TS NGUYỄN THỊ PHƯƠNG CHI GIẢI THUẬT NÂNG CAO TS NGUYỄN THỊ PHƯƠNG CHI THAO TÁC UNION KHƠNG DÙNG HEURISTIC... dài nhâu gắn tùy ý) NGUYỄN VĂN CHIẾN GIẢI THUẬT NÂNG CAO TS NGUYỄN THỊ PHƯƠNG CHI HEURISTIC HỢP THEO TRỌNG SỐ NGUYỄN VĂN CHIẾN GIẢI THUẬT NÂNG CAO TS NGUYỄN THỊ PHƯƠNG CHI PHÂN TÍCH CÁC THAO TÁC... cho trỏ gốc đến gốc Ví dụ: NGUYỄN VĂN CHIẾN 11 GIẢI THUẬT NÂNG CAO NGUYỄN VĂN CHIẾN TS NGUYỄN THỊ PHƯƠNG CHI 12 GIẢI THUẬT NÂNG CAO TS NGUYỄN THỊ PHƯƠNG CHI BIỂU DIỄN TẬP BẰNG CÂY Dùng hai