chương 7 các cấu trúc dự liệu cho tập rời nhau

26 517 2
chương 7 các cấu trúc dự liệu cho tập rời nhau

Đ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

27.10.2004 1 Các Cấu Trúc Dữ Liệu cho các Tập Rời Nhau 27.10.2004 Chương 7: C¸ác cấu trúc dữ liệu cho các tập rời nhau 2 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 dữ liệu các tập rời nhau được đònh nghóa bởi – Một tập S của các tập động rời nhau, S = {S 1 , S 2 , , S k } ° Mỗi tập S i được tượng trưng bởi một phần tử đại diện là một phần tử nào đó của nó. – Các thao tác ° MAKE-SET(x): tạo một tập mới chỉ gồm x. Vì các tập là rời nhau nên x không được đang nằm trong một tập khác. ° UNION(x, y): tạo tập hội của các tập động S x và S y lần lượt chứa x và y, với điều kiện là S x và S y là rời nhau. ° FIND-SET(x): trả về một con trỏ chỉ đến phần tử đại diện của tập chứa x. ª Để cho gọn, sẽ dùng “các tập rời nhau” để gọi “cấu trúc dữ liệu các tập rời nhau”. 27.10.2004 Chương 7: C¸ác cấu trúc dữ liệu cho các tập rời nhau 3 Các thao tác lên các tập rời nhau (tiếp) ª Phân tích thời gian chạy của các thao tác sẽ dựa trên hai tham số sau – n, số các thao tác MAKE-SET – m, số tổng cộng các thao tác MAKE-SET, UNION, và FIND-SET. ª Nhận xét: – Sau n − 1 lần gọi UNION lên các tập rời nhau thì còn lại đúng một tập. – m ≥ n. 27.10.2004 Chương 7: C¸ác cấu trúc dữ liệu cho các tập rời nhau 4 Một ứng dụng của các tập rời nhau ª Xác đònh các thành phần liên thông của một đồ thò vô hướng – Thủ tục CONNECTED-COMPONENTS xác đònh các thành phần liên thông của một đồ thò vô hướng. V[G] là tập các đỉnh của đồ thò G, E[G] là tập các cạnh của G. CONNECTED-COMPONENTS(G) 1 for mỗi đỉnh v ∈ V[G] 2 do MAKE-SET(v) 3 for mỗi cạnh (u, v) ∈ E[G] 4 do if FIND-SET(u) ≠ FIND-SET(v) 5 then UNION(u, v) 27.10.2004 Chương 7: C¸ác cấu trúc dữ liệu cho các tập rời nhau 5 Một ứng dụng của các tập rời nhau (tiếp) – Thủ tục SAME-COMPONENT xác đònh hai đỉnh có cùng một thành phần liên thông hay không. SAME-COMPONENT(u, v) 1 if FIND-SET(u) = FIND-SET(v) 2 then return TRUE 3 else return FALSE 27.10.2004 Chương 7: C¸ác cấu trúc dữ liệu cho các tập rời nhau 6 Thao tác lên các tập rời nhau ª Ví dụ: một đồ thò với 4 thành phần liên thông 27.10.2004 Chương 7: C¸ác cấu trúc dữ liệu cho các tập rời nhau 7 Biểu diễn các tập rời nhau dùng danh sách liên kết ª Biểu diễn các tập rời nhau dùng danh sách liên kết (linked-list representation of disjoint sets): – Biểu diễn mổi tập bằng một danh sách liên kết. Trong mỗi danh sách liên kết ° Đối tượng đứng đầu được dùng làm phần tử đại diện của tập. ° Mổi đối tượng trong danh sách liên kết chứa – phần tử của tập – con trỏ chỉ đến đối tượng chứa phần tử kế tiếp – con trỏ chỉ đến phần tử đại diện của tập. ° Con trỏ head chỉ đến đại diện của tập. Con trỏ tail chỉ đến phần tử cuối trong danh sách. 27.10.2004 Chương 7: C¸ác cấu trúc dữ liệu cho các tập rời nhau 8 Biểu diễn tập bằng 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 dữ liệu cho các tập rời nhau 9 Biểu diễn tập bằng danh sách liên kết (tiếp) ª Hiện thực các thao tác – Hiện thực MAKE-SET(x): tạo một danh sách liên kết chỉ gồm đối tượng x. – Hiện thực FIND-SET(x): trả về con trỏ đến đại diện của tập chứa x. – Hiện thực UNION(x, y): ° gắn danh sách của x vào đuôi của danh sách của y ° cập nhật các con trỏ của các đối tượng trong danh sách cũ của x để chúng chỉ đến đại diện của tập, tức là đầu của danh sách cũ của y. 27.10.2004 Chương 7: C¸ác cấu trúc dữ liệu cho các tập rời nhau 10 Biểu diễn tập bằng danh sách liên kết (tiếp) ª Ví dụ [...]... v 1/ 2 /7 B w B 4/5 3/6 x y 4/5 z 3/6 x y (g) 7. 11.2004 w z (h) Ch 8: Elementary Gr 28 Thao tác của DFS lên đồ thò Ví dụ (tiếp theo) u v 1/ v u 2 /7 F w 1/8 4/5 y 4/5 z 3/6 x 3/6 x 2 /7 B F B w y z (j) (i) u v w u v w 1/8 2 /7 9/ 1/8 2 /7 9/ B F 4/5 3/6 x y 7. 11.2004 B F (k) C 4/5 z 3/6 x y Ch 8: Elementary Gr (l) z 29 Thao tác của DFS lên đồ thò Ví dụ (tiếp theo) u v w u v w 1/8 2 /7 9/ 1/8 2 /7 9/ B... (sketch) d[u] < d[v] < f [v] < f [u] 7. 11.2004 Ch 8: Elementary Gr 34 Đặc tính của tìm kiếm theo chiều sâu ª Phân loại các cạnh của G = (V, E) – Các cạnh cây (tree edge): là các cạnh trong Gπ – Các cạnh lùi (back edge): là các cạnh (u, v) nối u đến một nút tổ tiên (ancestor) v trong một depth-first tree – Các cạnh tiến (forward edge): là các cạnh, không phải là các cạnh cây, (u, v) nối một đỉnh u đến... 10/ 4/5 3/6 10/ x y z x y z (n) (m) u v w u v w 1/8 2 /7 9/ 1/8 2 /7 9/12 B F C B B F C B 4/5 3/6 10/11 4/5 3/6 10/11 x y z x y z (o) 7. 11.2004 (p) Ch 8: Elementary Gr 30 Phân tích DFS ª Thời gian chạy của DFS là Θ(V + E) vì – Các vòng lặp trong DFS cần Θ(V) thời gian, chưa kể thời gian thực thi các lần gọi DFS-VISIT – DFS-VISIT được gọi đúng một lần cho mỗi đỉnh v (vì ngay khi đó màu đỉnh v → xám) ° Thực... gồm các đỉnh trong V đến được từ s , và ª – có một đường đi đơn duy nhất từ s đến v cho mọi v ∈ Vπ , đây cũng là đường đi ngắn nhất từ s đến v trong G Nhận xét: – Một cây theo chiều rộng là một cây – Các cạnh trong Eπ được gọi là các cạnh cây (tree edges) 7. 11.2004 Ch 8: Elementary Gr 21 Cây tìm kiếm theo chiều rộng Lemma 23.5 Khi BFS chạy trên đồ thò vô hướng hay hữu hướng G = (V, E) thì nó sẽ xây dựng... Vậy thời gian để duyệt tất cả các danh sách kề là Θ(E) 7. 11.2004 Ch 8: Elementary Gr 31 Đặc tính của tìm kiếm theo chiều sâu Đònh lý 23.6 Đònh lý dấu ngoặc, Parenthesis theorem Trong mọi tìm kiếm theo chiều sâu của một đồ thò hữu hướng hay vô hướng G = (V, E), đối với mọi cặp đỉnh u và v, chỉ một trong ba điều sau là đúng ° các khoảng [d[u], f [u]] và [d[v], f [v]] là rời nhau, ° khoảng [d[u], f [u]]... WHITE 7 then DFS-VISIT(u) 7. 11.2004 DFS-VISIT(u) 1 color[u] ← GRAY 2 d[u] ← time ← time + 1 3 for each v ∈ Adj[u] 4 do if color[v] = WHITE 5 then π[v] ← u 6 DFS-VISIT(v) 7 color[u] ← BLACK 8 f[u] ← time ← time + 1 Ch 8: Elementary Gr 26 Thao tác của DFS lên đồ thò Ví dụ u v u x y z 2/ x 1/ v 1/ w y (a) u v 1/ u v 1/ w 2/ 3/ y w 3/ z x (c) 7. 11.2004 z (b) 2/ x w y z (d) Ch 8: Elementary Gr 27 Thao... “Inductive step” – Xét v ∈ Vk bất kỳ, k ≥ 1 – Có u ∈ Vk − 1 sao cho: u là head của queue và (u, v) được thăm dò Phần còn lại: 7. 11.2004 Ch 8: Elementary Gr 20 Cây theo chiều rộng ª ª Cho một đồ thò G = (V, E) và một đỉnh nguồn s Sau khi thực thi BFS lên G , dùng trường π trong mỗi đỉnh để đònh nghóa một “cây theo chiều rộng”: – Đồ thò các đỉnh cha mẹ (predecessor subgraph) của G là đồ thò Gπ = (Vπ... Danh sách kề của mỗi đỉnh được duyệt chỉ khi đỉnh được dequeued nên nó được duyệt nhiều lắm là một lần Vì chiều dài tổng cộng của các danh sách kề là Θ(E) nên thời gian để duyệt các danh sách kề là O(E) 7. 11.2004 Ch 8: Elementary Gr 12 Đường đi ngắn nhất ª ª Đònh nghóa Khoảng cách đường đi ngắn nhất δ(s, v) (shortest path distance) từ s đến v – là số cạnh tối thiểu lấy trong mọi đường đi từ s đến v, nếu... v) : v ∈ V và π[v] ≠ NIL} – Predecessor subgraph do tìm kiếm theo chiều sâu tạo nên một rừng theo chiều sâu, gồm nhiều cây theo chiều sâu – Các cạnh trong Eπ được gọi là các cạnh cây 7. 11.2004 Ch 8: Elementary Gr 23 Tìm kiếm theo chiều sâu ª Trong khi tìm kiếm, các đỉnh được tô màu để chỉ ra trạng thái của nó – khởi đầu: màu trắng – được tìm ra (discovered): màu xám – hoàn tất, xong (finished): màu... việc tìm 7. 11.2004 Ch 8: Elementary Gr 32 Đặc tính của tìm kiếm theo chiều sâu Chứng minh (tiếp) kiếm quay về u và hoàn tất u, do đó f [v] < f [u] Tổng kết: d[u] < d[v] < f [v] < f [u], tức là khoảng [d[v], f [v]] hoàn toàn nằm trong khoảng [d[u], f [u]] ° f [u] < d[v] Hơn nữa, vì d[u] < f [u] và d[v] < f [v] nên d[u] < f [u] < d[v] < f [v], tức là các khoảng [d[u], f [u]] và [d[v], f [v]] là rời nhau . 27. 10.2004 1 Các Cấu Trúc Dữ Liệu cho các Tập Rời Nhau 27. 10.2004 Chương 7: C¸ác cấu trúc dữ liệu cho các tập rời nhau 2 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 dữ liệu. y. 27. 10.2004 Chương 7: C¸ác cấu trúc dữ liệu cho các tập rời nhau 10 Biểu diễn tập bằng danh sách liên kết (tiếp) ª Ví dụ 27. 10.2004 Chương 7: C¸ác cấu trúc dữ liệu cho các tập rời nhau 11 Thao. của các tập {b, c, e, h} và {d, f, g}. 27. 10.2004 Chương 7: C¸ác cấu trúc dữ liệu cho các tập rời nhau 18 Biểu diễn các tập rời nhau bằng rừng: các thao tác ª Các thao tác lên các tập rời nhau

Ngày đăng: 19/10/2014, 00:41

Từ khóa liên quan

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

  • Các thao tác lên các tập rời nhau (tiếp)

  • Một ứng dụng của các tập rời nhau

  • Một ứng dụng của các tập rời nhau (tiếp)

  • Thao tác lên các tập rời nhau

  • 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 bằng danh sách liên kết

  • Biểu diễn tập bằng danh sách liên kết (tiếp)

  • Slide 10

  • Thao tác UNION không dùng heuristic

  • Heuristic để tăng tốc của UNION

  • Heuristic hợp theo trọng số

  • Biểu diễn tập bằng danh sách liên kết: thời gian chạy

  • Slide 15

  • Biểu diễn các tập rời nhau bằng rừng

  • Biểu diễn các tập rời nhau bằng rừng (tiếp)

  • Biểu diễn các tập rời nhau bằng rừng: các thao tác

  • Biểu diễn các tập rời nhau bằng rừng

  • Biểu diễn tập bằng cây

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

Tài liệu liên quan