Đồ 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ị:
Trang 1CHƯƠNG 6
ĐỒ THỊ
Trang 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
Trang 4Khi 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
Trang 5Mộ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
Trang 7Cá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
Trang 9Bậ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 )
Trang 10621 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
aij 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, aij 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 ,
: )
Trang 110 1
1
0 0 0 1
1
1 0 0 1
0
1 1 1 0
0
1 1 0 0
Trang 143
7 1
Trang 15Đặ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).
6.3- Duyệt đồ thị
Trang 18Đường đi độ dài n từ đỉnh u đến đỉnh v, với n là một
số nguyên dương 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
e 1 =(x 0 ,x 1 ),e 2 =(x 1 ,x 2 ), ,e n =(x n-1 ,x n ), với x 0 =u và x n =v
Trong đồ thị đơn, ta ký hiệu đường đi này bằng dãy các đỉnh x 0 , x 1 , , x n
Nếu mỗi cung được đặt tương ứng một số thực a(x i ,x j ) gọi là trọng số, lúc đó độ dài đường đi là:
Σa(x i-1 ,x j ) với i=1 đến n
6.4- Đường đi ngắn nhất
Trang 19Thuật toán Dijkstra:
-Đầu vào: Đồ thị G=(V,E) biểu diễn bằng ma trận trọng số a[u,v] với u,v ∈ V
-Điều kiện: a[u,v] >= 0
-Đầu ra: Khoảng cách từ đỉnh s (đỉnh bắt đầu cho trước) đến tất cả các đỉnh còn lại ký
hiệu d[v] truoc[v] ghi nhận đỉnh đi trước v trong đường đi ngắn nhất từ s đến v.
-Ký hiệu: T là tập hợp chứa các đỉnh có nhãn tạm thời.
6.4- Đường đi ngắn nhất
Trang 206.4- Đường đi ngắn nhất
Trang 223
Trang 23viết d[v], truoc[v] trong mỗi ô
-đỉnh có * là đang chọn để cố dịnh nhãn ở bước lặp đang xét, nhãn của nó không bị biến đổi ở các bước tiếp theo.
Độ phức tạp thuật toán là O(mlogn)
Trang 24đồ 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 giữa 2 đỉnh đó.