Slide bài giảng Toán rời rạc 2 – Vũ Văn Thỏa

16 89 0
Slide bài giảng Toán rời rạc 2 – Vũ Văn Thỏa

Đ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

CH ƠNG BÀI TỐN TÌM Đ 4.1 Đ NG ĐI NG N NH T ng ng n nh t xu t phát từ đỉnh 4.1.1 Thu t toán Dijkstra 1) Đặt toán: Input: Đồ thị G gồm n đỉnh cho ma trận trọng số a với phần tử  0, a[i][j]= max khơng có cạnh nối i với j; Đỉnh s; Output: Độ dài d[v] đường từ s đến v pr[v] đỉnh trước v đường từ s đến v 2) Mơ t thu t tốn Khởi tạo: d[v]= a[s][v]; pr[v]= s; vs[v]= 0; (1) Bắt đầu tìm kiếm từ s: d[s]= 0; pr[s]= 0; vs[s]= 1; (2) Tìm đỉnh u cho d[u]= min{d[i] | vs[i] = 0} Nếu khơng tìm chuyển sang (5) Nếu tìm sang (3) (3) Đặt vs[u]= (4) Đối với tất v  G thỏa mãn (vs[v]= 0) & (d[v]> d[u] + a[u][v]) thay thế: pr[v]= u; d[v]= d[u] + a[u][i]; quay lại (2) (5) Xuất d[v] pr[v] 3) Kiểm nghiệm thu t tốn Ví dụ: Cho đồ thị có trọng số G hìmh bên Tìm đường ngắn xuất phát từ đỉnh a Gi i: Lần lượt có: i Kết qu : a 0; B 2; a 2; a c 9; a 3; b 3; b d m; a 6; b 6; b 6; b e 10; a 10; a 10; a 8; d 8; d Độ dài đường ngắn từ a đến b 2: a  b Độ dài đường ngắn từ a đến c 3: a  b  c Độ dài đường ngắn từ a đến d 6: a  b  d Độ dài đường ngắn từ a đến e 8: a  b  d  e Ghi chú: Trong thực tế thường sử dụng giải thuật vào toán sau: Input: Đồ thị G gồm n đỉnh cho ma trận trọng số a với phần tử  0, a[i, j]= max khơng có cạnh nối i với j; Hai đỉnh s t; Output: Độ dài d[t] đường từ s đến t đường từ s đến t Gi i thu t: Khởi tạo: d[i]= a[s, i]; pr[i]= s; vs[i]= 0; (1) Bắt đầu tìm kiếm từ s: d[s]= 0; pr[s]= 0; vs[s]= 1; (2) Tìm đỉnh u cho d[u]= min{d[i] | vs[i] = 0} Nếu khơng tìm chuyển sang (5) Nếu tìm sang (3) (3) Đặt vs[u]= Nếu u= t chuyển sang (5); ngược lại chuyển sang (4); (4) Đối với tất i  G thỏa mãn (vs[i]= 0) & (d[i]> d[u] + a[u,v]) thay thế: pr[i]= u; d[i]= d[u] + a[u, i]; quay lại (2) (5) Nếu d[t] < max xuất d[t] đường từ s đến t; ngược lại xuất khơng có đường từ s đến t V́ ḍ Cho đồ thị G = (V,E), với V = {1, 2, 3, 4, 5} biểu dĩn hình ṽ sau, tìm đường ngắn từ đỉnh đến đỉnh Kết qu : đường ngắn 1  độ dài 4) Độ phức tạp tính tốn Giải thuật Dijkstra có độ phức tạp O(n2) 4.1.2 Thu t toán Bellman-Ford 1) Đặt toán: Input: Đồ thị G gồm n đỉnh cho ma trận trọng số a khơng chứa chu trình âm, a[i][j]= max khơng có cạnh nối i với j; Đỉnh s; Output: Độ dài d[v] đường từ s đến v pr[v] đỉnh trước v đường từ s đến v 2) Mơ t thu t tốn Khởi tạo: d[v]= a[s][v]; pr[v]= s; vs[v]= 0; (1) Bắt đầu tìm kiếm từ s: d[s]= 0; pr[s]= 0; vs[s]= 1; (2) Thực n-2 lần lặp: (2.1) Với đỉnh v  V\{s} thực (2.2) Với đỉnh u  V thực Nếu d[v]> d[u] + a[u][v] thay thế: pr[v]= u; d[v]= d[u] + a[u][i]; (3) Xuất d[v] pr[v] 10 3) Kiểm nghiệm thu t tốn Ví dụ: Cho đồ thị có trọng số G hìmh bên Tìm đường ngắn xuất phát từ đỉnh a 11 Gi i: Lần lượt có: k Kết qu : a 0; B 2; a 2; a 2; a 2; a 2; a c 9; a 3; b 3; b 3; b 3; b d ∞; a 6; b 6; b 6; b 6; b e 10; a 8; a 8; a 8; a 8; a Độ dài đường ngắn từ a đến b 2: a  b Độ dài đường ngắn từ a đến c 3: a  b  c Độ dài đường ngắn từ a đến d 6: a  b  d Độ dài đường ngắn từ a đến e 8: a  b  d  e 12 4) Độ phức tạp tính tốn Thuật tốn Bellman-ford có độ phức tạp O(n3) 13 4.2 Đ ng ng n nh t cặp đỉnh 1) Đặt toán Input: Đồ thị G gồm n đỉnh cho ma trận trọng số a với phần tử  0, a[i][j]= max khơng có cạnh nối i với j; Output: Độ dài d[i][j] đường từ i đến j pr[i][j] đỉnh trước j đường từ i đến j 14 2) Gi i thu t Floyd - Khởi tạo: d[i][j]= a[i][j]; pr[i][j]= i; - Với k  G, i  G, j  G cho (d[i][j]> d[i][k] + d[k][j]) thay thế: pr[i][j]= k; d[i][j]= d[i][k] + d[k][j]; - Xuất d[i][j] pr[i][j] 15 3) Độ phức tạp tính tốn Thuật tốn floyd có độ phức tạp O(n3) 16 ... s đến v 2) Mơ t thu t tốn Khởi tạo: d[v]= a[s][v]; pr[v]= s; vs[v]= 0; (1) Bắt đầu tìm kiếm từ s: d[s]= 0; pr[s]= 0; vs[s]= 1; (2) Thực n -2 lần lặp: (2. 1) Với đỉnh v  V{s} thực (2. 2) Với đỉnh... lượt có: k Kết qu : a 0; B 2; a 2; a 2; a 2; a 2; a c 9; a 3; b 3; b 3; b 3; b d ∞; a 6; b 6; b 6; b 6; b e 10; a 8; a 8; a 8; a 8; a Độ dài đường ngắn từ a đến b 2: a  b Độ dài đường ngắn từ... ngắn 1  độ dài 4) Độ phức tạp tính tốn Giải thuật Dijkstra có độ phức tạp O(n2) 4.1 .2 Thu t toán Bellman-Ford 1) Đặt toán: Input: Đồ thị G gồm n đỉnh cho ma trận trọng số a không chứa chu trình

Ngày đăng: 23/11/2017, 18:24

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan