Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 174 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
174
Dung lượng
2,91 MB
Nội dung
Đồ thị Một số khái niệm Đường đi, chu trình, đồ thị liên thơng Một số dạng đồ thị đặc biệt Biểu diễn đồ thị máy tính Các thuật tốn tìm kiếm đồ thị Tìm đường ngắn Cây ứng dụng 7.8 Bài tập PhD Tống Minh Đức – Mob: 0984-485-888 – Email: tmduc08@Gmail.com / 176 Một số khái niệm (1/17) Giới thiệu chung: • Lý thuyết đồ thị đề xuất từ kỷ 18, báo Euler công bố năm 1736 liên quan đến lời giải toán tiếng cầu Konigsberg • Cho tới nay, mối quan tâm đến lý thuyết đồ thị khơng suy giảm • Lý do: phạm vi ứng dụng rộng rãi đồ thị nhiều lĩnh vực khác nhau, bao gồm: – Trong tin học, – Hoá học, – Vận trù học, – Kỹ thuật điện, – Ngôn ngữ – Kinh tế… PhD Tống Minh Đức – Mob: 0984-485-888 – Email: tmduc08@Gmail.com / 176 Một số khái niệm(2/17) Định nghĩa 1.1: Đồ thị (Graph) cấu trúc liệu rời rạc bao gồm đỉnh cạnh nối cặp đỉnh Chúng ta phân biệt đồ thị thông qua kiểu số lượng đỉnh, số lượng cạnh nối cặp đỉnh đồ thị, điểm đầu điểm cuối cạnh PhD Tống Minh Đức – Mob: 0984-485-888 – Email: tmduc08@Gmail.com / 176 Một số khái niệm • Định nghĩa 1.2 Đồ thị vơ hướng đồ thị G cặp có thứ tựG:=(V, E), đó: Định nghĩa 1.3 Đồ thị có hướng G cặp có thứ tự G:=(V, A), – V: tập đỉnh nút • V: tập đỉnh nút – E: tập cặp không thứ tự chứa đỉnh phân biệt, gọi cạnh Hai đỉnh thuộc cạnh gọi đỉnh đầu cuối cạnh • A: tập cặp có thứ tự chứa đỉnh, gọi cung Cung e = (x, y) có hướng từ x tới y; x gọi điểm đầu y gọi điểm cuối cung PhD Tống Minh Đức – Mob: 0984-485-888 – Email: tmduc08@Gmail.com / 176 Một số khái niệm Định nghĩa 1.4 Đ n đ th vô h ng G =(V,E) đồ thị vơ hướng mà hai đỉnh có tối đa cạnh Định nghĩa 1.5 Đa đ th vô h ng G=(V,E) đồ thị vô hướng mà hai đỉnh có nhiều cạnh PhD Tống Minh Đức – Mob: 0984-485-888 – Email: tmduc08@Gmail.com / 176 Một số khái niệm • Đ nh nghĩa 1.6 Đơn đồ thị có hướng G = đồ thị có hướng, đó, v1 v2 hai đỉnh đồ thị phép có tối đa m t cung (v1, v2) Đ nh nghĩa 1.7 Đa đ th có h ng G = đồ thị có hướng, v1 v2 đỉnh đồ thị có nhiều cung (v1,v2) Hai cung e1, e2 tương ứng với cặp đỉnh gọi cung lặp PhD Tống Minh Đức – Mob: 0984-485-888 – Email: tmduc08@Gmail.com / 176 Một số khái niệm • Đ nh nghĩa 1.8 1.8:: – Gi đ th vô h ng G=(V, E) đồ thị vô hướng mà cạnh cặp khơng có thứ tự gồm hai phần tử (hai phần tử không thiết phải khác nhau) V – Cạnh e gọi khuyên có dạng e =(u, u), u đỉnh thuộc V PhD Tống Minh Đức – Mob: 0984-485-888 – Email: tmduc08@Gmail.com / 176 Một số khái niệm • Đ nh nghĩa 1.9 1.9:: – Hai đỉnh u v đồ thị vô hướng G = gọi k (u,v) cạnh thuộc đồ thị G – Nếu e =(u, v) cạnh đồ thị G ta nói cạnh liên thu c với hai đỉnh u v, ta nói cạnh e nối đỉnh u với đỉnh v, đồng thời đỉnh u v gọi đỉnh đầu cạnh (u,v) • Định nghĩa 1.10 10:: – Ta gọi b c c a đ nh v đồ thị vô hướng số cạnh liên thuộc với ký hiệu deg(v) deg(v) PhD Tống Minh Đức – Mob: 0984-485-888 – Email: tmduc08@Gmail.com / 176 Một số khái niệm (12/17) • Ví dụ: dụ: – Cho đồ thị vơ hướng: Ta có có:: – deg(a) = 2, deg(b) =deg(c) = deg(f) = 4, deg(e) = 3, deg(d) = 1, deg(g)=0 – Đỉnh bậc gọi đỉnh cô lập – Đỉnh bậc gọi đỉnh treo – Trong ví dụ trên, đỉnh g đỉnh lập, đỉnh d đỉnh treo PhD Tống Minh Đức – Mob: 0984-485-888 – Email: tmduc08@Gmail.com / 176 Một số khái niệm (13/17) Định lý 1.1: Giả sử G = đồ thị vô hướng với m cạnh Khi đó: 2m = Σ deg(v) Hệ quả:: Trong đồ vơ hướng, số đỉnh bậc lẻ số chẵn PhD Tống Minh Đức – Mob: 0984-485-888 – Email: tmduc08@Gmail.com 10 / 176 Thuật toán Kruskal Tìm khung nhỏ đồ thị: (a,b) a (b,d) b (c,d) c (e,f) d (d,f) e (a,g) f (h,f) g (b,h) h (g,h) (e,g) (c,e) (a,c) PhD Tống Minh Đức – Mob: 0984-485-888 – Email: tmduc08@Gmail.com 160 / 176 Thuật tốn Kruskal Tìm khung nhỏ đồ thị: (a,b) a (b,d) b (c,d) c (e,f) d (d,f) e (a,g) f (h,f) g (b,h) h (g,h) (e,g) (c,e) (a,c) PhD Tống Minh Đức – Mob: 0984-485-888 – Email: tmduc08@Gmail.com 161 / 176 Thuật tốn Kruskal Tìm khung nhỏ đồ thị: (a,b) a (b,d) b (c,d) c (e,f) d (d,f) e (a,g) f (h,f) g (b,h) h (g,h) (e,g) (c,e) (a,c) Trọng số khung: 0984-485-888 – Email: tmduc08@Gmail.com + PhD + 3Tống + 3Minh + Đức + 4+– Mob: = 19 162 / 176 Cây ứng dụng (36/43) 7.5 Cây khung nhỏ (8/15) 7.5 7.5.1 Thuật tốn KRUSKAL (4/6) 7.5.1 Chương trình minh họa thuật toán Kruskal #include "conio.h" #include "io.h" #include "iostream" using namespace std; #define MAX 50 #define TRUE #define FALSE int n, m, minl, connect; int dau[500],cuoi[500], w[500]; int daut[50], cuoit[50], father[50]; void Init(void){ int i; FILE *fp; fp=fopen("dothi.in","r"); fscanf(fp, "%d%d", &n,&m); cout