You are on page 1of 15

TRƯỜNG ĐẠI HỌC NGOẠI NGỮ - TIN HỌC TP.

HỒ CHÍ MINH
HO CHI MINH CITY UNIVERSITY OF FOREIGN LANGUAGES - INFORMATION TECHNOLOGY

LÝ THUYẾT ĐỒ THỊ
Đinh Minh Hòa

www.huflit.edu.vn
02
Biểu diễn đồ thị trên máy tính
1. Biểu diễn đồ thị bằng ma trận
2. Biểu diễn đồ thị bằng danh sách kề
3. Biểu diễn đồ thị bằng danh sách cạnh
Chương 02

Tại sao chúng ta cần biểu diễn đồ thị trên máy tính?
Máy tính không thể hiểu được đồ thị thông qua
hình ảnh.
Mục tiêu chính của các phương pháp:
• Biểu diễn được các đỉnh của đồ thị
• Biểu diễn các cạnh của đồ thị, thông qua các
cạnh mô tả:
• Các đỉnh kề với nhau (cạnh nào nối với cạnh
nào như thế nào?)
• Trọng số cạnh [nếu có]
3
Chương 02

2.1. Biểu diễn đồ thị bằng ma trận

Trong toán học, ma trận (matrix) là một mảng


chữ nhật, hoặc hình vuông (được gọi là ma trận
vuông - số dòng bằng số cột) – các số, ký hiệu,
hoặc biểu thức, sắp xếp theo hàng và cột – mà
mỗi ma trận tuân theo những quy tắc định trước.
Từng giá trị trong ma trận được gọi là các phần tử

4
Chương 02

Ma trận kề

5
Chương 02

Ma trận kề
• Cho đồ thị 𝐺 = (𝑉, 𝐸) có 𝑛 đỉnh và 𝑚 cạnh.
• Ma trận kề (ma trận kế cận - adjacency matrix) của đồ thị 𝐺 là một mảng 2
chiều 𝑣[𝑛, 𝑛], trong đó 𝑣[𝑖, 𝑗] cho biết 𝐺 có chứa cạnh (𝑖, 𝑗) hay không:

1 𝑛ế𝑢 𝑖, 𝑗 ∈ 𝐸
𝑣 𝑖, 𝑗 = ቊ
0 𝑛ế𝑢 𝑖, 𝑗 ∉ 𝐸

6
Chương 02

Ma trận kề
1. Một vài nhận xét về ma trận kề?
2. Có thể sử dụng ma trận kề để biểu diễn đồ thị có hướng không?
3. Nếu sử dụng ma trận kề để biểu diễn đồ thị có trọng số, thì cần điều chỉnh
như thế nào?
4. Nhược điểm của ma trận kề, ma trận trọng số?

7
Chương 02

2.2. Biểu diễn đồ thị bằng danh sách kề

8
Chương 02
Danh sách kề
Trong biểu diễn danh sách kề (Adjacency list) của đồ thị 𝐺 = (𝑉, 𝐸), mỗi đỉnh
𝑣 của đồ thị chúng ta sẽ sử dụng danh sách để lưu trữ các đỉnh kề với 𝑣.

Câu hỏi:
1. Chúng ta sẽ sử dụng CTDL nào (trong C#) để lưu trữ danh sách các đỉnh kề
với đỉnh 𝑣?
2. CTDL mô tả ở slide trước có ưu, nhược điểm gì?

9
Chương 02
Danh sách kề

10
Chương 02

2.3. Biểu diễn đồ thị bằng danh sách cạnh


• Cho đồ thị 𝐺 = (𝑉, 𝐸). Danh sách cạnh (edge list) là một danh sách chứa tất
cả các cạnh của đồ thị theo một trật tự nhất định.
• Lưu ý: Trong đồ thị vô hướng, các cạnh 𝑒 = (𝑢, 𝑣) và 𝑒 = (𝑣, 𝑢) chỉ nên đề
cập 1 lần

11
Chương 02

Danh sách cạnh


• Cho đồ thị 𝐺 ở hình bên, chúng ta
có danh sách cạnh:
(1, 2)
(1, 4)
(2, 3)
(3, 4)
(4, 5)
• Sử dụng CTDL nào để lưu trữ danh
sách cạnh trên?
12
Chương 02

A. Các vấn đề liên quan đến lập trình (ngôn ngữ C#)
1. Các CTDL cao cấp trong C#
• Mảng 2 chiều
• List
• LinkedList
• Tuple
2. Lập trình hướng đối tượng - OOP
3. Đọc ghi File trong C#

13
Chương 02
B. Bài tập

Cho đồ thị G như hình bên, hãy biểu diễn đồ


thị bằng các phương thức:
1. Ma trận kề
2. Danh sách kề
3. Danh sách cạnh

14
Ôn tập

15

You might also like