intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

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

Chia sẻ: Nguyen Kien | Ngày: | Loại File: PDF | Số trang:10

112
lượt xem
28
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Trong tài liệu này các bạn sẽ được làm rõ thuật toán này qua một số ví dụ để các bạn thực hành, hãy làm nó bạn sẽ hiểu Dijstra là gì, tại sao nó là kinh điển

Chủ đề:
Lưu

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

  1. ư ng i ng n nh t ng nh Gi i thi u: Bài toán tìm ư ng i ng n nh t là bài thi. ư c ng toán quan tr ng trong lý thuy t 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
  2. Gi i thu t Dijkstra Gi thu 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 mt th có tr ng s c nh u không âm. nh ư ng i ng n nh t gi a 2 nh a,b cho trư c - Xác tv n :ng d ng gi i thu t cây bao trùm t i gi i quy t bài toán ư ng i ng n nh t có thi u ư c không???
  3. Gi i thu t D kstra Gi thu 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
  4. Gi i thu t D kstra Gi thu 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}
  5. Gi i thu t D kstra Gi thu kstra B1: Kh i t o: kv=0,∀v∈V; dv= ∞,∀v ∈ V \{a}; da=0. B2: Ch n v∈V sao cho kv=0 và dv = min {dt / t∈V,kt=0 } – N u dv = ∞ thì k t thúc, không t n t i ư ng i t a b. B3: ánh d u nh v, kv= 1. B4: N u v=b thì k t thúc và db 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à ku = 0, ki m tra N u du > dv + w(v,u) thì du= dv + w(v,u) nh v: pu:= v. Quay l i B2. Ghi nh
  6. Gi i thu t D kstra Gi thu kstra Ví d : Tìm ư ng i ng n nh t t A G Shortest T ph p A AB=2,AC=4.AD=7,AF=5 A,B AC=4.AD=7,AF=5,BE=3 AB=2 ,BG=8,BD=6 A,B,C AD=7,AF=5,BE=3,BG=8 AB=2,AC=4 , A,B,C,E AD=7,AF=5,BG=8 AB=2,AC=4,BE=3 A,B,C,E,F BG=8,FD=1 AB=2,AC=4,BE=3 A,B,C,E,F,D BG=8 AB=2,AC=4,BE=3,FD =1
  7. Gi i thu t D kstra Gi thu 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
  8. Gi i thu t D kstra Gi thu 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:
  9. Gi i thu t D kstra Gi thu 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(n2+m). - N u s d ng c u trúc heap O((n+m)*log2(n))
  10. Gi i thu t Floyd-Warshall Gi thu Floyd 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)
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2