Tải bản đầy đủ (.ppt) (10 trang)

Một số bài toán tối ưu trên đồ thị pdf

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 (185.76 KB, 10 trang )

CHƯƠNG V
MỘT SỐ BÀI TOÁN TỐI ƯU TRÊN ĐỒ THỊ
ĐỒ THỊ CÓ TRỌNG SỐ VÀ BÀI TOÁN
ĐƯỜNG ĐI NGẮN NHẤT

Đồ thị có trọng số là đồ thị G=(V,E) mà mỗi cạnh e E ∈
được gán bởi một số thực m(e), gọi là trọng số
của cạnh e

Trọng số của mỗi cạnh được xét là một số dương và còn
gọi là chiều dài của cạnh đó. Mỗi đường đi từ đỉnh u
đến đỉnh v, có chiều dài là m(u,v), bằng tổng chiều dài
các cạnh mà nó đi qua.

Khoảng cách d(u,v) giữa hai đỉnh u và v là chiều dài
đường đi ngắn nhất (theo nghĩa m(u,v) nhỏ nhất) trong
các đường đi từ u đến v.
BÀI TOÁN TÌM ĐƯỜNG ĐI NGẮN
NHẤT:

Cho đơn đồ thị liên thông, có trọng số G=(V,E). Tìm
khoảng cách d(u
0
,v) từ một đỉnh u
0
cho trước đến một
đỉnh v bất kỳ của G và tìm đường đi ngắn nhất từ u
0
đến
v.
THUẬT TOÁN DIJKSTRA



Trước tiên, đỉnh có khoảng cách đến a nhỏ nhất chính là a,
với d(u
0
,u
0
)=0. Trong các đỉnh v ≠ u
0
, tìm đỉnh có khoảng
cách k
1
đến u
0
là nhỏ nhất. Đỉnh này phải là một trong các
đỉnh kề với u
0
. Giả sử đó là u
1
. Ta có: d(u
0
,u
1
) = k
1
.

Trong các đỉnh v ≠ u
0
và v ≠ u
1

, tìm đỉnh có khoảng cách k
2

đến u
0
là nhỏ nhất. Đỉnh này phải là một trong các đỉnh kề
với u
0
hoặc với u
1
. Giả sử đó là u
2
. Ta có: d(u
0
,u
2
) = k
2
.

Tiếp tục như trên, cho đến bao giờ tìm được khoảng cách từ
u
0
đến mọi đỉnh v của G.

Nếu V={u
0
, u
1
, , u

n
} thì: 0 = d(u
0
,u
0
) < d(u
0
,u
1
)
< d(u
0
,u
2
) < < d(u
0
,u
n
)
VÍ DỤ

Tìm khoảng cách d(a,v) từ a đến mọi đỉnh v và tìm
đường đi ngắn nhất từ a đến v cho trong đồ thị G sau.
ĐỊNH LÝ:

Thuật toán Dijkstra tìm được đường đi ngắn nhất từ một
đỉnh cho trước đến một đỉnh tuỳ ý trong đơn đồ thị vô
hướng liên thông có trọng số.


Mệnh đề: Thuật toán Dijkstra tìm đường đi ngắn nhất từ
một đỉnh cho trước đến một đỉnh tuỳ ý trong đơn đồ thị
vô hướng liên thông có trọng số có độ phức tạp là O(n
2
).
VÍ DỤ 1:

Dùng thuật toán Dijkstra tìm đường đi ngắn nhất từ đỉnh
a đến các đỉnh khác trong đồ thị sau:
VÍ DỤ 2:

Dùng thuật toán Dijkstra tìm đường đi ngắn nhất từ đỉnh
a đến các đỉnh khác trong đồ thị sau:

×