Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 28 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
28
Dung lượng
3,08 MB
Nội dung
TRƯỜNG CAO ĐẲNG NGHỀ CNTT iSPACE http://www.ispace.edu.vn Website: 1.1 Giới thiệu tốn Cho đơn đồ thị liên thơng, có trọng số dương G=(V,E) Bài tốn 1: Tìm đường ngắn từ đỉnh u đến đỉnh v đồ thị G Bài tốn 2: Tìm đường ngắn cặp đỉnh đồ thị G B A D Z C 10 BIỂU DIỄN ĐỒ THỊ VÀ CÁC THUẬT TỐN TÌM KIẾM E TRƯỜNG CAO ĐẲNG NGHỀ CNTT iSPACE http://www.ispace.edu.vn Website: 1.2 Thuật tốn Dijkstra Thuật tốn tìm đường ngắn từ đỉnh u đến đỉnh v đồ thị G, nhà toán học người Hà Lan E Dijkstra đề xuất vào năm 1959 Thuật toán thực theo cách gán nhãn đỉnh Thuật ngữ: w(x,y) : trọng số dương cạnh (x,y); w(x,y) ∞ (vô lớn) hai đỉnh không kề d(v) : độ dài đường từ đỉnh xuất phát tới đỉnh v p(v) : đỉnh đứng trước đỉnh v đường từ đỉnh xuất phát đến đỉnh v Nhãn đỉnh v : gồm cặp (d(v), p(v)) T : Tập nút mà đường ngắn xác định BIỂU DIỄN ĐỒ THỊ VÀ CÁC THUẬT TỐN TÌM KIẾM TRƯỜNG CAO ĐẲNG NGHỀ CNTT iSPACE http://www.ispace.edu.vn 1.2 Thuật toán Dijkstra Gán T = ø; p(v) = NULL với đỉnh v d(a)=0; /* a đỉnh xuất phát Với đỉnh v lại d(v) = ∞; Repeat u =(uT | d(u) bé nhất); T = T ∪ {u}; for ((v đỉnh kề u) vT) if d(v) > d(u) + w(u,v) then d(v) = d(u) + w(u,v) p(v) = u Until (T=V) BIỂU DIỄN ĐỒ THỊ VÀ CÁC THUẬT TỐN TÌM KIẾM Website: TRƯỜNG CAO ĐẲNG NGHỀ CNTT iSPACE http://www.ispace.edu.vn Website: 1.2 Thuật tốn Dijkstra Ví dụ 1: Tìm đường ngắn từ A đến đỉnh khác đồ thị G B A D Z C 10 BIỂU DIỄN ĐỒ THỊ VÀ CÁC THUẬT TỐN TÌM KIẾM E TRƯỜNG CAO ĐẲNG NGHỀ CNTT iSPACE http://www.ispace.edu.vn Website: 1.2 Thuật tốn Dijkstra Ví dụ 1: d(D) =∞ = d(A)+w(A,D)=0+∞=∞ d(E) =∞ = d(A)+w(A,E)=0+∞=∞ d(Z) =∞ = d(A)+w(A,Z)=0+∞=∞ d(B) =∞ > d(A)+w(A,B)=0+1=1 d(C) =∞ > d(A)+w(A,C)=0+2=2 (∞,-) (∞,-) B (0,-) A D (∞,-) 10 E A (0,-)* (∞,-) BIỂU DIỄN ĐỒ THỊ VÀ CÁC THUẬT TỐN TÌM KIẾM B (∞,-) Z 2 C (1,a) (∞,-) D (∞,-) (2,a) 10 Z 2 C (∞,-) (∞,-) E (∞,-) TRƯỜNG CAO ĐẲNG NGHỀ CNTT iSPACE http://www.ispace.edu.vn Website: 1.2 Thuật tốn Dijkstra Ví dụ 1: (∞,-) B A (0,-)* D C (2,a) (1,a)* (6,b) (1,a)* 10 (∞,-) E Z A (0,-)* (∞,-) d(C) =2 = d(B)+w(B,C)=1+1=2 d(D) =∞ > d(B)+w(B,D)=1+5=6 d(E) =∞ = d(B)+w(B,E)=0+∞=∞ d(Z) =∞ = d(B)+w(B,Z)=0+∞=∞ BIỂU DIỄN ĐỒ THỊ VÀ CÁC THUẬT TỐN TÌM KIẾM B (6,b) D (∞,-) C Z E 10 (12,c) (2,a)* (∞,-) d(D) =6 > d(C)+w(C,D)=2+8=10 d(E) =∞ > d(C)+w(C,E)=2+10=12 d(Z) =∞ = d(C)+w(C,Z)=0+∞=∞ TRƯỜNG CAO ĐẲNG NGHỀ CNTT iSPACE http://www.ispace.edu.vn Website: 1.2 Thuật toán Dijkstra Ví dụ 1: (1,a)* B A D 10 (2,a)* Z E (8,d) B (12,d) (0,-)* C (1,a)* (6,b)* A (0,-)*2 C (12,c) d(E) =12 > d(D)+w(D,E)=6+2=8 d(Z) =∞ = d(D)+w(D,Z)=6+6=12 BIỂU DIỄN ĐỒ THỊ VÀ CÁC THUẬT TỐN TÌM KIẾM 10 (2,a)* (6,b)* (12,d) D (11,e) Z E (8,d)* d(Z) =12 >d(E)+w(E,Z)=8+3=11 TRƯỜNG CAO ĐẲNG NGHỀ CNTT iSPACE http://www.ispace.edu.vn Website: 1.2 Thuật tốn Dijkstra Ví dụ 1: (1,a)* B A (0,-)* (6,b)* D C (2,a)* BIỂU DIỄN ĐỒ THỊ VÀ CÁC THUẬT TỐN TÌM KIẾM 10 (11,e)* Z E (8,d)* TRƯỜNG CAO ĐẲNG NGHỀ CNTT iSPACE http://www.ispace.edu.vn Website: 1.2 Thuật tốn Dijkstra Ví dụ 1: Lập bảng để giải tốn tìm đường ngắn Bước Tập T a b d c e z ø (0,-) (,-) (,-) (,-) (,-) (,-) a (0,-)* (1,a) (,-) (2,a) (,-) (,-) ba - (1,a)* (6,b) (2,a) (,-) (,-) cba - - (6,b) (2,a) * (12,c) (,-) dcba - - (6,b)* - (8,d) (12,d) edcba - - - - (8,d)* (11,e) zedcba - - - - - (11,e)* BIỂU DIỄN ĐỒ THỊ VÀ CÁC THUẬT TỐN TÌM KIẾM TRƯỜNG CAO ĐẲNG NGHỀ CNTT iSPACE http://www.ispace.edu.vn Website: 1.2 Thuật tốn Dijkstra Ví dụ 1: Nhận xét bảng kết thu 1/ Độ dài đường ngắn từ A đến đỉnh ->B: ->C: ->D: ->E: ->Z: 11 2/ Để vẽ đường ngắn từ A đến đỉnh Z, sử dụng cách ngược từ Z A Cụ thể Z