Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 25 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
25
Dung lượng
354,97 KB
Nội dung
CH NG CÂY VÀ CÂY KHUNG Đ TH N I DUNG: Định nghĩa tính chất Xây dựng khung đồ thị Bài tốn tìm khung nhỏ 5.1 Đ nh nghĩa tính chất c Cây tự - Cây tự (không gốc) T đồ thị vô hứng liên thông v̀ không ć chu tr̀nh đơn - Đồ thị F rừng thành phần liên thông F - Đồ thị F rừng F khơng có chu trình đơn Cây tự (không gốc) Đ nh lý 1: T= (V, E) đồ thị vô hứng có n đỉnh Các mệnh đề sau tương đương: (1) T cây; (2) T không chứa chu trình có n-1 cạnh; (3) T liên thơng có n-1 cạnh; (4) T liên thơng cạnh T cầu ; (5) Hai đỉnh T có đường nối đến ; (6) T khơng chứa chu trình thêm cạnh thu chu trình Cây có g c Đ nh nghĩa 1: Cây tập hợp hữu hạn nút thỏa mãn: - Có nút gọi gốc - Có quan hệ phân cấp “cha-con” nút Đ nh nghĩa (đệ qui): - Nếu T gồm nút T v́i gốc l̀ nút đ́ - Nếu T1, …, Tn (n 1) có gốc tương ứng r1, …, rn T v́i gốc r tạo thành cách cho r thành nút cha nút r1, …, rn Cây có gốc tam phân Các mức Các ví dụ cây: - Mục lục sách - Cấu trúc thư mục đĩa máy tính - Dùng để biểu diễn biểu thức số học M t s khái niệm: - Nút g c: nút T khơng có cha - Nút cha: Nút r cha nút r1, , rn Nút gốc nút nút cha - Nút con: Các nút r1, …, rn gọi nút r - Bậc m t nút: số nút nút đ́ - Bậc m t T: bậc ĺn nút T T có bậc m T gọi m-phân Nút lá: l̀ nút ć bậc = nút khơng có nút Nút nhánh (nút hay nút trung gian): l̀ nút vừa ć vừa ć cha T m-phơn đầy đủ nút nhánh ć m - Cây con: M i có g c nút a T m t T - Đ ờng đi: Dãy đỉnh r1, …, rk, đ́ ri cha ri+1 gọi l̀ đường từ r1 đến rk Độ dài đường l̀ số nút đường -1 (Đường ć độ dài k-1) - Mức nút: l̀ độ d̀i đường từ gốc đến nút (độ cao nút) Nút gốc có mức - Chiều cao cây: mức ĺn nút T - Cơy đ ợc thứ tự: mà theo thứ tự ǹo đ́ - Cây gán nhãn: mà đỉnh gắn v́i giá trị (nhãn) Cây nh phân: Cây nhị phân mà nút có khơng q Phân biệt bên trái bên phải Đ nh nghĩa cơy khung Đ nh nghĩa Cho G l̀ đơn đồ thị Một T gọi l̀ khung G T l̀ đồ thị G v̀ chứa tất đỉnh G Đồ thị G Một khung T G Đ nh ĺ Một đơn đồ thị l̀ liên thông v̀ ń ć khung Ch́ng minh Giả s̉ đồ thị G ć khung T chứa tất đỉnh G ć đường T hai đỉnh ć đường G hai đỉnh ń G l̀ liên thông Giả s̉ G l̀ liên thông Nếu G l̀ th̀ G ć chu tr̀nh đơn X́a cạnh chu tr̀nh đơn ǹy Đồ thị nhận chứa số cạnh ṽn c̀n chứa tất đỉnh G v̀ liên thông Nếu đồ thị ǹy l̀ th̀ ń chứa chu tr̀nh đơn C̃ng giống trên, x́a cạnh chu tr̀nh đơn Ḷp lại tr̀nh ǹy không c̀n chu tr̀nh đơn Điều ǹy ć thể v̀ ć hữu hạn cạnh đồ thị Đồ thị cuối sau x́a cạnh chu tr̀nh l̀ khung 10 5.2 Bài tốn tìm khung 1) Đặt bƠi toán: Input: Đồ thị G gồm n đỉnh cho danh sách kề; Đỉnh u; Output: Cây khung T G đỉnh u; 11 Xơy dựng khung thuật toán DFS Thuật toán TreeDfs(u): - Tạo T thuật toán DFS đỉnh u; - Nếu số đỉnh T n th̀ xuất kết T; - Nếu số đỉnh T nhỏ n th̀ xuất thơng báo: Khơng có khung.; Đ phức tạp tính tốn: Giải thuật t̀m khung ć độ phức tạp O(n) 12 Ví dụ: T̀m khung đồ thị G cho dứi đây: - Tìm kiếm theo chiều sâu 1: T = {(1, 3), (2, 3), (3, 4), (4, 5), (5, 6), (6, 7), (7, 8), (8, 9), (9, 11), (8, 10)} - Tìm kiếm theo chiều rộng 1: T = {(1, 3), (2, 3), (3,4), (4, 5), (4, 6), (6, 7), (6, 8), (8, 9), (8, 10), (9, 11)} Ghi chú: - Cây khung T tìm kiếm theo chiều rộng gồm đường ngắn xuất phát từ đến đỉnh khác - Đồ thị đầy đủ Kn có nn-2 khung khác 13 Xơy dựng khung thuật toán BFS Thuật toán TreeBfs(u): - Tạo T thuật toán BFS đỉnh - Nếu số đỉnh T n th̀ xuất kết T - Nếu số đỉnh T nhỏ n th̀ xuất thông báo: Không ć khung Đ phức tạp tính tốn: Giải thuật t̀m khung ć độ phức tạp O(n) 14 5.3 BƠi tốn tìm cơy khung nhỏ Cơy khung nhỏ Cho đồ thị vô hứng ć trọng số G = (V, E) Gọi T l̀ câu khung G Trọng số WT T l̀ t̉ng trọng số cạnh thuộc Cây khung T khung nh̉ nh́t WT có giá trị nhỏ Điều kiện: G ć khung nhỏ G liên thông; 15 Thuật tốn tìm cơy khung nhỏ nhất: Thuật toán Thuật toán Prim Đồ thị G = (V, E) gồm n đỉnh cho ma trận trọng số a[i][j]; Đỉnh s G; Output: Cây khung nhỏ T v̀ WT; Input: Khởi tạo: T= ; VT = {s}; WT= 0; while (V\VT ≠) { ; if (T̀m e) {T = T e; WT= WT + trọng số e; VT = VT {v}; } else return (G khơng có khung); } return (T WT); 16 Ví dụ Dùng thuật toán Prim, t̀m khung nhỏ đồ thị G s = b; Gỉi Khởi tạo T = ; VT = {b}; WT = 0; Cây khung nhỏ xây dựng thuật toán Prim thể bảng sau: 17 a B ́c cḥn 10 11 Cạnh đ ợc cḥn b,f a,b f,j a,e f,g c,g c,d g,h h,l i,j k,l Tṛng s 2 3 3 WT 11 13 14 17 20 23 24 Kết luận: T = { (b,f), (a,b), (f,j), (a,e), (f,g), (c,g), (c,d), (g,h), (i,j) (h,l), (k,l) } WT = 24 18 CƠi đặt: int n, a[100][100], s; int vt[100], d[100], t[100]; void Prim() {for (int i= 1; i