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

35 0 0
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

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

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

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 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 1.1.1 Định nghĩa đồ thị 1.1.2 Đồ thị có hướng khơng có hướng 1.1.3 Đỉnh kề 1.1.4 Cạnh liên thuộc 1.1.5 Bậc đỉnh 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ị 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 CHƯƠNG ƯƠNG 1 KHÁI NI NIỆ ỆM VÀ CÁC D DẠNG ẠNG ĐỒ TH THỊỊ 1.1 ĐỊNH NG NGHĨA HĨA ĐỒ TH THỊỊ VÀ CÁC KHÁI N NIIỆ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 vV 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V + (v) = deg− (v) vV 1.2 ĐƯ ĐƯỜNG ỜNG ĐI VÀ CHU TRÌN TRÌNH H 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, p1, 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 2 3 Đồ 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ị m ột đồ 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 CHƯƠNG ƯƠNG 2 BI BIỂ ỂU DI DIỄ ỄN ĐỒ TH THỊỊ TRÊN MÁ MÁY 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 2.1.BI BI BIỂ ỂU DIỄN Đ ĐỒ Ồ TH THỊỊ BẰNG M MA A TR TRẬ ẬN K KỀ Ề Cho đồ thị G = (V, E) có tập đỉnh V = {v1, 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ử aij = (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: 0 1  A = 0  1  0 0 0 1 1 0 1  1  1 0  x5 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 Có thể hiểu đồ thị G = (V, E) đồ thị có trọng số trọng số f(u, v) =1 (u, v)  E f(u, v)=0 trường hợp ngược lại, với đồ thị có trọng số ta lập ma trận trọng số tương tự ma trận kề với aij = f(vi, vj) − trọng số cung (vi, vj) cung (vi, vj)  E aij =  trường hợp ngược lại  giá trị chọn tuỳ theo trường hợp cụ thể Với hình 1.4 ta có ma trận trọng số biểu diễn sơ đồ đường sắt Bắc Nam sau: 150 250   150 200   250 200  210 5000 5000 A = 5000 5000 5000  5000 5000 5000 5000 5000 5000  5000 5000 5000 5000  5000  5000 5000   5000 5000  Ta gán  = 5000 1300   200 5000  120   120  8x 210 5000 5000 5000 5000 5000 5000 5000 5000 5000 400 5000 5000 320 400 5000 320 5000 5000 200 5000 1300 5000 5000 thực tế chiều dài lãnh thổ nước ta khoảng 2000 km từ Bắc vào Nam gán aii = cho biết khơng có cung (vi, vi), hay khoảng cách vi đến vi Với toán ta lưu số liệu vào tệp tin dothi14.inp Hình 2.2 Tệp số liệu đồ thị hình 1.4 Đối với đồ thị có hướng lưu số liệu tương tự đồ thị vơ hướng, ví dụ đồ thị hình 2.3 lưu số liệu vào tệp tin dothi23.inp Hình 2.3 Đồ thị có hướng khơng trọng số Hình 3.3 Gán nhãn t ất đỉnh kề đỉnh Hình 3.4 Gán nhãn t ất đỉnh kề đỉnh 2, 4, Hình 3.5 Gán nhãn t ất đỉnh kề đỉnh 3, 10, 21 Đến lúc đỉnh gán nhãn, thuật tốn kết thúc kể cịn nhiều đỉnh chưa gán nhãn Thuật toán gán nhãn đồ thị cài đặt tựa ngôn ngữ C, coi đỉnh đánh theo thứ tự 1, 2,…, n Bước Khởi tạo − Gán tất đỉnh có nhãn −1 − Gán cho đỉnh có nhãn m = M = 0; // số cạnh từ u đến v // lớp đỉnh có nhãn m // đỉnh u Am = {u}; ban đầu gán Bước Gán nhãn đỉnh while(v chưa có nhãn) // tức nhãn(v) = −1 { 2.1 Am+1 =[ ]; //Tập đỉnh có nhãn m+1 rỗng (chưa đến) 2.2 for all x  Am // tất đỉnh có nhãn m for all y  V+(x) if(y chưa có nhãn) + Gán nhãn cho y = m+1; + Am+1 = Am+1  y; // thêm y vào tập đỉnh có nhãn m+1 } Bước Chỉ đường từ đỉnh u đến đỉnh v Trước hết ta khai báo mảng DD − đường đi, để lưu vị trí đỉnh đường DD[m]: = v; Đỉnh thứ, đỉnh cuối cùng, lưu đỉnh đường theo thứ từ từ đỉnh v ngược lên u, ngược lại từ đỉnh v để tìm đỉnh kế trước đỉnh for(i = m− − 1; i >= 0; i− − −) // Tìm đỉnh kề trước { for (j = 1;j

Ngày đăng: 02/04/2023, 14:35

Từ khóa liên quan

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

Tài liệu liên quan