1. Trang chủ
  2. » Thể loại khác

Thuật toán trên đồ thị

42 3 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

Thuật toán đồ thị Một số khái niệm Đồ thị: G = {V, E}, V= n, n>0, E ⊆ V× V, V – tập đỉnh, E– tập cạnh E= m, m≥ Nếu (a,b)∈E mà suy (b,a) ∈E (b,a) = (a,b) G – vơ hướng Ngược lại, G – có hướng Nếu e=(a,b)∈E a gọi liền kề với b e liên thuộc với a b Ký hiệu V= { u1, u2, , un} 15.12.22 Dao Thanh Tinh Một số khái niệm (2) Cho đồ thị: G = {V, E}, Dãy α(uo,uk) = , với (ui,ui+1) ∈ E, i = 0, ,k-1 ui ∈ V, i = 0, ,k gọi đường từ uo tới uk Số cạnh có α(uo,uk) gọi độ dài đường (trong định nghĩa m) 15.12.22 Dao Thanh Tinh Một số khái niệm (3) Đồ thị: G = {V, E}, Cho ánh xạ f: E →R+, với ∀e∈E, f(e) – trọng số cạnh e Đồ thị G = {V,E,f} gọi có trọng số Xét đường α(uo,uk) = , Đại lượng µ(α(uo,uk)) = Σf(ui,ui+1)i = 0, ,k-1 gọi độ dài đường từ uo tới uk 15.12.22 Dao Thanh Tinh Một số khái niệm (4) Đồ thị: G = {V, E}, Đường kính đồ thị độ dài lớn đường cặp đỉnh Đồ thị G gọi liên thông hai đỉnh có đường Đường α(uo,uk) = gọi kín uo=uk 15.12.22 Dao Thanh Tinh Một số khái niệm (5) Đồ thị: G = {V, E}, Đường α(uo,uk) = gọi đơn cạnh có mặt đường khơng q lần Đường kín đơn gọi chu trình 15.12.22 Dao Thanh Tinh Một số khái niệm (6) Đồ thị G = {V, E} liên thơng, khơng có chu trình gọi Trong T = {V,E} có đỉnh đặc biệt gọi gốc gọi có thứ tự 15.12.22 Dao Thanh Tinh Duyệt đồ thị Đồ thị G = {V, E} liên thông Depth-First Search for all x∈V visited(x):= false; i:=0; DFS(v); output p[1 n]; Thời gian tính tốn O(|V|+|E|) Procedure DFS (v: đỉnh) a) b) c) visited(v):= true; i:=i+1; p[i] := v; for each w liền kề v If (visited(w)= false); DFS(w); 15.12.22 Dao Thanh Tinh Duyệt đồ thị (2) Đồ thị G = {V, E} liên thông Breadth-First Search MakeNil(Q); for all x∈V visited(x):= false; i:=1; visited(v):= true; p[i] := v; enqueue(v,Q); while (Q≠ NIL) a) u:=front(Q);dequeue(Q); b) for each x liền kề v If (visited(x)= false); enqueue(x,Q); visited(x):=true; inc(i); p[i]=x; output p[1 n]; 15.12.22 Dao Thanh Tinh Thời gian tính tốn O(|V|+|E|) Single-Source Shortest Paths Cho G={V,E} liên thông, f: E→R+ u, v ∈V Ký hiệu Ω(u,v) = {α(u,v)} Tìm α*(u,v) µ(α*(u,v)) = {µ(α(u,v)) : α(u,v) ∈ Ω(u,v)} The Implementation of Dijkstra’s Algorithm Với ∀x∈V ký hiệu L(x) – độ dài đường ngắn α*(u,x); Giá trị khởi tạo L(u) = 0; L(x) = + ∞ với ∀x∈V\{u} Ký hiệu tập S: x∈S L(x) = µ(α*(u,x)) V+(x) = {y ∈V : (x,y) ∈E} V-(x) = {y ∈V : (y,x) ∈ E} 15.12.22 Dao Thanh Tinh 10 The Network Flow Problem (4) Thuật toán: for each e ∈ E ϕ(e) := 0; µϕ := 0; repeat xố nhãn, dấu gán nhãn, dấu tính giá trị tăng λ*; if ϕ chưa cực đại thực tăng luồng ϕ; µϕ := µϕ + λ*; until ϕ -cực đại; 15.12.22 Dao Thanh Tinh 28 The Network Flow Problem (5) Gán nhãn, xác định giá trị tăng λ*: 1) Gán số cho đỉnh, u0 = a; 2) Gán dấu cho cung e thích hợp: Nếu e=(uk,x), ϕ(e)0 M(e)= ‘−‘ 2) Nhãn đỉnh x: L(x)={c(x), λ(x)} c(x)=k, số uk giá trị λ lớn mà luồng ϕ tăng kể từ cửa vào nút x Ví dụ, e=(x1,x4) gán dấu + L(x4) = {1, 6} xét dãy đỉnh từ x0, x1, x4 Nếu dấu e = (uk,x) ‘+’ tăng λ, ngược lại, dấu e=(x,uk) ‘-‘có thể giảm λ 15.12.22 Dao Thanh Tinh 29 The Network Flow Problem (6) 1) λ(u0) := +∞ ; R := {u0}; 2) while (R ≠ ∅) & (L(z)= { }) a) chọn uk ∈ R; R := R\{uk}; f =7 ϕ =1 u1 u4 { ,7} b) for each x ∈ V+(uk) or x ∈ V−(uk) if L(x) = { } if (x∈V+(uk)) & (ϕ(uk,x)0 if (L(x)≠ { }) f =2 ϕ =1 f =7 ϕ =0 + { ,∞} {1,6} + f =8 ϕ =1 u3 λ*=1 R={R={u R={u u41, u , 2u,u R={ 2u,3u3 R={u 2, u3 2, uo3 Dao Thanh Tinh 30 The Network Flow Problem (7) x := z; while x ≠ u0 u1 ϕ(x,uj) = ϕ(x,uj)- λ*; x = uj; u4 { ,7} j := c(x); if (M(uj,x)=‘+’) ϕ(uj,x) = ϕ(uj,x)+λ* else f =7 ϕ =1 uo f =2 ϕ =1 f =7 ϕ =0 + { ,∞} {1,6} + f =8 ϕ =1 f =10 { 0,10} ϕ =0 + λ*=1 + z {4,1} f =3 ϕ =0 u2 f =10 ϕ =0 x = z, j = c(x) = ϕ(u4,z) = ϕ(u4,z) + x = u4 j = c(x) = ϕ(u1,u4) = ϕ(u1,u4) + x = u1 j = c(x) = ϕ(u0,u1)=ϕ(u0,u1) + x = u0 STOP 15.12.22 f =3 ϕ =1 f =15 ϕ =1 + { 0,2} Dao Thanh Tinh u3 31 The Network Flow Problem (8) Định nghĩa W ⊆ V\ {z}, a ∈W, W* := V \W f =8 ϕ =1 Nhát cắt: (W,W*) ={ e=(u,v): u ∈W, u ∈W*} Dung lượng f(W,W*) =Σf(e), e ∈(W,W*) Ví dụ: W = {u0, u1, u2} f =7 ϕ =1 u1 uo u4 f =2 ϕ =1 f =7 ϕ =0 f =10 ϕ =0 u2 z f =3 ϕ =0 f =10 ϕ =0 W*={u3, u4, z} f =15 ϕ =1 f =3 ϕ =1 (W,W*) = {(u0,u3), (u1,u4), (u2,u3)} u3 f(W,W*) = 3+7+10 = 20 Định lý max ϕz giá trị bé nhát cắt mạng T 15.12.22 Dao Thanh Tinh 32 The Network Flow Problem (8) Định lý f =7 ϕ =7 u1 f =8 ϕ =7 max ϕz = giá trị bé nhát cắt mạng T u u4 f =2 ϕ =2 f =7 ϕ =2 f =10 o ϕ =8 Chứng minh z f =3 ϕ =3 u2 f =10 ϕ=10 Giả sử ϕ -luồng cực đại f =15 ϕ=16 f =3 ϕ =3 Thực thủ tục gán nhãn Kí hiệu W ={x∈V: L(x)≠ ∅}, W* = V\W u3 Do a ∈W, z ∉ W ⇒ (W,W*) – nhát cắt Nếu cửa z ∈W, L(z) ≠ ∅, tăng luồng µϕ= µϕ+λ(z) Mâu f =7 ϕ =7 u1 thuẫn! Vì ϕ - luồng cực đại f =8 ϕ =7 Xét (x,y)∈(W,W*) Rõ ràng ϕ(x,y) = f(x,y) Nếu ϕ(x,y)0 L(u) ≠ ∅, u∈W f =15 ϕ=16 f =3 ϕ =3 Như vậy, ϕ(W,W*)=f(W,W*), ϕ(W*,W)=0 Tự chứng minh: ϕ(W,W*)−ϕ(W*,W)≤ f(W,W*) u3 15.12.22 Dao Thanh Tinh 33 The Network Flow Problem (8) Định lý f =7 ϕ =7 u1 f =8 ϕ =7 max ϕz = giá trị bé nhát cắt mạng T u u4 f =2 ϕ =2 f =7 ϕ =2 f =10 o ϕ =8 z f =3 ϕ =3 u2 f =10 ϕ=10 Xét mạng gán nhãn với L(z)=∅ W = {u0, u1, u2, u4} W*={u3, z} u3 (W,W*) = {(u0,u3), (u2,u3), (u4,u3), (u4,z)} f =7 ϕ =7 u1 f(W,W*) = 3+10+3+2 = 18 f =8 ϕ =7 ϕ(W,W*) = 18 ϕ(W*,W) = f =15 ϕ=16 f =3 ϕ =3 uo { ,∞} u4 {2,2} {0,1} f =7 ϕ =2 + f =10 ϕ =8 + µ ϕ = 18 f =2 ϕ =2 − u2 {0,2} z f =3 ϕ =3 f =10 ϕ=10 f =15 ϕ=16 f =3 ϕ =3 u3 15.12.22 Dao Thanh Tinh 34 The Network Flow Problem (8) Author(s) Ford; Fulkerson Edmonds; Karp Dinic Karzanov Cherkassky Malhotra; et al : Galil Galil and Naamad Sleator and Tarjan Goldberg and Tarjan 15.12.22 Y ear 1956 1969 1970 1973 1976 1978 1978 1979 1980 1985 Dao Thanh Tinh Complexity O(E2V ) O(EV2) O(V3) O(√ EV2) O(V3) O(V5/3.E2/3) O(EV.log2V ) O(EV.log V ) O(EV.log (V2/E)) 35 Mạng PERT (1) Bài tốn: Dự án A có n cơng việc tên 1, 2, …, n Việc thứ i, i=1, ,n, có số việc tiên quyết, lưu danh sách Ci, tức bắt buộc phải thực xong việc Ci thực việc i Trong điều kiện cho trước, việc i cần thời gian ti để hoàn thành Dự án A khởi động vào thời điểm t0 1) Tính thời điểm sớm T hoàn thành dự án A 2) Trong thời hạn nêu phần 1) thời điểm bắt đầu sớm nhất, muộn công việc thời gian dự trữ công việc 15.12.22 Dao Thanh Tinh 36 Mạng PERT (2) Ví dụ P1: 15.12.22 TT Tên cơng việc Việc TQ Thời gian Khảo sát Đào móng Tập kết vật liệu 4 Xây móng, tường 2,3 14 Làm mộc 20 Lắp cửa 4,5 Đổ trần – mái 3,4 25 Trát tường, trần 4,7 Quét vôi 6,8 10 Lắp đặt thiết bị 6,8,9 11 Xây hàng rào, cổng 7,8 Dao Thanh Tinh 37 Mạng PERT (3) Sử dụng mô hình đồ thị có hướng G={V,E}: Mỗi cơng việc tương ứng với đỉnh V ={1, 2, ,n} Thêm vào đỉnh đặc biệt n+1, ý nghĩa Khởi công Kết thúc t0 = 0, C0 = ∅ Với ∀ i ∈ {1, ,n}, Ci= ∅, đặt Ci= {0}, tn+1= 0, Cn+1= { j ∈ {1, ,n}: u ∈ Cv ⇒ (u,v) ∈ E j∉Ck, ∀ k=1,2 ,n } f(u,v) = tu 15.12.22 Dao Thanh Tinh 38 Mạng PERT (4) Thuật tốn: Kí hiệu: xi – thời điểm sớm bắt đầu việc i yi – thời điểm sớm kết thúc việc i pi – thời điểm muộn kết thúc việc i xj = max { xi + f(i,j) : ∀ i∈ Cj } pi = { pj - f(i,j), ∀ j mà (i,j) ∈E } Đặt t0=0 Suy ra: x0=0, T = xn+1 = yn+1 = pn+1 15.12.22 Dao Thanh Tinh 39 Mạng PERT (5) xj = max { xi + f(i,j) : ∀ i∈ Cj } TT Công việc TQ f(i,j) Biểu thức tính (max) Khởi cơng Khảo sát 0 Đào móng 0+3 3 Tập kết vật liệu 0+3 Xây móng, tường 2,3 14 3+6, 3+4 Làm mộc 20 3+4 Lắp cửa 4,5 9+14, 7+20 27 Đổ trần – mái 3,4 25 3+4, 9+14 23 Trát tường, trần 4,7 9+14, 23+25 48 Quét vôi 6,8 27+4, 48+5 53 10 Lắp đặt thiết bị 6,8,9 27+4, 48+5, 53+3 56 11 Hàng rào, cổng 7,8 23+25, 48+5 53 12 Kết thúc 10,11 56+5, 53+4 61 15.12.22 Thời điểm x Dao Thanh Tinh 40 Mạng PERT (6) pi = { pj - f(i,j), ∀ j mà (i,j) ∈E } TT Công việc TQ f(i) Biểu thức tính (min) Khởi cơng Khảo sát 9-6, 9-4 Đào móng 23-14 Tập kết vật liệu 23-14, 49-20 48-25 Xây móng, tường 2,3 14 53-4, 48-25, 53-5 23 Làm mộc 20 53-4 49 Lắp cửa 4,5 56-3, 61-5 53 Đổ trần – mái 3,4 25 53-5, 61-4 48 Trát tường, trần 4,7 56-3, 61-5, 61-4 53 Quét vôi 6,8 61-5 56 10 Lắp đặt thiết bị 6,8,9 61-0 61 11 Hàng rào, cổng 7,8 61-0 61 12 Kết thúc 10,11 15.12.22 Thời điểm p 61 Dao Thanh Tinh 41 Mạng PERT (7) TT Tên công việc Việc trước f(i) BĐ sớm (x) Dự trữ BĐ muộn KT muộn nhất (p) Khởi công Khảo sát 0 Đào móng 3 Tập kết vật liệu 5 Xây móng, tường 2,3 14 9 23 Làm mộc 20 29 29 49 Lắp cửa 4,5 49 49 53 Đổ trần – mái 3,4 25 23 23 48 Trát tường, trần 4,7 48 48 53 Quét vôi 6,8 53 53 56 10 Lắp đặt thiết bị 6,8,9 56 56 61 11 Hàng rào, cổng 7,8 57 57 61 12 Hoàn thiện 10,11 61 61 61 15.12.22 0 Dao Thanh Tinh 42

Ngày đăng: 15/12/2022, 12:39

Xem thêm:

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w