Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 24 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
24
Dung lượng
349 KB
Nội dung
1 CHƯƠNG 6 ĐỒTHỊ 2 Chương6:Đồthị 6.1 Định nghĩa và các khái niệm 6.2 Biểu diễn đồthị 6.3 Phép duyệt đồthị 6.4 Tìm đường đi ngắn nhất 3 Đồthị là một cấu trúc rời rạc gồm các đỉnh và các cạnh (vô hướng hoặc có hướng) nối các đỉnh đó . Nhiều bài toán thuộc những lĩnh vực rất khác nhau có thể giải được bằng mô hình đồ thị: biểu diễn sự cạnh tranh các loài trong một môi trường sinh thái, hai máy tính có được nối với nhau bằng một đường truyền thông hay không. tìm đường đi ngắn nhất giữa hai thành phố, lập lịch thi, phân chia kênh cho các đài truyền hình … 6.1-Định nghĩa và khái niệm 4 Khi mô hình hoá bằng đồ thị: đỉnh biểu thị các đối tượng được xem xét (người, tổ chức, địa danh, .), cạnh đồthị là những đoạn thẳng (hoặc cong) hay những mũi tên nối một số điểm với nhau, tượng trưng cho một quan hệ nào đó giữa các đối tượng. Các loại đồthị : Một đơn đồthị G = (V, E) gồm một tập khác rỗng V mà các phần tử của nó gọi là các đỉnh và một tập E là các cạnh gồm các cặp không có thứ tự của các đỉnh phân biệt. 6.1-Định nghĩa và khái niệm 5 Một đơn đồthị có hướng G = (V, E) gồm một tập khác rỗng V mà các phần tử của nó gọi là các đỉnh và một tập E các cặp có thứ tự gồm 2 phần tử khác nhau của V gọi là các cung. Một đa đồthị G = (V, E) giống như đơn đồ thị, có thể có cạnh bội (có nhiều hơn hai cạnh tương ứng với một cặp đỉnh) và khuyên (cạnh nối đỉnh với chính nó). 6.1-Định nghĩa và khái niệm 6 v 3 v 4 v 5 v 6 v 1 v 2 6.1-Định nghĩa và khái niệm 7 Các thuật ngữ về đồthị : Hai đỉnh u và v trong đồthị (vô hướng) G=(V,E) được gọi là liền kề nếu (u,v)∈E. Nếu e = (u,v) thì e gọi là cạnh liên thuộc với các đỉnh u và v. Cạnh e cũng được gọi là cạnh nối các đỉnh u và v. Các đỉnh u và v gọi là các điểm đầu mút của cạnh e. Bậc của đỉnh v trong đồthị G=(V,E), ký hiệu deg(v), là số các cạnh liên thuộc với nó. Khuyên tại một đỉnh được tính hai lần cho bậc của nó. Đỉnh v gọi là đỉnh treo nếu deg(v)=1 và gọi là đỉnh cô lập nếu deg(v)=0 6.1-Định nghĩa và khái niệm 8 v 1 v 2 v 3 v 4 v 5 v 6 v 7 6.1-Định nghĩa và khái niệm 9 Bậc vào (t.ư. bậc ra) của đỉnh v trong đồthị có hướng G, ký hiệu deg t (v) (t.ư. deg o (v)), là số các cung có đỉnh cuối (đỉnh đầu) là v. Đỉnh có bậc vào và bậc ra cùng bằng 0 gọi là đỉnh cô lập. Đỉnh có bậc vào bằng 1 và bậc ra bằng 0 gọi là đỉnh treo, cung có đỉnh cuối là đỉnh treo gọi là cung treo Cho G =(V, E) là một đồthị có hướng. Khi đó ||)(deg)(deg Evv Vv Vv ot == ∑ ∑ ∈ ∈ 6.1-Định nghĩa và khái niệm 10 621. Ma trận kề: Cho đồthị vô hướng G=(V,E), v1, v2, ., vn là các đỉnh và e1, e2, ., em là các cạnh của G. Ma trận kề của G là ma trận a ij bằng 1 nếu cạnh (i,j)∈ E và bằng 0 nếu ngược lại. Rõ ràng ma trận kề của đồthị vô hướng là đối xứng. Ngoài ra, a ij có thể gán một số nào đó gọi là trọng số. Lúc đó, ta có ma trận trọng số. Nhược điểm là luôn phải dùng n 2 đơn vị bộ nhớ để lưu trữ ma trận kề. }, .,2,1,:){( njiaA ij == 6.2- Biểu diễn đồthị [...]... toán là O(mlogn) 23 Bài tập Bài 1: Viết chương trình nhập đồthị từ bàn phím lưu trữ dạng ma trận kề Bài 2: Viết chương trình chuyển CTDL biểu diễn đồthị từ ma trận kề sang danh sách kề và ngược lại Bài 3: Viết chương trình liệt kê tất cả các đỉnh của đồthị bằng thuật toán duyệt theo chiều sâu, duyệt theo chiều rộng Bài 4: Viết chương trình nhập đồthị và 2 đỉnh rồi chỉ ra đường đi ngắn nhất... trong đồthị G=(V,E) là một dãy các cạnh (hoặc cung) e1, e2, , en của đồthị sao cho e1=(x0,x1),e2=(x1,x2), ,en=(xn-1,xn), với x0=u và xn=v Trong đồthị đơn, ta ký hiệu đường đi này bằng dãy các đỉnh x0, x1, , xn Nếu mỗi cung được đặt tương ứng một số thực a(xi,xj) gọi là trọng số, lúc đóđộ dài đường đi là: Σa(xi-1,xj) với i=1 đến n 18 6.4- Đường đi ngắn nhất Thuật toán Dijkstra: -Đầu vào: Đồthị G=(V,E)...6.2- Biểu diễn đồthị v1 e6 v2 e3 e1 v3 e4 e5 e2 0 0 0 1 0 0 1 1 0 1 0 0 1 1 0 0 1 1 0 1 1 1 1 0 0 v4 v5 Ví dụ: Ma trận kề của đồthị 11 6.2- Biểu diễn đồ thị 622 Danh sách kề: Mỗi đỉnh v của đồ thị có danh sách lưu trữ các đỉnh kề với nó, ký hiệu Ke(v): Ke(v)={ u∈V: (v,u)∈E} Người ta có thể... e5 e2 v4 v5 12 6.3- Duyệt đồ thị Tìm kiếm theo chiều sâu: void main() { for v ∈ V do chuaxet[v]:=true; for v ∈ V do if (chuaxet[v]) then DFS(v); } void DFS(v) { thamdinh(v); chuaxet[v]:=false; for u ∈ Ke(v) do if (chuaxet[u]) DFS(u); } 13 6.3- Duyệt đồ thị 3 2 6 4 5 7 1 8 10 11 9 12 13 Kết quả tìm kiếm theo chiều sâu: 1, 2, 10, 4, 3, 5, 8, 6, 7, 9, 12, 11, 13 14 6.3- Duyệt đồ thị Đặc điểm: - Mỗi đỉnh... Duyệt đồthị Đặc điểm: - Mỗi đỉnh được thăm đúng 1 lần - Mỗi lần quay về chương trình chính, thuật toán se tạo ra một thành phần liên thông mới - Độ phức tạp của thuật toán là O(n+m) 15 6.3- Duyệt đồthị Tim kiem theo chieu rong: void main() { for (v ∈ V) chuaxet[v]:=true; for (v ∈ V) do if (chuaxet[v]) BFS(v); } 16 6.3- Duyệt đồthị void BFS(v) { Queue:=∅; Queue v; (*nap v vao Queue *) chuaxet[v]:=false; . 1 CHƯƠNG 6 ĐỒ THỊ 2 Chương 6: Đồ thị 6.1 Định nghĩa và các khái niệm 6.2 Biểu diễn đồ thị 6.3 Phép duyệt đồ thị 6.4 Tìm đường đi ngắn nhất 3 Đồ thị. khái niệm 4 Khi mô hình hoá bằng đồ thị: đỉnh biểu thị các đối tượng được xem xét (người, tổ chức, địa danh, .), cạnh đồ thị là những đoạn thẳng (hoặc cong)