Trang 7 Định lýG = V, E là một đồ thị vơ hướng:o Số đỉnh lớn hơn hoặc bằng 3o Bậc của mọi đỉnh đều lớn hơn hoặc bằng 2thì trong G luơn tồn tại một chu trình sơ cấpĐịnh lýG = V, E là một
Đồ thị Những khái niệm tính chất Đồ thị vô hướng (undirected graph) b a c Định nghĩa Đồ thị vô hướng G = (V, E) gồm: e d i) V tập hợp khác rỗng mà phần tử gọi đỉnh (vertex) G ii) E đa tập hợp gồm cặp không thứ tự hai đỉnh Mỗi phần tử E gọi cạnh (edge) G Ký hiệu uv h k g 1 2 Ví dụ Chú ý V = {v1, v2, v3, v4} E = {e1, e2, e3, e4, e5, e6, e7} Ta nói cạnh uv nối u với v, cạnh uv kề với u,v Nếu uv E ta nói đỉnh u kề đỉnh v (adjacent) Hai cạnh nối cặp đỉnh gọi hai cạnh song song (parallel) Cạnh uu có hai đầu mút trùng gọi khuyên (loop) v1 e2 e4 e5 e3 e6 v4 e1 song song e2 e4 song song e5 e7 v3 e1 = v1 v2, e2 = v1v2, e3 = v1v4, e4 = v2v3, e5 = v2v3, e6 = v2v4, e7 = v3v4 3 e1 v2 4 Ví dụ Ví dụ V= {0, 1, 2, 3} E ={e1,e2, e3, e4, e5, e6, e7, e8, e9} e1 e3 e2 e4 e6 Khuyên: e1, e3, e8, e9 e7 e5 e8 e9 6 Ví dụ Định nghĩa Đồ thị vơ hướng khơng có cạnh song song khơng có khun gọi đơn đồ thị vơ hướng (simple graphs) Định nghĩa Đồ thị vô hướng cho phép có cạnh song song khơng có khun gọi đa đồ thị vô hướng (multigraphs) Định nghĩa Đồ thị vơ hướng cho phép có cạnh song song có khuyên gọi giả đồ thị (pseudographs) c b a b a e d h g k d Đơn đồ thị vô hướng c Đa đồ thị vô hướng b a c d Giả đồ thị 7 8 Ví dụ Đồ thị kết nối điện thoại Detroit San Francisco Denver Los Angeles New York Chicago Washington Detroit San Francisco Denver New York Chicago Washington Đồ thị vô hướng Đơn đồ thị vô hướng Đa đồ thị vô hướng Giả đồ thị Đa đồ thị Đơn đồ thị Los Angeles Detroit New York San Francisco Denver Los Angeles Giả đồ thị Chicago Washington 9 10 10 Đồ thị có hướng (directed graph) Ví dụ Định nghĩa Đa đồ thị có hướng G = (V,E) gồm: i) V tập hợp khác rỗng mà phần tử gọi đỉnh G ii) E đa tập hợp gồm cặp có thứ tự hai đỉnh Mỗi phần tử E gọi cung (cạnh) G Ký hiệu uv Ta nói cung uv từ u đến v, cung uv kề với u,v b a d 11 11 b a c d c 12 12 Ví dụ Chú ý Nếu uv cung ta nói: • Đỉnh u v kề • Đỉnh u gọi đỉnh đầu (gốc), đỉnh v đỉnh cuối (ngọn) cung uv Đỉnh v đỉnh sau đỉnh u Hai cung có gốc gọi cung song song Cung có điểm gốc trùng gọi khuyên 13 13 14 14 Ví dụ Định nghĩa Detroit Đa đồ thị có hướng khơng chứa cạnh song song gọi đồ thị có hướng New York San Francisco Ví dụ Denver Los Angeles Chicago Washington Detroit New York San Francisco Chicago Denver Los Angeles 15 15 Washington 16 16 Bậc đỉnh Ví dụ 11 Bậc đỉnh? Bậc đỉnh đồ thị vô hướng Cho đồ thị vô hướng G = (V, E) Bậc đỉnh v, ký hiệu deg(v), số cạnh kề với v , khuyên đỉnh đếm hai lần cho bậc đỉnh Ví dụ 10 Bậc đỉnh b: deg(b) = c a Bậc đỉnh a: deg(a) = b a d e f b c Bậc đỉnh c: deg(c) = Bậc đỉnh d: deg(d) = 17 d 18 17 18 Ví dụ 12 Bậc đỉnh đồ thị có hướng Cho đồ thị có hướng G = (V, E), vV 1) deg- (v):= số cung có đỉnh cuối v, gọi bậc vào v 2) deg+ (v):= số cung có đỉnh đầu v, gọi bậc v 3) deg(v):= deg- (v) + deg+(v) Chú ý: Đỉnh bậc gọi đỉnh cô lập Đỉnh bậc gọi đỉnh treo 19 19 20 20 Ví dụ 13 Bậc đỉnh a: deg-(a) = ; deg+(a) = Bậc đỉnh b: deg-(b) = ; deg+(b) = Bậc đỉnh c: deg-(c) = ; deg+(c) = Định lý Cho đồ thị G = (V,E), m số cạnh (cung) 1) 2m b a deg(v) vV c d 2) Nếu G có hướng thì: m deg(v) deg(v) vV vV e f Bậc đỉnh d: deg-(d) = ; deg+(d) = Bậc đỉnh e: deg-(e) = ; deg+(e) = Bậc đỉnh f: deg-(f) = ; deg+(f) = 3) Số đỉnh bậc lẻ đồ thị số chẵn 21 21 22 22 Định lý Biểu diễn ma trận đồ thị: Trong đồ thị G = (V, E), số đỉnh nhiều tồn hai đỉnh bậc Ta sử dụng ma trận kề: Cho G = (V,E) với V={1,2,…,n} Ma trận kề G ma trận A = (aij)n xác định sau: Định lý Trong đồ thị G = (V, E), số đỉnh nhiều có hai đỉnh bậc hai đỉnh khơng đồng thời n-1 aij = số cạnh (số cung) từ đỉnh i đến đỉnh j 24 23 23 24 Tìm ma trận kề Tìm ma trận kề a a 0 1 c 1 d 0 a b c b b c a b d 1 0 1 1 1 0 c a b c d a 0 b 2 c 1 d 0 e 0 f 0 d 25 25 e f 0 1 1 0 0 0 0 1 0 0 0 1 0 d e f 26 26 Đẳng cấu (Isomorphism) Ví dụ 14 Định nghĩa Cho hai đơn đồ thị G = (V,E) G’= (V’,E’) Ta nói G đẳng cấu G’, ký hiệu G G’, tồn song ánh f :V→ V’sao cho: uv cạnh G f(u)f(v) cạnh G’ Ví dụ 15 Khơng có đỉnh bậc Chú ý deg(e) = Nếu G G’ đơn đồ thị vô hướng đẳng cấu qua ánh xạ f chúng có: Cùng số đỉnh Cùng số cạnh Cùng số đỉnh với bậc cho sẵn (vd: số đỉnh bậc G G’ nhau) deg v = deg f(v) Khơng đẳng cấu 27 27 28 28 Ví dụ 16: Đẳng cấu (Isomorphism) Ví dụ 18: Đẳng cấu khơng? Ví dụ 17: Khơng đẳng cấu (Non-isomorphism) Trả lời: Không đẳng cấu o Cùng số đỉnh o Cùng số cạnh o Khác số đỉnh bậc (hình bên trái có đỉnh, cịn 30 hình bên phải có đỉnh) 29 29 30 Ví dụ đồ thị Đồ thị Cho hai đồ thị G = (V,E) G’ = (V’,E’) (cùng vô hướng có hướng) G’ gọi đồ thị G, ký hiệu G’ G V’ V E’ E Nếu V’= V E’ E G’ gọi đồ thị khung G 31 31 32 32 Đường đi, chu trình, đồ thị liên thơng b) Đường khơng có cạnh xuất lần gọi đường đơn (simple) Đường chu trình: Cho G = (V,E) đồ thị vô hướng u,vV c) Đường khơng có đỉnh xuất q lần gọi đường sơ cấp (elementary) a) Đường (path) có chiều dài k nối hai đỉnh u,v dãy đỉnh cạnh liên tiếp d) Đường gọi chu trình (cycle) v0e1v1e2…vk-1ekvk cho: bắt đầu kết thúc đỉnh v0 = u ,vk = v, ei = vi-1vi , i=1,2,…,k 34 33 33 34 Ví dụ đường (u, y, w, v) đường độ dài (z, u, y, v, u) đường đơn không sơ cấp (u, y, w, v, u) chu trình Có thể xem chu trình chu trình (w, v, u, y, w) (a, e1, b, e2, c, e3, d, e4, b) đường từ đỉnh a tới đỉnh b có chiều dài Tuy nhiên, trường hợp này, đồ thị đơn đồ thị, gọi đường cách ngắn gọn sau: (a, b, c, d, b) Chu trình sơ cấp khơng? 35 35 Chu trình sơ cấp: (b, c, d, b) (b, f, e, b) 36 36 Định lý Đồ thị liên thông: G = (V, E) đồ thị vô hướng: o Số đỉnh lớn o Bậc đỉnh lớn G ln tồn chu trình sơ cấp Định nghĩa Một đồ thị gọi liên thông (connected) có đường cặp đỉnh phân biệt đồ thị Ngược lại, đồ thị gọi không liên thông (disconnected) Định nghĩa Cho G = (V,E) Trên V ta định nghĩa quan hệ tương đương sau: u~v u = v hay có đường từ u đến v a) Nếu u~v ta nói hai đỉnh u v liên thơng với b) Mỗi lớp tương đương gọi thành phần liên thông G c) Nếu G có thành phần liên thơng G gọi liên thông Định lý G = (V, E) đồ thị vô hướng: o Số đỉnh lớn o Bậc đỉnh lớn G ln tồn chu trình sơ cấp có độ dài chẵn 37 37 38 38 Ví dụ đồ thị liên thơng o Đồ thị khơng liên thơng o Có thành phần liên thông Đồ thị liên thông G liên thông H khơng liên thơng H có thành phần liên thơng 39 39 40 40 Ví dụ cầu khớp: Định nghĩa Cho G = (V,E) đồ thị vô hướng liên thông a) Đỉnh v gọi đỉnh khớp G-v không liên thông (G-v đồ thị G có cách xoá v cạnh kề với v) b) Cạnh e gọi cầu G-e không liên thông (G-e đồ thị G có cách xoá cạnh e) 41 41 42 42 Nhận xét Định nghĩa Cho G = (V,E) vô hướng liên thông, Kn, n>2 v đỉnh khớp số thành phần liên thông tăng lên bỏ v cạnh kề với e cầu số thành phần liên thông tăng lên bỏ cạnh e a) Số liên thông cạnh G, ký hiệu e(G) số cạnh mà xố G khơng cịn liên thơng b) Số liên thơng đỉnh G, ký hiệu v(G) số đỉnh mà xố G khơng cịn liên thơng Khớp Cầu Khớp 43 43 44 44 Ví dụ Định nghĩa Đồ thị có hướng G gọi liên thơng mạnh ln tìm đường hai đỉnh Định nghĩa Cho đồ thị có hướng G = (V,E) Trên V ta định nghĩa quan hệ tương đương sau: u~v u = v hay có đường từ u đến v đường từ v đến u a) Nếu u~v ta nói hai đỉnh u v liên thông mạnh với b) Mỗi lớp tương đương gọi thành phần liên thông mạnh G c) Nếu G có thành phần liên thơng mạnh G 46 gọi liên thông mạnh e(G)=1; v(G)=1 45 45 46 Một số đồ thị vơ hướng đặc biệt Ví dụ đồ thị liên thông mạnh Đồ thị đầy đủ Kn - Đơn đồ thị cấp n mà hai đỉnh có cạnh - Số đỉnh: n - Bậc đỉnh: deg(v) = n-1 v V - Số cạnh: n(n-1)/2 47 47 48 48 Đồ thị chu trình (Cycles-Vịng) Cn Đồ thị hình bánh xe (Wheels) Wn - Đơn đồ thị - Nối đỉnh Cn với đỉnh u ta Wn - Số đỉnh: n>=3 đỉnh - Số đỉnh: n+1 (n>=3 đỉnh) - Bậc đỉnh: deg(v) = v V - Bậc đỉnh: deg(v) = v V \ u , deg(u) = n - Số cạnh: n - Số cạnh: 2n 49 49 50 50 Đồ thị bậc k Đồ thị dạng khối lập phương n chiều (ncubes, hypercubes) - Đồ thị mà đỉnh có bậc k - Số đỉnh: n - Bậc đỉnh: deg(v) = k, v V - Số cạnh: n.k/2 Ví dụ Cn đồ thị bậc Kn đồ thị bậc 51 51 52 52 Đồ thị hình (star) Đồ thị bù Cho Kn = (V,E), G (V,E1) ≤ Kn , G V , E \ E1 n >= đỉnh đỉnh nối với đỉnh G gọi đồ thị bù G Đồ thị G gọi tự bù G đẳng cấu với đồ thị bù Nhận xét: Hai đồ thị bù thì: o Chúng có chung đỉnh o Cạnh thuộc G khơng thuộc G ngược lại 53 53 54 54 Đồ thị phân đôi (Bipartite Graph) Đồ thị phân đôi đầy đủ Km,n : G = (V,E), V = V1 V2, , V1 V2 = Mọi cạnh G nối đỉnh V1 với đỉnh V2 đồ thị đơn, lưỡng phân, đỉnh V1 kề với đỉnh V2 55 55 56 56 Một số tập Bài (Đề thi, ĐHKHTN- 2005) Vẽ đơn đồ thị vô hướng gồm đỉnh với bậc 2,2,3,3,3,5 Bài (Đề thi ĐHBK-2000) Cho đồ thị vơ hướng , đơn G có đỉnh có đỉnh bậc Hỏi G có liên thơng khơng? Giải Nhận xét: Đỉnh bậc nối với đỉnh cịn lại Do ta phải quan tâm đến đỉnh lại Ta xét đơn đồ thị với đỉnh bậc 1,1,2,2,2 Giải Đỉnh bậc nối với đỉnh lại Do hai đỉnh có đường qua đỉnh bậc Do G liên thông 57 57 58 58 TH1 Hai đỉnh bậc nối với nhau, đỉnh bậc nối với tạo thành chu trình TH2 Hai đỉnh bậc khơng nối với Khi hai đỉnh bậc phải nối với hai đỉnh bậc khác đỉnh bậc hai lại phải nối với hai đỉnh bậc hai Suy đồ thị cần tìm là: Suy đồ thị cần tìm 59 59 60 60 10 Đường Euler - Đường Hamilton Euler Hamilton (1707-1783) (1755-1804) Bài tốn: Thị trấn Kưnigsberg bị nhánh sông Pregel chia thành khu vực tách biệt Các khu vực nối với cầu 61 61 62 62 C Bài toán: Có thể xuất phát điểm thành phố, qua tất cầu, lần, trở điểm xuất phát không? A D B Phương pháp Euler đưa để giải vấn đề sử dụng đồ thị khu vực thể điểm: A, B, C, D Mỗi cầu thể cạnh nối Vào kỷ 18, Euler giải với đề cách sử dụng lý thuyết đồ thị A e1 B e2 e4 e5 e3 e6 D e7 C 63 63 64 64 Ví dụ đường Euler Đường Euler Định nghĩa i Đường Euler đường qua tất cạnh cạnh (cung) lần Chu trình Euler chu trình qua tất cạnh đồ thị cạnh lần ii Đồ thị gọi đồ thị Euler có chu trình Euler Đồ thị G có chu trình Euler ageabdhbcdefa nên G đồ thị Euler 65 65 66 66 11 Ví dụ Điều kiện cần đủ i Cho G = (V,E) đồ thị vô hướng liên thông G đồ thị Euler Mọi đỉnh G có bậc chẵn Nếu G có hai đỉnh bậc lẻ cịn đỉnh khác có bậc chẵn G có đường Euler ii Cho G đồ thị có hướng liên thơng G đồ thị Euler G cân Đồ thị Euller 67 67 Có đường Euller (nhưng khơng có chu trình Euller) 68 68 Ví dụ Chỉ đường Euller chu trình Euller (nếu có) đồ thị sau đây? Thuật tốn Fleury để tìm chu trình Euler Bắt đầu từ đỉnh G tuân theo qui tắc sau: Mỗi qua cạnh xố đi, sau xố đỉnh lập có Khơng qua cầu khơng cịn cách khác 70 69 69 70 Ví dụ Ví dụ a b h g c d f e Nếu đồ thị có hai đỉnh bậc lẻ (có đường Euler) xuất phát từ đỉnh bậc lẻ abcfdcefghbga 71 71 72 72 12 Đường Hamilton Ví dụ: Đồ thị có chu trình Hamilton Định nghĩa i Đường Hamilton đường qua tất đỉnh đồ thị, đỉnh lần Chu trình Hamilton chu trình qua tất đỉnh đồ thị, đỉnh lần ii Đồ thị gọi đồ thị Hamilton có chu trình Hamilton 73 73 74 74 Qui tắc để xây dựng chu trình Hamilton H đồ thị vô hướng không Hamilton Điều kiện đủ (cho đồ thị đơn vô hướng) Qui tắc Tất cạnh kề với đỉnh bậc phải H Qui tắc Khơng có chu trình (chu trình có chiều dài < n) tạo thành trình xây dựng H Qui tắc Khi chu trình Hamilton mà ta xây dựng qua đỉnh u xố tất cạnh kề với u cịn lại mà ta chưa dùng (vì khơng dùng đến nữa) Điều lại cho ta số đỉnh bậc ta lại dùng qui tắc Qui tắc Khơng có đỉnh cô lập hay cạnh treo tạo nên sau áp dụng qui tắc 76 Định lý Ore (1960) Cho đồ thị G có n đỉnh Nếu deg(i)+deg(j) n với i j hai đỉnh khơng kề tuỳ ý G Hamilton Định lý Dirac (1952) Cho đồ thị G có n đỉnh Nếu deg(i) n/2 với i tuỳ ý G Hamilton 75 75 76 Ví dụ : Ví dụ : Xét đồ thị H, có phải đồ thị Hamilton hay ko? Theo quy tắc 1: cạnh fa, fe, ga, ge phải thuộc H Khi có chu trình agef, suy vi phạm quy tắc Vậy, đồ thị không Hamilton Trả lời: Đồ thị H đồ thị Hamilton sau duyệt qua tất trường hợp theo quy tắc (Bài tập nhà!) 78 77 77 78 13 Điều kiện đủ cho đồ thị có hướng , đơn (khơng có khun khơng có cạnh song song chiều) Định lý Ghouila-Houri (1960) Nếu G đơn đồ thị liên thơng mạnh cho đỉnh có bậc khơng nhỏ n G Hamilton Điều kiện Meyniel: ij ji E deg(i) + deg(j) 2n-1 với i, j tùy ý Định lý Meyniel (1973): Nếu G đơn đồ thị, liên thông mạnh thoả điều kiện Meyniel G đồ thị Hamilton Định lý Woodall (1972) Cho G đơn đồ thị thoả mãn ij E deg+(i) + deg-(j) n, với i,j G Hamilton Định lý Camion(1959): Nếu G đơn đồ thị đủ, liên thông mạnh G Hamilton 79 79 80 80 Ví dụ (Đề thi ĐHKHTN-2005) Cho G đồ thị vô hướng, đơn, n (n số đỉnh), deg(i) + deg(j) n-1 Chứng minh G có đường Hamilton Ví dụ (Đề thi ĐHKHTN-2004) Đồ thị G sau có Hamilton không? Giải Ta thêm vào đồ thị G đỉnh z nối z với đỉnh G cạnh, ta thu đồ thị G’ có n+1 đỉnh Bậc đỉnh G’ lớn bậc cũ đơn vị (trừ đỉnh z), cịn bậc z n Do G’ thì: deg’(i)+deg’(j)=deg(i)+1+deg(j) +1 n-1+1+1 = n+1, i j khác z deg’ (i) + deg’(z) = deg (i) + + n n+1 ,với i khác z Theo định lý Ore G’ đồ thị Hamilton, suy G có đường Hamilton 82 Giải Giả sử G có chu trình Hamilton H Theo qui tắc1, tất cạnh kề với đỉnh bậc H:12, 14, 23, 36, 47, 78, 69, 89 Ta có chu trình 1,2,3,6,9,8,7,4,1 Vậy G khơng đồ thị Hamilton 81 81 82 Trong đồ thị có trọng số, có nhiều đường hai đỉnh u, v Trong thực tế ta thường muốn tìm phương án tối ưu, tức tìm đường ngắn Bài tốn đường ngắn Đồ thị có trọng số Đồ thị G = (V,E) gọi đồ thị có trọng số (hay chiều dài, trọng lượng) cạnh (cung) e gán với số thực w(e) Ta gọi w(e) trọng lượng e Độ dài đường từ u đến v tổng độ dài cạnh mà đường qua Khoảng cách đỉnh u,v độ dài ngắn đường từ u đến v Đường ngắn đường có trọng số nhỏ Ví dụ Đường ngắn nhất: 1, 2, 3, 6, 5, (Khoảng cách: 15) 84 83 83 84 14 Ví dụ ma trận khoảng cách Ma trận khoảng cách (trọng số) 0 D Cho G = (V, E), V = {v1,v2,…,vn} đơn đồ thị có trọng số Ma trận khoảng cách G ma trận D= (dij) xác định sau: 0 vi v j d ij w( v i v j ) vi v j E vi v j E 31 40 27 73 26 49 25 38 16 70 23 12 10 85 85 86 86 Phương pháp Thuật tốn Dijkstra tìm đường ngắn Xác định đỉnh có khoảng cách đến u0 từ nhỏ đến lớn Trước tiên đỉnh có khoảng cách nhỏ đến u0 u0 Bài tốn Trong V\{u0} tìm đỉnh có khoảng cách đến u0 nhỏ (đỉnh phải đỉnh kề với u0) giả sử u1 Cho G = (V, E) đơn, liên thông, có trọng số dương (w(uv) > với u khác v) Tìm Trong V\{u0,u1} tìm đỉnh có khoảng cách đến u0 nhỏ (đỉnh phải đỉnh kề với u0 u1) giả sử u2 đường ngắn từ u0 đến v tính khoảng cách d(u 0,v) Tiếp tục tìm khoảng cách từ u0 đến đỉnh Nếu G có n đỉnh thì: = d(u0,u0) < d(u0,u1) d(u0,u2) … d(u0,un-1) 87 87 88 Thuật tốn Dijkstra Bài tập Tìm đường ngắn từ u đến đỉnh lại Bước i:=0, S:=V\{u0}, L(u0):=0, L(v):= với v S đánh dấu đỉnh v (,-) Nếu n=1 xuất d(u0,u0)=0=L(u0) Bước Với v S kề với ui (nếu đồ thị có hướng v đỉnh sau ui), đặt L(v):= min{L(v), L(ui)+w(ui v)} Xác định k = L(v) ,vS Nếu k= L(vj) xuất d(u0,vj ) = k đánh dấu vj (L(vj), ui); ui+1:= vj S:=S\{ui+1} Bước i:=i+1 Nếu i = n-1 kết thúc 89 Nếu khơng quay lại Bước 89 88 r s u t y 3 x z w 90 90 15 r u t y u 0* x z y w u 0* - r s t x y z w (,-) (,-) (,-) (,-) (,-) (,-) (,-) t x 3 u 4 3 s r s z w r s t x y (,-) (,-) (,-) (,-) (,-) (4,u) (,-) (,-) (,-) (1,u)* z w (,-) (,-) (,-) (,-) 91 91 92 92 x t y r s (,-) (,-) (4,u) (,-) (3,y)* (,-) t (,-) (,-) (,-) z x (,-) (,-) (,-) w y (,-) z (,-) (,-) (4,y) (1,u)* - w (,-) (,-) (,-) 93 93 s t y x z w u 0* - r (,-) (4,u) (3,y)* s (,-) (,-) (,-) t (,-) (,-) (,-) x (,-) (,-) (,-) y (,-) (1,u)* - z (,-) (,-) (4,y) w (,-) (,-) (,-) - - (10,r) (10,r) (9,t) (8,x)* - (6,r) (6,r)* - (,-) (,-) (7,t)* - - (4,y)* - (,-) (9,z) (9,z) (9,z) (9,z)* 94 94 Bài tập (ĐHKHTN-2006) Đường ngắn từ u đến đỉnh lại 1 t y 31 40 27 73 26 49 25 38 D 16 70 23 12 10 x u Cho đồ thị có trọng số G = (V, E) , V = { v1, v2, v3, v4, v5, v6 , v7} xác định ma trận trọng số D Dùng thuật toán Dijkstra tìm đường ngắn từ v1 đến đỉnh v2,v3,v4, v5, v6,v7 s r z w 95 95 u 3 u 0* - 4 u r s r 96 96 16 Đồ thị có trọng số G Thuật toán Dijkstra v1 v2 v3 v4 v5 v6 v7 0* (,-) (,-) (,-) (,-) (,-) (,-) - (5,v1)* (31,v1) (40,v1) (,-) (,-) (,-) - - (31,v1)* (40,v1) (78,v2) (,-) (,-) - - - (39,v3)* (78,v2) (56,v3) (69,v3) - - - - (78,v2) (55,v4)* (69,v3) - - - - (78,v2) - (67,v6)* - - - - (77,v7) - - 97 97 98 98 Đường ngắn từ v1 đến đỉnh v2,v3,v4, v5, v6,v7 Bài (Đề 2007) Dùng thuật toán Dijsktra để tìm đường ngắn từ đỉnh a đến đỉnh z chiều dài đồ thị vô hướng có trọng số sau: b d f z a c e g 99 99 100 100 a b c d e f g z Thuật toán Ford – Bellman (,-) (,-) (,-) (,-) (,-) (,-) (,-) (4.a) (3.a) (,-) (,-) (,-) (,-) (,-) (4.a) (3.a) (6.c) (9.c) (,-) (,-) (,-) (4.a) (3.a) (6.c) (9.c) (,-) (,-) (,-) (4.a) (3.a) (6.c) (7.d) (11.d) (,-) (,-) (4.a) (3.a) (6.c) (7.d) (11.d) (12,e ) (4.a) (3.a) (6.c) (7.d) (11.d) (12,e ) (18,f ) (4.a) (3.a) (6.c) (7.d) (11.d) (12,e ) (16,g ) (4.a) (3.a) (6.c) (7.d) (11.d) (12,e ) (16,g ) Tìm đường ngắn từ u0 đến đỉnh đồ thị có mạch âm Bước L0(u0) =0 L0(v) = vu0 Đánh dấu đỉnh v ( ,-) ; k=1 Bước Lk(u0) = Lk(v) = min{Lk-1(u)+w(uv)/u đỉnh trước v} Nếu Lk(v) = Lk-1(y)+w(yv) đánh dấu đỉnh v (Lk(v),y) Bước Nếu Lk(v) =Lk-1(v) với v, tức Lk(v) ổn định dừng Ngược lại đến bước Bước Nếu k = n dừng G có mạch âm Nếu k n-1 trở bước với k:=k+1 102 (,-) 101 101 102 17 Lời giải Ví dụ Tìm đường ngắn từ đồ thị đến đỉnh lại 2 2 -2 k 103 103 0 0 0 (,-) (7,1) (7,1) (7,1) (7,1) (7,1) 2 4 -2 (,-) (,-) (11,2) (10,6) (10,6) (10,6) (,-) (8,1) (8,1) (6,6) (6,6) (6,6) (,-) (,-) (9,2) (9,2) (8,4) (8,4) (,-) (,-) (8,2) (8,2) (8,2) (8,2) 104 Đường ngắn nhất: Thuật toán Floyd Tìm đường ngắn tất cặp đỉnh đồ thị có mạch âm Ngồi ma trận khoảng cách D ta cịn dùng ma trận Q = (Qij), 1 -2 j ij E Qij 0 ij E 105 105 106 106 Bài toán đường ngắn Cho đồ thị G có ma trận khoảng cách là: Bước D0 = D, Q0 = Q, k = Bước Với i = đến n, với j =1 đến n Đặt 1 1 0 5 6 6 Dk1(i, k) Dk1(k, j) Dk (i, j) Dk1(i, j) if Dk1(i, j) Dk1(i, k) Dk1(k, j) if Dk1(i, j) Dk1(i, k) Dk1(k, j) Q (i, k) Qk (i, j) k1 Qk1(i, j) if Dk1(i, j) Dk1(i, k) Dk1(k, j) if Dk1(i, j) Dk1(i, k) Dk1(k, j) • Bước Nếu k = n dừng Nếu k < n trở lại Bước với k := k + 107 107 104 4 5 5 3 10 10 0 44 00 7 0 9 108 108 18 Khi ma trận Q là: 1 40 0 0 01 4 0 0 10 0 4 0 0 0 0 Ta có D1 = D, Q1 = Q 33 2 4 0 D2 = 9 11 109 109 110 110 1 Q2 = 2 0 2 0 0 0 D3 = 2 1 0 1 2 0 5 3 3 2 0 10 4 0 9 5 4 0 7 6 6 11 9 6 111 111 112 112 Q3 = 1 0 3 2 0 5 3 2 0 10 4 0 5 4 0 6 D4 = 113 113 1 0 1 17 2 0 5 3 14 3 2 0 10 16 4 0 9 5 4 0 7 6 6 11 9 6 114 114 19 Q4 = 3 3 0 2 2 0 0 0 6 2 D5 = 13 10 12 15 13 11 115 115 116 116 Bài toán đường ngắn Q5 = 3 3 0 5 2 2 1 0 2 3 2 4 15 5 6 0 0 0 6 2 D6 = 117 117 1 13 0 5 3 10 0 10 12 0 18 9 13 4 0 7 6 11 9 118 118 Bài toán đường ngắn Q6 = 1 0 3 2 0 5 3 2 0 10 4 0 5 4 0 6 Đường ngắn từ đỉnh đến đỉnh Q6(1,6) =3,Q6(3,6) = 2,Q6(2,6) = 5,Q6(5, 6) = Đường ngắn từ đỉnh đến đỉnh Q6(4,5) =6,Q6(6,5) = 2,Q6(2,5) = 119 119 120 120 20 Sắc số đồ thị Đồ thị đầy đủ: Giả sử G = (V,E) đồ thị đầy đủ sắc số đồ thị số đỉnh đồ thị (s(G) = |V|) Khái niệm Đồ thị khơng có chu trình độ dài lẻ: Giả sử G = (V, E) đồ thị vô hướng, s(G) = G khơng có chu trình độ dài lẻ Sắc số đồ thị số màu tối thiểu cần dùng để tô màu đỉnh đồ thị cho hai đỉnh Đồ thị có chu trình: chu trình có độ dài lẻ (chẵn) ln có sắc số (sắc số 2) kề phải có màu khác Kí hiệu s(G) Đồ thị phân đôi: s(G) = G đồ thị phân đôi liên thông 121 121 122 122 Đồ thị đơn: ta có thuật tốn tơ màu đồ thị sau: B1: xếp bậc đỉnh theo thứ tự giảm dần deg(𝑣 )≥ deg(𝑣 ) ≥ deg(𝑣 )… ≥ deg(𝑣 ) B2: Tô màu cho đỉnh 𝑣 đỉnh khơng kề với 𝑣 Sau lại tiếp tục gán màu cho đỉnh không kề với đỉnh gán màu B3: Tô màu cho đỉnh chưa gán màu (theo thứ tự bậc xếp B1) Thuật toán dừng tơ màu hết đỉnh 123 123 Bài tốn tô màu đồ Một đồ mặt phẳng biểu diễn đồ thị theo quy tắc sau: - Mỗi miền biểu diễn đỉnh - Hai đỉnh nối với cạnh hai miền tương ứng có đường biên giới chung - Hai miền có chung điểm khơng xem có biên giới chung 124 124 10 Định lý: Sắc số đồ thị phẳng không lớn 4 10 125 125 21