Professional Documents
Culture Documents
Hà Nội-2023
1 / 45
GIỚI THIỆU
2 / 45
Phần 2: LÝ THUYẾT ĐỒ THỊ
3 / 45
Chương 2. Biểu diễn đồ thị trên máy tính
Để lưu trữ đồ thị và thực hiện các thuật toán khác nhau với đồ thị trên
máy tính cần phải tìm những cấu trúc dữ liệu thích hợp để mô tả đồ thị.
Các cách biểu diễn đồ thị:
Ma trận kề. Ma trận trọng số
Ma trận liên thuộc đỉnh cạnh
Danh sách kề
Danh sách cạnh
4 / 45
Biểu diễn đồ thị: Ma trận kề
Nhận xét: Ma trận kề biểu diễn đơn đồ thị G là ma trận nhị phân vuông
cấp n.
5 / 45
Biểu diễn đồ thị: Ma trận kề
Chú ý 1
Ma trận kề của một đồ thị tùy thuộc vào thứ tự liệt kê các đỉnh. Do
vậy có tới n! ma trận kề khác nhau của một đồ thị n đỉnh vì có n!
cách sắp xếp n đỉnh.
Ma trận kề của một đồ thị đơn là đối xứng, tức là aij = aji vì nếu vi
được nối với vj thì vj cũng được nối với vi và ngược lại, nếu vi không
liền kề với vj thì vj cũng không liền kề với vi .
Hơn nữa, vì đồ thị đơn không có khuyên nên aii = 0 với i = 1, 2, .., n.
deg(v) = Tổng các phần tử trên dòng v của ma trận kề A
6 / 45
Biểu diễn đồ thị: Ma trận kề
Ví dụ 1
Dùng ma trận kề hãy biểu diễn đơn đồ thị sau:
7 / 45
Biểu diễn đồ thị: Ma trận kề
Ví dụ 2
Dùng ma trận kề hãy biểu diễn đồ thị đơn sau:
8 / 45
Biểu diễn đồ thị: Ma trận kề
Sắp xếp các đỉnh theo thứ tự a, b, c, d.
0 1 1 1
1 0 1 0
A=
1 1 0 0
1 0 0 0
Hình 1: Ma trận kề của đồ thị đơn.
9 / 45
Biểu diễn đồ thị: Ma trận kề
Ví dụ 3
Hãy vẽ đồ thị có ma trận liền kề theo thứ tự của các đỉnh là a, b, c, d:
0 1 1 0
1 0 0 1
A=
1 0 0 1
0 1 1 0
10 / 45
Biểu diễn đồ thị: Ma trận kề
Sắp xếp các đỉnh theo thứ tự a, b, c, d.
0 1 1 0
1 0 0 1
A=
1 0 0 1 (b) Đồ thị ứng với ma trận
kề cho trước
0 1 1 0
(a) Ma trận liền kề
11 / 45
Biểu diễn đồ thị: Ma trận kề
12 / 45
Biểu diễn đồ thị: Ma trận kề
Ví dụ 4
Dùng ma trận kề hãy biểu diễn giả đồ thị sau:
13 / 45
Biểu diễn đồ thị: Ma trận kề
0 3 0 2
3 0 1 1
A=
(c) Giả đồ thị 0 1 1 2
2 1 2 0
(d) Ma trận kề của giả đồ thị
14 / 45
Biểu diễn đồ thị: Ma trận kề
Chú ý 3
Ma trận kề của đồ thị có hướng không có tính đối xứng.
15 / 45
Biểu diễn đồ thị: Ma trận kề
Ví dụ 5
Dùng ma trận kề hãy biểu diễn đồ thị có hướng sau:
16 / 45
Biểu diễn đồ thị: Ma trận kề
Sắp xếp các đỉnh theo thứ tự a, b, c, d.
0 1 0 0
0 0 1 0
A=
0 1 0 1
1 0 0 0
Hình 2: Ma trận kề của đồ thị có hướng.
17 / 45
Biểu diễn đồ thị: Ma trận kề
Ví dụ 6
Dùng ma trận kề hãy biểu diễn đồ thị có hướng sau:
18 / 45
Biểu diễn đồ thị: Ma trận kề
1 1 1 1
0 0 0 1
A=
1 1 0 0
0 1 1 1
Hình 3: Ma trận kề của đồ thị có hướng.
19 / 45
Biểu diễn đồ thị: Ma trận kề
Chú ý 4
Có thể dùng ma trận kề để biểu diễn đa đồ thị có hướng: phần tử aij
bằng số các cung đi từ đỉnh vi tới đỉnh vj .
Ví dụ 7
Dùng ma trận kề hãy biểu diễn đa đồ thị có hướng sau:
20 / 45
Biểu diễn đồ thị: Ma trận kề
1 1 2 1
1 0 0 2
A=
1 0 1 1
0 2 1 0
Hình 4: Ma trận kề của đa đồ thị có hướng.
21 / 45
Biểu diễn đồ thị: Ma trận kề
22 / 45
Đếm đường đi giữa các đỉnh
Số đường đi giữa hai đỉnh của đồ thị có thể xác định được khi sử dụng ma
trận kề.
Định lý 1
Cho đồ thị G với ma trận kề A theo thứ tự các đỉnh v1 , v2 , .., vn (với các
cạnh vô hướng hoặc có hướng hay cạnh bội hoặc khuyên). Số đường đi
khác nhau độ dài r từ vi tới vj trong đó r là một số nguyên dương, bằng
giá trị của phần tử (i, j) của ma trận Ar .
23 / 45
Đếm đường đi giữa các đỉnh
Ví dụ 8
Có bao nhiêu đường đi độ dài 4 từ đỉnh a tới d trong đồ thị vô hướng G
cho như sau:
24 / 45
Đếm đường đi giữa các đỉnh
0 1 1 0 8 0 0 8
A = 11 0
0
0
0
1 A4 = 0 8
1 0 8
8
8
0
0
0 1 1 0 8 0 0 8
(a) Ma trận kề (b) Ma trận A4
25 / 45
Biểu diễn đồ thị: Ma trận trọng số
Trong trường hợp đồ thị có trọng số trên cạnh, thay vì ma trận kề, để biểu
diễn đồ thị ta sử dụng ma trận trọng số
C = (cij )nxn
trong đó
c(i, j) nếu (i, j) thuộc tập cạnh E
cij =
θ nếu (i, j) không thuộc tập cạnh E
với θ là giá trị đặc biệt để chỉ ra một cặp (i,j) không là cạnh, tuỳ từng
trường hợp cụ thể, có thể được đặt bằng một trong các giá trị sau: 0,
+∞, -∞.
26 / 45
Biểu diễn đồ thị: Ma trận trọng số
Ví dụ: Cho đồ thị G = (V , E ) là đồ thị có trọng số, mỗi cạnh e ∈ E có
trọng số c(e).
28 / 45
Biểu diễn đồ thị: Ma trận liên thuộc
Ví dụ 9
Dùng ma trận liên thuộc hãy biểu diễn đồ thị vô hướng sau:
29 / 45
Biểu diễn đồ thị: Ma trận liên thuộc
30 / 45
Biểu diễn đồ thị: Ma trận liên thuộc
Ví dụ 10
Dùng ma trận liên thuộc hãy biểu diễn giả đồ thị sau:
31 / 45
Biểu diễn đồ thị: Ma trận liên thuộc
32 / 45
Biểu diễn đồ thị: Ma trận liên thuộc đỉnh cạnh
Ma trận liên thuộc đỉnh-cạnh là một trong những cách biểu diễn rất hay
được sử dụng trong các bài toán liên quan đến đồ thị có hướng mà trong
đó phải xử lý các cung của đồ thị.
33 / 45
Biểu diễn đồ thị: Ma trận liên thuộc đỉnh cạnh
34 / 45
Biểu diễn đồ thị: Ma trận liên thuộc đỉnh cạnh
Dùng ma trận liên thuộc biểu diễn đồ thị sau:
35 / 45
Biểu diễn đồ thị: Danh sách kề
Biểu diễn đồ thị không có cạnh bội là liệt kê tất cả các cạnh của đồ thị.
Nói cách khác để biểu diễn đồ thị không có cạnh bội, ta dùng danh sách
kề. Danh sách này chỉ rõ các đỉnh nối với mỗi đỉnh của đồ thị.
Danh sách kề (Adjacency Lists): Với mỗi đỉnh v cất giữ danh sách các
đỉnh kề của nó.
Là mảng Ke gồm |V| danh sách.
Mỗi đỉnh có một danh sách.
Với mỗi u ∈ V , Ke[u] bao gồm tất cả các đỉnh kề của u.
36 / 45
Biểu diễn đồ thị: Danh sách kề
37 / 45
Biểu diễn đồ thị: Danh sách kề
Ví dụ 11
Hãy biểu diễn đồ thị có hướng sau bằng cách liệt kê tất cả các đỉnh cuối
của các cung xuất phát từ mỗi đỉnh của đồ thị.
38 / 45
Biểu diễn đồ thị: Danh sách kề
39 / 45
Biểu diễn đồ thị: Danh sách kề
40 / 45
Danh sách kề của đồ thị vô hướng
41 / 45
Danh sách kề của đồ thị có hướng
42 / 45
Biểu diễn đồ thị: Danh sách kề
Chú ý 5
Tổng cộng bộ nhớ: cỡ (|V|+|E|) ô nhớ. Thường là nhỏ hơn nhiều so
với |V |2 , nhất là đối với đồ thị thưa (sparse graph).
Trong trường hợp đồ thị thưa (m < kn, k < 10 với m là số cạnh và n
là số đỉnh của đồ thị), người ta thường dùng cách biểu diễn đồ thị
theo danh sách cạnh.
Khi biểu diễn đồ thị bởi danh sách các cạnh hay danh sách kề, thì
việc thực hiện thuật toán có thể sẽ rất cồng kềnh, nếu đồ thị có nhiều
cạnh.
Để đơn giản việc tính toán, ta có thể biểu diễn đồ thị bằng ma trận:
Ma trận liền kề và ma trận liên thuộc.
43 / 45
Biểu diễn đồ thị: Danh sách cạnh (cung)
Hai đỉnh u, v có kề nhau? Duyệt qua danh sách tất cả các cạnh của
đồ thị (tồi hơn ma trận kề).
44 / 45
Chương 5. Đồ thị
Một số thuật ngữ tiếng Anh
Tiếng Anh Tiếng Việt
graph theory Lý thuyết đồ thị
graph Đồ thị
vertex Đỉnh
edge Cạnh
loops Khuyên
simple graph Đơn đồ thị
multigraphs Đa đồ thị
pseudographs Giả đồ thị
undirected graphs Đồ thị vô hướng
directed graph Đồ thị có hướng
simple directed graph Đơn đồ thị có hướng
directed multigraphs Đa đồ thị có hướng
mixed graph Đồ thị hỗn hợp
Bảng 1: Một số thuật ngữ tiếng Anh
45 / 45