1. Trang chủ
  2. » Công Nghệ Thông Tin

Cấu trúc dữ liệu và giải thuật (phần 20) pptx

10 350 1

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 10
Dung lượng 248,87 KB

Nội dung

Đư Đư ờ ờ ng đi ng ng đi ng ắ ắ n nh n nh ấ ấ t t Giới thiệu: Bài toán tìm đường đi ngắn nhất là bài toán quan trọng trong lý thuyết đồ thi. Được ứng dụng trong thực tế: Giao thông, viễn thông… Bài toán chia làm 2 loại:  Tìm đường đi ngắn nhất giữa 1 cặp đỉnh: Cho 2 đỉnh u,v thuộc G, tìm đường đi ngắn nhất từ u đến v : Dịkstra  Tìm đường đi ngắn nhất giữa tất cả các cặp đỉnh: Tìm đường đi ngắn nhất từ đỉnh u đến đỉnh v, với mọi cặp đỉnh u,v thuộc G: Floyd-Warshall Gi Gi ả ả i thu i thu ậ ậ t Dijkstra t Dijkstra Giới thiệu: - Giải thuật Dijkstra giải bài toán đường đi ngắn nhất nguồn đơn (Single Source Shortest Path) trên một đồ thị có trọng số cạnh đều không âm. - Xác định đường đi ngắn nhất giữa 2 đỉnh a,b cho trước Đặt vấn đề: Ứng dụng giải thuật cây bao trùm tối thiểu để giải quyết bài toán đường đi ngắn nhất có được không??? Gi Gi ả ả i thu i thu ậ ậ t D t D ị ị kstra kstra Nhận xét: - Giải thuật để giải bài toán MST sẽ không ứng dụng được cho bài toán đường đi ngắn nhất. - Vì sao?? - Vì vậy cần phải chỉnh sửa giải thuật trên để phù hợp với bài toán đường đi ngắn nhất Gi Gi ả ả i thu i thu ậ ậ t D t D ị ị kstra kstra Giải thuật: - Ở mỗi đỉnh v, giải thuật Dijkstra xác định 3 thông tin: kv,dv,pv • kv = 0 hoặc 1 – xác định trạng thái của đỉnh v ( 0 – chưa chọn, 1 – đã chọn) • dv: Chiều dài đường đi tìm thấy tại thời điểm đang xét từ a đến v • pv: là đỉ nh tr ướ c c ủ a đỉ nh v trên đườ ng đ i ng ắ n nh ấ t t ừ a  b . Đườ ng đ i ng ắ n nh ấ t t ừ a đế n b có d ạ ng {a,…,pv,v,…,b} Gi Gi ả ả i thu i thu ậ ậ t D t D ị ị kstra kstra B1: Khởi tạo: k v =0,∀v∈V; d v = ∞ ,∀v ∈ V \{a}; d a =0. B2: Chọn v∈V sao cho k v =0 và d v = min {d t / t ∈ V,k t =0 } – Nếu d v = ∞ thì kết thúc, không tồn tại đường đi từ a  b. B3: Đánh dấu đỉnh v, k v = 1. B4: Nếu v=b thì kết thúc và d b là độ dài đường đi ngắn nhất từ a  b. Ngược lại nếu v ≠ b sang B5. B5: Với mỗi đỉnh u kề với v mà k u = 0, kiểm tra Nếu d u > d v + w(v,u) thì d u = d v + w(v,u) Ghi nhớ đỉnh v: p u := v. Quay lại B2. Gi Gi ả ả i thu i thu ậ ậ t D t D ị ị kstra kstra Ví dụ: Tìm đường đi ngắn nhất từ A G Shortest Tập hợp A AB=2,AC=4.AD=7,AF=5 A,B AB=2 AC=4.AD=7,AF=5,BE=3 ,BG=8,BD=6 A,B,C AB=2,AC=4 AD=7,AF=5,BE=3,BG=8 , A,B,C,E AB=2,AC=4,BE=3 AD=7,AF=5,BG=8 A,B,C,E,F AB=2,AC=4,BE=3 BG=8,FD=1 A,B,C,E,F,D AB=2,AC=4,BE=3,FD =1 BG=8 Gi Gi ả ả i thu i thu ậ ậ t D t D ị ị kstra kstra - Hình bên là cây đường đi ngắn nhất từ đỉnh A đến các đỉnh - Với ví dụ: AG, giải thuật sẽ kết thúc nếu tìm thấy đỉnh G Gi Gi ả ả i thu i thu ậ ậ t D t D ị ị kstra kstra Tìm cây đường đi ngắn nhất từ đỉnh C đến các đỉnh còn lại của đồ thị sau: Gi Gi ả ả i thu i thu ậ ậ t D t D ị ị kstra kstra Độ phức tạp của thuật toán: - Bình thường thuật toán Dijkstra có độ phức tạp O(n 2 +m). - Nếu sử dụng cấu trúc heap  O((n+m)*log2(n)) Gi Gi ả ả i thu i thu ậ ậ t Floyd t Floyd - - Warshall Warshall Bài toán: Tìm đường đi ngắn nhất của mỗi cặp đỉnh trong đồ thị (All-Pairs Source Shortest Path) . đề: Ứng dụng giải thuật cây bao trùm tối thiểu để giải quyết bài toán đường đi ngắn nhất có được không??? Gi Gi ả ả i thu i thu ậ ậ t D t D ị ị kstra kstra Nhận xét: - Giải thuật để giải bài toán. vậy cần phải chỉnh sửa giải thuật trên để phù hợp với bài toán đường đi ngắn nhất Gi Gi ả ả i thu i thu ậ ậ t D t D ị ị kstra kstra Giải thuật: - Ở mỗi đỉnh v, giải thuật Dijkstra xác định. thu i thu ậ ậ t D t D ị ị kstra kstra Độ phức tạp của thuật toán: - Bình thường thuật toán Dijkstra có độ phức tạp O(n 2 +m). - Nếu sử dụng cấu trúc heap  O((n+m)*log2(n)) Gi Gi ả ả i thu i thu ậ ậ t

Ngày đăng: 09/07/2014, 21:20

TỪ KHÓA LIÊN QUAN

w