1. Trang chủ
  2. » Giáo Dục - Đào Tạo

BÀI TOÁN ĐƯỜNG đi NGẮN NHẤT, thuật toán tìm bao đóng bắt cầu (lý THUYẾT đồ THỊ SLIDE)

61 78 0

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

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 61
Dung lượng 4,86 MB

Nội dung

Nguyễn Cam –Chu Đức Khánh, Lý thuyết đồ thị NXB Trẻ Tp HCM, 1998  Kenneth H Rosen: Discrete Mathematics and its Applications, Edition, McGraw Hill, 2010  Đồ thị có trọng số: Là đơn đồ thị, cạnh gán giá trị số, gọi trọng số cạnh  Kí hiệu: w(e) trọng số cạnh e Ví dụ:  e8 e3 e6 6 e7 e5 e1 2 A e4 e2  Nhiều tốn mơ hình hóa đồ thị có trọng số: Ví dụ:Mơ hình hóa hệ thống đường hàng khơng nối thành phố  Trọng số cạnh= Khoảng cách Ví dụ:Mơ hình hóa hệ thống đường hàng không nối thành phố Trọng số cạnh= Thời gian bay Ví dụ:Mơ hình hóa hệ thống đường hàng không nối thành phố Trọng số cạnh= Giá vé Độ dài đường đồ thị có trọng số tổng trọng số tất cạnh có đường  Tìm đường ngắn đỉnh đồ thị nhiều vấn đề liên quan đến đồ thị có trọng số  Ví dụ e8 e3 e6 6 e7 e5  e1 e4 e2 Các đường từ đến 6: 4e85e66 Độ dài: 5+6=12 4e85e77e56 Độ dài: 5+3+2=10 2 A 4e32e23e46 Độ dài: 1+4+3=8  Đường ngắn 4e32e23e46 với độ dài Ví dụ: Tìm đường từ San Francisco đến Miami cho tổng tiền vé Cho đồ thị có trọng số G=, |V|=n  Ma trận trọng số G định nghĩa:  w({vi,vj}) (vi,vj)∈ E W = (w ) , Với wij= ij nxn θ (với θ=0,-∞ + ∞) {vi,vj}∈ E Ví dụ e8 e3 e6 6 e7 e5 e1 2 A e4 e2 1 ∞ +∞  2 ∞ + ∞ ∞  + ∞ + ∞ + ∞ + ∞ + ∞  + ∞ + ∞ + ∞ + ∞ + ∞ +∞ +∞ +∞ +∞ +∞ +∞ +∞ ∞ +∞ ∞ +∞ ∞ +∞ Ma trận trọng số + ∞ + ∞ + ∞  + ∞    ∞   Nếu đường s r t đường ngắn từ s đến t s r r t đường ngắn s → r → t W* = W4 = P* = P4 = 17 13 2 10 7 4 ∞ ∞ ∞ ∞ ∞ ∞ ∞ ∞ 2     Thuật tốn Floyd áp dụng cho đồ thị G vô hướng (thay cạnh (u,v) cặp cung có hướng (u,v) (v,u)) Đồ thị G có hướng liên thơng mạnh ⇔ ∀u,v∈V, u≠v W*[u,v]L[i]+w[i][j] then begin L[j]=L[i]+w[i][j]; P[j]=i; stop=false; end if (k>n) then begin if (stop=false) print “đồ thị có chu trình âm” stop=true; end end Ví dụ: s=6 Đỉnh Khởi tạo (-,∞) (-,∞) (-,∞) (-,∞) (-,∞) (-,0) Lặp lần (-,∞) (-,∞) (6,1) (-,∞) (6,2) (-,0) Lặp lần (3,3) (5,6) (6,1) (3,3) (6,2) (-,0) Lặp lần (3,3) (4,4) (6,1) (3,3) (6,2) (-,0) Lặp lần (3,3) (4,4) (6,1) (3,3) (6,2) (-,0) … … … … … …  Thuật tốn Bellman-Ford tìm đường ngắn từ đỉnh (đỉnh nguồn) đến tất đỉnh cịn lại (giống Dijkstra)  Thuật tốn Bellman-Ford dùng cho đồ thị vô hướng có hướng, cho phép có cạnh âm, miễn khơng có chu trình âm  Độ phức tạp thuật tốn O(n3) Cho đơn đồ thị G có tập đỉnh V={v1,v2,…,vn}, đỉnh vj gọi khả liên (reachable) từ đỉnh vi có đường từ vi đến vj  Ma trận kề A=(aij) G ma trận Boole  Kí hiệu: A(k) = A(k-1) × A với phép cộng/nhân phần tử tương ứng với phép toán or/and bit:    Định lý: Gọi A =(aij) ma trận kề đơn đồ thị G, a(k)ij = ⇔ có đường độ dài k từ đỉnh vi đến đỉnh vj C/m: Sử dụng quy nạp ◦ Với k=1, a(1)ij=1 ⇔ có đường trực tiếp (độ dài 1) từ vi đến vj ◦ Giả sử a(k)ij =1 ⇔ có đường độ dài k từ vi đến vj ◦ Ta có n aij( k +1) = ∑ ait( k ) atj t =1 n aij( k +1) = ∑ ait( k ) atj t =1 a(k+1)ij =1 ⇔ ∃ t,a(k)it=1 ∧atj =1 ◦ a(k)it =1 ⇔ có đường độ dài k từ vi đến vt ◦ atj =1 ⇔ có đường độ dài từ vt đến đến vj Vậy có đường có độ dài k+1 từ vi đến vj vi Đường từ vi đến Vt có độ dài k vj vt Đường từ vt đến Vj có độ dài (cạnh/cung trực tiếp) Ma trận khả liên R(k)=(rij): R (k ) =A +A (1) ( 2) + + A (k ) Nhận xét: rij =1 ⇔ có đường từ đỉnh vi đến đỉnh vj   Input: A: Ma trận kề đơn đồ thị G Output: R: ma trận khả liên G R=A For k=1 to n For i=1 to n For j=1 to n R[i][j]=R[i][j] or (R[i][k] and R[k][j]); Return R Cài đặt thuật toán Dijkstra a) Tìm đường ngắn đến tất đỉnh khác đồ thị từ đỉnh cho trước In tất đường với khoảng cách tìm được) b) Tìm đường ngắn từ đỉnh s đến đỉnh t cho trước Cài đặt thuật tốn Floyd a) Tìm ma trận k/c ngắn b) In đường với k/c ngắn tìm đỉnh s, t cho trước Cài đặt thuật tốn : a) Kiểm tra tính liên thơng mạnh đồ thị có hướng b) Kiểm tra đồ thị có chu trình hay khơng c) Kiểm tra đỉnh u, v có khả liên hay khơng (có đường từ u đến v hay khơng) Cài đặt thuật toán WARSHALL Cài đặt thuật toán ... hệ thống đường hàng không nối thành phố Trọng số cạnh= Giá vé Độ dài đường đồ thị có trọng số tổng trọng số tất cạnh có đường  Tìm đường ngắn đỉnh đồ thị nhiều vấn đề liên quan đến đồ thị có trọng... Dijkstra, ta thu bao trùm G gọi bao trùm Dijkstra G gốc s với khoảng cách ngắn từ s đến đỉnh khác 1) Cho đồ thị, chạy thuật tốn Dijkstra, tìm đường ngắn đến đỉnh  Bắt đầu từ đỉnh A  Bắt đầu từ đỉnh... cho đồ thị vô hướng có hướng  Độ phức tạp thuật tốn Dijkstra O(n2)  Thuật toán Dijkstra sử dụng với G khơng có cạnh có trọng số âm Tìm đường ngắn từ đỉnh đến đỉnh 5?  Kết Khi thực thuật toán

Ngày đăng: 29/03/2021, 11:04

TỪ KHÓA LIÊN QUAN

w