Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 50 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
50
Dung lượng
635,75 KB
Nội dung
ĐẠI HỌC THÁI NGUYÊN TRƯỜNG ĐẠI HỌC KHOA HỌC —————— ĐỖ THỊ THÁI LINH GHÉP CẶP VÀ BÀI TOÁN PHÂN VIỆC TRÊN ĐỒ THỊ LUẬN VĂN THẠC SĨ TOÁN HỌC Thái Nguyên, năm 2014 ĐẠI HỌC THÁI NGUYÊN TRƯỜNG ĐẠI HỌC KHOA HỌC —————— ĐỖ THỊ THÁI LINH GHÉP CẶP VÀ BÀI TOÁN PHÂN VIỆC TRÊN ĐỒ THỊ Chuyên ngành: Toán ứng dụng Mã số: 60.46.01.12 LUẬN VĂN THẠC SĨ TOÁN HỌC NGƯỜI HƯỚNG DẪN KHOA HỌC: GS TS TRẦN VŨ THIỆU Thái Nguyên, năm 2014 i Mục lục Lời cảm ơn ii Lời mở đầu 1 Khái niệm đồ thị 1.1 Đồ thị mạng 1.1.1 Khái niệm đồ thị 1.1.2 Đường chu trình đồ thị vơ hướng 1.1.3 Rừng 1.1.4 Một số dạng đồ thị đặc biệt 1.1.5 Khái niệm mạng 1.2 Biểu diễn đồ thị tìm kiếm đồ thị 1.2.1 Cách biểu diễn đồ thị 1.2.2 Các thuật tốn tìm kiếm đồ thị Bài toán ghép cặp đồ thị 2.1 Ghép cặp hoàn hảo ghép cặp cực 2.2 Ghép cặp đồ thị hai phần 2.2.1 Điều kiện tồn 2.2.2 Thuật toán Edmonds 2.2.3 Thuật toán Hopcroft - Karp Một số ứng dụng ghép cặp 3.1 Bài toán phân việc 3.1.1 Nội dung toán 3.1.2 Mơ tả thuật tốn giải 3.1.3 Ví dụ minh họa 3.2 Bài toán phủ cạnh 3.3 Bài tốn nhân bền vững 3.4 Xếp lịch hai máy đại 11 15 15 20 20 22 24 29 29 29 31 35 39 40 42 Kết luận 45 Tài liệu tham khảo 46 ii Lời cảm ơn Trong suốt q trình làm luận văn, tơi ln nhận hướng dẫn, bảo tận tình giúp đỡ nghiêm túc GS.TS Trần Vũ Thiệu (Viện Tốn học, Viện Hàn lâm Khoa học Cơng nghệ Việt Nam) Tơi xin chân thành bày tỏ lịng biết ơn sâu sắc đến Thầy Thầy dành nhiều thời gian hướng dẫn giải đáp thắc mắc Thầy giúp đỡ bổ sung nhiều kiến thức, khả nghiên cứu, chọn lọc tổng hợp tài liệu để hồn thành luận văn Tơi xin kính chúc Thầy gia đình ln ln mạnh khỏe, hạnh phúc Qua đây, xin gửi tới q Thầy, Cơ tham gia giảng dạy khóa Cao học Toán 2012 - 2014 trường Đại học Khoa học - Đại học Thái Nguyên Viện Toán học lời cảm ơn sâu sắc Các Thầy, Cô mang đến cho tơi nhiều kiến thức bổ ích, khơng mặt chun mơn mà cịn sống Tôi xin chân thành cảm ơn bạn đồng nghiệp, đồng môn giúp đỡ thời gian học tập trường Đại học Khoa học - Đại học Thái Ngun q trình hồn thành luận văn Cuối cùng, xin gửi lời cảm ơn sâu sắc đến gia đình tơi Những người động viên, chăm sóc tạo điều kiện tốt để tơi có thành ngày hơm Thái Nguyên, tháng năm 2014 Người thực Đỗ Thị Thái Linh Lời mở đầu Ghép cặp đồ thị chủ đề cổ điển, quan trọng hấp dẫn lý thuyết tổ hợp tối ưu hóa Lý thuyết ghép cặp có ứng dụng đa dạng lý thuyết thực tiễn Thuật toán Hung-ga-ri (1955) giải toán phân việc thuật tốn Gale - Shapley (1962) giải tốn "hơn nhân bền vững" quen thuộc sử dụng rộng rãi Bài toán phân việc (cũng gọi tốn ghép cặp hồn hảo với trọng số nhỏ hay lớn đồ thị hai phần) có ứng dụng thiết thực kinh tế đời sống Vì thế, chủ đề ghép cặp phân việc ln nhiều người quan tâm nghiên cứu ứng dụng Mục tiêu đề tài luận văn tìm hiểu trình bày số kết lý thuyết toán ghép cặp cực đại ghép cặp hoàn hảo đồ thị (chủ yếu đồ thị hai phần), điều kiện tồn ghép cặp cực đại ghép cặp hồn hảo, tốn phân việc ứng dụng ghép cặp, thuật toán giải toán ghép cặp, toán phân việc phân tích độ phức tạp thuật tốn Nội dung luận văn chia thành ba chương: Chương 1: "Khái niệm đồ thị" trình bày giải thích ví dụ định nghĩa khái niệm thường dùng lý thuyết đồ thị mạng: đồ thị vơ hướng, đồ thị có hướng, đỉnh cạnh, đường chu trình đồ thị, đồ thị liên thông Miêu tả nhiều dạng đồ thị khác nhau: đồ thị cảm sinh, đồ thị bao trùm đồ thị dạng đồ thị đặc biệt: rừng tính chất, đồ thị đầy đủ, đồ thị hai phần Một số cách biểu diễn đồ thị (ma trận kề, ma trận liên thuộc, danh sách cạnh, danh sách kề) đáng ý Hai cách tìm kiếm đồ thị (theo chiều rộng BFS theo chiều sâu DFS) hay dựng thuật toán đồ thị Chương 2: "Bài toán ghép cặp đồ thị" giới thiệu toán ghép cặp cực đại, ghép cặp hoàn hảo đồ thị, điều kiện cần đủ để tồn ghép cặp cực đại đồ thị (định lý Berge) ghép cặp hoàn hảo đồ thị hai phần (định lý Hall định lý Frobenius) Trình bày cách đưa tốn ghép cặp cực đại đồ thị hai phần toán luồng lớn mạng hai thuật toán đa thức tìm ghép cặp cực đại đồ thị hai phần: thuật tốn Edmonds với độ phức tạp tính toán O(m.n) thuật toán Hopcroft √ Karp với độ phức tạp tốt O( n.m) Chương 3: "Một số ứng dụng ghép cặp" trình bày tốn phân việc mà thực chất tốn ghép cặp có trọng số lớn (hay nhỏ nhất) đồ thị hai phần giới thiệu thuật toán gán nhãn giải toán với tên gọi phương pháp Hung-ga-ri, thuật toán Kuhn Munkres nêu (1955) Tiếp theo luận văn trình bày số ứng dụng quan trọng khác ghép cặp toán phủ cạnh đồ thị, tốn "hơn nhân bền vững" thuật toán Gale - Shapley độc đáo giải toán Cuối chương toán xếp lịch hai máy, toán đưa toán ghép cặp cực đại đồ thị hai phần Do thời gian kiến thức hạn chế nên chắn luận văn khơng tránh khỏi thiếu sót định, kính mong q thầy bạn đóng góp ý kiến để tơi tiếp tục hồn thiện luận văn Chương Khái niệm đồ thị Chương trình bày định nghĩa khái niệm thường dùng lý thuyết đồ thị, nhằm thống tên gọi cách hiểu vấn đề đề cập tới luận văn Nội dung chương tham khảo chủ yếu từ tài liệu [3], [5] [7] 1.1 Đồ thị mạng 1.1.1 Khái niệm đồ thị Có thể hiểu đồ thị tập hợp điểm, gọi nút hay đỉnh, tập hợp đoạn (thẳng hay cong) nối liền số cặp điểm này, gọi cạnh hay cung đồ thị Mỗi đỉnh đồ thị thường ký hiệu chữ a, b, c chữ số 1, 2, 3, Cạnh nối đỉnh i với đỉnh j ký hiệu (i, j) Nếu đồ thị G có tập đỉnh V tập cạnh E ta viết G = (V, E) Ta dùng ký hiệu V (G) để tập đỉnh E (G) để tập cạnh đồ thị G Ký hiệu n = |V (G)| số đỉnh m = |E (G)| số cạnh đồ thị Hình 1.1: Đồ thị đỉnh cạnh Hình 1.2: Đồ thị khơng liên thơng Mỗi đồ thị biểu diễn hình vẽ mặt phẳng Chẳng hạn: Hình 1.1 biểu diễn đồ thị có đỉnh (đánh số từ đến 7) cạnh (mỗi cạnh đoạn thẳng nối hai đỉnh) Chú ý điểm cắt hai cạnh (1, 4) (2, 3), hai cạnh (4, 7) (5, 6) hình vẽ khơng phải đỉnh đồ thị Một cạnh đồ thị gọi cạnh có hướng có quy định rõ mút cạnh đỉnh đầu, mút đỉnh cuối Cạnh có hướng cịn gọi −−→ cung, cung từ đỉnh i đến đỉnh j ký hiệu (i, j) đơn giản (i, j) không gây nhầm lẫn Hình 1.3: Đồ thị có hướng Một đồ thị gồm tồn cạnh gọi đồ thị vơ hướng, đồ thị gồm toàn cung gọi đồ thị có hướng Một đồ thị vừa có cạnh vừa có cung gọi đồ thị hỗn hợp Bằng cách thay cạnh hai cung có hướng ngược chiều nhau, ta quy đồ thị đồ thị có hướng Hình 1.3 mơ tả đồ thị có hướng Nếu e = (u, v) cạnh ta nói e liên thuộc hai đỉnh u, v e nối u, v Khi đó, u v gọi kề đầu mút e, u(v) láng giềng v(u) Khi e = (u, v) cung, ta nói u đỉnh đầu, v đỉnh cuối e khỏi u tới v Hai cạnh (cung) e e gọi kề chúng có đỉnh chung Hai cạnh e, e nối liền hai đỉnh giống gọi cạnh kép Đồ thị khơng có cạnh kép gọi đơn đồ thị Trái lại, gọi đa đồ thị Bậc đỉnh v đồ thị vơ hướng số cạnh liên thuộc nó, ký hiệu ρ(v) Đỉnh có bậc gọi đỉnh lập, đỉnh có bậc gọi đỉnh treo Tương tự, đồ thị có hướng ta gọi bậc (bậc vào) đỉnh v số cung khỏi v (số cung tới v ), ký hiệu tương ứng ρ+ (v) ρ− (v) Trong đồ thị vẽ Hình 1.2 ta thấy: ρ(9) = nên đỉnh cô lập; ρ(1) = ρ(5) = nên đỉnh treo; ρ(2) = ρ(3) = ρ(4) = ρ(6) = ρ(7) = ρ(8) = Dễ chứng minh tính chất sau bậc đỉnh đồ thị Mệnh đề 1.1 a) Trong đồ thị vô hướng, tổng bậc đỉnh hai lần số cạnh đồ thị số đỉnh có bậc lẻ số chẵn b) Trong đồ thị có hướng, tổng bậc vào đỉnh tổng bậc (của đỉnh) tổng số cung đồ thị Nhiều tính chất đồ thị có hướng khơng phụ thuộc vào hướng cung đồ thị Vì thế, bỏ qua hướng cung (đổi cung thành cạnh) ta nhận đồ thị vô hướng, gọi đồ thị đồ thị có hướng cho Đồ thị hay đồ thị phận đồ thị G đồ thị nhận từ G cách bỏ số đỉnh số cạnh Nói xác, H = (V (H), E(H)) đồ thị G V (H) ⊆ V (G) E(H) ⊆ E(G) Ta nói H đồ thị cảm sinh đồ thị G V (H) ⊆ V (G) E (H) = {(x, y) ∈ E (G) : x, y ∈ V (H)} Đồ thị H G gọi đồ thị bao trùm V (H) = V (G) Một đồ thị có đỉnh, khơng có cạnh gọi đồ thị rỗng Với đồ thị vô hướng G X, Y ⊆ V (G) ta định nghĩa: E(X, Y ) = {(x, y) ∈ E(G) : x ∈ X\Y, y ∈ Y \X} Với đồ thị vô hướng G X ⊆ V (G) ta định nghĩa: δ (X) = E (X, V (G) \X) Tập đỉnh láng giềng X ký hiệu là: N (X) = {v ∈ V (G) \X : E (X, {v}) = ∅} 1.1.2 Đường chu trình đồ thị vơ hướng Đường P từ đỉnh u tới đỉnh v dãy liên tiếp cạnh có dạng: (a0 , a1 ), (a1 , a2 ), , (ak−1 , ak ) với (ai−1 , ) ∈ E(G), a0 = u, ak = v k 1, đỉnh a0 , a1 , , ak khác Để đơn giản, ta viết P = {a0 , a1 , , ak } nói đường nối đỉnh u đỉnh v Đỉnh u gọi đỉnh đầu, đỉnh v gọi đỉnh cuối P Một đường nối đỉnh tới (đỉnh đầu trùng với đỉnh cuối) gọi chu trình Độ dài đường (chu trình) số cạnh đường (chu trình) Ví dụ 1.1 Với đồ thị vẽ Hình 1.1, đường nối đỉnh đỉnh là: (1, 4), (4, 5), (5, 6) hay đơn giản 1, 4, 5, Hai đường khác từ đến 1, 3, 4, 5, 1, 2, 3, 5, 6, Đồ thị có chu trình sau: (1, 2), (2, 3), (3, 1); (1, 4), (4, 5), (5, 3), (3, 1); Đường chu trình đồ thị có hướng định nghĩa tương tự (cung thay cho cạnh) Để phân biệt, ta gọi đường (chu trình) định hướng Đồ thị có hướng Hình 1.3 có đường định hướng từ đỉnh tới đỉnh là: 1, 3, 6; 1, 3, 4, 6; 1, 3, 5, 6; 1, 2, 4, Đồ thị khơng có chu trình định hướng 1.1.3 Rừng Một đồ thị vô hướng gọi liên thơng có đường nối hai đỉnh đồ thị Trái lại, đồ thị gọi không liên thông Đồ thị không liên thông bị tách thành số đồ thị liên thơng, đơi khơng có đỉnh chung Mỗi đồ thị liên thông gọi thành phần liên thông Đôi ta đồng thành phần liên thơng với tập đỉnh Tập đỉnh X gọi liên thông đồ thị sinh X liên thông Cạnh e gọi cầu loại bỏ e đồ thị tăng số thành phần liên thơng Ví dụ 1.2 Đồ thị vẽ Hình 1.1 liên thơng, đồ thị vẽ Hình 1.2 khơng liên thơng (gồm thành phần liên thông: {1, 2, 3, 4, 5}; {6, 7, 8}; {9}) Mệnh đề 1.2 Đồ thị vô hướng G liên thông δ (X) = ∅ với ∅ = X ⊂ V (G) Một đồ thị vơ hướng khơng chứa chu trình gọi rừng Một rừng liên thông gọi Rừng gồm nhiều thành phần liên thơng khác nhau, thành phần liên thông Như vậy, rừng gồm nhiều Đỉnh có bậc gọi a Rừng (không liên thông) b Cây (liên thông) c Đồ thị hình Đồ thị hình có nhiều đỉnh Một đồ thị con, khơng chứa chu trình đồ thị G gọi G Một đồ thị bao trùm G mà gọi bao trùm G 32 Nếu ghép cặp tìm ghép cặp hồn hảo theo Định lý 3.1, ghép cặp có trọng số lớn cần tìm Ghép cặp đầu (output) thuật tốn Nếu ghép cặp cực đại tìm khơng phải ghép cặp hồn hảo cần đưa thêm (hay số) cạnh vào đồ thị ngang loại số cạnh cũ khỏi đồ thị ngang nhờ sửa lại nhãn đỉnh Việc sửa nhãn (sẽ mô tả sau) phải cho cạnh thuộc ghép cặp có thuộc đồ thị ngang Sau sửa lại đồ thị ngang bằng, thuật tốn tìm cách mở rộng Hungga-ri (gồm xen kẽ cạnh tự cạnh ghép) để tăng số cạnh ghép (nếu tìm đường cải tiến) kết nạp thêm đỉnh vào Trong trường hợp đầu, vòng lặp kết thúc thuật tốn bắt đầu vịng lặp với số cạnh ghép tăng lên Trong trường hợp sau, số đỉnh thêm vào Hung-ga-ri Cùng sau n lần thêm đỉnh, bao trùm hết đỉnh đồ thị ban đầu Vì sau nhiều n lần, số cạnh ghép phải tăng lên Thuật toán tiếp tục với ghép cặp tìm ghép cặp hồn hảo Bây ta mơ tả chi tiết q trình sữa nhãn sửa đổi đồ thị ngang Giả sử M ghép cặp cực đại tìm theo thuật tốn Cây Hung-ga-ri (gồm xen kẽ cạnh tự cạnh ghép) phát triển từ tất đỉnh tự A Các đỉnh thuộc A (kể đỉnh tự do) gặp trình tìm kiếm đưa vào tập S , đỉnh thuộc B gặp trình tìm kiếm đưa vào tập T Ta có |S| > |T | Đặt S = A\S , T = B\T Ta thấy đồ thị ngang khơng có cạnh từ S tới T khơng có cạnh ghép từ T tới S Hình 3.2 minh hoạ cấu trúc tập S T Các cạnh ghép vẽ đậm, cạnh cịn lại thuộc G (khơng vẽ cạnh ∈ E(G)\E(G )) Hình 3.2: Các tập S T lưu giữ thuật toán Giảm nhãn đỉnh thuộc S lượng d (d xác định sau) tăng 33 nhãn đỉnh thuộc T lượng d Cách sửa bảo đảm cho cạnh từ S tới T cạnh ghép thuộc đồ thị ngang Các cạnh thuộc G (nhưng không thuộc G ) từ S tới T ứng cử viên chọn để đưa vào đồ thị ngang bằng, nhãn đỉnh mút (∈ S ) cạnh bị giảm, nhãn đỉnh (∈ T ) khơng đổi Thuật tốn chọn d số nhỏ cho (hay số) cạnh ∈ E(G)\E(G ) đưa vào đồ thị ngang bằng, cụ thể, chọn d = dij > i∈S,j∈T Giả sử cạnh chọn từ đỉnh x ∈ S tới đỉnh y ∈ T Nếu y đỉnh tự tìm đường cải tiến (đi từ gốc tới y ) Nếu trái lại (đỉnh y bị phủ cạnh ghép) Hung-ga-ri mở rộng cách đưa y vào T đưa đỉnh bị phủ kề y vào S Loại khỏi đồ thị ngang G tất cạnh từ T tới S (vì nhãn đỉnh ∈ T tăng lên d > 0, cịn nhãn đỉnh ∈ S khơng đổi) Phân tích Mỗi vịng lặp bao gồm bước cần thực để làm tăng số cạnh ghép cặp Có nhiều O(n) vịng lặp (2n số đỉnh đồ thị G, số cạnh ghép n), vòng lặp số cạnh ghép tăng thêm Trong vịng lặp ta tăng kích cỡ Hung-ga-ri tối đa n lần (cây 2n đỉnh có tối đa 2n − cạnh) Mỗi lần cần thời gian O(n2 ) để tìm cạnh từ S tới T đưa thêm vào đồ thị ngang (duyệt tất cạnh đồ thị thời gian O(n2 )) Vì thế, cách làm cho cận O(n4 ) toàn thời gian chạy thuật tốn Sau ta nêu tóm tắt bước thuật tốn, sau nêu cách thực thi thuật tốn thời gian O(n3 ) Thuật tốn Kuhn-Munkres (cịn gọi phương pháp Hung-ga-ri) Bước Lập đồ thị ngang G theo cách gán nhãn ban đầu tuỳ ý Bước Tìm ghép cặp cực đại G Bước Nếu ghép cặp hồn hảo dừng: ta nhận lời giải Bước Sửa nhãn đỉnh sửa đổi đồ thị ngang nêu Phát triển Hung-ga-ri từ đỉnh tự thuộc A Nếu có đường cải tiến tăng số cạnh ghép cặp thêm cách đổi cạnh tự (trên đường cải tiến) thành cạnh ghép ngược lại, tiếp tục phát triển Hung-ga-ri Khi khơng cịn đường cải tiến quay lại thực bước 34 Ở dạng bảng, thuật toán Kuhn-Munkres cụ thể hoá sau: Bước (Lập đồ thị ngang bằng) Gán cho hàng i nhãn ui = max cij j n (i = 1, , n), gán cho cột j nhãn vj = (j = 1, , n) Lập ma trận D = [ui + vj − cij ]n×n Đồ thị ngang tạo nên cạnh tương ứng với phần tử D (mỗi hàng có phần tử 0) Bước (Tìm ghép cặp cực đại) Với hàng, từ hàng tới hàng n, đánh dấu ∗ cho phần tử hàng khơng nằm cột có 0∗ (phần tử đánh dấu ∗ ) Đặt S = ∅, T = ∅ Ta bắt đầu xây dựng Hung-ga-ri Lần lượt từ hàng tới n, tìm hàng khơng chứa phần tử 0∗ Nếu khơng có hàng chuyển sang bước Giả sử hàng i0 , hàng có phần tử 0, nên hàng i0 phải có phần tử 0, chẳng hạn cột j0 Xuất phát từ ô (ik , jk ) với k = 0, ta xây dựng dây chuyền ô theo chiều dọc, ngang nối phần tử với 0∗ (thao tác A), 0∗ với (thao tác B) sau: (A) Phát triển theo cột: Giả sử ta phần tử ô (ik , jk ) với k jk ∈ / T , tìm phần tử 0∗ cột jk Nếu khơng tìm thấy phần tử 0∗ ta có đường cải tiến (gồm xen kẽ phần tử 0∗ ) thực thao tác (D) Nếu trái lại, giả sử tìm thấy phần tử 0∗ hàng ik+1 , ta thêm ô (ik+1 , jk ) vào dây chuyền xét Đưa ik , jk+1 vào S đưa jk vào T Thực thao tác (B) (B) Phát triển theo hàng: Giả sử ta phần tử 0∗ ô (ik+1 , jk ) với k 0, Trên hàng ik+1 tìm phần tử khơng nằm cột có mặt dây chuyền xét (tìm cột ∈ / T ) Nếu khơng có phần tử hàng thực thao tác (C) Nếu trái lại, giả sử có phần tử cột jk+1 , thêm ô (ik+1 , jk+1 ) vào dây chuyền xét đưa jk+1 vào T Tăng k lên lặp lại thao tác (A) (C) Tìm quay lui: Loại khỏi dây chuyền xét hai ô (ik , jk ) (ik+1 , jk ) (chứa 0∗ ) Giảm k Nếu ô dây chuyền (k 0), ta lại xuất phát từ phần tử 0∗ ô (ik+1 , jk ) lặp lại thao tác (B) Nếu khơng cịn dây chuyền (k = 0), ta tìm phần tử hàng không chứa 0∗ Giả sử phần tử tìm hàng i0 , cột j0 Nếu j0 ∈ / T đưa i0 vào S chuyển tới tìm phần tử hàng không chứa 0∗ Cịn j0 ∈ / T thực thao tác (A), xuất phát từ phần tử Khi hết phần 35 tử hàng không chứa 0∗ , ta chuyển sang bước (D) Tăng số cạnh ghép: Đổi phần tử dây chuyền (đường cải tiến) nhận thành 0∗ đổi 0∗ thành (như đổi cạnh tự thành cạnh ghép ngược lại), đặt lại S = T = ∅ Nếu cịn hàng chưa có phần tử 0∗ tìm phần tử hàng thực thao tác (A) nêu trên, xuất phát từ phần tử Nếu khơng cịn hàng chuyển sang bước Bước (Kiểm tra ghép cặp hồn hảo) Nếu có đủ n phần tử 0∗ dừng: phần tử 0∗ lập nên ghép cặp hồn hảo Lời giải tốn là: người i phân thực công việc tương ứng với phần tử 0∗ hàng i Nếu số phần tử 0∗ nhỏ n chuyển sang bước Bước (Sửa nhãn đỉnh sửa đồ thị ngang bằng) Tính số d = dij > i∈S,j ∈T / Đổi ui ← ui − d(∀i ∈ S) vj ← vj + d(∀j ∈ T ) Các ui , vj khác không đổi Sửa ma trận D : dij ← dij −d(∀i ∈ S, j ∈ / T ); dij ← dij +d(∀i ∈ / S, j ∈ T ) Thêm vào đồ thị ngang G ô (i, j) đạt dij = 0(∀i ∈ S, j ∈ / T ) Loại khỏi G ô (i, j) với i ∈ / S, j ∈ T Quay lại thực bước 3.1.3 Ví dụ minh họa Ví dụ 3.2 Giải tốn phân việc đạt hiệu suất cao với ma trận trọng số 4 C = 3 7 1 0 Q trình giải tốn gồm bước sau: Vịng lặp Bước Nhãn hàng: u1 = 2, u2 = 7, u3 = 8, u4 = (ui - số lớn hàng i C ), nhãn cột: vj = 0, j = 1, 2, 3, Tính D = [ui + vj − cij ]4×4 Đồ thị G bao gồm cạnh tương ứng với phần tử D (mỗi hàng có phần tử 0) 36 Bước Đánh dấu ∗ cho phần tử hàng (cột 2) hàng (cột 1) Không đánh dấu ∗ cho phần tử hàng 3, chúng cột có phần tử 0∗ Hình 3.3: Vịng lặp (Bước 2) Cây Hung-ga-ri phát triển từ hàng (thao tác A B) hàng (thao tác C) chứa phần tử 0, không chứa phần tử 0∗ (ứng với đỉnh tự a2 , a3 ∈ A G ) Ta gồm hai ô (2, 2) - (1, 2) chứa 0∗ (ứng với cặp "cạnh tự - cạnh ghép" (a2 , b2 ) - (b2 , a1 )) gồm đỉnh gốc - hàng (đỉnh a3 ) Đưa hàng 1, 2, vào S (4 ∈ / S ), đưa cột vào T (Hình 3.3) Bước Do có < n = phần tử 0∗ nên ta chuyển sang bước Bước Số d = dij = đạt tơ đậm (Hình 3.3) Sửa nhãn i∈S,j ∈T / hàng: u1 = 1, u2 = 6, u3 = 7, u4 = 7, nhãn cột: v1 = 0, v2 = 1, v3 = v4 = Tính D = [ui + vj − cij ]4×4 Đồ thị G gồm cạnh tương ứng với phần tử D (Hình 3.4) Vịng lặp Đánh dấu ∗ cho phần tử hàng (cột 1), hàng (cột 2) hàng (cột 3) Ta thấy D có phần tử 0∗ (tương ứng với cạnh ghép) ô - 1, 2, - (Hình 3.4) Cây Hung-ga-ri phát triển từ hàng (thao tác A B), ứng với đỉnh tự a3 ∈ A G Ta dây chuyền hai ô (3, 2) - (2, 2) chứa 0∗ Đưa hàng 3, vào S (1, ∈ / S ), đưa cột vào T Do hàng (chứa 0∗ ) hết phần tử nên ta tìm quay lui (thao tác C) Do xét hết hàng khơng có 0∗ nên ta sang bước Tính d = đạt hai tơ đậm (Hình 3.4) Sửa lại ui , vj , D G (Hình 3.5) 37 Hình 3.4: Vịng lặp Vịng lặp Đánh dấu ∗ cho phần tử hàng (cột 1), hàng (cột 2) hàng (cột 3) Có phần tử 0∗ (tương ứng với cạnh ghép) ô - 1, - - (Hình 3.5) Hình 3.5: Vòng lặp Cây Hung-ga-ri phát triển từ hàng (thao tác A B), ứng với đỉnh tự a4 ∈ A G Ta dây chuyền (4, 1) - (1, 1) chứa 0∗ Đưa hàng 4, vào S , đưa cột vào T Do hàng (chứa 0∗ ) hết phần tử nên ta tìm quay lui (thao tác C) Xét tiếp phần tử hàng (cột 3), ta dây chuyền (4, 3) - (3, 3) - (3, 2) - (2, 2) - (2, 1) - (1, 1) Đưa thêm hàng 3, vào S đưa cột 3, vào T Do không phát triển theo hàng từ ô (1, 1) (chứa 0∗ ) nên ta thực hiên thao tác (C) sau dừng tìm kiếm, xét hết hàng không chứa 0∗ Ta sang bước Tính d = đạt tơ đậm (Hình 3.5) Sửa lại ui , vj , D G (Hình 3.6) 38 Vịng lặp Đánh dấu ∗ cho phần tử hàng (cột 1), hàng (cột 2) hàng (cột 3) Có phần tử 0∗ (tương ứng với cạnh ghép) ô - 1, - - (Hình 3.6) Hình 3.6: Vịng lặp - Ghép cặp ban đầu Cây Hung-ga-ri phát triển từ hàng (thao tác A, B D), ứng với đỉnh tự a4 ∈ A G Ta dây chuyền (4, 1) - (1, 1) - (1, 4) chứa - 0∗ - (đường cải tiến) Đổi thành 0∗ 0∗ thành dây chuyền ta ghép cặp (Hình 3.7) Đến có đủ n = phần tử 0∗ nên thuật toán dừng Lời giải: người việc 4, người việc 2, người việc 3, người việc Hiệu suất tổng cộng = 19 Hình 3.7: Vịng lặp - Ghép cặp hồn hảo Dễ kiểm tra lại tốn cịn có lời giải khác: người việc 4, người việc 1, người việc 2, người việc với hiệu suất tổng cộng = 19 Có thể chứng minh trọng số lớn ghép cặp trùng với tổng nhãn hàng cột vịng lặp cuối Ví dụ 3.3 (cách giải tương tự) Bài toán phân việc với ma trận trọng số (hiệu suất) cho có lời giải (thu vòng lặp 1) là: người việc 2, người việc 3, người việc 4, người việc Hiệu suất tổng cộng là: + + + = 28 39 5 C = 1 5 3 7 ⇒ D = 6 0 3 3 0 Nhãn hàng cột vòng lặp đầu vòng lặp cuối sau: u1 = 7, u2 = 8, u3 = 7, u4 = v1 = v2 = v3 = v4 = Trọng số (hiệu suất) lớn ≡ u1 + u2 + u3 + u4 + v1 + v2 + v3 + v4 = 28 Phân tích độ phức tạp thuật toán dạng bảng Lúc đầu việc tìm nhãn hàng, cột tính ma trận D cần O(n2 ) thời gian Ở vòng lặp, để đánh dấu phần tử hàng cần O(n2 ) thời gian Sau cơng việc phức tạp xây dựng Hung-ga-ri, việc đòi hỏi O(n2 ) thời gian gần phải duyệt tất bảng, để tìm đường cải tiến xác định tập S T Cuối việc tính số d, sửa đổi ma trận D thay đổi đồ thị ngang cần O(n2 ) thời gian Tóm lại, vịng lặp thực O(n2 ) thời gian Do số cạnh ghép cặp cực đại đồ thị ngang sau vịng lặp tăng nên nhiều có tất O(n) vịng lặp Vì tồn thời gian chạy thuật tốn O(n3 ) 3.2 Bài tốn phủ cạnh Bài tốn có nội dung sau: Cho đồ thị vô hướng G = (V, E) với tập đỉnh V tập cạnh E ⊂ V × V Hãy tìm tập cạnh nhỏ (số cạnh nhất) F ⊂ E cho đỉnh đồ thị G đầu mút cạnh thuộc tập F chọn (Các cạnh thuộc F có chung đỉnh) Ta giải toán thời gian đa thức nhờ liên hệ với tốn ghép cặp cực đại Điều ngạc nhiên, tốn hồn tồn tương tự (bài tốn phủ đỉnh - Vertex Cover) lại toán NP - đầy đủ Nội dung toán phủ đỉnh sau: cần chọn từ V , tập đỉnh nhỏ (gồm đỉnh nhất) cho tập đỉnh phủ cạnh, nghĩa cạnh đồ thị có đầu mút thuộc tập đỉnh chọn Ý xét mối liên hệ phủ cạnh ghép cặp Nếu ta có ghép cặp gồm m cạnh, cạnh thuộc ghép cặp phủ 2m đỉnh, n − 2m đỉnh tự (chưa phủ tập cạnh ghép) Nếu 40 để phủ đỉnh tự này, ta dùng cạnh (khơng thuộc cạnh ghép cặp) tổng số cạnh phủ cạnh m + (n − 2m) = n − m Như vậy, ghép cặp lớn sinh phủ cạnh nhỏ Ghép cặp cực đại (có thể tìm thời gian đa thức) gồm m∗ cạnh sinh phủ cạnh nhỏ gồm n − m∗ cạnh 3.3 Bài tốn nhân bền vững Cho đồ thị hai phần đầy đủ G = (U ∪ V, E), bao gồm hai tập đỉnh U, V với |U | = |V | = n tập cạnh E = U × V Mỗi đỉnh u ∈ U biểu thị cô gái, đỉnh v ∈ V biểu thị chàng trai Mỗi gái (chàng trai) có danh sách chàng trai (cô gái), cho người danh sách chàng trai (cô gái) mà người ưa thích người cuối danh sách chàng trai (cô gái) mà người ưa thích Danh sách ưa thích cô gái (chàng trai) phải bao gồm đầy đủ n người khác giới Một cách hình thức, gái u ∈ U có danh sách: ρ(u) = {ρ1 (u), ρ2 (u), , ρn (u)}, ρi (u), ρj (u) ∈ V , ρi (u) = ρj (u) chàng trai v ∈ V có danh sách: π(v) = {π1 (v), π2 (v), , πn (v)}, πk (v), πl (v) ∈ U , πk (v) = πl (v) Mỗi ghép cặp hoàn hảo H G gọi hôn nhân cạnh ghép (u, v) ∈ H với u ∈ U, v ∈ V gọi cặp vợ chồng Một hôn nhân H gọi khơng bền vững có đơi nữ - nam, cặp vợ chồng H ((u, v) ∈ / H ) mà họ lại ưa thích so với người bạn đời H họ Chẳng hạn, giả sử Lan - Phong, Mai - Tân hai cặp vợ chồng H Nhưng danh sách ưa thích Lan, Tân lại đứng trước Phong danh sách ưa thích Tân, Lan lại đứng trước Mai Ghép cặp Lan - Phong Mai - Tân trên, lâu dài không bền vững Lan - Phong : Danh sách ưa thích Lan = { Tân Phong } Mai - Tân : Danh sách ưa thích Tân = { Lan Mai } Hãy tìm G ghép cặp hồn hảo, biểu thị hôn nhân bền vững? Gale Shapley (1962) nêu thuật tốn tìm nhân bền vững sau: 41 Bước Mỗi chàng trai ngỏ lời với cô gái danh sách ưa thích Bước Mỗi cô gái nhận lời đề nghị cầu hôn chàng trai, kiểm tra danh sách ưa thích nhận lời (hứa hơn) với chàng trai có mức ưa thích cao số chàng trai ngỏ lời với Bước Trong vòng lựa chọn tiếp theo, chàng trai chưa hứa hôn với ngỏ lời với gái danh sách ưa thích Bước Khi gái hứa với chàng trai, ta kiểm tra xem có lời đề nghị khác từ phía chàng trai có mức ưa thích cao hay khơng, có (như số cô gái làm!) cô ta huỷ bỏ lời hứa hôn với người yêu cũ nhận lời với chàng trai có mức ưa thích cao số chàng trai vừa ngỏ lời với ta Trong vịng lựa chọn tiếp theo, chàng trai bị người yêu đua tài, ngỏ lời với cô gái đứng liền sau người yêu vừa bị danh sách ưa thích Bước Lặp lại Bước người ghép đôi Thuật toán nêu phải dừng, chàng trai ngỏ lời với gái cuối danh sách gái đứng trước danh sách hứa hôn với n − chàng trai khác, gái chưa hứa hôn với phải chấp nhận lời đề nghị chàng trai thuật toán kết thúc Mệnh đề 3.1 Hơn nhân tìm theo thuật tốn nêu bền vững Chứng minh Giả sử trái lại, nhân tìm khơng bền vững, nghĩa có cặp Lan Tân mơ tả Vì Lan đứng trước Mai danh sách ưa thích Tân nên Tân phải ngỏ lời với Lan trước Mai Vì Lan từ chối Tân, nên ta hứa hôn với chàng trai đứng trước Tân danh sách ưa thích Lan huỷ bỏ lời hứa có lời đề nghị chàng trai đứng trước chàng trai thời cô ta danh sách, Phong phải đứng trước Tân danh sách ưa thích Lan Mâu thuẫn cho thấy nhân tìm bền vững Mơ hình tốn nêu có nhiều ứng dụng thực tiễn, đặc biệt bố trí người thực công việc theo sở trường cho hiệu 42 3.4 Xếp lịch hai máy Ta bàn đến ứng dụng toán ghép cặp Cụ thể toán xếp lịch hai máy: Có máy giống hệt n công việc cần xử lý (trên máy được) Để xử lý công việc cần đơn vị thời gian (1 giờ, chẳng hạn) Trình tự xử lý công việc mô tả đồ thị có hướng G, đỉnh biểu thị cơng việc Nếu có cung từ đỉnh i tới đỉnh j việc i cần xử lý trước việc j Cần lập lịch xử lý công việc hai máy cho tất công việc xử lý thời hạn sớm Có cách giải thích khác cho tốn sau: Mỗi công việc biểu thị chuyên đề cần dạy cho sinh viên (các chun đề có tính trước - sau) Chỉ bố trí dạy chun đề hai phòng học Vấn đề đặt cần xếp lịch dạy chuyên đề để kết thúc khóa học thời hạn sớm Bài tốn xếp lịch hai máy giải thời gian đa thức Thật vậy, G khơng có chu trình định hướng (nếu có cơng việc khơng thể thực được, việc phải chờ việc xử lý xong), nên ta xây dựng đồ thị (vô hướng) tương hợp G∗ sau: G∗ có tập đỉnh G có cạnh vô hướng (i, j) G khơng tồn đường có hướng từ i đến j hay từ j đến i Nói cách khác, i j hai cơng việc xếp làm đồng thời Tìm ghép cặp cực đại M ∗ G∗ Giả sử S tập đỉnh có bậc vào G (tại thời điểm xét) Hai quy tắc sau áp dụng lặp lặp lại q trình xếp lịch xử lý cơng việc: Nếu S có đỉnh khơng bị phủ M ∗ cơng việc tương ứng xếp xử lý máy, máy nghỉ loại đỉnh khỏi G Nếu S có hai đỉnh ghép cặp với M ∗ , cặp công việc tương ứng xếp làm đồng thời loại hai đỉnh khỏi G Nếu khơng áp dụng quy tắc kể đỉnh thuộc S ghép cặp với đỉnh không thuộc S Khi đó, ta làm sau Giả sử p1 ∈ S ghép cặp với q1 ∈ / S Giả sử p2 ∈ S có đường tới q1 p2 ghép cặp với q2 ∈ / S Khơng thể có đường từ q1 đến q2 , có p2 q2 không nối với cạnh G∗ Xét hai khả xảy ra: 43 • Khơng có đường từ q2 tới q1 : ta đổi ghép cặp (p1 , q1 ) (p2 , q2 ) thành (p1 , p2 ) (q1 , q2 ) với (q1 , q2 ) cạnh G∗ (Hình 3.8 a) Các cơng việc tương ứng với hai cặp đỉnh xếp làm đồng thời • Có đường từ q2 tới q1 (p2 có đường tới q1 ): Lặp lại lập luận với q2 thay cho q1 : ta tìm cặp đỉnh (p3 , q3 ), (Hình 3.8 b) Vì G khơng có chu trình nên lúc ta sinh cặp đỉnh khác biệt Do đồ thị hữu hạn nên đến lúc q trình phải dừng Khi đó, ta tìm cặp cơng việc S mà xếp làm đồng thời loại hai đỉnh tương ứng với hai việc khỏi G Hình 3.8: a Đổi lịch xử lý b Tiếp tục chứng minh Trong đồ thị lại, ta tiếp tục tìm tập đỉnh có bậc vào tiến hành xếp lịch đỉnh xét Ví dụ 3.4 Có n = 12 cơng việc (đánh số từ đến 12) cần xử lý nhờ dùng hai máy A B Trình tự xử lý cơng việc cho đồ thị G vẽ Hình 3.9 a Hãy lập lịch xử lý công việc để hồn thành chúng sớm mà khơng vi phạm trình tự trước - sau cơng việc? Đồ thị G∗ ghép cặp cực đại M ∗ G∗ vẽ Hình 3.9 b Hình 3.9: a Đồ thị G b Đồ thị G∗ 44 Kết quả: • Máy A xử lý công việc: 11 • Máy B xử lý công việc: 10 12 Thời gian hồn thành xử lý cơng việc: n − m∗ = 12 − = 6(giờ) Tóm lại, chương giới thiệu toán phân việc mà thực chất tốn ghép cặp có trọng số lớn đồ thị hai phần Trình bày thuật tốn gán nhãn giải tốn, kèm theo ví dụ minh họa thuật toán Một số ứng dụng quan trọng khác ghép cặp toán phủ cạnh, toán nhân bền vững thuật tốn Gale - Shapley độc đáo Cuối cùng, toán xếp lịch hai máy đưa toán ghép cặp cực đại đồ thị hai phần 45 Kết luận Đồ thị cấu trúc toán học rời rạc hay sử dụng để mô tả xử lý nhiều toán lý thuyết thực tiễn Các toán tối ưu đồ thị phong phú, đa dạng có nhiều ứng dụng rộng rãi thực tiễn Luận văn tập trung ý vào toán ghép cặp đồ thị ứng dụng toán ghép cặp Luận văn trình bày nội dung sau đây: Các khái niệm kiến thức lý thuyết đồ thị mạng: cách biểu diễn đồ thị (theo ma trận kề, ma trận liên thuộc, danh sách cạnh, danh sách kề) cách tìm kiếm đồ thị (theo chiều rộng BFS theo chiều sâu DFS) Bài tốn ghép cặp cực đại ghép cặp hồn hảo đồ thị, điều kiện tồn ghép cặp cực đại ghép cặp hồn hảo Các thuật tốn đa thức tìm ghép cặp cực đại đồ thị hai phần Một số ứng dụng toán ghép cặp: tốn phân việc (ghép cặp có trọng số lớn hay nhỏ nhất), toán phủ cạnh đồ thị, tốn "hơn nhân bền vững" toán xếp lịch hai máy Luận văn đề cập tới toán ghép cặp đồ thị hai phần số ứng dụng ghép cặp Với đồ thị bất kỳ, toán ghép cặp cực đại ghép cặp có trọng số lớn phức tạp hơn, cần nhiều thời gian tìm hiểu nghiên cứu tương lai 46 Tài liệu tham khảo [1] B T Tâm T V Thiệu (1998), Các phương pháp tối ưu hóa, NXB Giao thơng vận tải [2] D Cardoso (2001), Convex Quadratic Programming Approach to the Maximum Matching Problem, JOGO 21:91-106 [3] S Khuller, B Raghavachari (1997), Graph and Network Algorithms in the Computer Science and Engineering Handbook edited: Allen B Tucker Jr CRC Press, Inc [4] S Khuller, Y J Sussman and W Gasarch (1997), Advanced Algorithms, Lectures CMSC 858K, 94pp [5] B Korte and J Vygen (2006), Combinatorial Optimization: Theory and Algorithms, 3rd Edition, Springer [6] H W Kuhn (1995), The Hungarian Method for the Assignment Problem, Naval Research Logistics Quarterly 2, 83-97 [7] K H Rosen (1991), Discrete Mathematics and its Applications, 2nd Edition McGraw-Hill, Inc ... diễn đồ thị tìm kiếm đồ thị 1.2.1 Cách biểu diễn đồ thị 1.2.2 Các thuật tốn tìm kiếm đồ thị Bài toán ghép cặp đồ thị 2.1 Ghép cặp hoàn hảo ghép cặp cực 2.2 Ghép cặp đồ thị. .. đại ghép cặp hoàn hảo đồ thị, điều kiện tồn ghép cặp cực đại ghép cặp hồn hảo Các thuật tốn đa thức tìm ghép cặp cực đại đồ thị hai phần Một số ứng dụng toán ghép cặp: toán phân việc (ghép cặp. .. cách tìm kiếm đồ thị (theo chiều rộng BFS theo chiều sâu DFS) hay dựng thuật toán đồ thị Chương 2: "Bài toán ghép cặp đồ thị" giới thiệu toán ghép cặp cực đại, ghép cặp hoàn hảo đồ thị, điều kiện