bài toán ghép cặp

43 773 0
bài toán ghép cặp

Đ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

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) 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 gọi cặp ghép cực đại Cặp ghép với trọng lượng lớn gọi cặp ghép lớn Cặp ghép 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 Graph Matching Cp ghộp 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 1.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 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 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 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 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ạnh vào Gf tìm đường tăng, bổ sung đỉnh thăm vào S T tương ứng mô tả Tăng cặp ghép M quay lại bước Graph Matching 29 Tng hiu qu Để 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 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 ) xS , yT 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 đỉ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 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 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 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 [...]... M* là cặp ghép tối ưu Graph Matching 23 S thut toỏn Ta sẽ bắt đầu từ một phép gán nhãn chấp nhận được f Xây dựng đồ thị Gf Bắt đầu từ một cặp ghép M nào đó trong Gf ta xây dựng cặp ghép đầy đủ trong Gf Nếu tìm được cặp ghép đầy đủ M*, thì nó chính là cặp ghép tối ưu Ngược lại, ta sẽ tìm được cặp ghép cực đại không đầy đủ M' Từ M' ta sẽ tìm cách sửa phép gán nhãn thành f' sao cho M' vẫn là cặp ghép. .. Xây dựng cặp ghép M theo qui tắc: M = (MP) \ (MP) Dễ thấy M cũng là cặp ghép và rõ ràng |M| = |M| +1 Mâu thuẫn thu được đã chứng minh điều kiện cần Graph Matching 11 nh lý Berge Điều kiện đủ Giả sử cặp ghép M chưa là cặp ghép cực đại Gọi M* là cặp ghép cực đại Xét đồ thị G = (V, MM*) Rõ ràng hai cạnh liên tiếp trong mỗi đường đi cũng như mỗi chu trình trong G không thể thuộc cùng một cặp ghép M hoặc... nhận được Nếu Gf chứa cặp ghép đầy đủ M*, thì M* là cặp ghép tối ưu Chứng minh Giả sử Gf chứa cặp ghép đầy đủ M* Khi đó từ định nghĩa Gf suy ra M* cũng là cặp ghép đầy đủ của đồ thị G Gọi w(M*) là trọng lượng của M*: w (e ) w(M * ) = eM * Do mỗi cạnh e M* đều là cạnh của Gf và mỗi đỉnh của G kề với đúng một cạnh của M*, nên w( M * ) = eM * w ( e) = f ( v ) vV Giả sử M là một cặp ghép đầy đủ tuỳ ý của... 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ự do x0 X, kết thúc ở đỉnh tự do y0 Y Tăng cặp ghép theo qui tắc M:= (MP) \ (MP), rồi lặp lại bước lặp Graph Matching 13 Tỡm ng tng Từ đồ thị G ta xây dựng đồ thị có... ứ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=(XY,E) là một hàm số f xác định trên tập...nh lý Berge Định lý 1 (Berge C) Cặp ghép M là cực đại khi và chỉ khi không tìm được đường tăng cặp ghép CM: Điều kiện cần Bằng phản chứng Giả sử M là cặp ghép cực đại nhưng vẫn tìm được đường tăng cặp ghép P x0, y1, x1, y2, , xk, y0 trong đó x0 và y0 là các đỉnh tự do Gọi EP là tập các cạnh của đồ thị nằm trên đường... gọi là đồ thị tăng cặp ghép Dễ thấy: ường tăng cặp ghép tương ứng với một đường đi xuất phát từ một đỉnh tự do x0 X kết thúc tại một đỉnh tự do y0 Y trên đồ thị GM Ngược lại, một đường đi trên đồ thị GM xuất phát từ một đỉnh tự do x0 X kết thúc tại một đỉnh tự do y0 Y sẽ tương ứng với một đường tăng cặp ghép trên đồ thị G Vì vậy, để xét xem đồ thị G có chứa đường tăng cặp ghép hay không, có thể... 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ừ Graph các Matching đỉnh tự do thuộc tập X 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 = max (|X|,... 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... {f(x)+f(y)-w(x,y): x{x2, x3}, y {y2, y3, y4} } = 1 Tiến hành sửa nhãn, ta đi đến phép gán nhãn mới 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 là cặp ghép tối ưu với trọng lượng w(M) = 4 + 2 + 5 + 2 = 13 Graph Matching 36 ... gọi cặp ghép lớn Cặp ghép 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. .. 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. .. 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 gọi cặp ghép cực đại Cặp ghép

Ngày đăng: 10/11/2015, 10:10

Mục lục

    Bi toỏn ghộp cp trờn th

    Bài toán cặp ghép cực đại trên đồ thị hai phía

    Qui về Bài toán luồng cực đại

    Tỡm lung cc i

    ng tng cp ghộp

    Thuật toán tìm cặp ghép cực đại

    Bài toán phân công

    Qui v bi toỏn cp ghộp ln nht

    Cơ sở thuật toán

    Tiờu chun ti u

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

  • Đang cập nhật ...

Tài liệu liên quan