Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 43 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
43
Dung lượng
368 KB
Nội dung
Bi toỏn ghộp cp Graph Matching Graph Matching Bi toỏn ghộp cp trờn th Giả sử G=(V,E) đồ thị vô hớng, cạnh (v,w) đợc gán với số thực c(v,w) gọi trọng số Định nghĩa Cặp ghép M đồ thị G tập cạnh đồ thị hai cạnh có đỉnh chung Số cạnh M - kích thớc, Tổng trọng số cạnh M - trọng lợng cặp ghép Cặp ghép với kích thớc lớn đợc gọi cặp ghép cực đại Cặp ghép với trọng lợng lớn đợc gọi cặp ghép lớn Cặp ghép đợc gọi đầy đủ (hoàn hảo) đỉnh đồ thị đầu mút cạnh cặp ghép Graph Matching Hai bi toỏn Bài toán cặp ghép cực đại: Tìm cặp ghép với kích thớc lớn đồ thị G Bài toán cặp ghép lớn nhất: Tìm cặp ghép với trọng lợng lớn đồ thị G Ta hạn chế xét toán đặt đồ thị hai phía G = (X Y, E) Graph Matching Vớ d Cp ghộp cc i Cp ghộp Cp ghộp Graph Matching khụng l cp ghộp Cp ghộp hon ho Vớ d 12 x1 y1 x2 y2 x3 y3 x4 y4 Cp ghộp ln nht: M = {(x1, y1), (x2, y3), (x3, y2), (x4, y4)} Cú trng lng 29 Graph Matching Bài toán cặp ghép cực đại đồ thị hai phía Xét đồ thị hai phía G = (X Y, E) Cặp ghép tập cạnh mà hai cạnh có chung đỉnh Bài toán: Tìm cặp ghép kích thớc lớn 10 Graph Matching Qui Bài toán luồng cực đại s 10 Mi cung (s, i) cú kntq Mi cung (j, t) cú kntq Graph Matching t Mi cnh c thay th bi cung cú kntq Tỡm lung cc i s 10 t Lung cc i t s->t cú giỏ tr Cp ghộp cc i cú kớch thc Graph Matching Bài toán cặp ghép cực đại đồ thị hai phía Giả sử M cặp ghép G Nếu cạnh e = (x, y) M, ta nói e cạnh cặp ghép (hay cạnh đậm) đỉnh x, y đỉnh đậm (hay không tự do) Nếu cạnh e = (x, y) M, ta nói e cạnh nhạt đỉnh x, y đỉnh nhạt (hay tự do) Graph Matching ng tng cp ghộp Một đờng đồ thị G mà hai cạnh liên tiếp không đậm hay nhạt đ ợc gọi đờng luân phiên đậm/nhạt (hay gọi ngắn gọn đờng luân phiên) Đờng luân phiên đỉnh tự thuộc tập X kết thúc đỉnh tự thuộc tập Y đợc gọi đờng tăng cặp ghép Graph Matching 10 Thut toỏn Bớc 0: Tìm phép gán nhãn chấp nhận đợc f Bớc 1: Xây dựng đồ thị cân Gf Bớc 2: Tìm cặp ghép cực đại M Gf Bớc 3: Nếu M cặp ghép đầy đủ cặp ghép lớn cần tìm Thuật toán kết thúc Bớc 4: Gọi S tập đỉnh tự X Thực tìm kiếm từ đỉnh S Gọi T tập đỉnh Y đợc thăm trình tìm kiếm Bổ sung đỉnh X đợc thăm trình tìm kiếm vào S Bớc 5: Tiến hành điều chỉnh nhãn f ta bổ sung đợc cạnh vào Gf tìm đợc đờng tăng, bổ sung đỉnh đợc thăm vào S T tơng ứng nh mô tả Tăng cặp ghép M quay lại bớc Graph Matching 29 Tng hiu qu Để có đợc thuật toán với đánh giá thời gian tính tốt hơn, vấn đề đặt làm tính đợc giá trị lần sửa nhãn pha điều chỉnh cách nhanh chóng Ta xác định độ lệch cạnh theo công thức slack(x, y) = f(x) + f(y) c(x, y) Graph Matching 30 Tng hiu qu Khi = slack ( x, y ) Rõ ràng việc tính trực tiếp theo công * thức đòi hỏi thời gian O(n2) Bây giờ, với x S , y T đỉnh T* ta ghi nhận lại cạnh với độ lệch nhỏ slack ( y j ) = slack ( xi , y j ) xi S Graph Matching 31 Tng hiu qu Việc tính giá trị độ lệch slack(yj) đòi hỏi thời gian O(n2) đầu pha điều chỉnh Khi tiến hành pha điều chỉnh ta sửa lại tất độ lệch thời gian O(n) chúng bị thay đổi giá trị (do nhãn đỉnh S giảm đồng loạt giá trị ) Khi đỉnh x đợc chuyển từ S* sang S ta cần tính lại độ lệch đỉnh T*, việc đòi hỏi thời gian O(n) Tuy nhiên kiện đỉnh đợc chuyển từ S* sang S xảy nhiều n lần Nh vậy, pha điều chỉnh cài đặt với thời gian O(n2) Do có không n pha điều chỉnh thuật toán, nên cách cài đặt cho ta thuật toán với thời gian tính O(n3) Graph Matching 32 Vớ d Xột bi toỏn vi ma trn hiu qu Graph Matching 33 Vớ d Bt u t phộp gỏn nhón th cõn bng Gf Cặp ghép cực đại tìm đợc M = {(x1,y2), (x2,y1), (x4, y4) } Tìm kiếm theo chiều rộng đỉnh tự x3 ta có S = { x2 , x3 }, T = {y1} Graph Matching 34 Vớ d Tính = {f(x)+f(y)-w(x,y): x {x2, x3}, y {y2, y3, y4} } = Tiến hành sửa nhãn, ta đến phép gán nhãn Graph Matching 35 Vớ d Theo đờng tăng cặp ghép x3, y3, x4, y4 ta tăng cặp ghép M thành cặp ghép đầy đủ M ={(x1,y2), (x3,y1), (x2,y3), (x4,y4)}, đồng thời cặp ghép tối u với trọng lợng w(M) = + + + = 13 Graph Matching 36 Ci t trờn Pascal const maxn = 170; type var data1=array [1 maxn,1 maxn] of integer; data2=array [1 2*maxn] of integer; data3=array [1 2*maxn] of longint; c: data1; px, py, q, queue: data2; a, b, f: data3; n, n2, k, u, z: integer; Graph Matching 37 Khi to procedure init; var i, j: integer; begin n2:= n+n; fillchar(f,sizeof(f),0); for i:=1 to n for j:=1 to n if f[i]0 then dec(f[i],d); for j:=n+1 to n2 if q[j]>0 then inc(f[j],d); end; Graph Matching 41 Main Procedure procedure Solve; begin init; while FreeNodeFound begin while not FoundIncPath suanhan; Tangcapghep; end; end; Graph Matching 42 Graph Matching 43 [...]... vậy, để xét xem đồ thị G có chứa đờng tăng cặp ghép hay không, có thể thực hiện thuật toán tìm kiếm theo chiều rộng trên đồ thị GM bắt đầu từ các đỉnh tự do thuộc tập X Graph Matching 14 Thut toỏn Sử dụng cách tìm đờng tăng cặp ghép theo nhận xét vừa nêu, từ sơ đồ tổng quát dễ dàng xây dựng thuật toán để giải bài toán tìm cặp ghép cực đại trên đồ thị hai phía với thời gian tính O(n3), trong đó n =... tơng ứng với các công việc Mỗi cạnh (xi, yj) đợc gán cho trọng số w(xi, yj) = wij Khi đó trong ngôn ngữ đồ thị, bài toán phân công có thể phát biểu nh sau: Tìm trong đồ thị G cặp ghép đầy đủ có tổng trọng số là lớn nhất Cặp ghép nh vậy đợc gọi là cặp ghép tối u Graph Matching 20 Cơ sở thuật toán Ta gọi một phép gán nhãn chấp nhận đợc cho các đỉnh của đồ thị G=(X Y,E) là một hàm số f xác định trên tập... Procedure MaxMatching; begin Stop:=false; Fillchar(Vo,Sizeof(Vo),0); Fillchar(Chong,Sizeof(Chong),0); Cnt:=0; While not Stop do begin Tim_duong_tang; If not Stop then Tang; end; end; Graph Matching 18 Bài toán phân công Có n công việc và n thợ Mỗi thợ đều có khả năng thực hiện tất cả các công việc Biết wij - hiệu quả phân công thợ i làm việc j, (i, j = 1, 2, , n) Cần tìm cách phân công thợ thực hiện các... G Do đó, Định lý 1 là đúng với đồ thị vô hớng bất kỳ Graph Matching 12 Thuật toán tìm cặp ghép cực đại Đầu vào: Đồ thị vô hớng G = (V, E) Bớc khởi tạo Xây dựng cặp ghép M trong đồ thị G (có thể bắt đầu từ M = ) Bớc lặp Kiểm tra tiêu chuẩn tối u: Nếu đồ thị G không chứa đờng tăng cặp ghép thì M là cặp ghép cực đại, thuật toán kết thúc Ngợc lại, gọi P là một đờng tăng cặp ghép xuất phát từ đỉnh tự... bằng (bằng việc duyệt hết các cạnh) Từ đó suy ra đánh giá thời gian tính của thuật toán là O(n4) Graph Matching 28 Thut toỏn Bớc 0: Tìm một phép gán nhãn chấp nhận đợc f Bớc 1: Xây dựng đồ thị cân bằng Gf Bớc 2: Tìm cặp ghép cực đại M trong Gf Bớc 3: Nếu M là cặp ghép đầy đủ thì nó là cặp ghép lớn nhất cần tìm Thuật toán kết thúc Bớc 4: Gọi S là tập các đỉnh tự do trong X Thực hiện tìm kiếm từ các... nhiên sự kiện một đỉnh đợc chuyển từ S* sang S chỉ xảy ra nhiều nhất n lần Nh vậy, mỗi pha điều chỉnh có thể cài đặt với thời gian O(n2) Do có không quá n pha điều chỉnh trong thuật toán, nên cách cài đặt này cho ta thuật toán với thời gian tính O(n3) Graph Matching 32 Vớ d Xột bi toỏn vi ma trn hiu qu Graph Matching 33 Vớ d Bt u t phộp gỏn nhón th cõn bng Gf Cặp ghép cực đại tìm đợc M = {(x1,y2),... trong Y trong quá trình thực Ký hiệu * hiện tìm kiếm * S = X \ S; T = Y \ T | S | > | T | (do mỗi đỉnh trong T đạt đợc từ một đỉnh nào đó trong S) Graph Matching 25 iu chnh nhón Từ tính chất của thuật toán tìm kiếm theo chiều rộng, rõ ràng, không có cạnh nào từ S đến T* Để sửa chữa nhãn, chúng ta sẽ tiến hành giảm đồng loạt các nhãn trong S đi cùng một giá trị nào đó, và đồng thời sẽ tăng đồng loạt... sung đợc các cạnh vào Gf cho đến khi tìm đợc đờng tăng, bổ sung các đỉnh mới đợc thăm vào S và T tơng ứng nh đã mô tả ở trên Tăng cặp ghép M và quay lại bớc 3 Graph Matching 29 Tng hiu qu Để có đợc thuật toán với đánh giá thời gian tính tốt hơn, vấn đề đặt ra là làm thế nào có thể tính đợc giá trị tại mỗi lần sửa nhãn của pha điều chỉnh một cách nhanh chóng Ta xác định độ lệch của các cạnh theo công thức... trong T lên Điều đó đảm bảo các cạnh từ S sang T (nghĩa là những cạnh mà một đầu mút thuộc S còn một đầu mút thuộc T) không bị loại bỏ khỏi đồ thị cân bằng S* T* Các tập S và T trong thực hiện thuật toán Chỉ vẽ các cạnh trong Gf Graph Matching 26 iu chnh nhón Khi các nhãn trong S bị giảm, các cạnh trong G từ S sang T* sẽ có khả năng gia nhập vào đồ thị cân bằng Gf Ta sẽ tăng đến khi có thêm ít nhất ... Matching Bài toán cặp ghép cực đại đồ thị hai phía Xét đồ thị hai phía G = (X Y, E) Cặp ghép tập cạnh mà hai cạnh có chung đỉnh Bài toán: Tìm cặp ghép kích thớc lớn 10 Graph Matching Qui Bài toán. .. Matching Hai bi toỏn Bài toán cặp ghép cực đại: Tìm cặp ghép với kích thớc lớn đồ thị G Bài toán cặp ghép lớn nhất: Tìm cặp ghép với trọng lợng lớn đồ thị G Ta hạn chế xét toán đặt đồ thị hai... kntq Tỡm lung cc i s 10 t Lung cc i t s->t cú giỏ tr Cp ghộp cc i cú kớch thc Graph Matching Bài toán cặp ghép cực đại đồ thị hai phía Giả sử M cặp ghép G Nếu cạnh e = (x, y) M, ta nói e cạnh