Tải bản đầy đủ (.docx) (4 trang)

Bài tập thuật toan dijkstra

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 (42.92 KB, 4 trang )

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




Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×