Cho đồ thị vô hƣớng liên thông G = (X, U). Thuật toán sau đây cho phép kiểm tra đồ thị G
có phải là đồ thị phân đôi không:
(1) (Khởi tạo): Đặt { ( * + ) , với là đỉnh nào đó của G.
(2) (Lặp): Nếu thì X1 = X1 Ke(X2) ; X2 = X2 Ke(X1).
Dừng khi (1).
hoặc X1và X2là tối đại–hay không tăng(tức là và ) (2).
(3)Kết luận: Nếu (1) xảy ra thì G không phải là đồ thịphân đôi.
Trái lại, nếu (2) xảy ra thì G là đồ thị phân đôi và tập đỉnh X đƣợc phân hoạch thành các tập đỉnh X1và X2.
Ví dụ: Đồ thị G trong Hình 3.19 có phân
đôi được không?
Hãy biểu diễn hình học đồ thị G thành hai phía (biểu diễn phân đôi) để tách tập đỉnh thành hai tập ÔĐT? Hình 3.19. Đồ thị G. Giải. Bước lặp Tập đỉnh X1 Tập đỉnh X2 Kết luận 1 * + * + 2 * + * + 3 * + * + và
Vậy G là đồ thị phân đôi. Biểu diễn phân đôi của G như sau:
Hình 3.20. Biểu diễn phân đôi của đồ thị G.
Một số ứng dụng của đồ thị phân đôi:
(1) Đồ thịphân đôi thƣờng đƣợc dùng để mô hình các Bài toán ghép cặp, quan hệ hôn nhân giữa tập những ngƣời đàn ông và tập những ngƣời đàn bà, sinh viên chọn trƣờng, thầy giáo chọn tiết dạy trong thời khóa biểu...
(2) Một ví dụ Bài toán phân công công việc. Giả sử ta có một nhóm ngƣời P và một tập công việc J, trong đó không phải ai cũng hợp với mọi công việc. Ta có thể mô hình bài toán bằng một đồ thị với tập đỉnh là P J. Nếu ngƣời pi có thể làm công việc jk , đồ thị sẽ có một cạnh nối giữa pi và jk . Liệu có thể phân công mỗi ngƣời đảm nhiệm một công việc thích hợp với trình độ của ngƣời đó không?