Bài toán tìm cặp ghép cực đại với trọng số cực đại trên đồ thị hai phía

Một phần của tài liệu Chuyên đề tìm HIỂU bài TOÁN GHÉP cặp TRONG đồ THỊ HAI PHÍA (Trang 31 - 32)

Bài toán tìm cặp ghép cực đại với trọng số cực đại cũng có thể giải nhờ phương pháp Hungari bằng cách đổi dấu tất cả các phần tử ma trận chi phí (Nhờ nhận xét 1).

Khi cài đặt, ta có thể sửa lại đôi chút trong chương trình trên để giải bài toán tìm cặp ghép cực đại với trọng số cực đại mà không cần đổi dấu trọng số. Cụ thể như sau:

Bước 1. Khởi tạo:

M := ∅;

Khởi tạo hai dãy Fx và Fy thoả mãn: ∀i, j: Fx[i] + Fy[j] ≥ c[i, j]; Chẳng hạn ta có thể đặt Fx[i] := Phần tử lớn nhất trên dòng i của ma trận C và đặt các Fy[j] := 0.

Bước 2. Với mọi đỉnh x*∈X, ta tìm cách ghép x* như sau:

Với cách hiểu 0_cạnh là cạnh thoả mãn c[i, j] = Fx[i] + Fy[j]. Bắt đầu từ đỉnh x*, thử tìm đường mở bắt đầu ở x*. Có hai khả năng xảy ra:

- Hoặc tìm được đường mở thì dọc theo đường mở, ta loại bỏ những cạnh đã ghép khỏi M và thêm vào M những cạnh chưa ghép.

- Hoặc không tìm được đường mở thì xác định được hai tập:

+ VisitedX = {Tập những X_đỉnh có thể đến được từ x* bằng một đường pha}

+ VisitedY = {Tập những Y_đỉnh có thể đến được từ x* bằng một đường pha}

+ Đặt ∆:= min{Fx[i] + Fy[j] - c[i, j]  ∀X[i] ∈ VisitedX; ∀Y[j] ∉ VisitedY}

+ Với ∀X[i] ∈ VisitedX: Fx[i] := Fx[i] - ∆; + Với ∀Y[j] ∈ VisitedY: Fy[j] := Fy[j] + ∆;

+ Lặp lại thủ tục tìm đường mở xuất phát tại x* cho tới khi tìm ra đường mở.

Bước 3. Sau bước 2 thì mọi X_đỉnh đều đã ghép, ta được một cặp ghép đầy đủ k

cạnh với trọng số lớn nhất:

Dễ dàng chứng minh được tính đúng đắn của phương pháp, bởi nếu ta đặt: c'[i, j] = - c[i, j]; F'x[i] := - Fx[i]; F'y[j] = - Fy[j].

Thì bài toán trở thành tìm cặp ghép đầy đủ trọng số cực tiểu trên đồ thị hai phía với ma trận trọng số c'[1..k, 1..k]. Bài toán này được giải quyết bằng cách tính hai dãy đối ngẫu F'x và F'y. Từ đó bằng những biến đổi đại số cơ bản, ta có thể kiểm chứng được tính tương đương giữa các bước của phương pháp nêu trên với các bước của phương pháp Kuhn-Munkres ở mục trước.

III. KẾT LUẬN

Trên đây là một số những nghiên cứu mà tôi đã vận dụng trong quá trình giảng dạy về lý thuyết đồ thị. Thông qua một số bài tập về cặp ghép trên đồ thị hai phía trên, học sinh được rèn luyện cách xây dựng và vận dụng cấu trúc dữ liệu Quee để giải các bài toán đồ thị. Để đề tài của tôi được hoàn thiện hơn, việc sử dụng đạt hiệu quả cao hơn, tôi rất mong các thầy cô và các đồng nghiệp đóng góp ý kiến để việc giảng dạy trong nhà trường ngày càng hiệu quả hơn, giúp các em học sinh học tốt hơn.

Một phần của tài liệu Chuyên đề tìm HIỂU bài TOÁN GHÉP cặp TRONG đồ THỊ HAI PHÍA (Trang 31 - 32)