Nếu bạn cho rằng đồ thị của bạn là phẳng, thì có một quy trình thời gian đa thức cho vấn đề lấy mẫu này.
Đầu tiên, vấn đề đếm số lượng khớp hoàn hảo nằm trong P đối với đồ thị phẳng. ( https://en.wikipedia.org/wiki/FKT_alacticm ) (Có thể tìm thấy một giải thích tốt về thực tế này trong chương đầu tiên của cuốn sách của Jerrum về Đếm, Lấy mẫu và Tích hợp.)
Tiếp theo, với mỗi cạnh e của G , hãy đếm số lượng khớp hoàn hảo của G ∖ e . Điều này có thể được biến thành xác suất mà một kết hợp hoàn hảo thống nhất chứa e - chỉ chia cho số lượng matchings hoàn hảo trong G . Lấy mẫu một cạnh theo xác suất này và tiếp tục quy nạp.
(Điều này lợi dụng thực tế là các kết quả khớp là một cấu trúc "tự giảm", do đó, các vấn đề đếm và lấy mẫu thống nhất về cơ bản là giống nhau. Bạn có thể xem JVV "Tạo cấu trúc kết hợp ngẫu nhiên từ phân phối đồng nhất" để biết thêm về điều này quan điểm.)
Một bằng chứng đơn giản rằng điều này cho phân phối chính xác:
c ( H)Hn !n = H/ 2
e1, Lọ , en
c ( G ∖ e1)c ( G )c ( G ∖ { e1, e2} )c ( G ∖ e1)... c ( G ∖ { e1, Lọ , en - 1} )c ( G ∖ { e1, Lọ , en - 2} )
c ( G ∖ { e1, Lọ , en - 1} ) = 1G ∖ { e1, Lọ , en - 1}en1 / c ( G )