Professional Documents
Culture Documents
Chuong6 Caybaotrum Moi
Chuong6 Caybaotrum Moi
C
F
E D
C
F
D
T1 = (V, E’),
T2
E
V= {A, B, C, D, E, F};
E’ = {(A,E),
{(A,C), (B,D),
(A,E), (C,D),
(D,C), (A,F), (E,F)} E;
(D,E), (B,D)}
12/09/2018 KHOA CÔNG NGHỆ THÔNG TIN 7
Trên một đồ thị G (liên thông) có thể có nhiều cây bao trùm,
gọi tập các cây khung trên G là Sp(G).
Ta có thể tìm cây bao trùm bằng các thuật giải BFS, DFS
(Duyệt hết tất cả các đỉnh, mỗi lần duyệt đỉnh u nạp đỉnh vào
trong T (với điều kiện T {u}, T không tạo ra chu trình))
Nếu giả sử G là đồ thi có trọng số, thì cây T cũng là cây bao
trùm có trọng số.
12/09/2018 KHOA CÔNG NGHỆ THÔNG TIN 8
12/09/2018 KHOA CÔNG NGHỆ THÔNG TIN 9
Cho G = (V, E) là một đồ thị có trọng số,
T là cây bao trùm tối tiểu khi:
w(T) = min{w(T) / T Sp(G)}
w(T): tổng trọng số của các cạnh trên cây T;
Sp(G): là tập tất cả cây bao trùm trên G;
Cây bao trùm tối tiểu là 1 cây bao trùm, có tổng trọng số là tối tiểu
trên tập các cây khung Sp(G);
12/09/2018 KHOA CÔNG NGHỆ THÔNG TIN 10
1
A 8 B
3 5
C
F
1 4 3
1
6
T = (V, E’), E 2 D
V= {A, B, C, D, E, F};
E’ = {(A,E,1), (A,C,1), (C, D,1), (B,D,3), (A,F,3)} E;
w(T) =9
12/09/2018 KHOA CÔNG NGHỆ THÔNG TIN 11
12/09/2018 KHOA CÔNG NGHỆ THÔNG TIN 12
Đầu vào: G = (V, E) là một đồ thị liên thông vô hướng có
trọng số
Đầu ra: T (cây bao trùm tối tiểu)
Cây T12/09/2018
={} {(A, C,
{(A, 1),
1), (A,
C, 1)} (A, E,
E, 1),
1), (E,
1)} (E, D,
D, 1),
1)} (A,F,3),
1),KHOA CÔNG NGHỆ(D,
(A,F,3)} B,TIN3)}
THÔNG w(T) = 9 16
12/09/2018 KHOA CÔNG NGHỆ THÔNG TIN 17
// khai bao ma tran bang // khai bao TapE // khai bao TapE
mang hai chieu
int E1[MAX]; int T1[MAX];
# define MAX 20
int E2[MAX]; int T2[MAX];
int a[MAX][MAX];
int wE[MAX]; int wT[MAX];
int n; // so dinh cua do thi
int nE=0; // so phan tu tap E int nT=0; // so phan tap T
O(n * max(n,m))
12/09/2018 KHOA CÔNG NGHỆ THÔNG TIN 21
12/09/2018 KHOA CÔNG NGHỆ THÔNG TIN 22
Bước 1: từ E lấy ra một cạnh e, sao cho:
▪ ei E, w(e) w(ei) (w(e) là trọng số của cạnh e)
▪ Edges(T) {e} T không tạo ra chu trình;
Bước 2: Nếu không lấy được e nào hoặc V = Vertices(T) thì
dừng (T là cây khung tối tiểu), ngược lại thì quay lại bước 1;
Cây T12/09/2018
= { (A,C,1) ,(A,E,1) ,(E, D,1) ,(A,F,3) ,(B,D,3) }
KHOA CÔNG NGHỆ THÔNG TIN 25
12/09/2018 KHOA CÔNG NGHỆ THÔNG TIN 26
// khai bao ma tran bang // khai bao TapE // khai bao TapE
mang hai chieu
int E1[MAX]; int T1[MAX];
# define MAX 20
int E2[MAX]; int T2[MAX];
int a[MAX][MAX];
int wE[MAX]; int wT[MAX];
int n; // so dinh cua do thi
int nE=0; // so phan tu tap E int nT=0; // so phan tap T
O(max(n ,
2 m ))
2
4 9
4
I E
A
11 3 4 14
8 7 4 10
F
H 1 G 2