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

Đồ thị dạng cây dag chapter02 tree

18 1 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

Thông tin cơ bản

Định dạng
Số trang 18
Dung lượng 578,88 KB

Nội dung

CHƯƀNG 2 Ä’á»™ THá»− DẀNG CÇY & DAG CHƯƠNG 2 ĐỒ THỊ DẠNG CÂY & DAG Bùi Tiến Lên Đại học Khoa học Tự nhiên 01/01/2017 NỘI DUNG 1 ĐỒ THỊ DẠNG CÂY 2 CÂY TRONG TIN HỌC 3 ĐỒ THỊ DẠNG DAG ĐỒ THỊ DẠNG C[.]

NỘI DUNG CHƯƠNG ĐỒ THỊ DẠNG CÂY & DAG Bùi Tiến Lên Đại học Khoa học Tự nhiên 01/01/2017 ĐỒ THỊ DẠNG CÂY ĐỒ THỊ DẠNG CÂY CÂY TRONG TIN HỌC ĐỒ THỊ DẠNG DAG Các khái niệm Định nghĩa 2.1 I I a Cây (Tree) đồ thị liên thơng khơng có chu trình c b Rừng (Forest) đồ thị khơng có chu trình e d f (a) dạng a c b e d g i h j f k (b) dạng rừng Hình 2.1: Các đồ thị dạng & rừng Spring 2017 Graph Theory Các khái niệm (cont.) Các khái niệm (cont.) a b a b c d c d Từ định nghĩa ta có nhận xét sau Nhận xét I e e f (a) G1 f (b) G2 a b a b c d c d e f e f (c) G3 I Một đồ thị dạng khơng có cạnh khun khơng có cạnh song song Một đồ thị dạng rừng có p thành phần liên thơng thành phần liên thông đồ thị dạng (d) G4 Hình 2.2: Đồ thị dạng dạng Spring 2017 Graph Theory Spring 2017 Graph Theory Định lý tồn đỉnh treo Các định nghĩa Định lý 2.1 Cho đồ thị G có n đỉnh, phát biểu sau tương đương Nếu có n đỉnh với n ≥ chứa hai đỉnh treo Định lý 2.2 (daisy chain) Đồ thị G Chứng minh I I I Giữa hai đỉnh đồ thị G, tồn dây chuyền nối chúng Cho T = (V , E ), xét cạnh (a, b) ∈ E Gọi P = u a b v đường sơ cấp dài T chứa cạnh (a, b) Đồ thị G liên thông tối thiểu (nghĩa G liên thơng xóa cạnh khơng cịn liên thơng nữa) Ta nhận thấy u v phải đỉnh treo Thêm cạnh nối đỉnh G đồ thị chứa chu trình Đồ thị G liên thơng có n−1 cạnh Đồ thị G khơng có chu trình có n−1 cạnh Spring 2017 Graph Theory Spring 2017 Graph Theory Các định nghĩa (cont.) Cây khung Từ định nghĩa tương đương ta có nhận xét sau đồ thị n đỉnh Định nghĩa 2.2 Nhận xét I I Cây cấu trúc tiết kiệm cạnh đảm bảo liên thông Cho đồ thị G = (V , E ) liên thông T = (V , F ) đồ thị phận G Nếu T gọi khung (spanning tree) đồ thị G Cây cấu trúc khơng bền vững tính liên thơng bị bỏ cạnh Spring 2017 Graph Theory Cây khung (cont.) Graph Theory 10 Định lý liên thông & khung c b Spring 2017 b c Định lý 2.3 Một đồ thị liên thông có khung a a d (a) đồ thị Chứng minh d (b) khung I Hình 2.3: Đồ thị khung Spring 2017 Graph Theory I 11 (⇐) Đồ thị G có khung T đồ thị G liên thơng Điều suy tự định nghĩa khung (⇒) Đồ thị G liên thơng đồ thị G có khung T I Nếu đồ thị G có chu trình C loại bỏ cạnh chu trình để tạo đồ thị G Đồ thị G đồ thị liên thông I Tiếp tục trình loại bỏ cạnh khơng thể làm đồ thị T khơng có chu trình Đồ thị T khung Spring 2017 Graph Theory 12 Thuật tốn Prim tìm khung Minh họa thuật tốn Prim tìm khung Cho đồ thị G = (VG , EG ) đồ thị liên thơng có n đỉnh Xác định khung T = (VT , ET ) đồ thị G Cho đồ thị G đỉnh bắt đầu a Cây khung T = (VT , ET ) tìm sau I I I I Bước 1: Chọn tùy ý đỉnh v ∈ VG khởi tạo VT = {v} ET = ∅ Bước 2: Tìm cạnh e = (x, y) cho x ∈ VT y ∈ VG \VT Nếu khơng tìm thấy DỪNG (1) Bước 3: Thực thêm đỉnh thêm cạnh VT = VT + {y}, ET = ET + {e = (x, y)} Bước 4: Nếu T có đủ n đỉnh DỪNG (2) ngược lại tiếp tục quay lại bước Spring 2017 Graph Theory 13 Bảng 2.1: Bảng tính tốn Thêm vào VT a b d g c e f Hình 2.4: Đồ thị G khung Thêm vào ET ∅ (a,b) (a,d) (a,g) (b,c) (c,e) (e,f) Spring 2017 f g a e d b c Graph Theory 14 Thuật tốn DFS tìm khung Minh họa DFS tìm khung Cho đồ thị liên thơng G = (V , E ) có n đỉnh V = {v1 , , } Hãy tìm khung T Cho đồ thị G đỉnh bắt đầu a Cây khung T = (VT , ET ) tìm sau Algorithm Tìm khung 1: 2: 3: 4: 5: 6: 7: Bảng 2.2: Bảng tính tốn Khởi tạo T với đỉnh v dfs_spanning_tree(v) procedure dfs_spanning_tree(v) for đỉnh u kề với v if u ∈ / T then Thêm đỉnh u cạnh (v, u) vào T dfs_spanning_tree(u) Spring 2017 Graph Theory Thêm vào VT a b c d e f g 15 Spring 2017 Hình 2.5: Đồ thị G khung Thêm vào ET ∅ (a,b) (b,c) (c,d) (d,e) (e,f) (f,g) f g a e d b Graph Theory c 16 Tập chu trình sở Tập chu trình sở (cont.) a Cho đồ thị vô hướng liên thông G = (V , E ) T = (V , F ) khung đồ thị I I Spring 2017 Graph Theory g f b d c (a) C(b,d) a f b d d c (b) khung Hình 2.6: Đồ thị khung 17 Spring 2017 Graph Theory 18 Tập chu trình sở (cont.) g e f b d (a) đồ thị Tập chu trình sở (cont.) e a c Tập hợp Ω = {Ce |e ∈ E − F } gọi tập hợp chu trình sở g e f b Đồ thị T + e với e ∈ E − F có chu trình đơn Ce gọi chu trình sở a g e Định nghĩa 2.3 g e a f b c (b) C(e,g) Tính chất 2.1 Tập chu trình sở phụ thuộc vào khung; nghĩa là, khung khác tập chu trình sở tương ứng khác d Đồ thị G có n đỉnh m cạnh có m − n + chu trình sở c Mọi chu trình đơn C đồ thị G tổng số chu trình sở X C= Ci (2.1) (c) C(d,f ) Hình 2.7: Tập chu trình sở Ci ∈Ω Spring 2017 Graph Theory 19 Spring 2017 Graph Theory 20 Cây khung có trọng số nhỏ & lớn Cây khung có trọng số nhỏ & lớn (cont.) Ví dụ Định nghĩa 2.4 b a a c I (a) đồ thị b Cho đồ thị có trọng số G = (V , E , L) T tập khung G b b c (b) khung a Đồ thị T ∈ T gọi khung có trọng số nhỏ (minimum spanning tree) trọng số nhỏ c (c) khung a T = arg (L(T )) c T ∈T (d) khung I Hình 2.8: Các khung Đồ thị T ∈ T gọi khung có trọng số lớn (maximum spanning tree) trọng số lớn T = arg max(L(T )) T ∈T Spring 2017 Graph Theory 21 Ứng dụng khung có trọng số nhỏ I Bài tốn xây dựng đường cao tốc I Bài toán xây dựng hệ thống mạng máy tính Spring 2017 Graph Theory (2.2) Spring 2017 (2.3) Graph Theory 22 Thuật tốn tìm khung nhỏ Hai thuật toán Prim Kruskal thuật tốn thơng dụng để tìm khung nhỏ 23 Spring 2017 Graph Theory 24 Thuật toán Prim Thuật tốn Prim (cont.) Cho đồ thị có trọng số G = (VG , EG , LG ) đồ thị liên thơng có n đỉnh Xác định khung T = (VT , ET ) đồ thị G Định lý 2.4 I I I I Bước 1: Chọn tùy ý đỉnh v ∈ VG khởi tạo VT = {v} ET = ∅ Bước 2: Tìm tập hợp cạnh e = (x, y) cho x ∈ VT y ∈ VG \VT Nếu tập hợp rỗng DỪNG (1); ngược lại chọn cạnh e = (x, y) có trọng số nhỏ Thuật tốn Prim đắn Chứng minh Sinh viên tự chứng minh Bước 3: Thực thêm đỉnh thêm cạnh VT = VT + {y} ET = ET + {e} Bước 4: Nếu T có đủ n đỉnh DỪNG (2) ngược lại tiếp tục quay lại bước Spring 2017 Graph Theory 25 Spring 2017 Graph Theory Minh họa thuật toán Prim Thuật toán Kruskal Cho đồ thị có trọng số G đỉnh bắt đầu a Cây khung nhỏ T = (VT , ET ) tìm sau Cho đồ thị G = (VG , EG , LG ) đồ thị liên thơng có n đỉnh Xác định khung T = (VT , ET ) đồ thị G I Bảng 2.3: Bảng tính tốn Thêm vào VT a d c g b e f Thêm vào ET ∅ (a,d) (d,c) (d,g) (d,b) (g,e) (g,f) Hình 2.9: Đồ thị G khung nhỏ Spring 2017 a Graph Theory Bước 1: Sắp xếp cạnh EG theo trọng số tăng dần thành danh sách L Bước 2: Khởi tạo VT = ∅ ET = ∅ Bước 3: Lần lượt duyệt cạnh e = (x, y) danh sách L Nếu đồ thị T với cạnh e khơng chứa chu trình loại cạnh e khỏi danh sách L thực VT = VT + {x, y} ET = ET + {e} Bước 4: Nếu T có đủ n − cạnh dừng lại ngược lại quay lại bước I e d I 17 b f 12 g I 26 c 27 Spring 2017 Graph Theory 28 Thuật toán Kruskal (cont.) Minh họa thuật toán Kruskal Định lý 2.5 Cho đồ thị có trọng số G Danh sách cạnh L (c,d),(d,g),(a,d),(b,d),(e,g),(c,e),(a,g),(b,c),(d,e),(a,b),(f,g),(e,f) Thuật toán Kruskal đắn Chứng minh Sinh viên tự chứng minh Thêm vào VT ∅ {c, d} {d, g} {a, d} {b, d} {e, g} {f , g} Spring 2017 Hình 2.10: Đồ thị G khung nhỏ Bảng 2.4: Bảng tính tốn Graph Theory 29 Thêm vào ET ∅ (c,d) (d,g) (a,d) (b,d) (e,g) (f,g) Spring 2017 a b e d 17 f 12 g c Graph Theory 30 Cây có hướng Các định nghĩa tương đương có hướng Định nghĩa 2.5 Định nghĩa 2.6 Cho đồ thị có hướng G = (V , E ), đồ thị G gọi có hướng thỏa mãn hai điều kiện sau: Cho đồ thị có hướng G = (V , E ) gồm n đỉnh Các phát biểu sau tương đương G khơng có chu trình Đồ thị G có hướng G có gốc Đồ thị G có đỉnh r từ r tồn đường đến đỉnh lại Đồ thị G tựa liên thơng mạnh tối tiểu (tức xóa bớt cạnh G khơng cịn tựa liên thơng mạnh) Đồ thị G liên thơng có đỉnh r cho d − (r ) = d − (v) = với v 6= r Đồ thị G khơng có chu trình có đỉnh r cho d − (r ) = d − (v) = với v 6= r Spring 2017 Graph Theory 31 Spring 2017 Graph Theory 32 Sự tồn có hướng Ứng dụng Định lý 2.6 Cấu trúc thể tính ”phân cấp”, ”kế thừa” biểu diễn cấu trúc Cho G đồ thị có hướng I I Nếu G chứa đồ thị phận T có hướng G tựa liên thơng mạnh I Cây gia phả (trong dòng họ) I Cây phân cấp lồi (trong sinh học) Nếu G tựa liên thơng mạnh G có chứa đồ thị phận T có hướng I Cây thư mục (trong máy tính) Spring 2017 Graph Theory 33 Ứng dụng (cont.) I Spring 2017 Graph Theory Ứng dụng (cont.) Quản lý hành phân cấp tồn giới I Biểu thức tốn học biểu diễn Ví dụ dùng để biểu diễn biểu thức Trái đất Việt Nam TPHCM Quận Tân Bình Ơng Lên 34 Mỹ (a + b) ∗ (c − d) Trung Quốc * Hà Nội - + Quận a Ơng Dũng b c d Hình 2.12: Cây biểu thức Hình 2.11: Quản lý hành tồn cầu Spring 2017 Graph Theory 35 Spring 2017 Graph Theory 36 Ứng dụng (cont.) I CÂY TRONG TIN HỌC Các nhà ngôn ngữ học thường dùng ngữ pháp để biểu diễn cấu trúc ngữ pháp câu Ví dụ sau dùng để biểu diễn câu ”the cat sat on the mat” S VP NP PP Det N V the cat sat NP P on Det N the mat Hình 2.13: Cây ngữ pháp Spring 2017 Graph Theory 37 Khái niệm Khái niệm (cont.) pr Định nghĩa 2.7 I I I I Cây (Tree) T gồm tập hợp n đỉnh - nút (node) {p1 , p2 , , pn } T1 Trong nút nút gốc pr ; nghĩa có đường đến tất đỉnh lại T2 Tm Hình 2.14: Cây tin học Các nút cịn lại chia thành m tập hợp khơng giao {T1 , T2 , , Tm } tập lại (child tree) Nếu n = T rỗng (null tree) Spring 2017 Graph Theory 39 Spring 2017 Graph Theory 40 Các thuật ngữ liên quan đến I Các thuật ngữ liên quan đến (cont.) I Nút (node): phần tử I A E G Nhánh (branch): cạnh mũi tên nối hai nút Nút cha (parent node) nút (child node) hai quan hệ định nghĩa cạnh, nút cha nút đầu cạnh nút nút cuối cạnh F H C A D E J I F G Hình 2.15: Cây có nút {A, B, C, D, E, F, G, H, J} H C D J I Hình 2.16: Nút E nút cha H, nút H nút E Spring 2017 Graph Theory 41 Các thuật ngữ liên quan đến (cont.) I I I I Graph Theory 42 Các thuật ngữ liên quan đến (cont.) I Nút gốc (root node): nút khơng có cha Bậc nút (node degree): tổng số nút nút A A Nút (leaf node): nút E Nút anh em (sibling node): nút có cha F E Nút nội (internal node): nút có cha có Spring 2017 Spring 2017 G H C D G I K H C D J I Hình 2.17: Nút A nút gốc; nút G, I, J, C, D nút lá; nút E, H, F nút nội; nút G H anh em Graph Theory F 43 J Hình 2.18: Cây bậc nút Spring 2017 Graph Theory 44 Các thuật ngữ liên quan đến (cont.) I Các thuật ngữ liên quan đến (cont.) Bậc (tree degree): bậc lớn nút deg (T ) = max (deg (pi ) , pi ∈ T ) I (2.4) Mức nút (node level):  p = root level (p) = level (parent (p)) + p = root A A E G K F H I C E D G F H Graph Theory D Hình 2.20: Cây mức nút 45 Spring 2017 Graph Theory 46 Các thuật ngữ liên quan đến (cont.) Chiều cao (tree height): I height (T ) = max (level (pi ) + 1, pi ∈ T ) C J I Các thuật ngữ liên quan đến (cont.) I K J Hình 2.19: Bậc Spring 2017 (2.5) (2.6) Đường (path): dãy nút khác {p1 , p2 , , pk } cho (pi , pi+1 ) cạnh Nút p1 gọi nút đầu nút tổ tiên (ancestor) pk nút cuối nút cháu (descendant) A A E F E G K H C D G I F K H C D J I Hình 2.21: Chiều cao J L M Hình 2.22: {A, E, H, I} {F, D, L} đường đi, {A, E, C} đường Nút A tổ tiên I nút I cháu A Spring 2017 Graph Theory 47 Spring 2017 Graph Theory 48 Phân loại Một số loại nhị phân Định nghĩa 2.8 Định nghĩa 2.9 I Cây tuyến tính (linear tree): có bậc I Cây nhị phân (binary tree): có bậc I Cây tam phân (ternary tree): có bậc I Cây m-nhánh (m-way tree): có bậc m Một số nhị phân đặc biệt I I Cây nhị phân đầy đủ (full binary tree): mà nút có nút Cây nhị phân hồn chỉnh (complete binary tree): mà có Đầy đủ nút từ mức đến h − (h chiều cao cây) Riêng mức h nút liên tiếp từ trái sang phải Hình 2.23: Các loại Spring 2017 Graph Theory 49 Một số loại nhị phân (cont.) Spring 2017 Graph Theory 50 Các định lý nhị phân Hình minh họa đầy đủ hoàn chỉnh Định lý 2.7 Nếu T nhị phân khơng có q 2k nút có mức k≥0 Nếu T nhị phân có chiều cao h số nút tối đa 2h−1 Nếu T nhị phân có chiều cao h số nút tối đa 2h − Hình 2.24: Các loại đầy đủ hoàn chỉnh Spring 2017 Graph Theory Nếu T nhị phân có n nút chiều cao nhỏ là log2 (n + 1) 51 Spring 2017 Graph Theory 52 Các định lý nhị phân (cont.) Duyệt nhị phân Định lý 2.8 Có thể sử dụng thuật tốn duyệt tổng qt DFS hay BFS Ngồi sử dụng kỹ thuật duyệt đặc thù cho nhị phân Cho T nhị phân đầy đủ l số nút i số nút nội l =i +2 Spring 2017 (2.7) Graph Theory 53 Duyệt nhị phân (cont.) N I Duyệt nút theo thứ tự NLR; nghĩa duyệt nút trước (N), sau duyệt trái (L), cuối duyệt phải (R) I Duyệt nút theo thứ tự LNR I Duyệt nút theo thứ tự LRN Spring 2017 Graph Theory 54 Duyệt nhị phân (cont.) N a N c b L R (a) NLR L R (b) LNR L R d (c) LRN h Hình 2.25: Ba kiểu duyệt đặc thù e g f i j k l Hình 2.26: Duyệt cách DFS, BFS, NLR, LNR, LRN Spring 2017 Graph Theory 55 Spring 2017 Graph Theory 56 Một số tin học Cây nhị phân tìm kiếm I Cây nhị phân tìm kiếm (Binary Search Tree) Định nghĩa 2.10 I Cây Huffman (Huffman Tree) Cây nhị phân tìm kiếm có: I Cây DFS (DFS Tree) I Cây trò chơi (Game Tree) I I Spring 2017 Graph Theory 57 Cây nhị phân tìm kiếm (cont.) Spring 2017 I 65 55 20 50 I 75 60 I 80 Hình 2.27: Cây nhị phân tìm kiếm I Spring 2017 Graph Theory 58 Định nghĩa 2.11 25 10 Tại nút p kỳ Tất nút trái có khóa nhỏ khóa p Tất nút phải có khóa lớn khóa p Cây Huffman 45 15 Mỗi nút có giá trị khóa (key) giá trị Graph Theory 59 Cây Huffman nhị phân Nhãn nút I Nhãn nút ký tự I Nhãn nút cha chuỗi tổng nhãn hai nút I Nhãn nút trái có thứ tự từ điển trước nút phải Trọng số nút I Trọng số nút số lần xuất nhãn ký tự I Trọng số nút cha tổng trọng số nút I Nút trái có giá trị trọng số nhỏ trọng số nút trái phải Mỗi cạnh gán giá trị: cạnh trái cạnh phải Spring 2017 Graph Theory 60 Cây Huffman (cont.) Cây DFS Định nghĩa 2.12 CEDBA,31 BA,18 CED,13 0 ED,7 C,6 E,2 Cây DFS đồ thị G có hướng sinh thuật tốn duyệt DFS đồ thị G Algorithm Cho đồ thị liên thông G = (V , E ) có n đỉnh V = {v1 , , } Hãy tìm DFS T B,8 A,10 1: 2: 3: D,5 4: Hình 2.28: Cây Huffman 5: 6: Spring 2017 Graph Theory 61 Cây DFS (cont.) e f a d Graph Theory 62 Định nghĩa 2.13 Cây trị chơi đồ thị nút trạng thái trò chơi cung tương đương với bước b a Spring 2017 Cây trò chơi a e Khởi tạo T với đỉnh v dfs_tree(u) procedure dfs_tree(v) for đỉnh u kề với v Thêm đỉnh u cạnh (v, u) vào T dfs_tree(u) c f d d g x b c b c (a) đồ thị vô hướng e x o g g (b) DFS Graph Theory x x o x x x o o o o f (c) DFS x o x x x x o o o Hình 2.29: Đồ thị vơ hướng DFS Spring 2017 x x o o x Hình 2.30: Cây trò chơi Tic-Tac-Toe 63 Spring 2017 Graph Theory 64 Đồ thị DAG ĐỒ THỊ DẠNG DAG Định nghĩa 2.14 Đồ thị có hướng khơng có chu trình gọi đồ thị DAG (Directed Acyclic Graph) g e a f b d c Hình 2.31: Đồ thị dạng DAG Spring 2017 Sắp xếp thứ tự 66 Sắp xếp thứ tự (cont.) g e Định nghĩa 2.15 a Sắp xếp thứ tự hay xếp tơ pơ cho đồ thị có hướng G cách đánh thứ tự đỉnh cho cạnh có hướng (u, v) u ln có thứ tự trước v f b d c Định lý 2.9 Hình 2.32: Một cách thứ tự đỉnh Điều kiện cần đủ để đồ thị có hướng G xếp thứ tự G đồ thị DAG Spring 2017 Graph Theory Graph Theory 67 Spring 2017 Graph Theory 68 Sắp xếp thứ tự (cont.) Tài liệu tham khảo Algorithm Sắp xếp thứ tự 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: L←∅ S ← Các đỉnh khơng có cạnh vào while S 6= ∅ lấy đỉnh v từ S thêm đỉnh v vào L for đỉnh u kề với v loại bỏ cạnh (u, v) khỏi đồ thị if u khơng có cạnh vào then thêm u vào S if đồ thị cịn cạnh then xuất thơng báo khơng thể xếp thứ tự else xuất danh sách L chứa đỉnh theo thứ tự Spring 2017 Graph Theory 69 Spring 2017 Graph Theory 70 ... 2017 Graph Theory 64 Đồ thị DAG ĐỒ THỊ DẠNG DAG Định nghĩa 2.14 Đồ thị có hướng khơng có chu trình gọi đồ thị DAG (Directed Acyclic Graph) g e a f b d c Hình 2.31: Đồ thị dạng DAG Spring 2017 Sắp... (⇐) Đồ thị G có khung T đồ thị G liên thơng Điều suy tự định nghĩa khung (⇒) Đồ thị G liên thơng đồ thị G có khung T I Nếu đồ thị G có chu trình C loại bỏ cạnh chu trình để tạo đồ thị G Đồ thị. .. (c) G3 I Một đồ thị dạng khơng có cạnh khun khơng có cạnh song song Một đồ thị dạng rừng có p thành phần liên thông thành phần liên thông đồ thị dạng (d) G4 Hình 2.2: Đồ thị dạng dạng Spring 2017

Ngày đăng: 25/03/2023, 13:09

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w