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

Bài giảng lý thuyết đồ thị chương 5 ths trần quốc việt

74 1 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

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 A 2 e5 e1 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 A e1 2 e5  e4 e2  Các đường từ đến 6: 4e85e66 Độ dài: 5+6=12 4e85e77e56 Độ dài: 5+3+2=10 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 = (wij)nxn , Với wij=  (với =0,- + ) {vi,vj} E Ví dụ e8 A e6 6 e7 e3 2 e5 e1 e4 1    2                                        e2 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  Cho đồ thị G, dùng thuật toán Ford – Bellman, tìm đường ngắn từ đỉnh đến đỉnh đồ thị chu trình âm  Lập bảng chạy bước  k = n = Lk(i) chưa ổnđịnh nênđồ thị có chu trình âm Chẳng hạn: 4→ 2→ 6→ cóđộ dài -3 Ví dụ: s=6  Kết 1 2  Cho đồ thị G, dùng thuật tốn Floy –Bellman tìm đường từ đỉnh đến đỉnh cịn lại  Thuật tốn Bellman-Ford tìm đường ngắn từ đỉnh (đỉnh nguồn) đến tất đỉnh lại (giống Dijkstra)  Thuật toá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 toá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 ) (1) A A ( 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]); R[i][j]=R[i][j]||(R[i][k]&&R[j][v]); Return R Cài đặt thuật tố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 toá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 tốn WARSHALL Cài đặt thuật toán

Ngày đăng: 21/07/2023, 16:57