You are on page 1of 4

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

S 13
2 4
9 4

1 7
3
6 Z
4
9
2 2 3

Bảng Kết Quả

k Đỉnh S Đỉnh 1 Đỉnh 2 Đỉnh 3 Đỉnh 4 Đỉnh Z

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 Đỉnh S Đỉnh 1 Đỉnh 2 Đỉnh 3 Đỉnh 4 Đỉnh Z


0 (0, S)* (∞ , S) (∞ , S) (∞ , S) (∞ , S) (∞ , 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 Đỉnh S Đỉnh 1 Đỉnh 2 Đỉnh 3 Đỉnh 4 Đỉnh Z


0 (0, S)* (∞ , S) (∞ , S) (∞ , S) (∞ , S) (∞ , S)
1 - (2, S)* (9, S) (7, S) (13, S) (∞ , 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)


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 Đỉnh S Đỉnh 1 Đỉnh 2 Đỉnh 3 Đỉnh 4 Đỉnh Z


0 (0, S)* (∞ , S) (∞ , S) (∞ , S) (∞ , S) (∞ , S)
1 - (2, S)* (7, S) (9, S) (13, S) (∞ , S)
2 - - (6, 1)* (7, S) (13, 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 Đỉnh S Đỉnh 1 Đỉnh 2 Đỉnh 3 Đỉnh 4 Đỉnh Z


0 (0, S)* (∞ , S) (∞ , S) (∞ , S) (∞ , S) (∞ , S)
1 - (2, S)* (7, S) (9, S) (13, S) (∞ , S)
2 - - (6, 1)* (9, S) (13, S) (∞ , S)
3 - - - (8, 2)* (12, 2) (∞ , 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 Đỉnh S Đỉnh 1 Đỉnh 2 Đỉnh 3 Đỉnh 4 Đỉnh Z


0 (0, S)* (∞ , S) (∞ , S) (∞ , S) (∞ , S) (∞ , S)
1 - (2, S)* (7, S) (9, S) (13, S) (∞ , S)
2 - - (6, 1)* (9, S) (13, S) (∞ , S)
3 - - - (8, 2)* (12, 2) (∞ , S)
4 - - - - (11, 3)* (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 Đỉnh S Đỉnh 1 Đỉnh 2 Đỉnh 3 Đỉnh 4 Đỉnh Z


0 (0, S) * (∞ , S) (∞ , S) (∞ , S) (∞ , S) (∞ , S)
1 - (2, S) * (7, S) (9, S) (13, S) (∞ , S)
2 - - (6, 1) * (9, S) (13, S) (∞ , S)
3 - - - (8, 2) * (12, 2) (∞ , S)
4 - - - - (11, 3) * (17, 3)
5 - - - - - (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 toán

Bảng Kết Quả

k Đỉnh S Đỉnh 1 Đỉnh 2 Đỉnh 3 Đỉnh 4 Đỉnh Z


0 (0, S) * (∞ , S) (∞ , S) (∞ , S) (∞ , S) (∞ , S)
1 - (2, S) * (7, S) (9, S) (13, S) (∞ , S)
2 - - (6, 1) * (9, S) (13, S) (∞ , S)
3 - - - (8, 2) * (12, 2) (∞ , S)
4 - - - - (11, 3) * (17, 3)
5 - - - - - (15, 4) *

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

You might also like