Bài Tập
Tìm đường đi ngắn nhất từ đỉnh S đến đỉnh Z bằng thuật toán Dijkstra
13
S
4
2
4
9
1
7
3
6
Z
4
2
2
9
3
Bảng Kết Quả
k
Đỉnh S
Đỉnh 1
Đỉnh 2
Đỉnh 3
Đỉnh 4
Đỉnh Z
Đỉnh 3
(∞ , S)
Đỉnh 4
(∞ , S)
Đỉnh Z
(∞ , S)
k là số thứ tự, bắt đầu từ 0
Mỗi đỉnh là tiêu đề mỗi cột, thứ tự không quan trọng.
Bảng Kết Quả
k
0
Đỉnh S
(0, S)*
Đỉnh 1
(∞ , S)
Đỉnh 2
(∞ , S)
Ở bước khởi tạo, ứng với k = 0,
Đỉnh xuất phát có độ dài đường đi từ đỉnh S đến S là 0, nên ta viết (0, S). Đỉnh 1 có độ dài đường đi ngắn
nhất từ đỉnh 5 đến 1 là ∞ , nên ta viết (∞ , S) .
Đánh dấu * vào đỉnh có đường đi từ đỉnh S đến nó là ngắn nhất.
Bảng Kết Quả
k
0
1
Đỉnh S
(0, S)*
-
Đỉnh 1
(∞ , S)
(2, S)*
Đỉnh 2
(∞ , S)
(9, S)
Đỉnh 3
(∞ , S)
(7, S)
Tại k = 1, tỉnh lại độ dài đường đi ngắn nhất từ S đến các đỉnh kề với đỉnh S
L(1) = L(s) + w(s, 1)= 0 + 2 = 2 ⇒ (2, S)
Đỉnh 4
(∞ , S)
(13, S)
Đỉnh Z
(∞ , S)
(∞ , S)
L(2) = L(s) + w(s, 2) = 0 + 7 = 7 ⇒ (7, S)
L(3) = L(s) + w(s, 3)= 0 + 9 = 9 => (9, S)
L(4) = L(s) + w(s, 4) = 0 + 13 = 13 => (13, S)
Đánh dấu * vào ô (hàng 1, đỉnh 1) bởi đỉnh 1 có đường đi từ đỉnh S đến nó là ngắn nhất.
Bảng Kết Quả
k
0
1
2
Đỉnh S
(0, S)*
-
Đỉnh 1
(∞ , S)
(2, S)*
-
Đỉnh 2
(∞ , S)
(7, S)
(6, 1)*
Đỉnh 3
(∞ , S)
(9, S)
(7, S)
Đỉnh 4
(∞ , S)
(13, S)
(13, S)
Đỉnh Z
(∞ , S)
(∞ , S)
(∞ , S)
Tại k = 2, tính lại độ dài đường đi ngắn nhất từ S đến các đỉnh kề với đỉnh 1.
L(2) = L(1) + w(1, 2) = 2 + 4 = 6 ⇒ (6, 1)
Đánh dấu * vào ơ (hàng 2, đỉnh 2) bởi đỉnh 2 có đường đi từ đỉnh S đến nó là ngắn nhất.
Bảng Kết Quả
k
0
1
2
3
Đỉnh S
(0, S)*
-
Đỉnh 1
(∞ , S)
(2, S)*
-
Đỉnh 2
(∞ , S)
(7, S)
(6, 1)*
-
Đỉnh 3
(∞ , S)
(9, S)
(9, S)
(8, 2)*
Đỉnh 4
(∞ , S)
(13, S)
(13, S)
(12, 2)
Đỉnh Z
(∞ , S)
(∞ , S)
(∞ , S)
(∞ , S)
Tại k = 3, tính lại độ dài đường đi ngắn nhất từ S đến các đỉnh kề với đỉnh 2.
L(3) = L(2) + w(2, 3) = 6 + 2 = 8 ⇒ (8, 2)
L(4) = L(2) + w(2, 4) = 6 + 6 = 12 ⇒ (12, 2)
Đánh dấu * vào ô (hàng 3, đỉnh 3) bởi đỉnh 3 có đường đi từ đỉnh S đến nó là ngắn nhất.
Bảng Kết Quả
k
0
1
2
3
4
Đỉnh S
(0, S)*
-
Đỉnh 1
(∞ , S)
(2, S)*
-
Đỉnh 2
(∞ , S)
(7, S)
(6, 1)*
-
Đỉnh 3
(∞ , S)
(9, S)
(9, S)
(8, 2)*
-
Đỉnh 4
(∞ , S)
(13, S)
(13, S)
(12, 2)
(11, 3)*
Đỉnh Z
(∞ , S)
(∞ , S)
(∞ , S)
(∞ , S)
(17, 3)
Tại k = 4, tính lại độ dài đường đi ngắn nhất từ S đến các đỉnh kề với đỉnh 3.
L(4) = L(3) + w(3, 4) = 8 + 3 = 11⇒ (11, 3)
L(Z) = L(3) + w(3, Z) = 8 + 9 = 17 ⇒ (17, 3)
Đánh dấu * vào ơ (hàng 4 đỉnh 4) bởi đỉnh 4 có đường đi từ đỉnh S đến nó là ngắn nhất.
Bảng Kết Quả
k
0
1
2
3
4
5
Đỉnh S
(0, S) *
-
Đỉnh 1
(∞ , S)
(2, S) *
-
Đỉnh 2
(∞ , S)
(7, S)
(6, 1) *
-
Đỉnh 3
(∞ , S)
(9, S)
(9, S)
(8, 2) *
-
Đỉnh 4
(∞ , S)
(13, S)
(13, S)
(12, 2)
(11, 3) *
-
Đỉnh Z
(∞ , S)
(∞ , S)
(∞ , S)
(∞ , S)
(17, 3)
(15, 4) *
Đỉnh 3
(∞ , S)
(9, S)
(9, S)
(8, 2) *
-
Đỉnh 4
(∞ , S)
(13, S)
(13, S)
(12, 2)
(11, 3) *
-
Đỉnh Z
(∞ , S)
(∞ , S)
(∞ , S)
(∞ , S)
(17, 3)
(15, 4) *
Tại k = 5, Tỉnh lại độ dài đường đi ngắn nhất từ S đến Z
L(Z) = L(4) + w(4, Z) = 11 + 4 = 15⇒ (15, 4)
Đánh dấu * vào ơ (hàng 5, đỉnh Z).
Kết thúc tính tốn
Bảng Kết Quả
k
0
1
2
3
4
5
Đỉnh S
(0, S) *
-
Đỉnh 1
(∞ , S)
(2, S) *
-
Đỉnh 2
(∞ , S)
(7, S)
(6, 1) *
-
Kết luận:
Độ dài đường đi ngắn nhất từ đỉnh S đến đỉnh Z là 15.
Đường đi ngắn nhất từ S đến Z là S -> 1 -> 2 -> 3 -> 4 -> Z