Tải bản đầy đủ (.pdf) (127 trang)

Chuyên đề thuật toán đồ thị trong lập trình căn bản

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (5.16 MB, 127 trang )

PDF được tạo bằng bộ công cụ mã nguồn mở mwlib. Xem để biết thêm thông tin.
PDF generated at: Wed, 14 May 2014 15:48:20 UTC
Thuật toán đồ thị
Nội dung
Bài
Đại cương
1
Lý thuyết đồ thị 1
Thuật ngữ lý thuyết đồ thị 5
Đồ thị (lý thuyết đồ thị) 12
Ma trận kề 16
Danh sách kề 22
Tìm kiếm trong đồ thị
24
Tìm kiếm theo chiều sâu 24
Tìm kiếm theo chiều rộng 33
Sắp xếp tô pô 35
Tính liên thông của đồ thị vô hướng
38
Thành phần liên thông 38
Thuật toán Karger 40
Tính liên thông của đồ thị có hướng
42
Thành phần liên thông mạnh 42
Thuật toán Kosaraju 43
Đường đi ngắn nhất
44
Bài toán đường đi ngắn nhất 44
Thuật toán Dijkstra 45
Thuật toán Bellman-Ford 47
Giải thuật tìm kiếm A* 53


Bài toán đường đi rộng nhất 56
Cây bao trùm nhỏ nhất
59
Cây bao trùm nhỏ nhất 59
Thuật toán Borůvka 63
Thuật toán Kruskal 65
Thuật toán Prim 72
Chu trình
76
Đường đi Euler 76
Đường đi Hamilton 81
Bài toán người bán hàng 85
Thuật toán Christofides 95
Chu trình trung bình nhỏ nhất 96
Ghép cặp trên đồ thị hai phía
97
Bài toán hôn nhân bền vững 97
Ghép cặp trên đồ thị tổng quát
99
Thuật toán Edmonds 99
Luồng trong mạng
103
Luồng trên mạng 103
Định lý luồng cực đại lát cắt cực tiểu 106
Thuật toán Ford-Fulkerson 108
Thuật toán Edmonds–Karp 110
Thuật toán Dinitz 112
Các lớp đồ thị đặc biệt
115
Đồ thị phẳng 115

