TRƯỜNG CAO ĐẲNG NGHỀ CNTT iSPACE Website: http://www.ispace.edu.vn
BIỂU DIỄN ĐỒ THỊ VÀ CÁC THUẬT TOÁN TÌM KIẾM
MÔN HỌC: TOÁN ỨNG DỤNG
Bài 1: CƠ SỞ LOGIC
Bài 2: BÀI TOÁN ĐẾM VÀ BÀI TOÁN TỒN TẠI
Bài 3: LÝ THUYẾT ĐỒ THỊ
Bài 4: BIỂU DIỄN ĐỒ THỊ VÀ CÁC THUẬT TOÁN TÌM
KIẾM
Bài 5: CÂY VÀ CÁC ỨNG DỤNG
TRƯỜNG CAO ĐẲNG NGHỀ CNTT iSPACE Website: http://www.ispace.edu.vn
BIỂU DIỄN ĐỒ THỊ VÀ CÁC THUẬT TOÁN TÌM KIẾM
Bài 4: BIỂU DIỄN ĐỒ THỊ
VÀ CÁC THUẬT TOÁN TÌM KIẾM
1. BIỂU DIỄN ĐỒ THỊ
1.1 Danh sách liền kề
1.2 Ma trận kề
1.3 Ma trận trọng số
1.4 Ma trận liên thuộc
2. BÀI TOÁN ĐƯỜNG ĐI NGẮN NHẤT
2.1 Giới thiệu bài toán
2.2 Thuật toán Dijkstra
2.3 Thuật toán Floyd
3. CÁC THUẬT TOÁN TÌM KIẾM
3.1 Giới thiệu
3.2 Duyệt đồ thị theo chiều sâu
3.3 Duyệt đồ thị theo chiều rộng
1. BIỂU DIỄN ĐỒ THỊ
1.1 Danh sách liền kề
1.2 Ma trận kề
6
3,2
1,3,5
1,2,4
3,5,6
2,4,6
4,5
TRƯỜNG CAO ĐẲNG NGHỀ CNTT iSPACE Website: http://www.ispace.edu.vn
BIỂU DIỄN ĐỒ THỊ VÀ CÁC THUẬT TOÁN TÌM KIẾM
1. Biểu diễn đồ thị
1.1 Danh sách liền kề
Ví dụ: Danh sách liền kề của đồ thị có hướng G1
Đỉnh đầu Đỉnh cuối
1
2
3
4
5
6
2,3
2
3
4,6
5
TRƯỜNG CAO ĐẲNG NGHỀ CNTT iSPACE Website: http://www.ispace.edu.vn
BIỂU DIỄN ĐỒ THỊ VÀ CÁC THUẬT TOÁN TÌM KIẾM
1. Biểu diễn đồ thị
1.2 Ma trận liền kề
ja
ij
=
TRƯỜNG CAO ĐẲNG NGHỀ CNTT iSPACE Website: http://www.ispace.edu.vn
BIỂU DIỄN ĐỒ THỊ VÀ CÁC THUẬT TOÁN TÌM KIẾM
1. Biểu diễn đồ thị
1.2 Ma trận liền kề
Ví dụ: Ma trận liền kề của đơn đồ thị vô hướng G
0 1 1 0 1 0
1 0 1 1 0 0
1 1 0 0 1 0
0 1 0 0 1 1
1 0 1 1 0 1
0 0 0 1 1 0
1 2 3 4 5 6
1
2
3
4
5
6
1
3
6
4
a
ij
= k - tổng số cạnh nối hai đỉnh
TRƯỜNG CAO ĐẲNG NGHỀ CNTT iSPACE Website: http://www.ispace.edu.vn
BIỂU DIỄN ĐỒ THỊ VÀ CÁC THUẬT TOÁN TÌM KIẾM
1. Biểu diễn đồ thị
1.2 Ma trận liền kề
Ví dụ: Ma trận liền kề của đơn đồ thị có hướng G*
1
2
5
4
3
0 1 1 0 0
0 0 0 1 1
0 0 0 1 0
0 0 0 0 0
1 0 0 0 0
1 2 3 4 5
1
2
3
4
5
Ma trận liền kề của đơn đồ thị có hướng G không có dòng, cột đối xứng
TRƯỜNG CAO ĐẲNG NGHỀ CNTT iSPACE Website: http://www.ispace.edu.vn
BIỂU DIỄN ĐỒ THỊ VÀ CÁC THUẬT TOÁN TÌM KIẾM
v4
3
7
3
9
5
86
6
TRƯỜNG CAO ĐẲNG NGHỀ CNTT iSPACE Website: http://www.ispace.edu.vn
BIỂU DIỄN ĐỒ THỊ VÀ CÁC THUẬT TOÁN TÌM KIẾM
1. Biểu diễn đồ thị
1.2 Ma trận trọng số
- Mỗi đường đi m(u,v) từ đỉnh u đến đỉnh v, có trọng số
bằng tổng trọng số các cạnh mà nó đi qua.
- Khoảng cách d(u,v) giữa hai đỉnh u và v là đường đi có
trọng số nhỏ nhất trong các đường đi từ u đến v.
d(u,v)=min(m(u,v))
TRƯỜNG CAO ĐẲNG NGHỀ CNTT iSPACE Website: http://www.ispace.edu.vn
BIỂU DIỄN ĐỒ THỊ VÀ CÁC THUẬT TOÁN TÌM KIẾM
1. Biểu diễn đồ thị
1.2 Ma trận trọng số
Ma trận trọng số D= d(ij)
, xác định như sau:
0, khi đỉnh trùng
w(i,j), trọng số của cạnh nối giữa hai đỉnh
v3
v4
3
7
3
9
5
86
6
TRƯỜNG CAO ĐẲNG NGHỀ CNTT iSPACE Website: http://www.ispace.edu.vn
BIỂU DIỄN ĐỒ THỊ VÀ CÁC THUẬT TOÁN TÌM KIẾM
1. Biểu diễn đồ thị
1.2 Ma trận trọng số
Ví dụ:
Lập ma trận
trọng số
biểu diễn
đồ thị
có hướng G
TRƯỜNG CAO ĐẲNG NGHỀ CNTT iSPACE Website: http://www.ispace.edu.vn
BIỂU DIỄN ĐỒ THỊ VÀ CÁC THUẬT TOÁN TÌM KIẾM
1. Biểu diễn đồ thị
1.2 Ma trận trọng số
Ví dụ:
0 5 31 40
0 27 73
26 0 8 49 25 38
0 16
Ma trận M= (m
ij
), xác định như sau:
1 nếu cạnh e
j
nối với đỉnh v
i
0 nếu cạnh e
j
không nối với đỉnh v
im
ij
=
TRƯỜNG CAO ĐẲNG NGHỀ CNTT iSPACE Website: http://www.ispace.edu.vn
BIỂU DIỄN ĐỒ THỊ VÀ CÁC THUẬT TOÁN TÌM KIẾM
1. Biểu diễn đồ thị
1.3 Ma trận liên thuộc
Ví dụ: Xây dựng ma trận liên thuộc cho đồ thị G dưới đây
e1 e2 e3 e4 e5 e6
v1
v2
v3
v4
v5
đề xuất vào năm 1959.
Thuật toán thực hiện theo cách gán nhãn tại mỗi đỉnh.
Thuật ngữ:
w(x,y) : trọng số dương của cạnh (x,y);
w(x,y) là ∞ (vô cùng lớn) nếu hai đỉnh không kề nhau.
d(v) : độ dài đường đi từ đỉnh xuất phát tới đỉnh v.
p(v) : đỉnh đứng ngay trước đỉnh v trên đường đi từ đỉnh
xuất phát đến đỉnh v.
Nhãn của đỉnh v : gồm cặp (d(v), p(v))
T : Tập các nút mà đường đi ngắn nhất đã được xác định.
2. Bài toán đường đi ngắn nhất
TRƯỜNG CAO ĐẲNG NGHỀ CNTT iSPACE Website: http://www.ispace.edu.vn
BIỂU DIỄN ĐỒ THỊ VÀ CÁC THUẬT TOÁN TÌM KIẾM
2.2 Thuật toán Dijkstra
Gán T = ø; p(v) = NULL với mọi đỉnh v
d(a)=0; /* a là đỉnh xuất phát
Với mỗi đỉnh v còn lại thì d(v) = ∞;
Repeat
u =(u∉T | d(u) là bé nhất);
T = T {u};∪
for ((v là đỉnh kề của u) và v
∉
T)
if d(v) > d(u) + w(u,v) then
d(v) = d(u) + w(u,v)
p(v) = u
Until (T=V)
2. Bài toán đường đi ngắn nhất
TRƯỜNG CAO ĐẲNG NGHỀ CNTT iSPACE Website: http://www.ispace.edu.vn
3
10
D
B
C E
A
Z
6
2
1
2
8
1
5
3
10
D
B
C E
A
Z
6
2
1
2
8
(0,-)
(∞,-) (∞,-)
(∞,-) (∞,-)
(∞,-)
1
2
8
C
B
(0,-)*
(1,a)*
(2,a)
(6,b)
(∞,-)
(∞,-)
1
5
3
10
D
E
A
Z
6
2
1
2
8
B
C
(0,-)*
(1,a)*
(2,a)*
(6,b)