bài giảng các chuyên đề phần 10
Số trang: 32
Loại file: pdf
Dung lượng: 676.28 KB
Lượt xem: 12
Lượt tải: 0
Xem trước 4 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Lát cắt hẹp nhất: Cho một đồ thị liên thông gồm n đỉnh và m cạnh, hãy tìm cách bỏ đi một số ít nhất các cạnh để làm cho đồ thị mất đi tính liên thông 4. Tập đại diện: Một lớp học có n bạn nam, n bạn nữ. Cho m món quà lưu niệm, (n ≤ m). Mỗi bạn có sở thích về một số món quà nào đó. Hãy tìm cách phân cho mỗi bạn nam tặng một món quà cho một bạn nữ thoả mãn: • Mỗi bạn nam chỉ tặng...
Nội dung trích xuất từ tài liệu:
bài giảng các chuyên đề phần 10Lý thuyết đồ thị 883. Lát cắt hẹp nhất: Cho một đồ thị liên thông gồm n đỉnh và m cạnh, hãy tìm cách bỏ đi một số ítnhất các cạnh để làm cho đồ thị mất đi tính liên thông4. Tập đại diện: Một lớp học có n bạn nam, n bạn nữ. Cho m món quà lưu niệm, (n ≤ m). Mỗi bạncó sở thích về một số món quà nào đó. Hãy tìm cách phân cho mỗi bạn nam tặng một món quà chomột bạn nữ thoả mãn:• Mỗi bạn nam chỉ tặng quà cho đúng một bạn nữ• Mỗi bạn nữ chỉ nhận quà của đúng một bạn nam• Bạn nam nào cũng đi tặng quà và bạn nữ nào cũng được nhận quà, món quà đó phải hợp sở thích của cả hai người.• Món quà nào đã được một bạn nam chọn thì bạn nam khác không được chọn nữa.Lê Minh HoàngLý thuyết đồ thị 89 §11. BÀI TOÁN TÌM BỘ GHÉP CỰC ĐẠI TRÊN ĐỒ THỊ HAI PHÍAI. ĐỒ THỊ HAI PHÍA (BIPARTITE GRAPH)Các tên gọi đồ thị hai phía, đồ thị lưỡng phân, đồ thị phân đôi, đồ thịđối sánh hai phần v.v... là để chỉ chung một dạng đơn đồ thị vôhướng G = (V, E) mà tập đỉnh của nó có thể chia làm hai tập con X, YY rời nhau sao cho bất kỳ cạnh nào của đồ thị cũng nối một đỉnh củaX với một đỉnh thuộc Y. Khi đó người ta còn ký hiệu G là (X∪Y, E) Xvà gọi một tập (chẳng hạn tập X) là tập các đỉnh trái và tập còn lạilà tập các đỉnh phải của đồ thị hai phía G. Các đỉnh thuộc X còngọi là các X_đỉnh, các đỉnh thuộc Y gọi là các Y_đỉnh.Để kiểm tra một đồ thị liên thông có phải là đồ thị hai phía hay không, ta có thể áp dụng thuật toánsau:Với một đỉnh v bất kỳ:X := {v}; Y := ∅;repeat Y := Y ∪ Kề(X); X := X ∪ Kề(Y);until (X∩Y ≠ ∅) or (X và Y là tối đại - không bổ sung được nữa);if X∩Y ≠ ∅ then < Không phải đồ thị hai phía >else ;Đồ thị hai phía gặp rất nhiều mô hình trong thực tế. Chẳng hạn quan hệ hôn nhân giữa tập nhữngngười đàn ông và tập những người đàn bà, việc sinh viên chọn trường, thầy giáo chọn tiết dạy trongthời khoá biểu v.v...II. BÀI TOÁN GHÉP ĐÔI KHÔNG TRỌNG VÀ CÁC KHÁI NIỆMCho một đồ thị hai phía G = (X∪Y, E) ở đây X là tập các đỉnh trái và Y là tập các đỉnh phải của GMột bộ ghép (matching) của G là một tập hợp các cạnh của G đôi một không có đỉnh chung.Bài toán ghép đôi (matching problem) là tìm một bộ ghép lớn nhất (nghĩa là có số cạnh lớn nhất)của GXét một bộ ghép M của G.• Các đỉnh trong M gọi là các đỉnh đã ghép (matched vertices), các đỉnh khác là chưa ghép.• Các cạnh trong M gọi là các cạnh đã ghép, các cạnh khác là chưa ghépNếu định hướng lại các cạnh của đồ thị thành cung, những cạnh chưa ghép được định hướng từ Xsang Y, những cạnh đã ghép định hướng từ Y về X. Trên đồ thị định hướng đó: Một đường đi xuấtphát từ một X_đỉnh chưa ghép gọi là đường pha, một đường đi từ một X_đỉnh chưa ghép tới mộtY_đỉnh chưa ghép gọi là đường mở.Một cách dễ hiểu, có thể quan niệm như sau:• Một đường pha (alternating path) là một đường đi đơn trong G bắt đầu bằng một X_đỉnh chưa ghép, đi theo một cạnh chưa ghép sang Y, rồi đến một cạnh đã ghép về X, rồi lại đến một cạnh chưa ghép sang Y... cứ xen kẽ nhau như vậy.• Một đường mở (augmenting path) là một đường pha. Bắt đầu từ một X_đỉnh chưa ghép kết thúc bằng một Y_đỉnh chưa ghép.Lê Minh HoàngLý thuyết đồ thị 90Ví dụ: với đồ thị hai phía như hình bên, và bộ ghépM = {(X1, Y1), (X2, Y2)} X1 Y1X3 và Y3 là những đỉnh chưa ghép, các đỉnh khác là đã ghépĐường (X3, Y2, X2, Y1) là đường pha X2 Y2Đường (X3, Y2, X2, Y1, X1, Y3) là đường mở.III. THUẬT TOÁN ĐƯỜNG MỞ X3 Y3Thuật toán đường mở để tìm một bộ ghép lớn nhất phát biểu như X Ysau:• Bắt đầu từ một bộ ghép bất kỳ M (thông thường bộ ghép được khởi gán bằng bộ ghép rỗng hay được tìm bằng các thuật toán tham lam)• Sau đó đi tìm một đường mở, nếu tìm được thì mở rộng bộ ghép M như sau: Trên đường mở, 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. Nếu không tìm được đường mở thì bộ ghép hiện thời là lớn nhất.; đường mở xuất phát từ x tới một đỉnh y chưa ghép ∈Y> dowhile Lý thuyết đồ thị 913. Tìm đường mở như thế nào.Vì đường mở bắt đầu từ một X_đỉnh chưa ghép, đi theo một cạnh chưa ghép sang tập Y, rồi theomột đã ghép để về tập X, rồi lại một cạnh chưa ghép sang tập Y ... cuối cùng là cạnh chưa ghép tớimột Y_đỉnh chưa ghép. Nên có thể thấy ...
Nội dung trích xuất từ tài liệu:
bài giảng các chuyên đề phần 10Lý thuyết đồ thị 883. Lát cắt hẹp nhất: Cho một đồ thị liên thông gồm n đỉnh và m cạnh, hãy tìm cách bỏ đi một số ítnhất các cạnh để làm cho đồ thị mất đi tính liên thông4. Tập đại diện: Một lớp học có n bạn nam, n bạn nữ. Cho m món quà lưu niệm, (n ≤ m). Mỗi bạncó sở thích về một số món quà nào đó. Hãy tìm cách phân cho mỗi bạn nam tặng một món quà chomột bạn nữ thoả mãn:• Mỗi bạn nam chỉ tặng quà cho đúng một bạn nữ• Mỗi bạn nữ chỉ nhận quà của đúng một bạn nam• Bạn nam nào cũng đi tặng quà và bạn nữ nào cũng được nhận quà, món quà đó phải hợp sở thích của cả hai người.• Món quà nào đã được một bạn nam chọn thì bạn nam khác không được chọn nữa.Lê Minh HoàngLý thuyết đồ thị 89 §11. BÀI TOÁN TÌM BỘ GHÉP CỰC ĐẠI TRÊN ĐỒ THỊ HAI PHÍAI. ĐỒ THỊ HAI PHÍA (BIPARTITE GRAPH)Các tên gọi đồ thị hai phía, đồ thị lưỡng phân, đồ thị phân đôi, đồ thịđối sánh hai phần v.v... là để chỉ chung một dạng đơn đồ thị vôhướng G = (V, E) mà tập đỉnh của nó có thể chia làm hai tập con X, YY rời nhau sao cho bất kỳ cạnh nào của đồ thị cũng nối một đỉnh củaX với một đỉnh thuộc Y. Khi đó người ta còn ký hiệu G là (X∪Y, E) Xvà gọi một tập (chẳng hạn tập X) là tập các đỉnh trái và tập còn lạilà tập các đỉnh phải của đồ thị hai phía G. Các đỉnh thuộc X còngọi là các X_đỉnh, các đỉnh thuộc Y gọi là các Y_đỉnh.Để kiểm tra một đồ thị liên thông có phải là đồ thị hai phía hay không, ta có thể áp dụng thuật toánsau:Với một đỉnh v bất kỳ:X := {v}; Y := ∅;repeat Y := Y ∪ Kề(X); X := X ∪ Kề(Y);until (X∩Y ≠ ∅) or (X và Y là tối đại - không bổ sung được nữa);if X∩Y ≠ ∅ then < Không phải đồ thị hai phía >else ;Đồ thị hai phía gặp rất nhiều mô hình trong thực tế. Chẳng hạn quan hệ hôn nhân giữa tập nhữngngười đàn ông và tập những người đàn bà, việc sinh viên chọn trường, thầy giáo chọn tiết dạy trongthời khoá biểu v.v...II. BÀI TOÁN GHÉP ĐÔI KHÔNG TRỌNG VÀ CÁC KHÁI NIỆMCho một đồ thị hai phía G = (X∪Y, E) ở đây X là tập các đỉnh trái và Y là tập các đỉnh phải của GMột bộ ghép (matching) của G là một tập hợp các cạnh của G đôi một không có đỉnh chung.Bài toán ghép đôi (matching problem) là tìm một bộ ghép lớn nhất (nghĩa là có số cạnh lớn nhất)của GXét một bộ ghép M của G.• Các đỉnh trong M gọi là các đỉnh đã ghép (matched vertices), các đỉnh khác là chưa ghép.• Các cạnh trong M gọi là các cạnh đã ghép, các cạnh khác là chưa ghépNếu định hướng lại các cạnh của đồ thị thành cung, những cạnh chưa ghép được định hướng từ Xsang Y, những cạnh đã ghép định hướng từ Y về X. Trên đồ thị định hướng đó: Một đường đi xuấtphát từ một X_đỉnh chưa ghép gọi là đường pha, một đường đi từ một X_đỉnh chưa ghép tới mộtY_đỉnh chưa ghép gọi là đường mở.Một cách dễ hiểu, có thể quan niệm như sau:• Một đường pha (alternating path) là một đường đi đơn trong G bắt đầu bằng một X_đỉnh chưa ghép, đi theo một cạnh chưa ghép sang Y, rồi đến một cạnh đã ghép về X, rồi lại đến một cạnh chưa ghép sang Y... cứ xen kẽ nhau như vậy.• Một đường mở (augmenting path) là một đường pha. Bắt đầu từ một X_đỉnh chưa ghép kết thúc bằng một Y_đỉnh chưa ghép.Lê Minh HoàngLý thuyết đồ thị 90Ví dụ: với đồ thị hai phía như hình bên, và bộ ghépM = {(X1, Y1), (X2, Y2)} X1 Y1X3 và Y3 là những đỉnh chưa ghép, các đỉnh khác là đã ghépĐường (X3, Y2, X2, Y1) là đường pha X2 Y2Đường (X3, Y2, X2, Y1, X1, Y3) là đường mở.III. THUẬT TOÁN ĐƯỜNG MỞ X3 Y3Thuật toán đường mở để tìm một bộ ghép lớn nhất phát biểu như X Ysau:• Bắt đầu từ một bộ ghép bất kỳ M (thông thường bộ ghép được khởi gán bằng bộ ghép rỗng hay được tìm bằng các thuật toán tham lam)• Sau đó đi tìm một đường mở, nếu tìm được thì mở rộng bộ ghép M như sau: Trên đường mở, 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. Nếu không tìm được đường mở thì bộ ghép hiện thời là lớn nhất.; đường mở xuất phát từ x tới một đỉnh y chưa ghép ∈Y> dowhile Lý thuyết đồ thị 913. Tìm đường mở như thế nào.Vì đường mở bắt đầu từ một X_đỉnh chưa ghép, đi theo một cạnh chưa ghép sang tập Y, rồi theomột đã ghép để về tập X, rồi lại một cạnh chưa ghép sang tập Y ... cuối cùng là cạnh chưa ghép tớimột Y_đỉnh chưa ghép. Nên có thể thấy ...
Tìm kiếm theo từ khóa liên quan:
thuật toán tìm kiếm các chuyên đề thuật toán lập trình pascal lập trình các giải thuậtGợi ý tài liệu liên quan:
-
Giáo trình Toán rời rạc: Phần 1 - Nguyễn Gia Định
67 trang 231 0 0 -
10 trang 68 0 0
-
CÁC BÀI TẬP PASCAL HAY DÀNH CHO HS LỚP 9
5 trang 43 0 0 -
263 trang 40 0 0
-
Bài giảng Lý thuyết đồ thị - Lê Minh Hoàng
120 trang 33 0 0 -
Đề thi học sinh giỏi môn Tin học lớp 9 cấp tỉnh năm 2018-2019 - Sở GD&ĐT Lâm Đồng
3 trang 33 0 0 -
Giáo trình Cấu trúc dữ liệu: Phần 2
108 trang 32 0 0 -
Lecture note Artificial Intelligence - Chapter 4a: Informed search algorithms
6 trang 31 0 0 -
Giáo trình Cấu trúc dữ liệu và thuật toán (Tái bản): Phần 2
115 trang 28 0 0 -
Ứng dụng toán học rời rạc trong tin học: Phần 1
422 trang 27 0 0