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

Bài giảng lý thuyết đồ thị chương 8 pgs ts hoàng chí thành

44 0 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

CHƯƠNG BÀI TOÁN ĐƯỜNG ĐI NGẮN NHẤT 1/43 NỘI DUNG Bài tốn đường ngắn Đường có trọng số bé Thuật toán Dijsktra Đường đồ thị phi chu trình Đường ngắn cặp đỉnh Tâm đồ thị 2/43 8.1 BÀI TỐN ĐƯỜNG ĐI NGẮN NHẤT Bài tốn: Cho đồ thị G = (V, E) hai đỉnh a, b Tìm đường ngắn (nếu có) từ đỉnh a đến đỉnh b đồ thị G Ý nghĩa thực tế: Bài tốn giúp chọn hành trình tiết kiệm (quãng đường, thời gian, chi phí ) giao thơng, lập lịch thi cơng cơng trình cách tối ưu, xử lý truyền tin 3/43 8.1 BÀI TOÁN ĐƯỜNG ĐI NGẮN NHẤT (tiếp)  Thuật toán duyệt đồ thị theo chiều rộng cho ta lời giải tốn  Song ta có thêm thuật tốn sau 4/43 TÌM ĐƯỜNG ĐI NGẮN NHẤT 1) Lần lượt gán nhãn cho đỉnh đồ thị, đỉnh không lần, sau: - Đỉnh a gán nhãn số - Những đỉnh kề với đỉnh a gán số - Những đỉnh kề với đỉnh gán nhãn số 1, gán số - Tương tự, đỉnh kề với đỉnh gán số i gán nhãn số i+1 5/43 TÌM ĐƯỜNG ĐI NGẮN NHẤT (tiếp) 2) Thực gán nhãn cho đỉnh b không gán nhãn Nếu đỉnh b gán nhãn k kết luận có đường ngắn từ đỉnh a tới đỉnh b với độ dài k, ngược lại trả lời khơng có 6/43 TÌM ĐƯỜNG ĐI NGẮN NHẤT (tiếp) Khôi phục đường Nếu bước b gán nhãn k ta ngược lại theo quy tắc sau đây: Nếu đỉnh y gán nhãn j với j  có đỉnh x gãn nhãn j-1 cho có cạnh từ x tới y Đi ngược lại gặp đỉnh a, ta nhận đường ngắn cần tìm 7/43 BÀI TỐN SĨI, DÊ VÀ BẮP CẢI Một sói, dê bắp cải bờ sông Người lái đị phải đưa chúng sang sơng Nhưng thuyền bé nên chuyến chở “hành khách” thơi Vì lý mà biết, khơng thể bỏ mặc sói với dê dê với bắp cải mà khơng có người trơng Vậy người lái đị phải xử trí mà đưa sói, dê bắp cải sang bên sơng 8/43 BÀI TỐN SĨI, DÊ VÀ BẮP CẢI (tiếp) Xây dựng đồ thị vô hướng với đỉnh thể hành khách cịn lại bên phía xuất phát thời điểm khác Cạnh nối hai đỉnh thể chuyến đị qua sơng LSDB a LSD LDB LSB L D B SB D S B Ø Hình 8.1 Hành trình qua sơng sói, dê bắp cải 9/43 8.2 ĐỒ THỊ CÓ TRỌNG SỐ Định nghĩa 8.1: Đồ thị G gọi đồ thị có trọng số cạnh (i, j) đồ thị gán số nguyên không âm c(i,j) Nhãn c(i,j) cạnh (i, j) đồ thị thường biểu diễn “chi phí” thực tế để qua cạnh Ký hiệu đồ thị có trọng số (G, c) 10/43 8.6 ĐƯỜNG ĐI NGẮN NHẤT GIỮA CÁC CẶP ĐỈNH (tiếp)  Bài tốn giải cách sử dụng thuật toán Dijkstra với đỉnh đồ thị đỉnh xuất phát  Ta giải tốn trực tiếp thuật toán Floyd 30/43 8.6 ĐƯỜNG ĐI NGẮN NHẤT GIỮA CÁC CẶP ĐỈNH (tiếp) Sử dụng ma trận Dn x n để tính độ dài đường ngắn tất cặp đỉnh 1) Bắt đầu gán D := C - ma trận trọng số 2) Thực n lần lặp D Sau bước lặp thứ k, D[i,j] chứa độ dài đường ngắn từ đỉnh i đến đỉnh j mà qua đỉnh có số không vượt k: D(k)[i,j] := ( D(k-1)[i,j] , D(k-1)[i,k] + D(k-1)[k,j] ) , với k = 1, 2, , n 31/43 VÍ DỤ 8.4 Xét đồ giao thông sau đây: a b c Hình 8.4 Bản đồ giao thơng Kết tính tốn:  D1  0  D2 D3 0 D4 32/43 THUẬT TỐN FLOYD Thuật tốn 8.5 (Floyd) Dữ liệu: Ma trận trọng số C đồ thị Kết quả: Ma trận D cho biết khoảng cách tất cặp đỉnh 33/43 THUẬT TOÁN FLOYD (tiếp) BEGIN for i := to n for j := to n begin D[i,j] := C[i,j] ; TRUOC[i,j] := end ; for k := to n for i := to n for j := to n if D[i,k] + D[k,j] < D[i,j] then begin 10 D[i,j] := D[i,k] + D[k,j] ; 11 TRUOC[i,j] := k 12 end 13 END 34/43 THUẬT TỐN FLOYD (tiếp)  Khơi phục đường - Nếu TRUOC[i,j] = đưịng ngắn từ đỉnh i đến đỉnh j cạnh (i, j) - Để in đỉnh trung gian đường ngắn từ đỉnh i đến đỉnh j ta dùng thủ tục đệ quy sau 35/43 THUẬT TOÁN FLOYD (tiếp) procedure Duong_di ( i, j ) ; begin k := TRUOC[i,j] ; if k = then Exit ; Duong_di ( i, k ) ; write( k ) ; Duong_di ( k, j ) end ; 36/43 THUẬT TOÁN FLOYD (tiếp) Chẳng hạn, ma trận TRUOC ví dụ là: 0 0 Để xác định đường ngắn từ đỉnh đến đỉnh ta lấy k = TRUOC[1,2] = Vậy đường ngắn là: < 1, 3, > 37/43 8.7 TÂM CỦA ĐỒ THỊ Giả sử G = (V, E) đồ thị có trọng số không âm cạnh Ký hiệu: d(x,y) khoảng cách đỉnh x đỉnh y đồ thị G Đại lượng d(a) = max { d(x,a)x  V } gọi độ lệch đỉnh a đồ thị G 38/43 8.7 TÂM CỦA ĐỒ THỊ (tiếp) Định nghĩa 8.2 - Bán kính R đồ thị G độ lệch bé đỉnh: R = { d(a)  a  V} - Tâm đồ thị G đỉnh a có độ lệch bé nhất:  x  V, d(a)  d(x) 39/43 8.7 TÂM CỦA ĐỒ THỊ (tiếp) - Đường kính đồ thị G khoảng cách dài cặp đỉnh đồ thị: d = max { d(x,y)  x, y  V } 40/43 VÍ DỤ 8.5 Cho đồ thị G sau: a c b e Độ lệch  – bán kính d Đỉnh a b c d e Hình 8.5 Đồ thị có trọng số Vậy tâm đồ thị đỉnh d 41/43 8.7 TÂM CỦA ĐỒ THỊ (tiếp) Ý nghĩa tâm đồ thị: Dùng để xác định: - Thủ đô nước - Nút giao thông quan trọng thành phố - Vị trí đặt máy chủ mạng máy tính 42/43 THUẬT TỐN TÌM TÂM CỦA ĐỒ THỊ Thuật toán 8.5: Dùng thuật toán Floyd để tính ma trận D khoảng cách cặp đỉnh Tìm giá trị lớn cột, cho ta độ lệch đỉnh tương ứng Tìm đỉnh với độ lệch bé nhất, tâm đồ thị 43/43 VÍ DỤ 8.6 Ma trận khoảng cách D ví dụ là: a b c d e     3 5 7  Tâm: d Bán kính: Đường kính:  Nếu vẽ vịng trịn có tâm bán kính định nghĩa tất đỉnh đồ thị nằm vòng tròn 44/43

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