Chú thích
Nguồn và người đóng góp vào bài 120
Nguồn, giấy phép, và người đóng góp vào hình 121
Giấy phép Bài viết
Giấy phép 124
1
Đại cương
Lý thuyết đồ thị
Hình vẽ một đồ thị có 6 đỉnh và 7 cạnh
Trong toán học và tin học, lý thuyết đồ thị nghiên cứu các tính chất
của đồ thị. Một cách không chính thức, đồ thị là một tập các đối tượng
được gọi là các đỉnh (hoặc nút) nối với nhau bởi các cạnh (hoặc cung).
Cạnh có thể có hướng hoặc vô hướng. Đồ thị thường được vẽ dưới
dạng một tập các điểm (các đỉnh nối với nhau bằng các đoạn thẳng (các
cạnh).
Đồ thị biểu diễn được rất nhiều cấu trúc, nhiều bài toán thực tế có thể
được biểu diễn bằng đồ thị. Ví dụ, cấu trúc liên kết của một website có
thể được biểu diễn bằng một đồ thị có hướng như sau: các đỉnh là các
trang web hiện có tại website, tồn tại một cạnh có hướng nối từ trang A
tới trang B khi và chỉ khi A có chứa 1 liên kết tới B. Do vậy, sự phát triển của các thuật toán xử lý đồ thị là một trong
các mối quan tâm chính của khoa học máy tính.
Cấu trúc đồ thị có thể được mở rộng bằng cách gán trọng số cho mỗi cạnh. Có thể sử dụng đồ thị có trọng số để biểu
diễn nhiều khái niệm khác nhau. Ví dụ, nếu đồ thị biểu diễn một mạng đường giao thông, các trọng số có thể là độ
dài của mỗi con đường. Một cách khác để mở rộng đồ thị cơ bản là qui định hướng cho các cạnh của đồ thị (như đối
với các trang web, A liên kết tới B, nhưng B không nhất thiết cũng liên kết tới A). Loại đồ thị này được gọi là đồ thị
có hướng. Một đồ thị có hướng với các cạnh có trọng số được gọi là một lưới.
Các lưới có nhiều ứng dụng trong khía cạnh thực tiễn của lý thuyết đồ thị, chẳng hạn, phân tích lưới có thể dùng để
mô hình hoá và phân tích mạng lưới giao thông hoặc nhằm "phát hiện" hình dáng của Internet - (Xem thêm các ứng
dụng đưới đây. Mặc dù vậy, cũng nên lưu ý rằng trong phân tích lưới, thì định nghĩa của khái niệm "lưới" có thể khác
nhau và thường được chỉ ra bằng một đồ thị đơn giản.)

Lịch sử
Một trong những kết quả đầu tiên trong lí thuyết đồ thị xuất hiện trong bài báo của Leonhard Euler về Bảy cây cầu ở
Königsberg, xuất bản năm 1736. Bài báo này cũng được xem như một trong những kết quả topo đầu tiên trong hình
học, tức là, nó không hề phụ thuộc vào bất cứ độ đo nào. Nó diễn tả mối liên hệ sâu sắc giữa lí thuyết đồ thị và tôpô
học.
Năm 1845, Gustav Kirchhoff đưa ra Định luật Kirchhoff cho mạch điện để tính điện thế và cường độ dòng điện trong
mạch điện.
Năm 1852 Francis Guthrie đưa ra bài toán bốn màu về vấn đề liệu chỉ với bốn màu có thể tô màu một bản đồ bất kì
sao cho không có hai nước nào cùng biên giới được tô cùng màu. Bài toán này được xem như đã khai sinh ra lí thuyết
đồ thị, và chỉ được giải sau một thế kỉ vào năm 1976 bởi Kenneth Appel và Wolfgang Haken. Trong khi cố gắng giải
quyết bài toán này, các nhà toán học đã phát minh ra nhiều thuật ngữ và khái niệm nền tảng cho lí thuyết đồ thị.
Lý thuyết đồ thị
2
Cách vẽ đồ thị
Đồ thị được biểu diễn đồ họa bằng cách vẽ một điểm cho mỗi đỉnh và vẽ một cung giữa hai đỉnh nếu chúng được nối
bởi một cạnh. Nếu đồ thị là có hướng thì hướng được chỉ bởi một mũi tên.
Không nên lẫn lộn giữa một đồ hình của đồ thị với bản thân đồ thị (một cấu trúc trừu tượng, không đồ họa) bởi có
nhiều cách xây dựng đồ hình. Toàn bộ vấn đề nằm ở chỗ đỉnh nào được nối với đỉnh nào, và bằng bao nhiêu cạnh.
Trong thực hành, thường rất khó để xác định xem hai đồ hình có cùng biểu diễn một đồ thị không. Tùy vào bài toán
mà đồ hình này có thể phù hợp và dễ hiểu hơn đồ hình kia.
Các cấu trúc dữ liệu đồ thị
Có nhiều cách khác nhau để lưu trữ các đồ thị trong máy tính. Sử dụng cấu trúc dữ liệu nào thì tùy theo cấu trúc của
đồ thị và thuật toán dùng để thao tác trên đồ thị đó. Trên lý thuyết, người ta có thể phân biệt giữa các cấu trúc danh
sách và các cấu trúc ma trận. Tuy nhiên, trong các ứng dụng cụ thể, cấu trúc tốt nhất thường là kết hợp của cả hai.
Người ta hay dùng các cấu trúc danh sách cho các đồ thị thưa (sparse graph), do chúng đòi hỏi ít bộ nhớ. Trong khi
đó, các cấu trúc ma trận cho phép truy nhập dữ liệu nhanh hơn, nhưng lại cần lượng bộ nhớ lớn nếu đồ thị có kích
thước lớn.
Các cấu trúc danh sách
• Danh sách liên thuộc (Incidence list) - Mỗi đỉnh có một danh sách các cạnh nối với đỉnh đó. Các cạnh của đồ thị
được có thể được lưu trong một danh sách riêng (có thể cài đặt bằng mảng (array) hoặc danh sách liên kết động

(linked list)), trong đó mỗi phần tử ghi thông tin về một cạnh, bao gồm: cặp đỉnh mà cạnh đó nối (cặp này sẽ có
thứ tự nếu đồ thị có hướng), trọng số và các dữ liệu khác. Danh sách liên thuộc của mỗi đỉnh sẽ chiếu tới vị trí của
các cạnh tương ứng tại danh sách cạnh này.
• Danh sách kề (Adjacency list) - Mỗi đỉnh của đồ thị có một danh sách các đỉnh kề nó (nghĩa là có một cạnh nối từ
đỉnh này đến mỗi đỉnh đó). Trong đồ thị vô hướng, cấu trúc này có thể gây trùng lặp. Chẳng hạn nếu đỉnh 3 nằm
trong danh sách của đỉnh 2 thì đỉnh 2 cũng phải có trong danh sách của đỉnh 3. Lập trình viên có thể chọn cách sử
dụng phần không gian thừa, hoặc có thể liệt kê các quan hệ kề cạnh chỉ một lần. Biểu diễn dữ liệu này thuận lợi
cho việc từ một đỉnh duy nhất tìm mọi đỉnh được nối với nó, do các đỉnh này đã được liệt kê tường minh.
Các cấu trúc ma trận
• Ma trận liên thuộc (Incidence matrix) - Đồ thị được biểu diễn bằng một ma trận kích thước p × q, trong đó
p là số đỉnh và q là số cạnh, chứa dữ liệu về quan hệ giữa đỉnh và cạnh . Đơn giản nhất:
nếu đỉnh là một trong 2 đầu của cạnh , bằng 0 trong các trường hợp khác.
• Ma trận kề (Adjaceny matrix) - một ma trận N × N, trong đó N là số đỉnh của đồ thị. Nếu có một cạnh nào đó nối
đỉnh với đỉnh thì phần tử bằng 1, nếu không, nó có giá trị 0. Cấu trúc này tạo thuận lợi cho việc tìm
các đồ thị con và để đảo các đồ thị.
• Ma trận dẫn nạp (Admittance matrix) hoặc ma trận Kirchhoff (Kirchhoff matrix) hay ma trận Laplace
(Laplacian matrix) - được định nghĩa là kết quả thu được khi lấy ma trận bậc (degree matrix) trừ đi ma trận kề.
Do đó, ma trận này chứa thông tin cả về quan hệ kề (có cạnh nối hay không) giữa các đỉnh lẫn bậc của các đỉnh
đó.
Lý thuyết đồ thị
3
Các bài toán đồ thị
Tìm đồ thị con
Một bài toán thường gặp, được gọi là bài toán đồ thị con đẳng cấu (subgraph isomorphism problem), là tìm các đồ
thị con trong một đồ thị cho trước. Nhiều tính chất của đồ thị có tính di truyền, nghĩa là nếu một đồ thị con nào đó có
một tính chất thì toàn bộ đồ thị cũng có tính chất đó. Chẳng hạn như một đồ thị là không phẳng nếu như nó chứa một
đồ thị hai phía đầy đủ (complete bipartite graph ) hoặc nếu nó chứa đồ thị đầy đủ . Tuy nhiên, bài toán
tìm đồ thị con cực đại thỏa mãn một tính chất nào đó thường là bài toán NP-đầy đủ (NP-complete problem).
• Bài toán đồ thị con đầy đủ lớn nhất (clique problem) (NP-đầy đủ)
• Bài toán tập con độc lập (independent set problem) (NP-đầy đủ)

Tô màu đồ thị
• Định lý bốn màu (four-color theorem)
• Định lý đồ thị hoàn hảo mạnh (strong perfect graph theorem)
• Bài toán Erdős-Faber-Lovász conjecture (hiện chưa ai giải được)
• Bài toán total coloring conjecture (hiện chưa ai giải được)
• Bài toán list coloring conjecture (hiện chưa ai giải được)
Các bài toán đường đi
• Bài toán bảy cây cầu Euler (Seven Bridges of Königsberg) còn gọi là "Bảy cây cầu ở Königsberg"
• Cây bao trùm nhỏ nhất (Minimum spanning tree)
•• Cây Steiner
•• Bài toán đường đi ngắn nhất
• Bài toán người đưa thư Trung Hoa (còn gọi là "bài toán tìm hành trình ngắn nhất")
• Bài toán người bán hàng (Traveling salesman problem) (NP-đầy đủ) cũng có tài liệu (tiếng Việt) gọi đây là "Bài
toán người đưa thư"
Luồng
•• Định lý luồng cực đại lát cắt cực tiểu
•• Reconstruction conjecture
Visibility graph problems
•• Museum guard problem
Các bài toán phủ
Các bài toán phủ là các thể hiện cụ thể của các bài toán tìm đồ thị con. Chúng có quan hệ chặt chẽ với bài toán đồ thị
con đầy đủ hoặc bài toán tập độc lập.
• Bài toán phủ tập (Set cover problem)
• Bài toán phủ đỉnh (Vertex cover problem)
Lý thuyết đồ thị
4
Các thuật toán quan trọng
•• Thuật toán Bellman-Ford
•• Thuật toán Dijkstra
•• Thuật toán Ford-Fulkerson

•• Thuật toán Kruskal
•• Thuật toán láng giềng gần nhất
•• Thuật toán Prim
Các lĩnh vực toán học có liên quan
•• Lý thuyết Ramsey
• Toán tổ hợp (Combinatorics)
Ứng dụng
Lý thuyết đồ thị được ứng dụng nhiều trong phân tích lưới. Có hai kiểu phân tích lưới. Kiểu thứ nhất là phân tích để
tìm các tính chất về cấu trúc của một lưới, chẳng hạn nó là một scale-free network hay là một small-world network.
Kiểu thứ hai, phân tích để đo đạc, chẳng hạn mức độ lưu thông xe cộ trong một phần của mạng lưới giao thông
(transportation network).
Lý thuyết đồ thị còn được dùng trong nghiên cứu phân tử. Trong vật lý vật chất ngưng tụ, cấu trúc ba chiều phức tạp
của các hệ nguyên tử có thể được nghiên cứu một cách định lượng bằng cách thu thập thống kê về các tính chất lý
thuyết đồ thị có liên quan đến cấu trúc tô pô của các nguyên tử. Ví dụ, các vành đường đi ngắn nhất Franzblau
(Franzblau's shortest-path rings).
Các lĩnh vực con
Lý thuyết đồ thị rất đa dạng và có nhiều lĩnh vực con. Trong đó có:
• Lý thuyết đồ thị đại số (Algebraic graph theory)
• Lý thuyết đồ thị tô pô (Topological graph theory)
• Lý thuyết đồ thị hình học (Geometric graph theory)
• Lý thuyết đồ thị cực trị (Extremal graph theory)
• Lý thuyết đồ thị mê-tríc (Metric graph theory)
• Lý thuyết đồ thị xác suất (Probabilistic graph theory)
Các nhà lý thuyết đồ thị quan trọng
•• nguyễn văn lê
•• Frank Harary
•• Denes König
•• W.T. Tutte
• Sách trắng về lý thuyết đồ thị
[1]

các nhà lý thuyết đồ thị khác và danh sách ấn bản phẩm của họ.
Lý thuyết đồ thị
5
Tham khảo
[1] http:/ / www1. cs. columbia. edu/ ~sanders/ graphtheory/ people/ alphabetic. html
Liên kết ngoài
• Sách trực tuyến về Lý thuyết đồ thị (http:/ / www. math. uni-hamburg. de/ home/ diestel/ books/ graph. theory/ )
• Hướng dẫn về lý thuyết đồ thị (http:/ / www. utm. edu/ departments/ math/ graph/ )
• Bài giảng của một môn học về các thuật toán đồ thị (http:/ / www. cs. wpi. edu/ ~dobrush/ cs507/ presentation/
2001/ Project10/ ppframe. htm)
• Dữ liệu test chuẩn cho các bài toán đồ thị con đầy đủ lớn nhất (Maximum Clique), tập con độc lập lớn nhất
(Maximum Independent Set), phủ đỉnh nhỏ nhất (Minimum Vertex Cover) và tô mầu đỉnh (Vertex Coloring)
(http:/ / www. nlsde. buaa. edu. cn/ ~kexu/ benchmarks/ graph-benchmarks. htm)
• Sưu tập ảnh số 1: một số mạng lưới thực (http:/ / www. nd. edu/ ~networks/ gallery. htm)
• Các tạp chí lý thuyết đồ thị (http:/ / www1. cs. columbia. edu/ ~sanders/ graphtheory/ writings/ journals. html)
Thuật ngữ lý thuyết đồ thị
Lưu ý: Danh sách thuật ngữ lý thuyết đồ thị này chỉ là điểm khởi đầu cho những người mới nhập môn làm quen với
một số thuật ngữ và khái niệm cơ bản. Bài này không trình bày các định nghĩa chính thức của các khái niệm và thuật
ngữ này.
Ví dụ một đồ thị đơn với tập đỉnh V = {1, 2, 3, 4, 5, 6} và tập cạnh E
= Bản mẫu:1,2, {1,5}, {2,3}, {2,5}, {3,4}, {4,5}, Bản mẫu:4,6.
B
• Bậc (degree hoặc valency)
Bậc của đỉnh v trong đồ thị G, ký hiệu d
G
(v), là
số cạnh liên thuộc với v, trong đó, khuyên được
tính hai lần. Một đỉnh có bậc 0 là đỉnh cô lập.
Đỉnh có bậc 1 là một đỉnh treo hay lá. Trong đồ
thị ví dụ, các đỉnh 1 và 3 có bậc là 2, các đỉnh 2,

4 và 5 có bậc bằng 3, đỉnh 6 có bậc 1.
Nếu tập cạnh E là hữu hạn thì tổng giá trị bậc của
các đỉnh gọi là bậc của đồ thị. Bậc của đồ thị
bằng hai lần số cạnh. Số các đỉnh bậc lẻ luôn là
số chẵn.
Bậc cực đại của đồ thị G, ký hiệu Δ(G), là bậc lớn nhất của các đỉnh trong đồ thị; bậc cực tiểu, δ(G), là bậc
nhỏ nhất của các đỉnh trong đồ thị.
Trong đồ thị có hướng Γ, bậc ngoài d
Γ
+
(v), số cung xuất phát từ đỉnh v, và bậc trong d
Γ
-
(v), số cung đi vào
đỉnh v. Bậc d
Γ
(v) của đỉnh v bằng tổng bậc ngoài và bậc trong của đỉnh đó. Bậc ngoài cực đại và cực tiểu được
ký hiệu Δ
+
(Γ) và δ
+
(Γ); bậc trong cực đại và cực tiểu, Δ
-
(Γ) và δ
-
(Γ). Trong ngữ cảnh rõ ràng, có thể bỏ qua
chỉ số dưới Γ
• Bất biến đồ thị (graph invariant)
là một tính chất của một đồ thị G, thường là một số hoặc một đa thức chỉ phụ thuộc vào lớp đẳng cấu của G. Ví
dụ: bậc của đồ thị.

Thuật ngữ lý thuyết đồ thị
6
C
• Cạnh(Edge): Cạnh nối đỉnh x với đỉnh y là một tập gồm hai phần tử {x,y}, thường được vẽ dưới dạng một đoạn
thẳng nối hai đỉnh. Cạnh nối hai đỉnh x và y được ký hiệu là xy (không phải x⋅y). Tập cạnh của G thường được ký
hiệu là E(G), hoặc E nếu không có nguy cơ hiểu nhầm.
• Cạnh có hướng là một cặp đỉnh có thứ tự. Trong mỗi cặp có thứ tự đó, đỉnh thứ nhất được gọi là đỉnh đầu,
đỉnh thứ hai là đỉnh cuối. Cạnh vô hướng không quan tâm đến hướng và coi hai đỉnh như nhau.
• Cạnh lá: Cạnh nối với một đỉnh lá.
• Cạnh cắt: xem Cầu.
• Cạnh kề nhau : Hai cạnh của một đồ thị được xem là kề nhau nếu chúng có một đỉnh chung.
• Cặp ghép: (matching): một cặp ghép M của đồ thị G = (V,E) là một tập các cạnh đôi một không kề nhau của G.
• Cặp ghép hoàn hảo (perfect matching): là cặp ghép phủ tất cả các đỉnh của đồ thị. Nghĩa là mỗi đỉnh của đồ
thị đều liên thuộc với đúng một cạnh của cặp ghép.
• Cặp ghép lớn nhất, Cặp ghép tối đa: là cặp ghép chứa nhiều cạnh nhất có thể. Có thể có nhiều cặp ghép tối
đa.
• Cấp (order) của một đồ thị là số đỉnh của nó, nghĩa là |V(G)|.
• Cầu: là một cạnh mà nếu loại bỏ nó thì đồ thị tăng số thành phần liên thông.
• Cây: là một đồ thị đơn liên thông phi chu trình.
• Cây bao trùm(cây khung): là một đồ thị con bao trùm có dạng cây. Chỉ có đồ thị liên thông mới có cây bao
trùm.
• Cây (có gốc): thường được coi như các đồ thị đơn có hướng phi chu trình với các cung hướng từ phía gốc ra
phía lá. Với mỗi cung, đỉnh tại gốc cung được gọi là đỉnh cha hoặc cha, các đỉnh tại điểm cuối của cung được
gọi là đỉnh con hoặc con của đỉnh tại gốc cung.
• Cây con: một cây con của đồ thị G là một đồ thị con có dạng cây.
• Cây k-ary:(ví dụ: nhị phân, tam phân ) là cây có gốc mà mỗi đỉnh trong đều có không quá k con.
Cây đơn phân chỉ là một đường đi.
Cây nhị phân là cây mà mỗi đỉnh có không quá 2 con.
Cây nhị phân đầy đủ là cây mà mỗi đỉnh trong có đúng 2 con.
• Chỉ số clique: Chỉ số clique ω(G) của đồ thị G là bậc của đồ thị con đầy đủ lớn nhất của G.

• Chỉ số độc lập: Chỉ số độc lập của đồ thị G, ký hiệu α(G), là kích thước của tập độc lập lớn nhất của G.
• Chu trình trong đồ thị: là một đường đi đóng trong đồ thị. Đồ thị chỉ gồm một chu trình với n đỉnh được gọi là đồ
thị vòng, ký hiệu C
n
,
• Chu trình bao trùm: là cách gọi khác của chu trình Hamilton.
• Chu trình chẵn: là chu trình có độ dài chẵn.
• Chu trình có hướng: là một chu trình đơn mà mọi cung trong đó đều cùng hướng, nghĩa là mọi đỉnh đều có
bậc trong và bậc ngoài bằng 1. Có thể gọi đơn giản là chu trình khi ngữ cảnh rõ ràng.
• Chu trình đơn: là chu trình đi qua mỗi đỉnh không quá một lần. Trong đồ thị ở hình trên, (1, 5, 2, 1) là một
chu trình đơn. Nếu không chỉ rõ, chu trình thường được hiểu là một chu trình đơn.
• Chu trình Euler: là chu trình qua tất cả các cạnh, mỗi cạnh đúng một lần.
• Chu trình lẻ: là chu trình có độ dài lẻ.
• Chu vi nhỏ (girth): Chu vi nhỏ của một đồ thị là độ dài của chu trình đơn ngắn nhất của đồ thị.
• Chu vi lớn (circumference): Chu vi lớn của một đồ thị là độ dài của chu trình đơn dài nhất của đồ thị. Đối với đồ
thị không có chu trình, chu vi lớn và chu vi nhỏ được định nghĩa bằng giá trị vô cùng ∞.
• Chuỗi bậc (degree sequence): là danh sách các bậc của một đồ thị sắp xếp theo thứ tự giảm dần. (ví dụ, d
1
≥ d
2

… ≥ d
n
). Một chuỗi giảm dần các số tự nhiên được coi là hiện thực được (realizable) nếu nó là chuỗi bậc của
Thuật ngữ lý thuyết đồ thị
7
một đồ thị nào đó.
• Cung: là cạnh có hướng.
D
• Dẫn xuất (induced)

Đồ thị con H của đồ thị G được coi là dẫn xuất nếu: với mỗi cặp đỉnh x và y của H, xy là một cạnh của H khi
và chỉ khi xy là một cạnh của G. Nếu H được chọn dựa trên tập đỉnh S là tập con của V(G), thì H còn được ký
hiệu là G[S] và được coi là dẫn xuất từ S.
Đ
•• Đẳng cấu
Hai đồ thị G và H được coi là đẳng cấu, ký hiệu G ~ H, nếu có một quan hệ tương ứng một-một giữa hai tập
đỉnh của hai đồ thị sao cho hai đỉnh của đồ thị G kề nhau khi và chỉ khi các đỉnh tương ứng của chúng trong đồ
thị H cũng kề nhau.
• Đỉnh: Xem Đồ thị. Đỉnh được vẽ dưới dạng một nút hoặc một điểm. Tập đỉnh của đồ thị G thường được ký hiệu
là V(G), hoặc V khi không có nguy cơ hiểu nhầm.
• Đỉnh cha: Xem Cây (có gốc)
• Đỉnh con: Xem Cây (có gốc)
• Đỉnh cắt (cut vertex): là một đỉnh mà nếu loại bỏ nó thì đồ thị tăng số thành phần liên thông.
• Đỉnh gốc: là một đỉnh đặc biệt của cây có gốc. Trong trường hợp này, cây là đồ thị có hướng, đỉnh gốc là đỉnh
duy nhất có bậc trong bằng 0.
• Đỉnh lá: Đỉnh có bậc 1, còn được gọi là lá. Thường dùng cho cây có gốc, khi đó lá là đỉnh không có con.
• Đỉnh phát (source): là đỉnh có bậc trong bằng 0.
• Đỉnh thu (sink): là đỉnh có bậc ngoài bằng 0.
• Đỉnh trong (internal vertex): Đỉnh không phải là đỉnh lá.
• Đồ thị: Gồm một tập các đỉnh được nối với nhau bằng các cạnh. Xem chi tiết tại Đồ thị (toán học). Nếu không
không được chỉ rõ trong ngữ cảnh, đồ thị được hiểu là đồ thị đơn.
• Đa đồ thị: Đồ thị có đa cạnh nhưng không có khuyên. Có tài liệu quy định là: đồ thị có đa cạnh và có khuyên.
• Đồ thị cha: Một đồ thị cha của G là một đồ thị chứa G với danh nghĩa một đồ thị con. Ta nói rằng đồ thị G
chứa đồ thị H nếu có một đồ thị con nào đó của G chính là H hoặc đẳng cấu với H (tùy theo yêu cầu của hoàn
cảnh).
• Đồ thị chính quy: là đồ thị có bậc của tất cả các đỉnh bằng nhau.
•• Đồ thị có hướng
• Đồ thị có trọng số: Trong đồ thị có trọng số, mỗi cạnh được gắn nhãn là một số, số này được gọi là trọng số
của đỉnh. Nói cách khác, đồ thị coa trọng số là một đồ thị cùng với một ánh xạ từ tập các cạnh vào tập số thực.
Khi không chỉ rõ, một đồ thị luôn được coi là đồ thị không có trọng số.

• Đồ thị con: Một đồ thị con của đồ thị G là một đồ thị mà tập cạnh và tập đỉnh của nó là các tập con của các
thành phần tướng ứng của G.
• Đồ thị con bao trùm (spanning subgraph): Đồ thị con H là một đồ thị con bao trùm của đồ thị G nếu tập đỉnh
của H trùng với tập đỉnh của G. Ta nói rằng H bao trùm G.
• Đồ thị đầy đủ: Đồ thị đầy đủ bậc n, ký hiệu K
n
, là một đồ thị đơn gồm n đỉnh trong đó hai đỉnh bất kỳ đều
được nối với nhau bởi một cạnh. Có tất cả n(n-1)/2 cạnh. Đồ thị ví dụ không phải đồ thị đầy đủ.
• Đồ thị đơn: là đồ thị không có đa cạnh và không có khuyên.
• Đồ thị Euler có hướng: là một đồ thị có hướng mà mỗi đỉnh đều có bậc trong bằng bậc ngoài.
Thuật ngữ lý thuyết đồ thị
8
• Đồ thị hai phía: là một đồ thị đặc biệt, trong đó tập các đỉnh có thể được chia thành hai tập không giao
nhau thỏa mãn điều kiện không có cạnh nối hai đỉnh bất kỳ thuộc cùng một tập.
• Đồ thị hữu hạn: là đồ thị có hữu hạn cạnh và hữu hạn đỉnh. Nếu không được chỉ rõ tính chất, một đồ thị
thường được hiểu là hữu hạn.
• Đồ thị hữu hạn địa phương: là đồ thị vô hạn trong đó mỗi cạnh đều có bậc hữu hạn.
• Đồ thị phẳng là đồ thị có thể được vẽ trên mặt phẳng Euclid sao cho không có hai cạnh nào cắt nhau. Đồ thị ví
dụ là đồ thị phẳng.
• Đồ thị phi chu trình: là đồ thị không có chu trình. Một đồ thị có hướng là phi chu trình nếu nó không chứa
chu trình có hướng.
• Đồ thị phổ dụng (universal graph): Đồ thị phổ dụng của một lớp đồ thị K là một đồ thị đơn nhỏ nhất mà mọi
đồ thị là phần tử của K đều là đồ thị con của nó.
• Đồ thị rỗng: là đồ thị không có cạnh và không có đỉnh. Hoặc, nó là một đồ thị không có cạnh nhưng có một số
đỉnh bất kỳ, khi đó, nó được gọi là đồ thị rỗng đỉnh. (Không có sự thống nhất giữa các tài liệu).
• Đồ thị vòng: là đồ thị chứa một chu trình duy nhất đi qua tất cả các đỉnh, mỗi đỉnh đều có bậc đúng bằng 2.
• Đồ thị vô hạn: là đồ thị có vô hạn cạnh hoặc vô hạn đỉnh hoặc cả hai.
• Đồ thị vô hướng: là đồ thị gồm toàn các cạnh không có hướng.
•• Độ dài
Độ dài của một đường đi là số cạnh mà nó đi qua. Đường đi P

n
có độ dài n - 1. Trong đồ thị ví dụ, (1, 2, 5, 1,
2, 3) là đường đi có độ dài 5, còn (5, 2, 1) là đường đi đơn có độ dài 2.
Độ dài của một chu trìnhlà số cạnh của nó, số này cũng bằng số đỉnh nó đi qua (tính cả bội, nếu một đỉnh được
đi qua nhiều lần). C
n
có độ dài n. Khác với đường đi, chu trình không được phép có độ dài 0. Các chu trình độ
dài 1 là các khuyên. Các chu trình độ dài 2 là các cặp đa cạnh. Trong đồ thị ví dụ, (1, 2, 3, 4, 5, 1) là chu trình
độ dài 5.
•• Độc lập
Hai đường đi được coi là độc lập nếu chúng không có chung đỉnh nào, ngoại trừ đỉnh đầu và đỉnh cuối.
Một đỉnh cô lập hoặc đỉnh độc lập là đỉnh không liên thuộc với một cạnh nào, cũng có nghĩa là đỉnh có bậc 0.
Một tập độc lập, hay tập ổn định, là tập các đỉnh đôi một không kề nhau. Đồ thị con dẫn xuất từ một tập độc
lập là một đồ thị rỗng. Trong ví dụ trên, các đỉnh 1, 3 và 6 hợp thành một tập độc lập; các đỉnh 3, 5 và 6 hợp
thành một tập độc lập khác.
Số độc lập (indepndence number) của một đồ thị là số cực đại các đỉnh của tập độc lập ứng với đồ thị đó
•• Đồng cấu
Một đồ thị G được coi là đồng cấu với đồ thị H nếu có một ánh xạ từ V(G) tới V(H) sao cho: nếu hai đỉnh kề
nhau trong G thì các đỉnh tương ứng của nó cũng kề nhau trong đồ thị H.
• Đường đi (walk/path): là một chuỗi luân phiên giữa đỉnh và cạnh, bắt đầu và kết thúc bởi một đỉnh. Trong đó,
mỗi đỉnh là đỉnh đầu cuối của hai cạnh đứng liền trước và liền sau trong chuỗi, các đỉnh đứng liền trước và liền
sau một cạnh là các đỉnh đầu cuối của cạnh đó. Khi có hai cạnh giống nhau trên chuỗi có thể loại bỏ bớt các cạnh
trùng nhau, sao cho không có cạnh nào của đồ thị cómặt quá một lần trên đường đi. Một đường đi được coi là
đónghay một chu trình nếu đỉnh đầu và đỉnh cuối trùng nhau, được coi là mở nếu đỉnh đầu và đỉnh cuối khác
nhau. Đường đi qua n đỉnh được ký hiệu là P
n
.
• Đường đi có hướng: là một đường đi đơn trong đó mọi cung đều theo cùng một hướng, nghĩa là mọi đỉnh trên
đó đều có bậc trong và bậc ngoài bằng 1. Trong đồ thị có hướng, đỉnh v được coi là đến được từ đỉnh u nếu có
một đường đi có hướng xuất phát từ u và kết thúc tại v. Có thể gọi đơn giản là đường đi khi ngữ cảnh rõ ràng.

• Đường đi đơn:là đường đi trong đó mỗi đỉnh chỉ được đi qua nhiều nhất một lần.
• Đường đi Euler (Eulerian path): là đường đi qua tất cả các cạnh, mỗi cạnh đúng một lần. Đồ thị ví dụ không
có đường đi Euler.
Thuật ngữ lý thuyết đồ thị
9
• Đường đi Hamilton (Hamiltonian path): là đường đi đơn qua tất cả các đỉnh trong đồ thị. Đồ thị ví dụ có
đường đi Hamilton.
G
• Gắn nhãn đồ thị (graph labelling)
Việc gán các nhãn phân biệt (thường là các số) cho các cạnh và đỉnh của đồ thị.
•• Gốc
xem Đỉnh gốc.
K
•• Kề
Hai đỉnh u và v được coi là kề nhau, kí hiệu u ↓ v, nếu có một cạnh nối chúng. Trong đồ thị ví dụ, các đỉnh 1 và 2 kề
nhau, nhưng các đỉnh 2 và 4 không kề.
•• Khoảng cách
Khoảng cách d
G
(u, v) giữa hai đỉnh (không nhất thiết phân biệt u và v trong đồ thị G là độ dài đường đi ngắn
nhất giữa chúng. Có thể bỏ chỉ số dưới G nếu không sợ hiểu nhầm. Khi u và v là một, khoảng cách giữa chúng
bằng 0. Khi giữa u và v không có đường đi, khoảng cách giữa chúng là vô cùng ∞.
• Khuyên (loop)
Cạnh có hai đầu trùng nhau (cùng một đỉnh).
•• Kích thước của đồ thị
Kích thước của một đồ thị là số cạnh của nó, nghĩa là |E(G)|.
L
•• Lá
Xem Đỉnh lá.
•• Lát cắt đỉnh

là tập các đỉnh mà khi loại bỏ chúng sẽ làm cho đồ thị mất tính liên thông.
•• Lát cắt cạnh
là tập tất cả các cạnh có một đầu thuộc tập đỉnh con S và đầu kia thuộc V(G)\S.
•• Liên thông
Nếu giữa hai điểm bất kỳ của một đồ thị đều có thể thiết lập một đường đi từ đỉnh này đến đỉnh kia, đồ thị
được coi là liên thông; nếu không, đồ thị được coi là không liên thông. Một đồ thị được coi là hoàn toàn
không liên thông nếu không có đường đi giữa hai đỉnh bất kỳ trong đồ thị. Đây chỉ là một cái tên khác để
miêu tả một đồ thị rỗng hoặc một tập độc lập.
Một đồ thị có hướng được coi là liên thông mạnh nếu từ mọi đỉnh đều đến được mọi đỉnh khác. Ngược lại, đồ
thị có hướng được coi là liên thông yếu nếu đồ thị vô hướng nền tảng của nó là đồ thị liên thông.
• Lưới (còn gọi là mạng, mạng lưới)
Trong một số tài liệu về lý thuyết đồ thị, thuật ngữ lưới (network) được coi là từ đồng nghĩa với đồ thị có
trọng số. Một lưới có thể có hướng hoặc vô hướng. Lưới có thể chứa các đỉnh (nút) đặc biệt, chẳng hạn đỉnh
phát hoặc đỉnh thu.
Thuật ngữ lý thuyết đồ thị
10
M
•• Ma trận kề
Một ma trận kích thước n×n, trong đó mỗi phần tử tại dòng i cột j cho biết số cạnh nối từ đỉnh thứ i tới đỉnh thứ
j.
N
• Nhân (kernel)
là một tập độc lập ổn định ngoài. Một đồ thị có hướng được gọi là nhân hoàn hảo (kernel perfect) nếu mọi đồ
thị con dẫn xuất đều có một nhân.
• Nhúng: (embedding)
• Phép nhúng thực hiện trên (cho kết quả là đồ thị ) là một hàm đơn ánh từ
tới sao cho mỗi cạnh trong tương ứng với một đường đi (các đường đi này đôi một không chung
cạnh) trong đồ thị .
• Một đồ thị được coi là nhúng được trên một bề mặt nếu khi vẽ đồ thị trên đó, các đỉnh và cạnh của nó có thể
được sắp xếp trên đó sao cho không có hai cạnh nào cắt nhau.

• Nút (knot)
trong một đồ thị có hướng, nút là một tập các đỉnh và cung với tính chất: mọi đỉnh trong nút đều có cung từ đó
đi ra, và mọi cung xuất phát từ các đỉnh trong nút đều có đích là các đỉnh nằm trong nút. Do đó, không thể ra
khỏi nút nếu đi theo hướng của các cung.
Trong trường hợp đồ thị là sơ đồ sử dụng tài nguyên (general resource graph), một nút là điều kiện đủ cho
deadlock.
• Nút (node)
Trong một số ngữ cảnh, một đỉnh của đồ thị cũng được gọi là một nút. Chẳng hạn, các đỉnh trong một cây có
gốc thường được gọi là nút.
P
• Phản cạnh (anti-edge)
Là một cạnh "không tồn tại".
Cho hai đỉnh và , là một phản cạnh của đồ thị nếu không phải là cạnh của .
Nghĩa là: hoặc không có cạnh nào nối hai đỉnh, hoặc chỉ có một cung từ tới nếu là đồ thị có
hướng.
• Phần bù (complement)
Phần bù của một đồ thị G là một đồ thị có cùng tập đỉnh như G nhưng lại có tập cạnh thỏa mãn điều kiện:
xy là một cạnh của khi và chỉ khi xy không phải là cạnh của G.
Thuật ngữ lý thuyết đồ thị
11
Q
•• Quan hệ liên thuộc
Quan hệ giữa cạnh và đỉnh là một trong hai đầu của cạnh đó.
R
•• Rừng
là hợp của các cây; tương đương với một đồ thị phi chu trình.
S
•• Sắc số
Sắc số χ(G) của một đồ thị G là số nhỏ nhất các màu cần thiết để tô màu đồ thị đó, nghĩa là tô màu các đỉnh
của nó sao cho hai đỉnh kề nhau có màu khác nhau.

• Siêu cạnh (hyperedge)
Là cạnh có thể có số đỉnh đầu cuối tùy ý, có thể lớn hơn 2. Khi không nói rõ, một cạnh luôn được hiểu là có
nhiều nhất 2 đỉnh.
• Siêu đồ thị (hypergraph)
Đồ thị cho phép có siêu cạnh. Khi không chỉ rõ, đồ thị không bao giờ bị hiểu nhầm là siêu đồ thị
T
•• Tập cắt
xem lát cắt đỉnh.
•• Tập láng giềng
Tập láng giềng, còn gọi là tập láng giềng (mở) của một đỉnh v, ký hiệu N
G
(v), bao gồm tất cả các đỉnh kề với
v không kể v. Nếu kể cả v, tập này được gọi là tập láng giềng đóng, ký hiệu N
G
[v]. Nếu không nói rõ, một tập
láng giềng được coi là mở. Chỉ số dưới G thường được bỏ qua nếu không gây nhầm lẫn. Trong đồ thị ví dụ,
đỉnh 1 có hai hàng xóm: các đỉnh 2 và 5. Đối với đồ thị đơn, số láng giềng của một đỉnh trùng với bậc của đỉnh
đó.
• Tập thống trị (dominating set)
Một tập thống trị của một đồ thị là một tập con của tập đỉnh, trong đó hợp của các tập láng giềng đóng của các
đỉnh trong tập con đó bao gồm tất cả các đỉnh của đồ thị.
•• Tập ổn định
Xem Độc lập.
• Tập ổn định trong cùng nghĩa với tập độc lập.
• Tập ổn định ngoài cùng nghĩa với tập thống trị.
•• Thành phần liên thông
Quan hệ liên thông trong đồ thị vô hướng là quan hệ tương đương, quan hệ này chia tập các đỉnh của đồ thị
thành các lớp tương đương, mỗi lớp được gọi là một thành phần liên thông của một đồ thị.
•• Thành phần liên thông mạnh
Thành phần liên thông mạnh của một đồ thị có hướng là một đồ thị con, trong đó từ mỗi đỉnh của nó đều có

đường đi đến mọi đỉnh khác.
•• Thống trị
Thuật ngữ lý thuyết đồ thị
12
Đỉnh v thống trị đỉnh u nếu có một cạnh từ v tới u. Một tập đỉnh V thống trị một tập đỉnh U khác nếu mọi
đỉnh trong U đều thuộc V hoặc kề với một đỉnh nào đó trong V. Kích thước của tập thống trị nhỏ nhất được gọi
là chỉ số thống trị γ(G).
Tập đỉnh S được gọi là thống trị ngoài (out-dominating) nếu mọi đỉnh ngoài S đều bị thống trị bởi một đỉnh
nào đó thuộc S; gọi là thống trị trong (in-dominating) nếu mọi đỉnh thuộc S đều bị thống trị bởi một đỉnh nào
đó không thuộc S.
•• Trọng số
là các giá trị thường được gán cho các cạnh của đồ thị. Trọng số thường là các số thực. Chúng có thể bị giới
hạn trong phạm vi số hữu tỷ hoặc số nguyên. Một số thuật toán có thể đòi hỏi các giới hạn khác đối với trọng
số. Chẳng hạn, thuật toán Dijkstra chỉ dùng được cho các trọng số dương. Trọng số của đường đi hoặc trọng
số của cây trong một đồ thị có trọng số là tổng trọng số của các cạnh được chọn. Đôi khi một cạnh không tồn
tại được gán một trọng số đặc biệt để biểu diễn giá trị vô cùng. Từ chi phí đôi khi được dùng để chỉ trọng số.
Tham khảo
• Bollobás, Béla (1998). Modern Graph Theory. New York: Springer-Verlag. ISBN 0-387-98488-7. [Nhiều chủ đề
nâng cao kèm thêm tổng quan về quá trình phát triển tai cuối mỗi chương.]
• West, Douglas B. (2001). Introduction to Graph Theory (2ed). Upper Saddle River: Prentice Hall. ISBN
0-13-014400-2. [Nhiều minh họa, tham khảo, và bài tập. Hướng dẫn hoàn chỉnh nhất về chủ đề này.]
• Eric W. Weisstein. "Graph." From MathWorld—A Wolfram Web Resource. http:/ / mathworld. wolfram. com/
Graph. html
• Zaslavsky, Thomas. Glossary of signed and gain graphs and allied areas. Electronic Journal of Combinatorics,
Dynamic Surveys in Combinatorics, # DS 8. http:/ / www. combinatorics. org/ Surveys/
Đồ thị (lý thuyết đồ thị)
Bài này chỉ viết về các định nghĩa cơ bản. Để hiểu rộng hơn, xin xem lý thuyết đồ thị. Về ý nghĩa biểu diễn
hàm số trên hệ tọa độ, xem đồ thị hàm số.
Một đồ thị vô hướng với 6 đỉnh (nút) và 7 cạnh.
Trong toán học và tin học, đồ thị là đối tượng nghiên cứu cơ bản của

lý thuyết đồ thị. Một cách không chính thức, đồ thị là một tập các đối
tượng gọi là đỉnh nối với nhau bởi các cạnh. Thông thường, đồ thị
được vẽ dưới dạng một tập các điểm (đỉnh, nút) nối với nhau bởi các
đoạn thẳng (cạnh). Tùy theo ứng dụng mà một số cạnh có thể có
hướng.
Các định nghĩa
Trong các tài liệu, các định nghĩa trong lý thuyết đồ thị được phát biểu
theo nhiều kiểu. Dưới đây là kiểu truyền thống của cuốn từ điển bách khoa này.
Đồ thị (lý thuyết đồ thị)
13
Đồ thị vô hướng
Đồ thị vô hướng hoặc đồ thị G là một cặp không có thứ tự (ordered pair)
G:=(V, E), trong đó
• V, tập các đỉnh hoặc nút,
• E, tập các cặp không thứ tự chứa các đỉnh phân biệt, được gọi là cạnh. Hai
đỉnh thuộc một cạnh được gọi là các đỉnh đầu cuối của cạnh đó.
Trong nhiều tài liệu, tập các cạnh bao gồm cả các cặp đỉnh không phân biệt,
các cạnh này được gọi là các khuyên. V (và E) thường là các tập hữu hạn, phần
lớn các kết quả nghiên cứu đã biết không đúng (hoặc khác) khi áp dụng cho đồ
thị vô hạn (infinite graph) vì nhiều luận cứ không dùng được trong trường hợp
vô hạn.
Đồ thị có hướng
Đồ thị có hướng G là một cặp có thứ tự G:=(V, A), trong đó
• V, tập các đỉnh hoặc nút,
• A, tập các cặp có thứ tự chứa các đỉnh, được gọi là các cạnh có hướng hoặc
cung. Một cạnh e = (x, y) được coi là có hướng từ x tới y; x được gọi là
điểm đầu/gốc và y được gọi là điểm cuối/ngọn của cạnh.
Đồ thị đơn và Đa đồ thị
Đồ thị đơn là đồ thị mà không có khuyên và không có cạnh song song. Đa đồ
thị là đồ thị mà không thỏa đồ thị đơn.Đa đồ thị có hướng là một đồ thị có

hướng, trong đó, nếu x và y là hai đỉnh thì đồ thị được phép có cả hai cung (x, y) và (y, x).Đồ thị đơn có hướng
(hoặc Đơn đồ thị có hướng) là một đồ thị có hướng, trong đó, nếu x và y là hai đỉnh thì đồ thị chỉ được phép có tối
đa một trong hai cung (x, y) hoặc (y, x).
Quiver thường được coi là một đồ thị có hướng. Nhưng trong thực hành, nó là một đồ thị có hướng với các không
gian vector (vector space) gắn với các đỉnh và các biến đổi tuyến tính gắn với các cung.
Đồ thị hỗn hợp
Đồ thị hỗn hợp G là một bộ ba có thứ tự G:= (V,E,A) với V, E và A được định nghĩa như trên.
Các định nghĩa khác
Như đã được định nghĩa ở trên, các cạnh của đồ thị vô hướng có hai đầu là hai đỉnh phân biệt; E và A là các tập hợp
(với các phần tử phân biệt). Nhiều ứng dụng cần các khái niệm rộng hơn, và các thuật ngữ cũng khác nhau. Một
khuyên (loop) là một cạnh (vô hướng hoặc có hướng) nối từ một đỉnh về chính nó; Kiểu cạnh này có được chấp nhận
hay không là tùy ở ứng dụng. Trong ngữ cảnh này, một cạnh nối hai đỉnh phân biệt được gọi là một liên kết (link).
Đôi khi, E và A được phép là các đa tập hợp (multiset), khi đó giữa hai đỉnh có thể có nhiều hơn một cạnh. Có thể
cho phép giữa hai đỉnh có nhiều cạnh bằng cách cho E là một tập hợp độc lập với V, và xác định các điểm đầu của
mỗi cạnh bằng một quan hệ liên thuộc (incidence relation) giữa V và E. Đối với đồ thị có hướng, ta áp dụng tương tự
cho tập hợp cạnh có hướng A, tuy nhiên, phải có hai quan hệ liên thuộc, một cho đỉnh đầu và một cho đỉnh cuối của
mỗi cung. Trong các sách, tùy theo ý của tác giả hoặc theo yêu cầu của chủ đề cụ thể mà từ "đồ thị" có thể hàm ý
cho phép hoặc không cho phép khuyên hay đa cạnh. Nếu đồ thị không cho phép đa cạnh (và không cho phép khuyên
nếu là đồ thị có hướng), đồ thị được gọi là đồ thị đơn. Mặt khác, nếu cho phép đa cạnh (và đôi khi cả khuyên), đồ
thị được gọi là đa đồ thị. Đôi khi, từ giả đồ thị (pseudograph) còn được dùng để hàm ý cả đa cạnh và khuyên đều
Đồ thị (lý thuyết đồ thị)
14
được phép. Trong các trường hợp đặc biệt, thậm chí còn cần đến các cạnh chỉ có một đỉnh, được gọi là nửa cạnh
(halfedge), hoặc không có đỉnh nào, (cạnh rời). Xem ví dụ tại signed graph.
Các định nghĩa khác
Xem thêm thuật ngữ lý thuyết đồ thị.
Hai cạnh của một đồ thị được coi là kề nhau nếu chúng có chung một đỉnh. Tương tự, hai đỉnh được coi là kề nhau
nếu chúng được nối với nhau bởi một cạnh. Một cạnh và đỉnh nằm trên cạnh đó được coi là liên thuộc với nhau.
Đồ thị chỉ có một đỉnh và không có cạnh nào được gọi là đồ thị tầm thường. Đồ thị không có cả đỉnh lẫn cạnh được
gọi là đồ thị rỗng

Trong một đồ thị có trọng số, mỗi cạnh được gắn với một giá trị nào đó, được gọi là trọng số, độ dài, chi phí, hoặc
các tên khác tùy theo ứng dụng; các đồ thị như vậy được dùng trong nhiều ngữ cảnh, chẳng hạn trong các bài toán tối
ưu hóa đường đi như bài toán người bán hàng.
Ví dụ
Hình bên là một biểu diễn đồ họa của đồ thị sau
• V:={1,2,3,4,5,6}
• E:=Bản mẫu:1,2,{1,5},{2,3},{2,5},{3,4},{4,5},Bản mẫu:4,6
Đôi khi, thông tin "đỉnh 1 được nối với đỉnh 2" được ký hiệu là 1 ~ 2.
• Trong lý thuyết phạm trù (category theory) một phạm trù có thể được coi là một đa đồ thị có hướng với các đối
tượng là các đỉnh và các morphism là các cạnh có hướng. Khi đó, các hàm tử (functor) giữa các phạm trù là một
số (nhưng không nhất thiết tất cả) digraph morphism.
• Trong Khoa học máy tính đồ thị có hướng được dùng để biểu diễn các ô-tô-mát hữu hạn (finite state machine) và
nhiều cấu trúc rời rạc khác.
• Một quan hệ đôi (binary relation) R trên tập X là một đồ thị đơn có hướng. Hai đỉnh x,y của X được nối với nhau
bởi một cung nếu xRy.
Đồ thị (lý thuyết đồ thị)
15
Các dạng đồ thị quan trọng
• Trong một đồ thị đầy đủ mỗi cặp đỉnh đều được nối với nhau bằng một cạnh, nghĩa là đồ thị chứa tất cả các cạnh
có thể.
• Một đồ thị phẳng có thể được vẽ trên mặt phẳng sao cho không có hai cạnh nào cắt nhau.
• Cây là một đồ thị liên thông không có chu trình.
• Đồ thị hai phía (Bipartite graph)
• Đồ thị hoàn hảo (Perfect graph)
•• Cograph
•• Đồ thị Cayley
• Đồ thị Petersen và các suy rộng của nó
Các thao tác trên đồ thị
Có một số phép toán tạo đồ thị mới từ các đồ thị cũ.
Các phép toán một ngôi

• Đồ thị đường (Line graph) (tạo đồ thị mới bằng cách chuyển cạnh thành đỉnh và tạo các cạnh tương ứng)
• Đồ thị đối ngẫu (Dual graph) (tạo đồ thị mới từ một đồ thị phẳng bằng cách tạo một đỉnh cho mỗi miền mặt phẳng
và các cạnh được nối giữa hai đỉnh tương ứng với hai miền kề nhau)
• Đồ thị bù (Complement graph)
Các phép toán hai ngôi
• Tích Đề-các của đồ thị (Cartesian product of graphs)
• Tích Ten-xơ của đồ thị (Tensor product of graphs)
Các suy rộng
Trong siêu đồ thị (hypergraph), một cạnh có thể nối nhiều hơn hai đỉnh.
Một đồ thị vô hướng có thể được coi là một phức đơn hình (simplicial complex) bao gồm các đơn hình 1 chiều (các
cạnh) và các đơn hình 0 chiều (các đỉnh). Như vậy, đa hình là suy rộng của đồ thị do chúng cho phép các đơn hình
nhiều chiều hơn.
Mỗi đồ thị đều cho một matroid, nhưng nói chung, không thể tạo lại đồ thị từ matroid của nó, do đó, matroid không
phải là suy rộng của đồ thị.
Trong lý thuyết mô hình (model theory), một đồ thị chỉ là một cấu trúc. Nhưng khi đó, không có giới hạn về số cạnh:
nó có thể là một số đếm bất kỳ.
Ma trận kề
16
Ma trận kề
Trong Toán học và Khoa học máy tính, ma trận kề (tiếng Anh: adjacency matrix) cho một đồ thị hữu hạn G gồm n
đỉnh là một ma trận n × n, trong đó, các ô không nằm trên đường chéo chính a
ij
là số cạnh nối hai đỉnh i và j, còn ô
nằm trên đường chéo chính a
ii
là hai lần số khuyên tại đỉnh i, hoặc chỉ là số khuyên tại đỉnh đó (bài này chọn cách
thứ nhất, các đồ thị có hướng luôn theo cách thứ hai). Mỗi đồ thị có duy nhất một ma trận kề, các đồ thị khác nhau có
các ma trận kề khác nhau. Trong trường hợp đặc biệt của đồ thị đơn hữu hạn, ma trận kề là một ma trận (0,1) với các
giá trị 0 nằm trên đường chéo chính. Nếu đồ thị là vô hướng, ma trận kề là ma trận đối xứng.
Đối với đồ thị thưa, nghĩa là đồ thị có ít cạnh, người ta thường chọn dùng danh sách kề hơn do nó chiếm ít bộ nhớ

hơn. Ma trận liên thuộc là một biểu diễn ma trận khác cho đồ thị.
Quan hệ giữa một đồ thị và ma trận kề của nó được nghiên cứu trong lý thuyết phổ đồ thị (spectral graph theory)
[1]
.
Khái niệm
•• Xét đồ thị G=(X, U) (có hướng hay vô hướng)
• Giả sử tập X gồm n đỉnh và được sắp thứ tự X={ }, tập U gồm n cạnh và được sắp thứ tự U={
}
Quy tắc
[2]
Ma trận kề của đồ thị G, ký hiệu B(G), là một ma trận nhị phân cấp n x n được định nghĩa như sau: B=( ) với:
• B=( = 1 nếu có cạnh nối tới
• B=( = 0 nếu không có cạnh nối tới
Nếu G là đồ thị vô hướng, ma trận liên thuộc của đồ thị G, ký hiệu A(G), là ma trận nhị phân cấp nxm được định
nghĩa như sau: A=( )
• A=( ) = 1 nếu có cạnh nối tới
• A=( ) = 0 nếu không có cạnh nối tới
Ma trận kề
17
Biểu diễn
[3]
Đồ thị vô hướng
Cho đồ thị G vô hướng (7 đỉnh):
Đồ thị G
•• Gọi A là ma trận kề biểu diễn đồ thị G.
•• Từ đồ thị G, ta thấy:
• 1 và 2 có cạnh nối =>
• 1 và 4 có cạnh nối =>
• 1 và 6 có cạnh nối =>
• 2 và 3 có cạnh nối =>

• 2 và 6 có cạnh nối =>
• 3 và 4 có cạnh nối =>
• 3 và 5 có cạnh nối =>
• 3 và 7 có cạnh nối =>
• 4 và 6 có cạnh nối =>
• 4 và 5 có cạnh nối =>
• 5 và 6 có cạnh nối =>
• Còn lại các cặp đỉnh không có cạnh nối với nhau => = = 0
•• Kết quả sau khi biểu diễn đồ thị G sang ma trận kề:
Ma trận kề
18
Đồ thị G
• Trong đó dòng và cột màu vàng là danh sách các đỉnh của đồ thị vô hướng G.
Biểu diễn đồ thị có hướng
Cho đồ thị G có hướng (4 đỉnh):
Đồ thị G
•• Gọi A là ma trận kề biểu diễn đồ thị G.
•• Từ đồ thị G, ta thấy:
• 1 và 2 có cạnh nối và 1 đi vào 2 =>
Ma trận kề
19
• 2 và 3 có cạnh nối và 2 đi vào 3 =>
• 3 và 1 có cạnh nối và 3 đi vào 1 =>
• 4 và 1 có cạnh nối và 4 đi vào 1 =>
• Còn lại các cặp đỉnh không có cạnh nối thì
•• Kết quả sau khi biểu diễn đồ thị G sang ma trận kề:
Đồ thị G
Tính chất
•• Rõ ràng ma trận kề của đồ thị vô hướng là ma trận đối xứng, tức là:
Ngược lại, mỗi (0,1)-ma trận đối xứng cấp n sẽ tương ứng, chính xác đến cách đánh số đỉnh (còn nói là: chính xác

đến đẳng cấu), với một đơn đồ thị vô hướng n đỉnh.
•• Ma trận kề của đồ thị có hướng không phải là ma trận đối xứng.
• Đối với đồ thị vô hướng, tổng các phần từ trên dòng i (cột j) của ma trận kề chính bằng bậc của đỉnh i (đỉnh j).
• Đối với đồ thị có hướng, tổng các phần tử trên dòng i (cột i) sẽ là bán bậc ra (bán bậc vào) của đỉnh i của đồ thị.
Nhận xét
•• Ở cách biểu diễn ma trận này, ma trận sẽ không biểu diễn được:
•• Đồ thị có cạnh song song
•• Ưu điểm lớn nhất của phương pháp biểu diễn đồ thị bằng ma trận kề là để trả lời câu hỏi: Hai đỉnh u,v có kề nhau
trên đồ thị hay không, chúng ta chỉ phải thực hiện một phép so sánh.
•• Nhược điểm lớn nhất của phương pháp này là: không phụ thuộc vào số cạnh của đồ thị, ta luôn phải sử dụng n^2
đơn vị bộ nhớ để lưu trữ ma trận kề của nó.
Ma trận kề
20
Các tính chất
Ma trận kề của một đồ thị vô hướng có tính đối xứng, và do đó có một tập đầy đủ các giá trị riêng (eigenvalue) và cơ
sở vector riêng (eigenvector) trực giao. Tập các giá trị riêng của đồ thị là phổ của đồ thị.
Giả sử cho trước hai đồ thị có hướng hoặc vô hướng G
1
và G
2
với các ma trận kề A
1
và A
2
. G
1
và G
2
đẳng cấu
(isomorphic) khi và chỉ khi tồn tại một ma trận hoán vị (permutation matrix) P sao cho

PA
1
P
Ì−1
= A
2
.
Cụ thể là A
1
và A
2
là các ma trận đồng dạng và do đó có cùng đa thức cực tiểu (minimal polynomial), đa thức đặc
trưng (characteristic polynomial), các giá trị riêng, định thức (determinant) và vết của ma trận (trace). Do đó chúng
có thể được dùng như các bất biến đẳng cấu của đồ thị. Cho trước hai ma trận kề, có thể xây dựng lại ma trận hoán vị
đã được sử dụng: xem chi tiết tại Ma trận hoán vị.
Tuy nhiên, cần lưu ý rằng điều ngược lại không đúng: hai đồ thị có thể có bộ giá trị riêng giống nhau nhưng chúng
không đẳng cấu. Phép nhân với ma trận hoán vị có thể được coi là việc gắn nhãn mới cho các cạnh.
Nếu A là ma trận kề của đồ thị có hướng hoặc vô hướng G, thì ma trận A
n
(ma trận tích của n lần A) có một ý nghĩa
thú vị: ô tại hàng i và cột j cho biết số đường đi (có hướng hoặc vô hướng) có độ dài n từ đỉnh i tới đỉnh j.
Ma trận I − A (trong đó I ký hiệu ma trận đơn vị n×n) là nghịch đảo được khi và chỉ khi đồ thị G không có chu trình
có hướng. Khi đó, ma trận nghịch đảo (I − A)
−1
có ý nghĩa sau: ô tại hàng i và cột j cho biết số đường đi có hướng từ
đỉnh i tới đỉnh j (giá trị này luôn hữu hạn nếu đồ thị không có chu trình có hướng). Điều này có thể được giải thích
bằng cấp số nhân (geometric series) của các ma trận:
(I − A)
−1
= I + A + A

2
+ A
3
+
tương ứng với thực tế rằng số đường đi từ i tới j bằng số đường đi độ dài 0 cộng với số đường đi độ dài 1 cộng với số
đường đi độ dài 2 v.v Đường chéo chính của mọi ma trận kề tương ứng của đồ thị không có khuyên gồm toàn các ô
chứa giá trị 0.
Ma trận kề của đồ thị phân đôi
Một ma trận kề A của một đồ thị phân đôi gồm r và s đỉnh có dạng:
Trong đó B là một ma trận r × s và O là một ma trận toàn-số-0. Rõ ràng là ma trận B là đại diện duy nhất cho đồ thị
phân đôi. Ta có G = (U, V, E) là một đồ thị phân đôi với các phần và . Ma trận
phân đôi là ma trận B r × s 0-1 trong đó khi và chỉ khi .
Nếu G là một đa đồ thị phân đôi hoặc đồ thị trọng số phân đôi thì các thành phần chứa giá trị tương ứng là bậc
của các đỉnh hoặc trọng số của cạnh
Các biến thể
Ma trận kề (0,−1,1) của một đồ thị đơn có a
ii
= 0 và a
ij
= −1 nếu ij là một cạnh và bằng 1 nếu không phải là cạnh.
Đồ thị này được dùng trong nghiên cứu các đồ thị chính quy mạnh (strongly regular graph) và các two-graph (đồ thị
đôi???).
Các thỏa hiệp trong vai trò cấu trúc dữ liệu
Khi được sử dụng với vai trò cấu trúc dữ liệu, đối thủ chính của ma trận kề là danh sách kề. Do mỗi ô trong ma trận
kề chỉ đòi hỏi một bit, nên chúng có thể được biểu diễn bằng một cách rất gọn, chỉ chiếm n
2
/8 byte bộ nhớ liên tục,
trong đó n là số đỉnh. Ngoài việc tiết kiệm bộ nhớ, lưu trữ gọn gàng này còn khuyến khích locality of reference (tính
địa phương của các truy nhập đến bộ nhớ).
Ma trận kề

21
Mặt khác, khi dùng cho đồ thị thưa, danh sách kề lại thắng thế, do chúng không lưu trữ các cạnh không tồn tại. Sử
dụng cài đặt danh sách liên kết đơn giản trên một máy tính 32-bit, một danh sách kề cho một đồ thị vô hướng cần
khoảng 16e byte, trong đó e là số cạnh của đồ thị.
Lưu ý rằng một đồ thị có thể có nhiều nhất n
2
cạnh (kể cả các khuyên). Giả sử d = e/n
2
ký hiệu mật độ của đồ thị. Ta
có: 16e > n
2
/8, có nghĩa là danh sách kề chiếm nhiều không gian hơn khi d > 1/128. Do đó, chỉ nên dùng danh sách
kề với đồ thị thưa.
Bên cạnh thỏa hiệp về không gian bộ nhớ, các cấu trúc dữ liệu khác nhau còn tạo thuận lợi cho các thao tác dữ liệu
khác nhau. Với một danh sách kề, ta dễ dàng tìm mọi đỉnh kề với một đỉnh cho trước; ta chỉ cần đọc danh sách kề
của đỉnh đó. Với một ma trận kề, ta phải duyệt toàn bộ một hàng, việc đó cần thời gian O(n). Còn nếu ta lại muốn
biết giữa hai đỉnh cho trước có cạnh nối hay không, điều này có thể được xác định ngay lập tức với một ma trận kề,
trong khi đó với một danh sách kề, việc này đòi hỏi thời gian tỷ lệ thuận với bậc nhỏ nhất của các đỉnh trong đồ thị.
Tham khảo
[1][1] CHUNG, Fan RK. Spectral Graph Teory. Amer Mathematical Society, 1997.
[2] Trần Đan Thư - Dương Anh Đức, Lý Thuyết Đồ Thị, Đại Học Khoa Học Tự Nhiên - DHQGTP.HCM, thánh 9 năm 2008
[3] Chartrand, G.,http:/ / www. amazon. com/ exec/ obidos/ ASIN/ 0486247759/ ref=nosim/ weisstein-20/ [Introductory Graph Theory], New
York: Dover, p. 218, 1985.
Tài liệu
• Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein. Introduction to Algorithms,
Second Edition. MIT Press and McGraw-Hill, 2001. ISBN 0262032937. Section 22.1: Representations of graphs,
pp.Ì527–531.
Các chủ đề chính trong toán học
Nền tảng toán học | Đại số | Giải tích | Hình học | Lý thuyết số | Toán học rời rạc | Toán học ứng dụng
|

Toán học giải trí | Toán học tô pô | Xác suất thống kê
Danh sách kề
22
Danh sách kề
Trong lý thuyết đồ thị, danh sách kề (tiếng Anh: adjacency list) là danh sách biểu diễn tất cả các cạnh hoặc cung
trong một đồ thị.
Nếu đồ thị vô hướng, mỗi phần tử của danh sách là một cặp hai đỉnh là hai đầu của cạnh tương ứng. Nếu đồ thị có
hướng, mỗi phần tử là một cặp có thứ tự gồm hai đỉnh là đỉnh đầu và đỉnh cuối của cung tương ứng.
Ví dụ, danh sách {a,b},{a,c},{b,c} mô tả đồ thị vô hướng trong hình dưới đây, trong đó ba đỉnh a, b, c được nối với
nhau.
Thông thường, danh sách kề không coi trọng thứ tự giữa các cạnh.
Trong Khoa học máy tính, danh sách kề là một cấu trúc dữ liệu gắn bó chặt chẽ với việc biểu diễn đồ thị. Trong một
biểu diễn danh sách kề, với mỗi đỉnh trong đồ thị, ta lưu trữ tất cả các đỉnh khác có cạnh nối với đỉnh đó - danh sách
kề của đỉnh. Ví dụ, đồ thị trong hình vẽ có biểu diễn danh sách kề như sau:
a kề với b,c
b kề với a,c
c kề với a,b
Các thỏa hiệp
Đối thủ chính của danh sách kề là ma trận kề. Với một đồ thị có ma trận kề thưa, biểu diễn danh sách kề của nó
chiếm ít không gian hơn, do nó không sử dụng phần không gian nào để lưu trữ các cạnh không tồn tại. Sử dụng cài
đặt danh sách liên kết đơn giản trên một máy tính 32-bit, một danh sách kề cho một đồ thị vô hướng cần khoảng 16e
byte, trong đó e là số cạnh của đồ thị.
Mặt khác, do mỗi ô trong ma trận kề chỉ đòi hỏi một bit, chúng có thể được biểu diễn rất gọn, chỉ chiếm n
2
/8 byte
không gian bộ nhớ liên tục, trong đó n là số đỉnh. Ngoài việc tiết kiệm bộ nhớ, lưu trữ gọn gàng này còn khuyến
khích locality of reference (tính địa phương của các truy nhập đến bộ nhớ).
Lưu ý rằng một đồ thị có thể có nhiều nhất n
2
cạnh (kể cả các khuyên). Giả sử d = e/n

2
ký hiệu mật độ của đồ thị. Ta
có: 16e > n
2
/8, có nghĩa là danh sách kề chiếm nhiều không gian hơn khi d > 1/128. Do đó, chỉ nên dùng danh sách
kề với đồ thị thưa.
Bên cạnh thỏa hiệp về không gian bộ nhớ, các cấu trúc dữ liệu khác nhau còn tạo thuận lợi cho các thao tác dữ liệu
khác nhau. Với một danh sách kề, ta dễ dàng tìm mọi đỉnh kề với một đỉnh cho trước; ta chỉ cần đọc danh sách kề
của đỉnh đó. Với một ma trận kề, ta phải duyệt toàn bộ một hàng, việc đó cần thời gian O(n). Còn nếu ta lại muốn
biết giữa hai đỉnh cho trước có cạnh nối hay không, điều này có thể được xác định ngay lập tức với một ma trận kề,
trong khi đó với một danh sách kề, việc này đòi hỏi thời gian tỷ lệ thuận với bậc nhỏ nhất của các đỉnh trong đồ thị.

×