Tải bản đầy đủ (.pdf) (31 trang)

Thiết Kế & Đánh Giá Thuật ToánĐường Đi Ngắn NhấtTS. Lê Nguyên KhôiTrường Đại Học Công Nghệ - ĐHQGHN

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 (1.3 MB, 31 trang )

Thiết Kế & Đánh Giá Thuật Toán
Đường Đi Ngắn Nhất
TS. Lê Nguyên Khôi
Trường Đại Học Công Nghệ - ĐHQGHN


1

Nội Dung
Đường đi
 Tính chất đường đi ngắn nhất
 Đường đi ngắn nhất từ một đỉnh
 Thuật toán Dijkstra
 Đường đi ngắn nhất giữa mọi đỉnh
 Thuật toán Floyd–Warshall


Thiết Kế & Đánh Giá Thuật Toán


Đường Đi – Định Nghĩa
Trong đồ thị vô hướng
 Đường đi
 là dãy các đỉnh
được nối bởi 1 cạnh
 2 đỉnh liên tiếp ,
trong .
 được gọi là đường đi từ
đến
 Chu trình
 là đường đi


với
 trong đó đỉnh đầu tiên phân biệt và
Thiết Kế & Đánh Giá Thuật Toán

2


Đường Đi – Trọng Số

3

Đồ thị có hướng
với hàm trọng số
cung
. Trọng số của đường đi
được định nghĩa:

Ví dụ:

Thiết Kế & Đánh Giá Thuật Toán


Đường Đi Ngắn Nhất – Định Nghĩa

4

Đường đi ngắn nhất từ đến là đường
đi có trọng số nhỏ nhất từ đến .
Trọng số đường đi ngắn nhất từ
được định nghĩa:


Chú ý:
từ đến .

đến

không tồn tại đường đi

Thiết Kế & Đánh Giá Thuật Toán


Đường Đi Ngắn Nhất – Tính Chất

5

Cấu trúc con tối ưu
 Một đường đi con của một đường đi
ngắn nhất là một đường đi ngắn nhất
là đường đi ngắn nhất



từ




đến
là đường đi con của


từ đến với
là đường đi ngắn nhất từ
Thiết Kế & Đánh Giá Thuật Toán

đến


Đường Đi Ngắn Nhất – Tính Chất

6

Cấu trúc con tối ưu – chứng minh







Chia thành các đoạn con
Khi đó,
Giả sử có đường
từ đến

, với trọng số

Khi đó,
là đường đi từ
đến
với trọng số nhỏ hơn

Mâu thuẫn với giả thiết đường đi ngắn nhất
từ
đến
Thiết Kế & Đánh Giá Thuật Toán


Đường Đi Ngắn Nhất – Tính Chất
Bất đẳng thức tam giác
 Với mọi đỉnh
, ta có

Thiết Kế & Đánh Giá Thuật Toán

7


Đường Đi Ngắn Nhất – Tính Chất

8

Trọng số âm


Nếu đồ thị có chu trình với trọng số âm, một
số đường đi ngắn nhất có thể khơng tồn tại

Thiết Kế & Đánh Giá Thuật Toán


9


Đường Đi Ngắn Nhất Từ Một Đỉnh Nguồn

Bài toán. Từ một đỉnh nguồn
, tìm
đường đi ngắn nhất (trọng số
) tới
mọi đỉnh
khơng âm,
 Nếu tất cả các trọng số
thì mọi đường đi ngắn nhất tồn tại
 Áp dụng chiến lược tham lam có thể tìm
được lời giải tối ưu




Do đường đi ngắn nhất có tính chất cấu trúc
con tối ưu
Thiết Kế & Đánh Giá Thuật Toán


10

Đường Đi Ngắn Nhất Từ Một Đỉnh Nguồn

Chiến lược tham lam:
1. Duy trì một tập là các đỉnh sao cho độ
dài đường đi ngắn nhất từ là xác định
2. Mỗi bước, thêm vào tập đỉnh

