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 1... Đường Đi Ngắn
Trang 1Thiế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
Trang 2Nộ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
1
Trang 3Đường Đi – Định Nghĩa
Trong đồ thị vô hướng
trong đó đỉnh đầu tiên phân biệt và
2
Trang 4Đường Đi – Trọng Số
Đồ 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ụ:
3
Trang 5Đường Đi Ngắn Nhất – Định Nghĩa
Đường đi ngắn nhất từ đến là đường
Trang 6Đường Đi Ngắn Nhất – Tính Chất
Cấu trúc con tối ưu
Một đường đi con của một đường đi
Trang 7Đường Đi Ngắn Nhất – Tính Chất
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ố
đến với trọng số nhỏ hơn
Mâu thuẫn với giả thiết đường đi ngắn nhất
6
Trang 8Đườ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ó
7
Trang 9Đường Đi Ngắn Nhất – Tính Chất
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
8
Trang 10Đườ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ớimọi đỉnh
Nếu tất cả các trọng số không âm, 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
9
Trang 11Đườ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ề
10
Trang 12Chiến Lược Tham Lam
8
1
Trang 13Chiến Lược Tham Lam
8
1
Trang 14Chiến Lược Tham Lam
8
1
Trang 15Chiến Lược Tham Lam
8
1
Trang 16Chiến Lược Tham Lam
8
1
Trang 17Thuậ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
16
Trang 18Thuật Toán Dijkstra
Dùng mảng : Độ dài đường đi từ tới lưu
trong
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ị
17
Trang 19Thuật Toán Dijkstra – Bài Tập 18
Trang 20Thuật Toán Dijkstra – Mã Giả
Trang 21Đồ Thị Không Trọng Số
được thuật toán Dijkstra không?
Sử dụng hàng đợi FIFO thay vì hàng đợi ưu tiên
Trang 22Tìm Kiếm Theo Bề Rộng – Minh Họa 21
Trang 23Đườ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 lần
Chiến lược tham lam
Thuật toán Floyd-Warshall
Chiến lược quy hoạch động
22
Trang 24Thuật Toán Floyd-Warshall – Minh Họa
5
Trang 25Thuật Toán Floyd-Warshall – Minh Họa24
5
Trang 26Thuật Toán Floyd-Warshall – Minh Họa25
5
Trang 27Thuật Toán Floyd-Warshall – Minh Họa26
5
Trang 28Thuật Toán Floyd-Warshall – Minh Họa27
5
Trang 29Thuật Toán Floyd-Warshall
Định nghĩa trọng số đường đi ngắnnhất từ tới chỉ đi qua các đỉnh trong tậpđỉnh
Khi đó,
Ban đầu
28
Trang 30Thuật Toán Floyd-Warshall
Nếu đỉnh nằm trên đường đi ngắn nhất từ tới thì đường đi từ tới và đường đi từ tới là đường đi ngắn nhất
Nếu là độ dài đường đi không qua , tức là
đường đi này chỉ đi qua các đỉnh trong , khi đó
Nếu là độ dài đường đi qua , thì trên đường
đi này đoạn từ tới có độ dài , còn đoạn từ tới có độ dài
Do đó
29
Trang 31Thuật Toán Floyd-Warshall – Mã Giả