Khái niệm Cây bao trùm.

5 1.3K 5
Tài liệu đã được kiểm tra trùng lặp
Khái niệm Cây bao trùm.

Đang tải... (xem toàn văn)

Thông tin tài liệu

Khái niệm Cây bao trùm.

Khái niệm Cây bao trùmCho đồ thị G =(X,U). Giả sử G’ là đồ thị bộ phận của G. Nếu G’ =(X,U’) là một cây thì G’ gọi là cây bao trùm của đồ thị G.Cây bao trùm ngắn nhất-Cho đồ thị G =(X,U). Mỗi cạnh (x,y) thuộc U có trọng số c(u,v) >= 0-G’ = (X,U’) là cây bao trùm của G-Độ dài của cây G’ đýợc xem là tổng trọng số của các cạnh tạo thành G’-Tìm G’ của G sao cho G’ có độ dài ngắn nhấtThuật toán PrimCho G =(X,U) là đồ thi mà mỗi cạnh u thuộc U có trong số l(u)>=0-Xác định cạnh có trọng số bé nhất trong tất cả các cạnh trong U. Giả sử là u1-Giả sử u2 là cạnh có trọng số bé nhất trong các cạnh U \ {u1}-Giả sử u3 là cạnh có trọng số bé nhất trong các cạnh U \{u1,u2}. Với điều kiện {u1,u2,u3} không tạo thành chu trình–Giả sử býớc k ta đã xác định đýợc {u1,u2,u3,…,uk} có trọng số bé nhất và không tạo thành chu trình–Thực hiện býớc n-1 thì dừng lại. Khi đó ta có {u1,u2,u3,…,un-1} không tạo thành chu trình và có trọng số bé nhất. –Khi đó ta có G’ =(X,Un-1) là cây bao trùm bé nhất của G cần tìmThuật toán Prim (tiếp…)–Cho đồ thị G = (X,U)–Gọi X’ là tập các đỉnh kề các cạnh trong G’–Ban đầu X chứa một đỉnh tuỳ ý trong G giả sử x, tập các cạnh G’ rỗng–Ở mỗi býớc ta chọn cạnh (x,y) ngắn nhất sao cho x∈ X’ và y ∈ X-X’. Thêm y vào X’ và thêm (x,y) vào G’–Ti ếp t ục phát tri ển G’ cho đ ến khi X’ =X. Khi đó G’ tr ở thành cây bao trùm ng ắn nh ất c ủa GThuật toán Prim (tiếp…)- X ={x} (x: đỉnh tuỳ ý thuộc X)- G =∅- Th ực hi ện các bý ớc sau cho đ ến khi X’=X- Ch ọn c ạnh (x,y) có tr ọng s ố nh ỏ nh ất v ới x ∈ X’, y ∈ X-X’- X’ = X’ ∪ {x}- G’ =G’ ∪ {(x,y) }123451234512345123451234512354 6176284353912354 612353 12354 61762843539Khởi tạo {1} -1 {1,4} (1,4)2 {1,4, 5} (1,5)3 {1,4, 5, 3} (5,3)4 {1,4, 5, 3, 2} (3, 2)(x,y)X’BýớcKhởi tạo {3} -1 {3, 2} (3, 2)2 {3, 2, 6} (3, 6)3 {3, 2, 6,5} (3, 5)4 {3, 2, 6, 5, 1} (5, 1)5 {3, 2, 6, 5, 1, 4}(1,4) 3. Đýờng đi ngắn nhất- Tìm đýờng đi ngắn nhất từ một đỉnh nguồn tới các đỉnh các đỉnh còn lại của đồ thị- Tìm đýờng đi ngắn nhất giữa một cặp đỉnh của đồ thị3. Đýờng đi ngắn nhất từ một đỉnh nguồn - Thuật toán Dijkstra - Bài toán:- Cho đồ thị G =(X,U) đõn liên thông có trọng số- Tìm đýờng đi ngắn nhất từ đỉnh nguồn ∈X đ ến t ất c ả các đ ỉnh còn l ại. - Các đ ỉnh x đý ợc đánh s ố 1 t ới n - Đ ồ th ị đý ợc bi ểu di ễn b ởi ma tr ận k ề C[1 n,1 n], trong đó C[i,j] là đ ộ dài cung (i,j) n ếu không có cung (i,j) thì C[i,j] = ∞3. - Gán trọng số các đỉnh312356135461Tìm cây bao trùm ngắn nhất của đồ thị Ga bc defg hik l m23 111223 333334441234510110462022 1 2 3 4 5 10 1 10 4 6 20 2 2 Đýờng đi : 1,5,4,2 Độ dài : 2+2+4 = 8 Đýờng đi : 1,2 Đýờng đi : 1,3,2 Độ dài : 6+1 =7 The best !!! - Trọng số của đỉnh xuất phát là t(a) = 0- Tại các đỉnh còn lại ta ghi một trọng số dýõng t đủ lớn sao cho giá trị t này lớn hõn trọng số của các đỉnh từ a tới. - Thực hiện việc giảm trọng số các đỉnh- Giả sử tại đỉnh x có trọng số t(x)- Nếu tồn tại đỉnh y có trọng số t(y) từ y đến x mà t(x) > t(y) + l(y,x) thì ta thay trọng số t(x) bởi trọng số t’(x) = t(y) + l(y,x)- Trong trường hợp t(x) < t(y) + l(y,x) ta giữ nguyên giá trị t(x)- Quá trình này lặp lại cho đến khi trọng số của tất cả trong G=(X,U) đạt giá trị cực tiểu nghĩa là với mọi x thuộc X không tồn tại y thuộc X kề với x mà t(y) + l(y,x) < t(x)1. Ta xác định đường đi ngắn nhất từ đỉnh nguồn tới các đỉnh còn lại qua các bước, mỗi bước ta xác định đường đi ngắn nhất từ đỉnh nguồn tới một đỉnh trong đồ thị2. Lưu các đỉnh mà đường đi ngắn nhất tới chúng đã được xác định vào tập S3. Ban đầu tập S chỉ chứa đỉnh nguồn 4. Ta gọi các đường đi từ đỉnh nguồn tới các đỉnh u khác nhưng chỉ đi qua các đỉnh nằm trong S là đường đi đặc biệt5. Dùng mảng D[2 n], trong đó D[u] lưu độ dài đường đi đặc biệt ngắn nhất từ đỉnh nguồn tới u6. Ban đầu S chứa đỉnh 1 (đỉnh nguồn), ta xác định D[u] = C[1,u] (u =2,…n)7. Tại mỗi bước ta sẽ chọn một đỉnh x ∈ X-S mà D[x] là nhỏ nhất và thêm x vào S8. Sau khi thêm x vào S, ta xác định lại các D[y] với y ∉ S. Nếu độ dài đường đi đặc biệt qua đỉnh x (vừa được chọn) tới y mà nhỏ hơn D[y] thì ta lấy D[y] làm độ dài đường đi đó9. Khi S = X thì D[u] sẽ lưu độ dài đường đi ngắn nhất từ 1 tới u với u =2…n10. Để lưu vết của đường đi ta sử dụng mảng P[2 n], trong đó P[y] =x nếu ta đi tới y theo cung (x,y) 3. Thuật toán Dijkstra (tiếp…)• Disjktra;1. S = {1};2. For i = 2 to n do 1. D[i] = C[1,i];2. P[i]=1;3. While X-S ≠ ∅ do1. Chọn x ∈ X- S mà D[x] nhỏ nhất;2. S =S ∪ {x}4. For y ∈ X- S do1. If D[x] +C[x,y] < D[y] then1. D[y] = D[x] +C[x,y];2. P[y]=x; . Khái niệm Cây bao trùm Cho đồ thị G =(X,U). Giả sử G’ là đồ thị bộ phận của G. Nếu G’ =(X,U’) là một cây thì G’ gọi là cây bao trùm của đồ thị G .Cây bao. G .Cây bao trùm ngắn nhất-Cho đồ thị G =(X,U). Mỗi cạnh (x,y) thuộc U có trọng số c(u,v) >= 0-G’ = (X,U’) là cây bao trùm của G-Độ dài của cây G’ đýợc

Ngày đăng: 02/11/2012, 14:18

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

Tài liệu liên quan