Cây có gốc tam phân Các mức của cây Dùng cây để biểu diễn biểu thức số học... Độ dài Cây nh phân:... Đồ thị nhận được chứa một số cạnh ít hơn nhưng ṽn c̀n chứa tất cả các đỉnh của G v̀
Trang 11
N I DUNG:
Định nghĩa và tính chất
Bài toán tìm cây khung nh ỏ nhất
Trang 25.1 Đ nh nghĩa và các tính chất c bản
Trang 33
Trang 55
Đ nh nghĩa 1: Cây là tập hợp hữu hạn các nút thỏa mãn:
Đ nh nghĩa 2 (đệ qui): - Nếu T chỉ gồm 1 nút T là một cây v́i gốc l̀ chính nút đ́
Trang 6Cây có gốc tam phân Các mức của cây
Dùng cây để biểu diễn biểu thức số học
Trang 77
Trang 8- Cây con: M i cây có g c t ại nút a T là m t cây con của T
- Đ ờng đi: Dãy các đỉnh r1, …, rk, trong đ́ ri là cha của ri+1 gọi l̀ đường đi từ r1 đến rk Độ dài
Cây nh phân:
Trang 99
Đ nh nghĩa 1 Cho G l̀ một đơn đồ thị
Một cây T gọi l̀ cây khung của G T l̀ đồ thị con của G v̀ chứa tất cả các đỉnh của G
Trang 10Đ nh ĺ 2 Một đơn đồ thị l̀ liên thông nếu v̀ chỉ nếu ń ć cây khung
Ch́ng minh Giả s̉ đồ thị G ć cây khung T chứa tất cả các đỉnh của G và ć đường đi trong T
giữa hai đỉnh bất kỳ ć đường đi trong G giữa hai đỉnh bất kỳ của ń G l̀ liên thông
các chu tr̀nh đơn ǹy Đồ thị nhận được chứa một số cạnh ít hơn nhưng ṽn c̀n chứa tất cả các đỉnh của G v̀ liên thông Nếu đồ thị con ǹy không phải l̀ cây th̀ ń chứa chu tr̀nh đơn C̃ng giống như trên, x́a đi một cạnh của chu tr̀nh đơn Ḷp lại quá tr̀nh ǹy cho đến khi không c̀n chu tr̀nh đơn Điều ǹy ć thể v̀ chỉ ć hữu hạn cạnh trong đồ thị Đồ thị con cuối cùng sau khi x́a đi các cạnh của các chu tr̀nh l̀ cây khung
Trang 1111
5.2 Bài toán tìm cây khung
Trang 122 Xơy dựng cây khung bằng thuật toán DFS
Thuật toán TreeDfs(u):
Đ phức tạp tính toán: Giải thuật t̀m cây khung ć độ phức tạp O(n)
Trang 1313
Ví dụ: T̀m cây khung của đồ thị G cho dứi đây:
Trang 143 Xơy dựng cây khung bằng thuật toán BFS
Thuật toán TreeBfs(u):
Đ phức tạp tính toán: Giải thuật t̀m cây khung ć độ phức tạp O(n)
Trang 1515
Cho đồ thị vô hứng ć trọng số G = (V, E)
Gọi T l̀ một câu khung của G Trọng số WT của T l̀ t̉ng trọng số các cạnh thuộc cây
2 Điều kiện:
G ć cây khung nhỏ nhất G liên thông;
Trang 163 Thuật toán tìm cơy khung nhỏ nhất:
Thuật toán 1 Thuật toán Prim
Trang 19{for (int i= 1; i<= n, i++)
{vt[i]= 0; d[i]= a[s][i]; t[i]= s};
for (i = 1; i<= n; i++)
if (vt[i]==0 && d[i] < min) {min= d[i]; v= i;}
if (v==0)
vt[v]= 1; wt= wt + a[v][t[v]];
for (i= 1; i<= n; i++)
if (vt[i]==0 && d[i]) > a[v][i]) {d[i]= a[v][i]; t[i]= v; }
} cout << wt << endl;
for (i= 1; i<= n; i++)
return;
}
Trang 20
Chứng minh tính đúng đắn của thuật toán Prim:
Giả s̉ k l̀ số nguyên ĺn nhất thỏa mãn điều kiện trên
Định ĺ được chứng minh nếu ta chỉ ra rằng S = T
Trang 2121
Trang 22
Thuật toán 2 Thuật toán Kruskal
T= ; WT= 0; k = 0;
for (i=1; i<= m; i++){
Trang 2525
Nhận xét:
định