1483310
Thuật toán ghép cặp của Edmonds
https://vi.wikipedia.org/wiki?curid=1483310
Title: Thuật toán ghép cặp của Edmonds
 03 gán nhãn chưa thăm mọi đỉnh và mọi cạnh của "G", gán nhãn đã thăm cho mọi cạnh trong "M"
 05 for each đỉnh tự do "v"
 06 tạo một cây chỉ gồm đúng một đỉnh { "v" } và thêm nó vào "F"
 08 while tồn tại đỉnh "v" chưa được thăm trong "F" với "khoảng_cách(v, gốc(v))" là chẵn
 10 if "w" không nằm trong "F"
 // Cập nhật "F".
 11 "x" ← đỉnh ghép với "w" trong "M"
 12 thêm cạnh { "v", "w" } và { "w", "x" } vào cây của "v"
 13 else
 14 if "khoảng_cách(w, gốc(w))" là lẻ
 15 không làm gì
 16 else
 17 if "gốc(v)" ≠ "gốc(w)"
 // trả về đường tăng trong F formula_2 { "e" }.
 18 "P" ← đường ("gốc"("v") →... → "v") → ("w" →... → "gốc"("w"))
 19 return "P"
 20 else
 // thu gọn bông hoa trong "G" và tìm đường tăng trong đồ thị thu gọn.
 21 "B" ← bông hoa tạo bởi "e" và các cạnh trên đường "v" → "w" trong "T"
 22 "G’, M’" ← thu gọn "G" và "M" bằng "B"
 23 "P’" ← "tìm_đường_tăng"("G’", "M’")
 24 "P" ← nâng "P’" lên đường tăng trong "G"
 25 return "P"
 26 end if
 27 đánh dấu đã thăm "e"
 28 end while
 29 đánh dấu đã thăm "v"
 30 end while
 31 return không tồn tại đường tăng
 32 end function