BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC MỎ ĐỊA CHẤT BÁO CÁO HỌC THUẬT Đề tài Thuật toán gán nhãn đồ thị và lập trình tìm đường đi ngắn nhất bằ ng thuật toán Disjstra Người thực hiện Nguyễn Tuấn Anh Bộ m[.]
BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC MỎ - ĐỊA CHẤT - BÁO CÁO HỌC THUẬT Đề tài: Thuật tốn gán nhãn đồ thị lập trình tìm đường ngắn bằ ng thuật toán Disjstra Người thực hiện: Nguyễn Tuấn Anh Bộ mơn: Mạng máy tính – Khoa Công nghệ thông tin Hà nội- 6/2022 MỤC LỤC CHƯƠNG 1- KHÁI NIỆM VÀ CÁC DẠNG ĐỒ THỊ 1.1 ĐỊNH NGHĨA ĐỒ THỊ VÀ CÁC KHÁI NIỆM .4 1.1.1 Định nghĩa đồ thị 1.1.2 Đồ thị có hướng khơng có hướng 1.1.3 Đỉnh kề .5 1.1.4 Cạnh liên thuộc 1.1.5 Bậc đỉnh .5 1.2 ĐƯỜNG ĐI VÀ CHU TRÌNH 1.2.1 Đường 1.2.2 Chu trình 1.2.3 Đồ thị có trọng số khơng có trọng số 1.2.4 Đơn đồ thị, đa đồ thị đồ thị .6 CHƯƠNG 2-BIỂU DIỄN ĐỒ THỊ TRÊN MÁY TÍNH 2.1.BIỂU DIỄN ĐỒ THỊ BẰNG MA TRẬN KỀ 2.2 BIỂU DIỄN ĐỒ THỊ BẰNG DANH SÁCH CẠNH 12 2.3 BIỂU DIỄN ĐỒ THỊ BẰNG DANH SÁCH LÂN CẬN KỀ 16 CHƯƠNG 3- ĐƯỜNG ĐI NGẮN NHẤT 19 3.1.KHÁI NIỆM VỀ ĐƯỜNG ĐI VÀ ĐƯỜNG ĐI NGẮN NHẤT .19 3.2.THUẬT TOÁN GÁN NHÃN ĐỒ THỊ GIẢI BÀI TOÁN 20 3.3.THUẬT TOÁN DIJKSTRA GIẢI BÀI TOÁN 25 LỜI NĨI ĐẦU Trong thực tế có nhiều toán liên quan tới tập đối tượng mối liên hệ chúng, địi hỏi tốn học phải đặt mơ hình biểu diễn cách chặt chẽ tổng quát ngôn ngữ ký hiệu Những ý tưởng đồ thị đưa từ kỷ thứ XVIII nhà toán học Thụy Sĩ Leonhard Euler từ mơ hình đồ thị để giải toán cầu Künigsburg tiếng Lý thuyết đồ thị khoa học phát triển từ lâu ngày có nhiều ứng dụng Đến ngày nay, với đời máy tính điện tử phát triển nhanh chóng tin học, Lý thuyết đồ thị quan tâm nhiều hơn, thuật tốn đồ thị có nhiều ứng dụng nhiều lĩnh vực khác như: mạng Máy tính, Đồ hoạ máy tính, Lý thuyết mã, Tối ưu hoá, Kinh tế học,… CHƯƠNG 1- KHÁI NIỆM VÀ CÁC DẠNG ĐỒ THỊ 1.1 ĐỊNH NGHĨA ĐỒ THỊ VÀ CÁC KHÁI NIỆM 1.1.1 Định nghĩa đồ thị Một đồ thị G bao gồm tập hợp hữu hạn V, mà phần tử gọi đỉnh (hoặc nút) tập hợp E gồm cặp hai đỉnh u v dạng e = (u, v) Ký hiệu đồ thị G G = (V, E) Tập V hữu hạn, có nghĩa ta đánh số thứ tự 1, 2, 3, a, b, c, cho phần tử (hay đỉnh) V Ta quy ước nói đến đồ thị G số đỉnh đồ thị n, số cạnh (hay cung) m tức |V| = n, |E| = m 1.1.2 Đồ thị có hướng khơng có hướng Giả sử u v hai đỉnh đồ thị G = (V, E), cặp (u, v) E có kể đến thứ tự u đỉnh đầu, v đỉnh cuối ta gọi đồ thị có hướng, e = (u, v) gọi cung (hình 1.1) Hình 1.1 Đồ thị có hướng Ngược lại ta gọi đồ thị vơ hướng (hay đồ thị khơng có hướng) (u, v) gọi cạnh nối đỉnh u, v ký hiệu e = (u, v) E (hình 1.2) Hình 1.2 Đồ thị vơ hướng Bằng hình vẽ ta biểu diễn đỉnh đồ thị điểm mặt phẳng, cạnh đường nối hai điểm tương ứng hai đỉnh Với đồ thị có hướng ta thêm vào cạnh mũi tên hướng từ đỉnh đầu tới đỉnh cuối 1.1.3 Đỉnh kề Cho đồ thị G = (V, E) đồ thị vô hướng đỉnh x V, hai đỉnh nằm cạnh gọi hai đỉnh kề nhau, ký hiệu V(x) tập V, gồm đỉnh kề với x Trường hợp G đồ thị có hướng, ký hiệu V +(x) = {y V: (x, y) E} – tập đỉnh kề sau x; V −(x) = {y V: (y, x) E} – Tập đỉnh kề trước x Trong hình 1.2 V(1) = {2, 4, 5}; hình 1.1 V+(4) = {2, 3}, V−(4) = {5} 1.1.4 Cạnh liên thuộc Nếu u V, v V e = (u, v) E ta nói u, v đỉnh kề cạnh e liên thuộc với đỉnh u đỉnh v Ví dụ cạnh (1, 5) hình 1.2 cạnh liên thuộc với đỉnh đỉnh 1.1.5 Bậc đỉnh Với đỉnh v đồ thị, ta định nghĩa bậc (degree) đỉnh v ký hiệu deg(v) số cạnh liên thuộc với v số đỉnh kề v Trên đồ thị hình 1.2 bậc đỉnh 3; đỉnh có đỉnh kề 2, Định lý: Giả sử G = (V, E) đồ thị vô hướng m cạnh, tổng tất bậc đỉnh V đồ thị tính cơng thức: deg(v) = 2m vV Hệ quả: Trong đồ thị vô hướng, số đỉnh bậc lẻ số chẵn Đối với đồ thị có hướng G = (V, E), xét cung e E, e = (u, v) ta nói u nối tới v v nối từ u, cung e khỏi u vào v Đỉnh u đỉnh đầu, đỉnh v gọi đỉnh cuối cung e Bán bậc bán bậc vào − Bán bậc số cung từ đỉnh v, ký hiệu deg+(v) − − Bán bậc vào số cung vào đỉnh v: ký hiệu deg−(v) Trong hình 1.1 bán bậc vào đỉnh bán bậc deg+(4) = 2; deg−(4) = + Định lý : deg (v) = vV 1.2 ĐƯỜNG ĐI VÀ CHU TRÌNH deg− (v) vV 1.2.1 Đường Cho hai đỉnh u v đồ thị G, đường từ đỉnh u đến đỉnh v, ký hiệu (u, v) dãy đỉnh u, p 1, p2, , pk, v xác định dãy (u, p1), (p1, p2),…, (pk, v) cạnh (hoặc cung G G đồ thị có hướng) Số lượng cạnh(hoặc cung) đường gọi độ dài đường Đỉnh u gọi đỉnh đầu, đỉnh v gọi đỉnh cuối Trong trường hợp u v, người ta nói (u, v) đường khép kín Nếu đường (u, v), cạnh (cung) có mặt khơng q lần gọi đường đơn 1.2.2 Chu trình Chu trình đường khép kín (đỉnh cuối trùng với đỉnh đầu đường đi), ký hiệu là: {u, p1, p2, , pk, v}, u v Chu trình: {1, 2, 5, 1} Hình 1.3 Đồ thị có chu trình 1.2.3 Đồ thị có trọng số khơng có trọng số Đồ thị G mà cạnh gắn với số không âm, thể thông tin liên quan tới cạnh đó, gọi đồ thị có trọng số Nói cách khác đồ thị có trọng số có ánh xạ f: E→ R +; E tập cạnh, R+ tập số thực không âm w= f(u, v) gọi trọng số cạnh (u, v) E Đồ thị mà cạnh khơng gắn trọng số ta gọi đồ thị khơng có trọng số Trọng số đồ thị mở rộng tự nhiên cho đồ thị có hướng 1.2.4 Đơn đồ thị, đa đồ thị đồ thị • Đơn đồ thị Đơn đồ thị đồ thị vô hướng G = (V, E) bao gồm V tập đỉnh, E tập cạnh thỏa mãn khơng có hai cạnh có chung hai đỉnh (khơng có cạnh lặp) Hình 1.4.Đơn đồ thị • Đa đồ thị Đa đồ thị đồ thị vô hướng G = (V, E) bao gồm V tập đỉnh, E tập cạnh cặp (khơng có thứ tự) hai phần tử khác V xác định nhiều cạnh Hai cạnh e1 e2 gọi cạnh lặp chúng tương ứng với cặp đỉnh; ví dụ (3, 5) (5, 3), hình 1.5 Hình 1.5 Đa đồ thị Chú ý: Khi G đa đồ thị, dãy đỉnh định nghĩa đường xác định nhiều đường khác Trong trường hợp đó, đường xác định dãy cạnh rõ ràng • Đồ thị Đồ thị đồ thị G đồ thị mà tập cạnh tập đỉnh tập thành phần tương ứng G Đồ thị H = (W, F) đó, W = {1, 2, 3, 4} F = {(1, 2), (1, 4), (2, 3), (2, 4), (3, 4)} đồ thị đồ thị G W V, F E Hình 1.6 Đồ thị đồ thị Cho G = (V, E) ; tập V1 V Đồ thị có tập đỉnh V1 tập cạnh chứa tất cạnh G nối hai đỉnh thuộc V1 gọi đồ thị sinh V1 Chú ý: Thuật ngữ đồ thị ngữ cảnh để ngắn gọn không gây nhầm lẫn hiểu đơn đồ thị, đồ thị vơ hướng hay đồ thị có hướng CHƯƠNG 2-BIỂU DIỄN ĐỒ THỊ TRÊN MÁY TÍNH Người ta biểu diễn đồ thị mặt phẳng dạng điểm ứng với đỉnh đường nối chúng với ứng với cạnh Để sử dụng máy tính giải tốn mơ tả mơ hình đồ thị người ta phải tìm cách khác để mô tả đồ thị Việc lựa chọn cấu trúc liệu khác để mô tả đồ thị máy tính phụ thuộc vào tốn cần giải thuật toán lựa chọn Trong chương xem xét đồ thị G = (V, E) với |V| = n, |E| = m (n: số đỉnh, m: số cạnh) 2.1.BIỂU DIỄN ĐỒ THỊ BẰNG MA TRẬN KỀ Cho đồ thị G = (V, E) có tập đỉnh V = {v 1, v2,…., vn} tập cạnh E, ma trận kề đồ thị ma trận vng A kích thước nxn (có n hàng n cột), gồm số Với i, j {1, 2,…, n}, phần tử a ij = (vi, vj) E aij = trường hợp ngược lại Hình 2.1 Đồ thị vơ hướng khơng có trọng số Ví dụ đồ thị cho hình 2.1 biểu diễn ma trận kề A sau: 1 A= 0 0 0 1 1 1 1 Hiển nhiên, với đồ thị ma trận kề phụ thuộc vào thứ tự đánh số đỉnh Ma trận kề có số tính chất sau: − Ma trận kề đồ thị vô hướng đối xứng − Ma trận kề đồ thị có hướng nói chung khơng có tính đối xứng − aii = với i = 1, 2, , n − Tổng giá trị hàng i (hay cột j) bậc đỉnh vi (hay vj) đồ thị vô hướng x