Chương MƠ HÌNH DỮ LIỆU ĐỒ THỊ © nuinvtnu-2017 Data structures and Algorithms Chapter - 1/17 MỤC TIÊU - Nắm vững lý thuyết đồ thị - Ứng dụng đồ thị để giải tốn thực tế © nuinvtnu-2017 Data structures and Algorithms Chapter - 2/17 NỘI DUNG CHÍNH Định nghĩa đồ thị Một số khái niệm đồ thị Biểu diễn đồ thị máy tính Cách duyệt (thăm) đồ thị Một số toán ứng dụng đồ thị © nuinvtnu-2017 Data structures and Algorithms Chapter - 3/17 ĐỊNH NGHĨA ĐỒ THỊ - Đồ thị là một cấu trúc rời rạc, ký hiệu G = V là tập các đỉnh ( vertices) , đỉnh tương đương phần tử liệu E là tập các cạnh/cung (Edges) - tập các cặp (u,v) mà u,v là hai đỉnh thuộc V Biểu diễn mối quan hệ phần tử Ví dụ: 2 4 G2 = G1= V1 ={1, 2, 3, 4} E1 ={Tập cung} ={12, 13, 24, 32, 43} © nuinvtnu-2017 V2 = {1, 2, 3, 4,5} E2 = {Tập cạnh} ={12, 13, 23, 24, 25, 34, 45} Data structures and Algorithms Chapter - 4/17 PHÂN LOẠI ĐỒ THỊ Dựa vào đặc tính của tập E, ta có: G là đơn đồ thị nếu hai đỉnh u v bất kì có nhiều nhất mợt cạnh G là đa đồ thị nếu hai đỉnh u v bất kì có thể có nhiều mợt cạnh G đồ thị vô hướng nếu E gồm cặp (u,v)=(v,u), gọi cạnh G đồ thị có hướng nếu E gồm cặp (u,v)(v,u), gọi là các cung G đồ thị có trọng số nếu cạnh/cung giá trị © nuinvtnu-2017 Data structures and Algorithms Chapter - 5/17 Một số ví dụ Hình – – – – Hình Hình Hình Hình 1: Đơn đồ thị, vơ hướng Hình 2: Đơn đồ thị, có hướng Hình 3: Đa đồ thị, vô hướng Hình 4: Đa đồ thị, có hướng © nuinvtnu-2017 Data structures and Algorithms Chapter - 6/17 MỘT SỐ KHÁI NIỆM CƠ BẢN TRÊN ĐỒ THỊ a) Cạnh liên thuộc, đỉnh kề, bậc Nếu e=(u,v) cạnh E thì ta nói u,v kề (adjacent) và e là liên thuộc với u và v Nếu e = (u,v) là một cung thì ta nói u nối tới v và v nối từ u Cung e khỏi đỉnh u ( đỉnh đầu) và vào đỉnh v ( đỉnh cuối), ta nói u kề v Bậc (degree) v ( deg(v)) là số cạnh liên thuộc với v © nuinvtnu-2017 Data structures and Algorithms Chapter - 7/17 MỘT SỐ KHÁI NIỆM CƠ BẢN TRÊN ĐỒ THỊ b) Đường và chu trình Một đường P=(v1…vp) mà cạnh (vi-1vi) E với i=2…p P gọi là đường đơn nếu tất cả các đỉnh đường không trùng Đường P là một đoạn liên tục dọc theo P P gọi là chu trình nếu v1=vp Một đồ thị là liên thông nếu với cặp đỉnh (u,v) đều có đường từ u đến v © nuinvtnu-2017 Data structures and Algorithms Chapter - 8/17 BIỂU DIỄN ĐỒ THỊ TRONG MÁY TÍNH a) Ma trận kề b) Danh sách kề © nuinvtnu-2017 Data structures and Algorithms Chapter - 9/17 a) Ma trận kề • • Đánh số thứ tự các đỉnh đồ thị từ đến n Biểu diễn đồ thị bằng một ma trận vuông cấp n gọi là ma trận kề: a[i,j]=1 nếu i kề j (tức (i,j) là cạnh/cung thuộc E a[i,j]=0 nếu i không kề j (tức (i,j) là cạnh/cung khơng tḥc E.) * Ví dụ: 2 A= 0 1 0 1 0 0 1 0 1 5 © nuinvtnu-2017 0 A= 0 0 1 0 0 0 0 0 Data structures and Algorithms Chapter - 10/17 Nhận xét - G đồ thị vô hướng thì ma trận kề là đối xứng (a[i,j]=a[j,i]) Trực quan, dễ cài đặt Kích thước ln là N2 dẫn đến lãng phí đặc biệt lãng phí với ma trận thưa nhiều đỉnh, cạnh/cung G đồ thị có trọng số, thay giá trị ma trận kề giá trị trọng số tương ứng => gọi ma trận trọng số © nuinvtnu-2017 Data structures and Algorithms Chapter - 11/17 b) Danh sách kề - Với đỉnh u V ta cho tương ứng một danh sách các đỉnh kề với u Ví dụ: 2 © nuinvtnu-2017 4 5 Data structures and Algorithms Chapter - 12/17 Các phép duyệt đồ thị Duyệt đồ thị? Mỗi đỉnh chỉ thăm lần Các phương pháp duyệt đồ thị a) Duyệt theo chiều rộng (BFS – Breath First Search): Vết dầu loang b) Duyệt theo chiều sâu (DFS – Deep First Search) © nuinvtnu-2017 Data structures and Algorithms Chapter - 13/17 a) Duyệt theo chiều rộng chiều rộng (BFS - Breath first search) Giả sử u là đỉnh xuất phát Nguyên tắc duyệt: Thăm u, thăm đến đỉnh kề u, đến đỉnh chưa thăm kề với đỉnh tiếp tục lặp lại với đỉnh Phép duyệt kết thúc đỉnh liên thông với u đều thăm Tên gọi khác: Duyệt theo vết dầu loang Ví dụ: Xét đồ thị hình bên Giả sử đỉnh u đỉnh 1, => Kết quả duyệt BFS là: 1 4 5 8 © nuinvtnu-2017 Data structures and Algorithms Chapter - 14/17 b) Duyệt theo chiều sâu (DFS - Depth first search) Giả sử u đỉnh xuất phát => Nguyên tắc duyệt sau: Ví dụ: Xét đồ thị hình Thăm u, thăm đến đỉnh u1, u2, …., uk kề u với điều kiện thăm đến đỉnh ui (i = k) mợt phép duyệt theo chiều sâu xuất phát từ ui lại thực Khi thăm đến đỉnh v mà đỉnh kề v đều đã thăm quay lui đến đỉnh v’ có đỉnh w chưa thăm, một phép duyệt theo chiều sâu xuất phát từ w lại thực Giả sử đỉnh u đỉnh 1, Phép duyệt kết thúc đỉnh liên => Kết duyệt là: thông với u đều thăm 1 8 6 4 © nuinvtnu-2017 Data structures and Algorithms Chapter - 15/17 Bài toán khung Định nghĩa: Cho đồ thị G= là đồ thị vô hướng; T= đó F là tập E, T gọi khung của G T liên thơng phi chu trình Nếu G đồ thị vơ hướng có trọng số: Giá của khung tổng trọng số cạnh © nuinvtnu-2017 Data structures and Algorithms Chapter - 16/17 Ví dụ G T1 T2 T3 Nhận xét: G đồ thị vô hướng liên thông có thể có nhiều khung Nếu G là đồ thị trọng số => tìm khung nhỏ có ý nghĩa thực tiễn? Tìm nào? © nuinvtnu-2017 Data structures and Algorithms Chapter - 17/17 ...MỤC TIÊU - Nắm vững lý thuyết đồ thị - Ứng dụng đồ thị để giải toán thực tế © nuinvtnu-2017 Data structures and Algorithms Chapter - 2/17 NỘI DUNG CHÍNH Định nghĩa đồ... thị máy tính Cách duyệt (thăm) đồ thị Một số toán ứng dụng đồ thị © nuinvtnu-2017 Data structures and Algorithms Chapter - 3/17 ĐỊNH NGHĨA ĐỒ THỊ - Đồ thị là một cấu trúc rời rạc, ký hiệu... v © nuinvtnu-2017 Data structures and Algorithms Chapter - 8/17 BIỂU DIỄN ĐỒ THỊ TRONG MÁY TÍNH a) Ma trận kề b) Danh sách kề © nuinvtnu-2017 Data structures and Algorithms Chapter - 9/17 a) Ma