sao cho đường đi từ đến là nhỏ nhất
3. Cập nhật khoảng cách từ đến các đỉnh
liền kề



Thiết Kế & Đánh Giá Thuật Toán


11

Chiến Lược Tham Lam
Ban đầu
0
9

2
3

2

5
1

4
1

Thiết Kế & Đánh Giá Thuật Toán

1

8

4


12

Chiến Lược Tham Lam
Thêm

vào
0
9

2
3

2

5
1

4
1

Thiết Kế & Đánh Giá Thuật Toán

1
8


4


13

Chiến Lược Tham Lam
Thêm

vào
0
9

2
3

2

5
1

4
1

Thiết Kế & Đánh Giá Thuật Toán

1
8

4



14

Chiến Lược Tham Lam
Thêm

vào
0
9

2
3

2

5
1

4
1

Thiết Kế & Đánh Giá Thuật Toán

1
8

4


15


Chiến Lược Tham Lam
Thêm

vào
0
9

2
3

2

5
1

4
1

lưu độ dài đường đi
ngắn nhất từ
tới với mọi
Thiết Kế & Đánh Giá Thuật Toán

1
8

4



16

Thuật Toán Dijkstra



Gọi đường đi từ tới đỉnh là đường đi đặc biệt
nếu đường đi đó chỉ đi qua các đỉnh trong
Dùng mảng : Độ dài đường đi từ tới lưu
trong


Ban đầu

,

,

Thiết Kế & Đánh Giá Thuật Toán

với


17

Thuật Toán Dijkstra


Dùng mảng : Độ dài đường đi từ
trong

 Ban đầu
,
,


tới

lưu
với

Tại mỗi bước:



Chọn một đỉnh
sao cho
nhỏ nhất
Thêm vào , khi đó
lưu đường đi ngắn nhất từ
đến
Sau đó xác định lại các
với



Lặp lại cho tới khi





gồm tất cả các đỉnh của đồ thị

Thiết Kế & Đánh Giá Thuật Toán


Thuật Toán Dijkstra – Bài Tập

Thiết Kế & Đánh Giá Thuật Toán

18


19

Thuật Toán Dijkstra – Mã Giả
for each

do

while

lần

do

for each
if

lần


do
then

Thiết Kế & Đánh Giá Thuật Toán


20

Đồ Thị Khơng Trọng Số
Giả sử
cho mọi
được thuật tốn Dijkstra khơng?


. Có áp dụng

Sử dụng hàng đợi FIFO thay vì hàng đợi ưu tiên

Tìm kiếm theo bề rộng (BFS)
while

do

for each
if

do
then

Phân tích: Thời gian

Thiết Kế & Đánh Giá Thuật Tốn


Tìm Kiếm Theo Bề Rộng – Minh Họa

Thiết Kế & Đánh Giá Thuật Toán

21


22

Đường Đi Ngắn Nhất Giữa Mọi Cặp Đỉnh
Từ một đỉnh nguồn
 Thuật toán Dijkstra’s
Giữa mọi cặp đỉnh
 Thuật toán Dijkstra’s
Chiến

 Thuật

lần

lược tham lam

toán Floyd-Warshall

Chiến

lược quy hoạch động


Thiết Kế & Đánh Giá Thuật Toán


23

Thuật Toán Floyd-Warshall – Minh Họa
, tập

rỗng,

15
1

4
1

2

3

4

1

0

5






2

50

0

15

5

3

30



0

15

4

15



5


0

5
5

50

2

30

15

5

15

3

Thiết Kế & Đánh Giá Thuật Toán


24

Thuật Toán Floyd-Warshall – Minh Họa

15
1


4
5

5

50

2

30

15

5

1

2

3

4

1

0

5






2

50

0

15

5

3

30



0

15

4

15



5


0

1

2

3

4

1

0

5





2

50

0

15

5


3

30

35

0

15

4

15

20

5

0

15

3

Thiết Kế & Đánh Giá Thuật Toán


×