Bài giảng Toán rời rạc (Phần II: Lý thuyết đồ thị): Bài toán ghép cặp - Nguyễn Đức Nghĩa
lượt xem 4
download
Chương này trình bày về Bài toán ghép cặp (Graph Matching) với những nội dung chính sau: Bài toán ghép cặp 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, đường tăng cặp ghép, thuật toán tìm cặp ghép cực đại,... Mời các bạn cùng tham khảo.
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Bài giảng Toán rời rạc (Phần II: Lý thuyết đồ thị): Bài toán ghép cặp - Nguyễn Đức Nghĩa
- Bài toán ghép cặp Graph Matching Graph Matching 1
- Bài toán ghép cặp trên đồ thị Gi¶ sö G=(V,E) lµ ®å thÞ v« híng, trong ®ã mçi c¹nh (v,w) ®îc g¸n víi mét sè thùc c(v,w) gäi lµ träng sè cña nã. §Þnh ng hÜa. CÆ p ghÐp M trªn ®å thÞ G lµ tËp c¸c c¹nh cña ®å thÞ trong ®ã kh«ng cã hai c¹nh nµo cã ®Ønh chung. S è c¹nh trong M kÝc h thíc , Tæ ng träng s è cña c¸c c¹nh trong M träng lîng cña cÆ p ghÐp. CÆ p ghÐp víi kÝ ch thíc lín nhÊt ®îc gäi lµ c Æp g hÐp c ùc ®¹i. CÆ p ghÐp víi träng lîng lín nhÊt ®îc gäi lµ c Æp g hÐp lín nhÊt. CÆ p ghÐp ®îc gäi lµ ®Çy ®ñ (ho µn h¶o ) nÕu m çi Graph Matching ®Ønh cña ®å thÞ lµ ®Çu m 2 é t c¹nh trong ót cña Ý t nhÊt m
- Hai bài toán Bµi to ¸n c Æp g hÐp c ùc ®¹i: T×m cÆ p ghÐp víi kÝ ch thíc lín nhÊt trong ®å thÞ G. Bµi to ¸n c Æp g hÐp lín nhÊt: T×m cÆ p ghÐp víi träng lîng lín nhÊt trong ®å thÞ G. Ta h¹n chÕ xÐt c¸c bµi to¸n ®Æ t ra trªn ®å thÞ hai phÝ a G = (X Y , E). Graph Matching 3
- Ví dụ Cặp ghép cực đại Cặp ghép không là cặp ghép Cặp ghép Cặp ghép hoàn hảo Graph Matching 4
- Ví dụ 12 x1 y1 3 4 x2 y2 8 3 x3 2 y3 4 x4 6 y4 Cặp ghép lớn nhất: M = {(x1, y1), (x2, y3), (x3, y2), (x4, y4)} Có trọng lượng 29. Graph Matching 5
- Bµi to ¸n c Æp g hÐp c ùc ®¹i trªn ®å thÞ hai phÝa 1 6 XÐt ®å thÞ hai phÝa G = (X Y , E). 2 7 CÆp g hÐp lµ tËp c ¹nh mµ kh«ng c ã hai c ¹nh nµo c ã c hung ®Ønh 3 8 Bµi to ¸n: T×m c Æp 4 9 g hÐp kÝc h thíc lín nhÊt 5 10 Graph Matching 6
- Qui vÒ Bµi to¸n luång cùc ®¹i 1 6 2 7 s 3 8 t 4 9 5 10 Mỗi cạnh được thay thế bởi Mỗi cung (s, i) có kntq 1. cung có kntq 1. Mỗi cung (j, t) có kntq 1. Graph Matching 7
- Tìm luồng cực đại 1 6 2 7 s 3 8 t 4 9 5 10 Luồng cực đại từ s->t có giá trị 4. Cặp ghép cực đại có kích thước 4. Graph Matching 8
- Bµi to ¸n c Æp g hÐp c ùc ®¹i trªn ®å thÞ hai phÝa Gi¶ sö M lµ mét cÆp ghÐp trªn G. NÕu c¹nh e =(x, y) M, ta nãi e lµ c¹nh cña cÆp ghÐp (hay c¹nh ®Ëm) vµ c¸c ®Ønh x, y lµ c¸c ®Ønh ®Ëm (hay kh«ng tù do). NÕu c¹nh e =(x, y) M, th×ta nãi e lµ c¹nh nh¹t cßn c¸c ®Ønh x, y lµ c¸c ®Ønh nh¹t (hay tù do). Graph Matching 9
- Đường tăng cặp ghép Mé t ®ê ng ®i trªn ®å thÞ G m µ trong ®ã hai c¹nh liªn tiÕp lµ kh«ng cïng ®Ëm hay nh¹t s Ï ®îc gäi lµ ®ê ng ®i lu©n p hiª n ®Ëm /nh¹t (hay gäi ng¾n gän lµ ®ê ng ®i lu©n phiªn). §ê ng ®i lu©n phiªn b¾t ®Çu tõ m é t ®Ønh tù do thué c tËp X vµ kÕt thóc ë m é t ®Ønh tù do thué c tËp Y ®îc gäi lµ ®ê ng t¨ng c Æp g hÐp . Graph Matching 10
- Định lý Berge §Þnh lý 1 (Be rg e 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 nhng vÉn t×m ®îc ®ê ng t¨ng cÆ p ghÐp P x 0, y 1, x 1, y 2, ..., x k, y 0 trong ®ã x 0 vµ y 0 lµ c¸c ®Ønh tù do. Gäi E P lµ tËp c¸c c¹nh cña ®å thÞ n»m trªn ®ê ng ®i P E P = {(x 0,y 1), (y 1, x 1), ..., (x k , y 0) }. DÔ thÊy s è lîng c¹nh nh¹t trong E P lµ b»ng s è lîng c¹nh ®Ëm cña nã cé ng víi 1. §Ó ®¬n gi¶n trong phÇn díi ®©y ta ®ång nhÊt ký hiÖu ® ê ng ®i P víi tËp c¹nh E P cña nã. X©y dùng cÆ p ghÐp M’ the o qui t¾c: M’ = (M P) \ (M P). 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 m inh ®iÒu kiÖn cÇn. Graph Matching 11
- Định lý Berge §iÒu kiÖn ®ñ. Gi¶ sö cÆp ghÐp M cha lµ cÆp ghÐp cùc ®¹i. Gäi M* lµ cÆp ghÐp cùc ®¹i. XÐt ®å thÞ G’ =(V, M M*). 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 M*. V×vËy, mçi ®êng ®i còng nh mçi chu tr×nh trong G’ ®Òu lµ ®êng lu©n phiªn M/M*. Do |M*| >|M|, nªn râ rµng lµ lu«n t×m ®îc Ýt nhÊt mét ®êng ®i lu©n phiªn M/M* mµ trong ®ã sè lîng c¹nh thuéc M* lµ lín h¬n sè lîng c¹nh thuéc M. §êng ®i ®ã chÝnh lµ ®êng t¨ng cÆp ghÐp trªn ®å thÞ G. §Þnh lý ®îc chøng minh. Chó ý: Trong chøng minh ®Þnh lý ta kh«ng sö dông tÝnh hai phÝa cña 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 g hÐ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ù do x 0 X, kÕt thóc ë ®Ønh tù do y 0 Y . T¨ng cÆp ghÐp theo qui t¾c M:=(M P) \ (M P), råi lÆp l¹i bíc lÆp. Graph Matching 13
- Tìm đường tăng Tõ ®å thÞ G ta x©y dùng ®å thÞ cã híng G M =(X Y , E M) víi tËp cung E M ®îc b»ng c¸ch ®Þnh híng l¹i c¸c c¹nh cña G theo quy t¾c sau: i) NÕu (x,y) M E, th×(y,x) E M; ii) NÕu (x,y) E \ M, th×(x,y) E M. §å thÞ G M sÏ ®îc gäi lµ ®å thÞ t¨ng c Æp g hÐ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 x 0 X kÕt thóc t¹i mét ®Ønh tù do y 0 Y trªn ®å thÞ G M. Ngîc l¹i, mét ®êng ®i trªn ®å thÞ G M xuÊt ph¸t tõ mét ®Ønh tù do x 0 X kÕt thóc t¹i mét ®Ønh tù do y 0 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,Graph Matching 14 t×m kiÕm cã thÓ thùc hiÖn thuËt to¸n
- Thuật 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(n 3), trong ®ã n =max (|X|, |Y |). Graph Matching 15
- Cài đặt Cấu trúc dữ liệu Var A : Array[1..100,1..100] of Byte; (* Ma trận kề của đồ thi hai phía G *) Truoc, (* Ghi nhận đường đi *) Vo, (* Vo[x] đỉnh được ghép với x X *) Chong : Array[1..100] of Byte; (* Chong[y]đỉnh được ghép với y Y *) N, x0, y0, Cnt : Byte; Stop : Boolean; (* Nếu (x, y) M thì Vo[x]=y; Chong[y]=x. Vo[x]=0 => x là đỉnh nhạt; Chong[y]=0 => y là đỉnh nhạt *) Graph Matching 16
- Tìm đường tăng Procedure Tim(x:Byte); Procedure Tim_Duong_Tang; var y: Byte; begin begin Fillchar(Truoc,Sizeof(Truoc),0); For y:=1 to N do y0:=0; If (A[x,y]=1)and(Truoc[y]=0)and(y0=0) then For x0:=1 to N do begin begin Truoc[y]:=x; If Vo[x0]=0 then Tim(x0); If Chong[y]0 then Tim(Chong[y]) If y00 then exit; else end; begin Stop:=true; y0:=y; end; Exit; end; end; end; Graph Matching 17
- Thủ tục MaxMatching Procedure Tang; var temp: Byte; Procedure MaxMatching; begin begin Inc(Cnt); Stop:=false; While Truoc[y0]x0 do Fillchar(Vo,Sizeof(Vo),0); begin Fillchar(Chong,Sizeof(Chong),0); Cnt:=0; Chong[y0]:=Truoc[y0]; While not Stop do Temp:=Vo[Truoc[y0]]; begin Vo[Truoc[y0]]:=y0; Tim_duong_tang; y0:=Temp; If not Stop then Tang; end; end; Chong[y0]:=x0; end; Vo[x0]:=y0; 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 w ij - 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 c«ng viÖc sao cho mçi thî chØ thùc hiÖn mét viÖc vµ mçi viÖc chØ do mét thî thùc hiÖn, ®ång thêi tæng hiÖu qu¶ thùc hiÖn c¸c c«ng viÖc lµ lín nhÊt. Graph Matching 19
- Qui về bài toán cặp ghép lớn nhất X©y dùng ®å thÞ hai phÝa ®Çy ®ñ G = (X Y , E) X={x 1, x 2,..., x n }t¬ng øng víi c¸c thî, Y ={y 1, y 2,..., y n }- t¬ng øng víi c¸c c«ng viÖc. Mçi c¹nh (x i, y j) ®îc g¸n cho träng sè w(x i, y j) = w ij. 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ã Graph Matching 20
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Tài liệu giảng dạy Toán rời rạc & lý thuyết đồ thị (Ngành/Nghề: Công nghệ thông tin – Trình độ Cao đẳng) - Trường CĐ Kinh tế - Kỹ thuật Vinatex TP. HCM (2019)
67 p | 29 | 10
-
Bài giảng Đặc tả hình thức: Chương 2 - Nguyễn Thị Minh Tuyền
43 p | 66 | 9
-
Bài giảng Lý thuyết tính toán: Chương 1 - PGS.TS. Phan Huy Khánh
10 p | 153 | 8
-
Bài giảng Khai phá dữ liệu (Data mining): Naïve Bayes Classification - Trịnh Tấn Đạt
36 p | 18 | 8
-
Bài giảng Toán rời rạc (Phần I: Lý thuyết tổ hợp): Chương 1 - Nguyễn Đức Nghĩa
178 p | 93 | 7
-
Bài giảng Toán rời rạc (Phần II: Lý thuyết đồ thị): Chương 6 - Nguyễn Đức Nghĩa
83 p | 188 | 7
-
Bài giảng Toán rời rạc (Phần I: Lý thuyết tổ hợp): Chương mở đầu - Nguyễn Đức Nghĩa
91 p | 80 | 6
-
Bài giảng Toán rời rạc (Phần II: Lý thuyết đồ thị): Chương 1 - Nguyễn Đức Nghĩa
275 p | 84 | 6
-
Bài giảng Toán rời rạc (Phần I: Lý thuyết tổ hợp): Chương 2(tt) - Nguyễn Đức Nghĩa
108 p | 87 | 6
-
Bài giảng Toán rời rạc (Phần I: Lý thuyết tổ hợp): Chương 4 - Nguyễn Đức Nghĩa
93 p | 90 | 6
-
Bài giảng Mật mã ứng dụng: Bài toán logarit rời rạc và Diffie-Hellman - Đại học Bách khoa Hà Nội
50 p | 13 | 5
-
Bài giảng Cấu trúc dữ liệu và giải thuật (2016): Phần 2
101 p | 50 | 5
-
Bài giảng Toán rời rạc (Phần I: Lý thuyết tổ hợp): Chương 3 (tt) - Nguyễn Đức Nghĩa
142 p | 72 | 5
-
Bài giảng Toán rời rạc (Phần I: Lý thuyết tổ hợp): Chương 2 - Nguyễn Đức Nghĩa
103 p | 67 | 5
-
Bài giảng Toán rời rạc (Phần II: Lý thuyết đồ thị): Chương 5 - Nguyễn Đức Nghĩa
78 p | 93 | 5
-
Bài giảng Toán rời rạc (Phần II: Lý thuyết đồ thị): Chương 6 (tt) - Nguyễn Đức Nghĩa
53 p | 70 | 4
-
Bài giảng Toán rời rạc (Phần II: Lý thuyết đồ thị): Chương 4 - Nguyễn Đức Nghĩa
60 p | 72 | 2
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn