1. Trang chủ
  2. » Tất cả

Các cấu trúc dữ liệu cho các tập rời nhau ch07 disjsets

26 2 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

Nội dung

Data structures for disjoint sets Caùc Caáu Truùc Döõ Lieäu cho caùc Taäp Rôøi Nhau Caùc thao taùc leân caáu truùc döõ lieäu caùc taäp rôøi nhau Caáu truùc döõ lieäu caùc taäp rôøi nhau ñöôïc ñònh ngh[.]

Các Cấu Trúc Dữ Liệu cho Tập Rời Nhau 27.10.2004 Các thao tác lên cấu trúc liệu tập rời ª 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 , , S k} 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ạo tập gồm x Vì 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 “các tập rời nhau” để gọi “cấu trúc liệu tập rời nhau” ê 27.10.2004 Chửụng 7: Cáaực caỏu truực dửừ lieọu cho tập rời Các thao tác lên tập rời (tiếp) ª ª 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  lần gọi UNION lên tập rời lại tập – m  n 27.10.2004 Chương 7: C¸ác cấu trúc liệu cho tập rời Một ứng dụng tập rời ª 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 cạnh G CONNECTED -COMPONENTS(G) 27.10.2004 for đỉnh v  V[G] MAKE-SET(v) for cạnh (u, v)  E[G] if FIND-SET(u)  FIND-SET(v) then UNION(u, v) Chương 7: C¸ác cấu trúc liệu cho tập rời Một ứng dụng tập rời (tiếp) – Thủ tục SAME-COMPONENT xác định hai đỉnh có thành phần liên thoâng hay khoâng SAME-COMPONENT(u, v) if FIND-SET(u) = FIND-SET(v) then return TRUE else return FALSE 27.10.2004 Chương 7: C¸ác cấu trúc liệu cho tập rời Thao tác lên tập rời ª Ví dụ: đồ thị với thành phần liên thông 27.10.2004 Chương 7: C¸ác cấu trúc liệu cho tập rời Biểu diễn tập rời 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 mổi 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 – trỏ đến đối tượng chứa phần tử – 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 27.10.2004 Chương 7: C¸ác cấu trúc liệu cho tập rời Biểu diễn tập danh sách liên kết ª Ví dụ head tail head tail 27.10.2004 Chương 7: C¸ác cấu trúc liệu cho tập rời Biểu diễn tập danh sách liên kết (tiếp) ª 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): trả trỏ đến đại diện tập chứa x – Hiện thực 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 đại diện tập, tức đầu danh sách cũ y 27.10.2004 Chương 7: C¸ác cấu trúc liệu cho tập rời Biểu diễn tập danh sách liên kết (tiếp) ª Ví dụ 27.10.2004 Chương 7: C¸ác cấu trúc liệu cho tập rời 10 Heuristic để 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 có chứa thêm chiều dài Heuristic hợp theo trọng số (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 gắn tùy ý) 27.10.2004 Chương 7: C¸ác cấu trúc liệu cho tập rời 12 Heuristic hợp theo trọng số ª Ví dụ chiều dài = chiều dài = c 27.10.2004 h e b f Chương 7: C¸ác cấu trúc liệu cho tập rời g d 13 Biểu diễn tập 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 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 U NION 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ử 27.10.2004 Chương 7: C¸ác cấu trúc liệu cho tập rời 14 Biểu diễn tập danh sách liên kết: thời gian chạy Chứng minh (tiếp theo) ° Xét đối tượng x tập tập rời Mỗi lần trỏ đến phần tử đại diện 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ó 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  n Vậy số lần cập nhật trỏ x nhiều k  lg n ° Vì x phần tử nên thời gian tổng cộng để cập nhật trỏ phầ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 lg n) = O(m + n lg n) 27.10.2004 Chương 7: C¸ác cấu trúc liệu cho tập rời 15 Biểu diễn tập rời rừng ª Biểu diễn tập rời rừng (disjointset 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 27.10.2004 Chương 7: C¸ác cấu trúc liệu cho tập rời 16 Biểu diễn tập rời rừng (tiếp) ª Ví dụ – Hai sau biểu diễn tập {b, c, e, h} vaø {d, f, g} – c f phần tử đại diện tập {b, c, e, h} {d, f, g} 27.10.2004 Chương 7: C¸ác cấu trúc liệu cho tập rời 17 Biểu diễn tập rời rừng: thao tác ª Cá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-SET cách đuổi theo trỏ đến nút cha tìm nút gốc ° Các nút ghé qua gọi F IND-SET tạo thành đường dẩn (find path) – Hiện thực UNION: làm cho trỏ gốc đến gốc 27.10.2004 Chương 7: C¸ác cấu trúc liệu cho tập rời 18 Biểu diễn tập rời rừng ª Ví dụ – Hình (b) kết UNION(e, g) UNION 27.10.2004 Chương 7: C¸ác cấu trúc liệu cho tập rời 19 Biểu diễn tập ª Dùng hai heuristics để 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: ° trì cho nút rank Rank cận cho độ cao (*) nút Mọi nút khởi tạo với rank = ° hợp theo thứ hạng hai cây, nút gốc có rank nhỏ làm thành nút có rank lớn – Heuristic 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 27.10.2004 Chương 7: C¸ác cấu trúc liệu cho tập rời 20 ... diện tập chứa x Để cho gọn, dùng ? ?các tập rời nhau? ?? để gọi ? ?cấu trúc liệu tập rời nhau? ?? ° ª 27.10.2004 Chương 7: C¸ác cấu trúc liệu cho tập rời Các thao tác lên tập rời (tiếp) ª ª Phân tích thời.. .Các thao tác lên cấu trúc liệu tập rời ª 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 , , S k} Mỗi tập Si tượng trưng phần tử đại diện phần tử – Các thao... 27.10.2004 Chương 7: C¸ác cấu trúc liệu cho tập rời Thao tác lên tập rời ª Ví dụ: đồ thị với thành phần liên thông 27.10.2004 Chương 7: C¸ác cấu trúc liệu cho tập rời Biểu diễn tập rời dùng danh sách

Ngày đăng: 25/03/2023, 08:37

w