1. Trang chủ
  2. » Luận Văn - Báo Cáo

ghép cặp và bài toán phân việc trên đồ thị

50 887 3

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 50
Dung lượng 605,23 KB

Nội dung

Vì thế, chủ đề ghép cặp và phân việc luôn được nhiều ngườiquan tâm nghiên cứu và ứng dụng.Mục tiêu chính của đề tài luận văn là tìm hiểu và trình bày một số kếtquả lý thuyết về bài toán

Trang 1

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

Trang 2

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

Trang 3

Mục lục

1.1 Đồ thị và mạng 3

1.1.1 Khái niệm đồ thị 3

1.1.2 Đường và chu trình trong đồ thị vô hướng 5

1.1.3 Rừng và cây 6

1.1.4 Một số dạng đồ thị đặc biệt 7

1.1.5 Khái niệm mạng 9

1.2 Biểu diễn đồ thị và tìm kiếm trên đồ thị 9

1.2.1 Cách biểu diễn đồ thị 9

1.2.2 Các thuật toán tìm kiếm trên đồ thị 11

2 Bài toán ghép cặp trên đồ thị 15 2.1 Ghép cặp hoàn hảo và ghép cặp cực đại 15

2.2 Ghép cặp trong đồ thị hai phần 20

2.2.1 Điều kiện tồn tại 20

2.2.2 Thuật toán Edmonds 22

2.2.3 Thuật toán Hopcroft - Karp 24

3 Một số ứng dụng của ghép cặp 29 3.1 Bài toán phân việc 29

3.1.1 Nội dung bài toán 29

3.1.2 Mô tả thuật toán giải 31

3.1.3 Ví dụ minh họa 35

3.2 Bài toán phủ cạnh 39

3.3 Bài toán hôn nhân bền vững 40

3.4 Xếp lịch trên hai máy 42

Trang 4

Lời cảm ơn

Trong suốt quá trình làm luận văn, tôi luôn nhận được sự hướng dẫn, chỉbảo tận tình và giúp đỡ nghiêm túc của GS.TS Trần Vũ Thiệu (Viện Toánhọc, Viện Hàn lâm Khoa học và Công nghệ Việt Nam) Tôi xin chân thànhbày tỏ lòng biết ơn sâu sắc đến Thầy Thầy đã dành nhiều thời gian hướngdẫn cũng như giải đáp thắc mắc của tôi Thầy đã giúp đỡ tôi bổ sung nhiều

về kiến thức, khả năng nghiên cứu, chọn lọc và tổng hợp các tài liệu để hoànthành luận văn Tôi xin kính chúc Thầy và gia đình luôn luôn mạnh khỏe,hạnh phúc

Qua đây, tôi xin gửi tới các quý Thầy, Cô tham gia giảng dạy khóa Caohọc Toán 2012 - 2014 tại trường Đại học Khoa học - Đại học Thái Nguyên

và Viện Toán học lời cảm ơn sâu sắc nhất Các Thầy, Cô đã mang đến chotôi nhiều kiến thức bổ ích, không chỉ về mặt chuyên môn mà còn cả ở trongcuộc sống

Tôi cũng xin chân thành cảm ơn các bạn đồng nghiệp, đồng môn đã giúp

đỡ tôi trong thời gian học tập tại trường Đại học Khoa học - Đại học TháiNguyên và trong quá trình hoàn thành luận văn này

Cuối cùng, tôi 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 và tạo mọi điều kiện tốt nhất để tôi có được thànhquả ngày hôm nay

Thái Nguyên, tháng 9 năm 2014

Người thực hiện

Đỗ Thị Thái Linh

Trang 5

tế và đời sống Vì thế, chủ đề ghép cặp và phân việc luôn được nhiều ngườiquan tâm nghiên cứu và ứng dụng.

Mục tiêu chính của đề tài luận văn là tìm hiểu và trình bày một số kếtquả lý thuyết về bài toán ghép cặp cực đại và ghép cặp hoàn hảo trên đồ thị(chủ yếu là đồ thị hai phần), các điều kiện tồn tại ghép cặp cực đại và ghépcặp hoàn hảo, bài toán phân việc và các ứng dụng của ghép cặp, các thuậttoán giải bài toán ghép cặp, bài toán phân việc và phân tích độ phức tạp củacác thuật toán

Nội dung luận văn được chia thành ba chương:

Chương 1: "Khái niệm cơ bản về đồ thị " trình bày và giải thích bằng ví

dụ các định nghĩa và khái niệm cơ bản thường dùng trong lý thuyết đồ thị vàmạng: đồ thị vô hướng, đồ thị có hướng, đỉnh và cạnh, đường đi và chu trìnhtrong đồ thị, đồ thị liên thông Miêu tả nhiều dạng đồ thị con khác nhau: đồthị con cảm sinh, đồ thị con bao trùm của một đồ thị và các dạng đồ thị đặcbiệt: rừng và cây cùng các 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, danhsách kề) đáng được chú ý Hai cách tìm kiếm trên đồ thị (theo chiều rộngBFS và theo chiều sâu DFS) rất hay được dựng trong các thuật toán về đồthị

Chương 2: "Bài toán ghép cặp trên đồ thị " giới thiệu bài toán ghép cặp

Trang 6

cực đại, ghép cặp hoàn hảo trên đồ thị, điều kiện cần và đủ để tồn tại ghépcặp cực đại trên đồ thị bất kỳ (định lý Berge) và ghép cặp hoàn hảo trên đồthị hai phần (định lý Hall và định lý Frobenius) Trình bày cách đưa bài toánghép cặp cực đại trên đồ thị hai phần về bài toán luồng lớn nhất trên mạng

và hai thuật toán đa thức tìm ghép cặp cực đại trên đồ thị hai phần: thuậttoán Edmonds với độ phức tạp tính toán O(m.n) và thuật toán Hopcroft -Karp với độ phức tạp tốt nhất O(√

n.m).Chương 3: "Một số ứng dụng của ghép cặp" trình bày bài toán phân việc

mà thực chất là bài toán ghép cặp có trọng số lớn nhất (hay nhỏ nhất) trên

đồ thị hai phần và giới thiệu thuật toán gán nhãn giải bài toán với tên gọiphương pháp Hung-ga-ri, thuật toán này do Kuhn và Munkres nêu ra đầutiên (1955) Tiếp theo luận văn trình bày một số ứng dụng quan trọng kháccủa ghép cặp là bài toán phủ cạnh trên đồ thị, bài toán "hôn nhân bền vững"

và thuật toán Gale - Shapley độc đáo giải bài toán Cuối chương là bài toánxếp lịch trên hai máy, bài toán này đưa được về bài toán ghép cặp cực đạitrên đồ thị hai phần

Do thời gian và kiến thức còn hạn chế nên chắc chắn luận văn không tránhkhỏi những thiếu sót nhất định, kính mong quý thầy cô và các bạn đóng góp

ý kiến để tôi tiếp tục hoàn thiện luận văn này

Trang 7

Chương 1

Khái niệm cơ bản về đồ thị

Chương này trình bày những định nghĩa và khái niệm cơ bản thường dùngtrong lý thuyết đồ thị, nhằm thống nhất tên gọi và cách hiểu các vấn đề sẽđược đề cập tới trong luận văn Nội dung của chương được tham khảo chủyếu từ các tài liệu [3], [5] và [7]

1.1 Đồ thị và mạng

1.1.1 Khái niệm đồ thị

Có thể hiểu đồ thị là một tập hợp các điểm, gọi là nút hay đỉnh, và mộttập hợp các đoạn (thẳng hay cong) nối liền một số cặp điểm này, gọi là cạnhhay cung của đồ thị Mỗi đỉnh của đồ thị thường được ký hiệu bằng các chữcái a, b, c hoặc các chữ số 1, 2, 3, Cạnh nối đỉnh i với đỉnh j được kýhiệu là (i, j) Nếu đồ thị G có tập đỉnh là V và tập cạnh là E thì ta viết

G = (V, E) Ta cũng dùng ký hiệu V (G) để chỉ tập đỉnh và E (G) để chỉtập cạnh của đồ thị G Ký hiệu n = |V (G)| là số đỉnh và m = |E (G)| là sốcạnh của đồ thị

Hình 1.1: Đồ thị đỉnh và cạnh Hình 1.2: Đồ thị không liên thông

Mỗi đồ thị có thể được biểu diễn bởi một hình vẽ trên mặt phẳng Chẳnghạn: Hình 1.1 biểu diễn một đồ thị có 7 đỉnh (đánh số từ 1 đến 7) và 9 cạnh

Trang 8

(mỗi cạnh là một đoạn thẳng nối hai đỉnh) Chú ý rằng điểm cắt nhau củahai cạnh (1, 4) và (2, 3), cũng như của hai cạnh (4, 7) và (5, 6) trong hình

vẽ không phải là đỉnh của đồ thị

Một cạnh của đồ thị gọi là cạnh có hướng nếu có quy định rõ một mútcủa cạnh là đỉnh đầu, còn mút kia là đỉnh cuối Cạnh có hướng còn gọi làcung, cung đi từ đỉnh i đến đỉnh j ký hiệu là −−→

(i, j) hoặc đơn giản là (i, j)

nếu không gây nhầm lẫn

Hình 1.3: Đồ thị có hướng

Một đồ thị gồm toàn các cạnh gọi là đồ thị vô hướng, đồ thị gồm toàn cáccung gọi là đồ thị có hướng Một đồ thị vừa có cạnh vừa có cung gọi là đồthị hỗn hợp Bằng cách thay một cạnh bởi hai cung có hướng ngược chiềunhau, ta có thể quy mọi đồ thị về đồ thị có hướng Hình 1.3 mô tả một đồthị có hướng

Nếu e = (u, v) là một cạnh thì ta nóie liên thuộc hai đỉnh u, v hoặc e nối

u, v Khi đó, u và v gọi là kề nhau và là đầu mút của e, u(v) là láng giềngcủa v(u) Khi e = (u, v) là cung, ta nói u là đỉnh đầu, v là đỉnh cuối và e đikhỏi u và đi tới v Hai cạnh (cung) e và e0 gọi là kề nhau nếu chúng có đỉnhchung

Hai cạnh e, e0 cùng nối liền hai đỉnh giống nhau gọi là cạnh kép Đồ thịkhông có cạnh kép gọi là một đơn đồ thị Trái lại, gọi là đa đồ thị

Bậc của đỉnh v trong đồ thị vô hướng là số cạnh liên thuộc nó, ký hiệu là

ρ(v) Đỉnh có bậc 0 gọi là đỉnh cô lập, đỉnh có bậc 1 gọi là đỉnh treo Tương

tự, trong đồ thị có hướng ta gọi bậc ra (bậc vào) của đỉnh v là số cung đikhỏi v (số cung đi tới v), ký hiệu tương ứng là ρ+(v) và ρ−(v)

Trong đồ thị vẽ ở Hình 1.2 ta thấy: ρ(9) = 0 nên 9 là đỉnh cô lập;

ρ(1) = ρ(5) = 1 nên 1 và 5 là đỉnh treo; ρ(2) = ρ(3) = ρ(4) = ρ(6) =ρ(7) = ρ(8) = 2

Dễ chứng minh các tính chất sau đây về bậc của đỉnh trong đồ thị

Mệnh đề 1.1 a) Trong đồ thị vô hướng, tổng bậc của mọi đỉnh bằng hailần số cạnh của đồ thị và số đỉnh có bậc lẻ bao giờ cũng là một số chẵn

Trang 9

b) Trong đồ thị có hướng, tổng các bậc vào của mọi đỉnh bằng tổng cácbậc ra (của mọi đỉnh) và bằng tổng số cung của đồ thị.

Nhiều tính chất của đồ thị có hướng không phụ thuộc vào hướng các cungtrong đồ thị Vì thế, khi bỏ qua hướng trên các cung (đổi cung thành cạnh)

ta sẽ nhận được một đồ thị vô hướng, gọi là đồ thị nền của đồ thị có hướng

đã cho

Đồ thị con hay đồ thị bộ phận của một đồ thị G là đồ thị nhận được

từ G bằng cách bỏ đi một số đỉnh và một số cạnh của nó Nói chính xác,

H = (V (H), E(H))là một đồ thị con của GnếuV (H) ⊆ V (G) và E(H) ⊆E(G) Ta nói H là đồ thị con cảm sinh của đồ thị G nếu V (H) ⊆ V (G)

và E (H) = {(x, y) ∈ E (G) : x, y ∈ V (H)} Đồ thị con H của G gọi là đồthị con bao trùm nếu V (H) = V (G) Một đồ thị có đỉnh, nhưng không cócạnh nào gọi là một đồ thị rỗng

Với đồ thị vô hướng G và 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 và X ⊆ V (G) ta định nghĩa:

δ (X) = E (X, V (G) \X).Tập đỉnh láng giềng của X ký hiệu là:

N (X) = {v ∈ V (G) \X : E (X, {v}) 6= ∅}

1.1.2 Đường và chu trình trong đồ thị vô hướng

Đường P từ đỉnh u tới đỉnh v là một dãy liên tiếp các cạnh có dạng:

(a0, a1), (a1, a2), , (ak−1, ak) với (ai−1, ai) ∈ E(G), a0 = u, ak = v và k > 1,trong đó các đỉnh a0, a1, , ak đều khác nhau Để đơn giản, ta viết P ={a0, a1, , ak} và nói đó là đường nối đỉnh u và đỉnh v Đỉnh u gọi là đỉnhđầu, đỉnh v gọi là đỉnh cuối của P Một đường nối một đỉnh tới chính nó(đỉnh đầu trùng với đỉnh cuối) gọi là một chu trình Độ dài của đường (chutrình) là số cạnh của đường (chu trình) đó

Ví dụ 1.1 Với đồ thị vẽ ở Hình 1.1, một đường nối đỉnh 1 và đỉnh 6 là:

(1, 4), (4, 5), (5, 6) hay đơn giản là 1, 4, 5, 6 Hai đường khác từ 1 đến 6 là

1, 3, 4, 5, 6 và 1, 2, 3, 5, 6, Đồ thị này có các chu trình sau:

Trang 10

(1, 2), (2, 3), (3, 1); (1, 4), (4, 5), (5, 3), (3, 1);

Đường và chu trình trong đồ thị có hướng được định nghĩa tương tự (cungthay cho cạnh) Để phân biệt, đôi khi ta gọi đó là đường (chu trình) địnhhướng Đồ thị có hướng ở Hình 1.3 có các đường định hướng từ đỉnh 1 tớiđỉnh 6 là: 1, 3, 6; 1, 3, 4, 6; 1, 3, 5, 6; 1, 2, 4, 6 Đồ thị đó không có chutrình định hướng

Ví dụ 1.2 Đồ thị vẽ ở Hình 1.1 là liên thông, trong khi đồ thị vẽ ở Hình1.2 là không liên thông (gồm3 thành phần liên thông: {1, 2, 3, 4, 5}; {6, 7, 8};

a Rừng (không liên thông) b Cây (liên thông) c Đồ thị hình sao

Đồ thị hình sao là một cây có nhiều nhất một đỉnh không phải là lá Một

đồ thị con, không chứa chu trình của đồ thị G gọi là một cây của G Một đồthị con bao trùm của G mà là một cây được gọi là cây bao trùm của G

Trang 11

Sau đây là các tính chất đặc trưng của một cây:

Mệnh đề 1.3 Cho đồ thị vô hướng n đỉnh G Các điều sau tương đương:

a G là một cây (tức là G là đồ thị liên thông, không có chu trình);

b G không có chu trình và có n − 1 cạnh;

c G liên thông và có n − 1 cạnh;

d Mỗi cạnh của G là một cầu;

e G là đồ thị tối tiểu có δ (X) 6= ∅ với mọi ∅ 6= X ⊂ V (G);

f Khi thêm vào G một cạnh bất kỳ sẽ tạo nên một chu trình duy nhất;

g G chứa đường duy nhất nối hai đỉnh bất kỳ

1.1.4 Một số dạng đồ thị đặc biệt

Ngoài rừng, cây và đồ thị hình sao, ta nêu thêm hai dạng đồ thị đặc biệthay gặp trong nhiều ứng dụng

Đồ thị đầy đủ là đơn đồ thị vô hướng mà giữa hai đỉnh bất kỳ của nó luôn

có một cạnh nối Đồ thị đầy đủn đỉnh ký hiệu là Kn và có tất cả n(n − 1)/2

cạnh Các đồ thị đầy đủ K3, K4 và K5 vẽ ở Hình 1.4

Hình 1.4: Đồ thị đầy đủ

Đơn đồ thị vô hướng G = (V, E) gọi là đồ thị hai phần nếu có thể phânhoạch tập đỉnhV = A ∪ B (A ∩ B = ∅) sao cho cả hai đồ thị con sinh bởi A

và B đều là đồ thị rỗng, tức là G chỉ có các cạnh nối một đỉnh nào đó trong

A với một đỉnh nào đó trong B Ta viết G = (A ∪ B, E) để chỉ đồ thị haiphần với tập đỉnh A ∪ B Cách phân tích một đồ thị thành hai phần có thểkhông duy nhất

Hình 1.5 nêu hai ví dụ về đồ thị hai phần Mặc dù có thể không dễ dàngnhận ra ngay ví dụ thứ hai Nhưng nếu đặtA = {1, 2, 3, 4}vàB = {5, 6, 7, 8}

thì rõ ràng đó là một đồ thị hai phần

Trang 12

Hình 1.5: Đồ thị hai phần

Mệnh đề sau đây nêu một tính chất đặc trưng của đồ thị hai phần:Mệnh đề 1.4 Đơn đồ thị G là đồ thị hai phần khi và chỉ khi mọi chu trìnhtrong G đều có độ dài chẵn

Dựa vào mệnh đề trên, để kiểm tra xem một đơn đồ thị liên thông đã cho

G = (V, E) có phải là đồ thị hai phần hay không, ta có thể áp dụng thủ tụcsau: Xét đỉnh bất kỳ v ∈ V Đặt X = {v}, Y = {u ∈ V : (u, v) ∈ E} (tậpđỉnh kề v)

a) Ký hiệu S = {u ∈ V \X : ∃w ∈ Y : (u, w) ∈ E}là tập các đỉnh (khôngthuộc X) kề với một đỉnh nào đó thuộc Y Nếu thấy Y ∩ S 6= ∅ thì G khôngphải là đồ thị hai phần: dừng kiểm tra Trái lại, đặt X := X ∪ S

b) Ký hiệuT = {u ∈ V \Y : ∃w ∈ X : (u, w) ∈ E}là tập các đỉnh (khôngthuộc Y) kề với một đỉnh nào đó thuộc X Nếu thấy X ∩ T 6= ∅ thì G khôngphải là đồ thị hai phần: dừng kiểm tra Trái lại, đặt Y = Y ∪ T

Tiếp tục quá trình trên cho tới khi phát hiện đồ thị không phải là haiphần hoặc đã xét hết mọi đỉnh của đồ thị (S = ∅ hay T = ∅) Trong trườnghợp sau, ta kết luận đồ thị là hai phần

Đồ thị hai phần G = (A ∪ B, E) với |A| = m, |B| = n và E ={(a, b) : a ∈ A, b ∈ B} được gọi là đồ thị hai phần đầy đủ và ký hiệu là

Km,n Đồ thị này có m.n cạnh Hình 1.6 nêu một vài ví dụ về đồ thị hai phầnđầy đủ: K2,3, K3,3, K3,4

Hình 1.6: Đồ thị hai phần đầy đủ

Trang 13

1.1.5 Khái niệm mạng

Trong nhiều ứng dụng ta thường quan tâm tới các mạng, tức là các đồ thị

mà trên các cạnh hay cung của nó có các luồng vật chất di chuyển Chẳnghạn, mạng lưới giao thông, mạng thông tin liên lạc, mạng phân phối điện,mạng ống dẫn dầu, mạng cấp nước thành phố,

Có thể hiểu mạng là một đồ thị liên thông (vô hướng hay có hướng) màtrên mỗi cạnh hay cung của đồ thị có gắn một số không âm, gọi là nănglực lưu thông của cạnh hay cung đó Năng lực lưu thông của cạnh hay cungcho biết lượng vật chất tối đa có thể di chuyển trên cạnh hay cung đó (tấn/giờ đối với mạng ống dẫn dầu, m3/ phút đối với mạng cấp nước thành phố,xung/ giây đối với mạng thông tin liên lạc, số xe/ giờ đối với mạng giaothông thành phố)

Các đỉnh trong mạng có thể biểu diễn các kho chứa hàng, các đài tiếp âm,các nút giao thông hay các trạm bơm,

Nếu không có hạn chế đối với lượng vật chất di chuyển từ đỉnh i tới đỉnh

j trong mạng thì năng lực lưu thông dij đặt bằng một số khá lớn, ký hiệu

Gz Còn nếu không có cạnh hay cung nối hai đỉnh i và j thì đặt năng lựclưu thông dij = 0 Ma trận lập nên từ các hệ số năng lực lưu thông của cáccạnh hay cung trong mạng gọi là ma trận năng lực lưu thông của mạng

1.2 Biểu diễn đồ thị và tìm kiếm trên đồ thị

Cũng có thể dùng ma trận kề để biểu diễn đồ thị có hướng: mij = 1 nếu

có cung đi từ i tới j Ma trận kề của đồ thị vô hướng là đối xứng, nhưng

ma trận kề của đồ thị có hướng nói chung không đối xứng Ví dụ, đồ thị vôhướng vẽ ở Hình 1.1 và đồ thị có hướng vẽ ở Hình 1.3 có các ma trận kề lần

Trang 14

Một mạng có thể được biểu diễn bằng ma trận năng lực lưu thông của

nó Đó là sự mở rộng khái niệm ma trận kề của đồ thị Đồ thị có hướng vẽ ởHình 1.3 sẽ trở thành một mạng nếu nó được gắn với một ma trận năng lựclưu thông, chẳng hạn:

• Danh sách cạnh (cung) Trường hợp đồ thị thưa (ví dụ, số cạnh m

6 6 lần số đỉnh n) ta dùng cách biểu diễn đồ thị dưới dạng danh sách cạnh(cung)

Trong cách biểu diễn này mỗi cạnh (cung) e = (x, y) của đồ thị sẽ đượclưu giữ nhờ hai biến nguyên Dau(e), Cuoi(e) Nhược điểm của cách biểu diễnnày là khó xác định các đỉnh của đồ thị kề với một đỉnh cho trước

Danh sách cạnh (cung) của đồ thị vẽ ở Hình 1.1 (Hình 1.3) như sau:

Danh sách cạnh Danh sách cungĐầu Cuối Đầu Cuối

Trang 15

dùng nhất Theo cách biểu diễn này, ứng với mỗi đỉnh u của đồ thị ta sẽ lưugiữ danh sách các đỉnh kề u: Ke(u) = {v ∈ V (G) : (u, v) ∈ E (G)}

Ví dụ 1.3 Danh sách kề của đồ thị ở Hình 1.1 và 1.3 là (0 chỉ hết danhsách):

Đồ thị vô hướng Đồ thị có hướngĐỉnh Danh sách kề Đỉnh Danh sách kề

bve =



1 nếu đỉnh v liên thuộc cạnh e

0 nếu đỉnh v không liên thuộc cạnh e

Với đồ thị có hướng thì bve = 1 nếu v là đỉnh đầu của cung e và bve = 0

nếu v không phải là đỉnh đầu của e Ví dụ, đồ thị vô hướng vẽ ở Hình 1.1

và đồ thị có hướng vẽ ở Hình 1.3 có các ma trận liên thuộc đỉnh - cạnh lầnlượt là:

1.2.2 Các thuật toán tìm kiếm trên đồ thị

Các thuật toán cho phép duyệt một cách có hệ thống mọi đỉnh của đồ thịgọi là các thuật toán tìm kiếm trên đồ thị Có hai thuật toán tìm kiếm phổbiến trên đồ thị Đó là:

Trang 16

•Tìm kiếm theo chiều sâu (DFS = Depth-First Search) Ý tưởng thuậttoán: Bắt đầu từ một đỉnh v0 nào đó của đồ thị, gọi là đỉnh gốc: Tiến hành

"xét" đỉnh v0 (ví dụ in ra tên đỉnh, gán nhãn cho đỉnh, ) Tiếp đó, chọnmột đỉnh u là đỉnh (chưa xét) tuỳ ý kề v0 và tiếp tục quá trình tìm kiếm từđỉnh u (như đã làm đối với v0) Nói chung, khi đang ở đỉnh v, nếu trong sốcác đỉnh kề v tìm được đỉnh w (chưa xét) thì ta tiếp tục quá trình tìm kiếm

từ đỉnh w này Còn nếu mọi đỉnh kề v đều đã được xét thì đỉnh v xem như

đã được xét (duyệt) xong và ta tiếp tục tìm kiếm từ một đỉnh mà trước đây

từ đỉnh đó ta đã tới v, nếu v 6= v0 (đỉnh gốc) hoặc dừng quá trình tìm kiếmnếu v = v0

Khi dừng quá trình tìm kiếm từ đỉnh gốc v0, ta đã duyệt tất cả các đỉnh

ở trên cùng một thành phần liên thông với v0 Nếu sau đó trong đồ thị vẫncòn đỉnh chưa xét thì ta lại chọn một đỉnh trong số đó làm đỉnh gốc và lặplại quá trình tìm kiếm như đã mô tả ở trên

Quá trình tìm kiếm theo chiều sâu sẽ tạo ra một đồ thị con gọi là rừng(gồm nhiều cây với gốc khác nhau) tối đại Đó là tập hợp tất cả các cạnh

mà từ đó đã dẫn đến phát hiện đỉnh mới trong quá trình tìm kiếm Rừngnày được gọi là rừng DFS Đó là đồ thị con F của đồ thị đã cho G sao chotrongF không có chu trình và khi thêm vào F một cạnh bất kỳ củaG khôngthuộcF sẽ tạo nên với các cạnh thuộc F một chu trình duy nhất Rừng DFS

có thể thu được trong quá trình tìm kiếm DFS nhờ dùng cái gọi là "con trỏcha", trỏ tới đỉnh mà từ đó đã dẫn tới đỉnh được xét trong quá trình tìmkiếm Các đỉnh gốc của mỗi thành phần liên thông trong F có con trỏ chabằng Nil (rỗng - không trỏ vào đâu cả)

Hình 1.7: Tìm kiếm theo chiều sâu: a, Đồ thị ban đầu; b, Rừng DFS

Hình 1.7 vẽ đồ thị gồm hai thành phần liên thông Quá trình tìm kiếm

Trang 17

theo chiều sâu (DFS) bắt đầu từ đỉnh 1 và tiến hành duyệt các đỉnh của đồthị theo thứ tự: 1, 2, 4, 3, 5, 6 Sau đó quá trình tìm kiếm tiếp tục với cácđỉnh 7, 8, 9 Rừng DFS gồm các cạnh liền nét.

• Tìm kiếm theo chiều rộng (BFS = Breadth-First Search) Để ý rằngtrong thuật toán tìm kiếm theo chiều sâu, đỉnh được thăm càng muộn sẽcàng sớm trở thành đã duyệt xong Điều đó có nghĩa là các đỉnh được thăm

sẽ được đặt vào trong một cấu trúc dữ liệu kiểu "ngăn xếp - stack" (giốngnhư khi xếp đĩa: đĩa được xếp sau ở phía trên và đĩa trên cùng sẽ được lấy

ra trước) Thuật toán tìm kiếm theo chiều rộng trên đồ thị được xây dựngtrên cơ sở thay thế cấu trúc ngăn xếp bởi cấu trúc dữ liệu kiểu "hàng đợi

- queue" (giống như khi xếp hàng: người xếp hàng tiếp theo phải đứng vàocuối hàng và người đứng đầu hàng sẽ được gọi trước) Với cách tìm kiếm này,đỉnh được thăm càng sớm sẽ sớm trở thành đã duyệt xong (sớm dời khỏihàng đợi) Một đỉnh sẽ trở thành đã duyệt xong ngay sau khi đã duyệt xongtất cả các đỉnh kề nó

Quá trình tìm kiếm theo chiều rộng (BFS) bắt đầu từ một đỉnh v đượcchọn tuỳ ý, gọi là đỉnh gốc Đỉnh này được đưa ngay vào hàng đợi Lúc nàymọi đỉnh của đồ thị đều chưa được xét và hàng đợi gồm duy nhất đỉnh v đãchọn Nói chung, khi hàng đợi khác rỗng, các đỉnh trong hàng đợi sẽ đượcxét theo thứ tự "đến trước - xét trước", gọi là thứ tự FIFO (First In - FirstOut) Khi xét một đỉnh, ngoài các thao tác có thể làm (in ra tên đỉnh, gánnhãn cho đỉnh, ) ta cần đưa vào hàng đợi tất cả các đỉnh chưa xét, kề vớiđỉnh đó (nếu có), ví dụ theo thứ tự đỉnh đã ghi trong danh sách kề Sau đó,đỉnh đang xét xem như đã xét (duyệt) xong và bị loại ra khỏi hàng đợi Tiếptục quá trình tìm kiếm trên đây từ đỉnh ở đầu hàng đợi cho tới khi hàng đợitrở nên rỗng

Có thể thấy quá trình tìm kiếm theo chiều sâu sẽ cho phép duyệt tất cảcác đỉnh của đồ thị thuộc cùng thành phần liên thông với đỉnh gốc v Nếusau đó trong đồ thị vẫn còn đỉnh chưa xét thì ta lại chọn một đỉnh trong số

đó làm đỉnh gốc và lặp lại quá trình tìm kiếm mô tả ở trên Quá trình tìmkiếm theo chiều rộng cũng sẽ tạo ra một rừng tối đại, bao gồm tất cả cáccạnh mà từ đó đã dẫn đến các đỉnh được đưa vào hàng đợi trong quá trìnhtìm kiếm Rừng này được gọi là rừng BFS

Xét đồ thị vẽ ở Hình 1.8 Quá trình tìm kiếm theo chiều rộng (BFS) bắt

Trang 18

đầu từ đỉnh 1 Các đỉnh của đồ thị được duyệt theo thứ tự: 1, 2, 3, 4, 6, 5(lần lượt đứng ở đầu hàng đợi) Rừng BFS gồm các cạnh liền nét (dùng contrỏ cha).

Hình 1.8: Tìm kiếm theo chiều rộng: a, Đồ thị ban đầu; b, Rừng BFS

Sau đây là một tính chất đáng chú ý của rừng BFS: Giả sử s là đỉnh gốccủa một thành phần liên thông nào đó trong rừng BFS Khi đó, đường gồmcác cạnh thuộc rừng nốis với một đỉnhtbất kỳ thuộc thành phần liên thôngnày là đường có số cạnh ít nhất trong số tất cả các đường trong G nối s với

t

Độ phức tạp tính toán của cả hai thuật toán tìm kiếm đã nêu bằng

O(m + n) = O(m), trong đó m = |E(G)| là số cạnh và n = |V (G)| là

số đỉnh của đồ thị G

Tóm lại, chương này đã đề cập tới những khái niệm cơ bản về đồ thị Cụthể, đã trình bày và giải thích bằng ví dụ các khái niệm về đồ thị (vô hướng,

có hướng) và mạng, đỉnh và cạnh (cung), đường và chu trình trong đồ thị,

đồ thị liên thông, không liên thông Miêu tả nhiều dạng đồ thị khác nhau:

đồ thị con (con cảm sinh, con bao trùm) của một đồ thị và các dạng đồ thịđặc biệt: rừng và cây, đồ thị hình sao, đồ thị đầy đủ, đồ thị hai phần Cáchbiểu diễn đồ thị (ma trận kề, ma trận liên thuộc, danh sách cạnh, danh sáchkề) Hai cách tìm kiếm trên đồ thị (theo chiều rộng BFS và chiều sâu DFS)rất đáng được quan tâm

Trang 19

Chương 2

Bài toán ghép cặp trên đồ thị

Chương này sẽ đề cập tới bài toán ghép cặp cực đại, ghép cặp hoàn hảotrên đồ thị Các bài toán này có nhiều ứng dụng trong thực tiễn: phân việc,xếp lịch, cấu trúc liên kết hoá học, Ta sẽ tìm hiểu các điều kiện cần và

đủ để một đồ thị có ghép cặp cực đại, ghép cặp hoàn hảo và trình bày cácthuật toán giải các bài toán Nội dung của chương được tham khảo chủ yếu

từ các tài liệu [2], [4] và [5]

2.1 Ghép cặp hoàn hảo và ghép cặp cực đại

Trước hết ta làm quen với một số khái niệm cơ bản về bài toán này.Định nghĩa 2.1 Cho một đồ thị vô hướng G với tập cạnh E (G) Ta gọi tậpcạnh con M ⊆ E (G) là một ghép cặp (matching) của G nếu hai cạnh bất kỳcủa M không có chung đỉnh Ghép cặp M gọi là tối đại (maximal matching)nếuM 6⊂ M0 với mọi ghép cặpM0 của G(M không là tập con thực sự của bất

kỳ ghép cặp khác của G) Ghép cặp M gọi là cực đại (maximum matching)nếu |M |> M0 với mọi ghép cặp M0 của G, tức là M gồm nhiều cạnh nhất

Rõ ràng, một ghép cặp cực đại cũng là ghép cặp tối đại, nhưng ngược lạinói chung không đúng

Cho đồ thị G và ghép cặp M của G Cạnh e ∈ M gọi là cạnh ghép, cạnh

e /∈ M gọi là cạnh tự do Đỉnh liên thuộc một cạnh ghép nào đó gọi là đỉnh

bị phủ bởi M, đỉnh không liên thuộc cạnh ghép nào gọi là đỉnh tự do hayđỉnh không bị phủ bởi M Ghép cặp M gọi là hoàn hảo (perfect matching)nếu mọi đỉnh của đồ thị đều bị phủ bởi M Một ghép cặp hoàn hảo là mộtghép cặp cực đại, nhưng ngược lại nói chung không đúng

Trang 20

Định nghĩa 2.2 Bài toán tìm một ghép cặp củaG có số cạnh lớn nhất (ghépcặp cực đại) gọi là bài toán ghép cặp cực đại (cardinality matching problem).

Hình vẽ dưới đây minh họa cho các khái niệm này Các cạnh{(2, 4) , (3, 5)}

tạo nên một ghép cặp tối đại trong đồ thị Các đỉnh Á, Â, Ã và Ä bị phủbởi M Các đỉnh À, Å là đỉnh tự do (không bị phủ bởi M) Mỗi ghép cặp

có nhiều nhất [n/2] cạnh

Hình 2.1: Ghép cặp.

cạnh ghép cạnh tự do

Bài toán ghép cặp theo trọng số: Khi mỗi cạnh của đồ thị có gắn với một

số thực (gọi là trọng số của cạnh) thì ta có thể xét bài toán mở rộng sau, gọi

là bài toán ghép cặp theo trọng số (maximum weighted matching problem):Tìm ghép cặp của đồ thị sao cho tổng trọng số các cạnh ghép là lớn nhất.Bài toán ghép cặp cực đại nêu trong định nghĩa 2.2 là một trường hợp riêngcủa bài toán ghép cặp theo trọng số, với trọng số mỗi cạnh bằng 1

Bài toán ghép cặp theo trọng số trên đồ thị hai phần (còn gọi là bài toánphân việc) sẽ được trình bày ở chương 3 Bài toán ghép cặp theo trọng sốtrên đồ thị bất kỳ là một bài toán tối ưu tổ hợp "khó nhất" trong số các bàitoán tối ưu có thể giải được trong thời gian đa thức

Tuy không quá phức tạp, nhưng bài toán ghép cặp cực đại cũng đã cónhững ứng dụng đa dạng trong thực tiễn, một số ứng dụng đáng chú ý củabài toán này được đề cập ở chương sau cùng với bài toán phân việc

Tiếp theo, ta đề cập tới hai khái niệm quan trọng: đường đan và đườngcải tiến Chúng được dùng nhiều trong các thuật toán về ghép cặp trên đồthị

Định nghĩa 2.3 Cho đồ thị G bất kỳ và M là một ghép cặp trong G Mộtđường P = i1− i2− − ik trong G gọi là đường đan với M (M - alternatingpath) nếu mỗi cặp cạnh liên tiếp trong P chứa một cạnh ghép và một cạnh

tự do, nghĩa là P gồm các cạnh xen kẽ thuộc M và không thuộc M

Trang 21

Trong Hình 2.1 ta thấy 1 - 2 - 4 - 3 - 5 và 1 - 2 - 4 - 3 - 5 - 6 là các đườngđan.

Đường đan (với M) gọi là chẵn (lẻ) nếu nó chứa một số chẵn (lẻ) cạnh.Một đường đan khép kín gọi là một chu trình đan Chu trình đan bao giờcũng chứa một số chẵn cạnh Trong ví dụ xét trên, đường đan thứ nhất làchẵn, đường đan thứ hai là lẻ, còn 3 - 2 - 4 - 5 - 3 là một chu trình đan (gồm

4 cạnh)

Định nghĩa 2.4 Đường đan với M gọi là đường cải tiến đối với M (M

- augmenting path) nếu đỉnh đầu và đỉnh cuối của nó không bị phủ bởi M

(đỉnh tự do)

Có thể thấy đường cải tiến (đối với M) phải là đường đan lẻ Ta gọi đó

là đường cải tiến, bởi vì bằng cách đổi các cạnh ghép trên đường này thànhcạnh tự do và ngược lại, ta nhận được một ghép cặp mới có |M | + 1 cạnh(nhiều hơn ghép cặp cũ một cạnh) Chẳng hạn, ở Hình 2.1, 1 - 2 - 4 - 3 - 5

- 6 là đường cải tiến đối với ghép cặp gồm 2 cạnh (tô đậm) và sau khi tráođổi cạnh ghép với cạnh tự do trên đường này, ta nhận được ghép cặp mới

{(1, 2) , (3, 4) , (5, 6)} (Hình 2.2)

Sau cùng, ta cần đến khái niệm hiệu đối xứng (Hình 2.3) của hai tập hợp

Định nghĩa 2.5 Cho hai tập hợp S1 và S2 Hiệu đối xứng của hai tập này,

ký hiệu S1∆S2, là tập S1∆S2 = (S1 ∪ S2) \ (S1 ∩ S2) Nói cách khác, hiệuđối xứng của tập S1 và tập S2 gồm tất cả các phần tử chỉ thuộc một tronghai tập đó

Ví dụ, S1 = {3, 4, 6, 7} và S2 = {2, 3, 7, 8, 9} thì S1∆S2 = {2, 4, 6, 8, 9}.Khái niệm hiệu đối xứng của hai tập có vai trò quan trọng trong lý thuyếtghép cặp Ta còn gặp phép toán này ở các phần tiếp theo của chương

Có thể thấy rằng nếu M là một ghép cặp và P là đường cải tiến (đốivới M ) thì hiệu đối xứng M0 = M ∆E(P ) là một ghép cặp với số cạnh

M0 = |M | + 1 Hơn nữa, trong ghép cặp M0 các đỉnh bị phủ (bởi M) vẫncòn bị phủ (bởi M0) và có thêm hai đỉnh (đỉnh đầu và đỉnh cuối của P) bịphủ (bởi M0)

Trang 22

Hình 2.2: Ghép cặp mới M0 Hình 2.3: Hiệu đối xứng

Định lý sau làm cơ sở lý luận cho nhiều thuật toán ghép cặp

Định lý 2.1 (Berge, 1957) Cho đồ thị G bất kỳ (hai phần hay không) vàghép cặp M trong G M là ghép cặp cực đại trong G khi và chỉ khi không cóđường cải tiến nào đối với M

Chứng minh Nếu P là một đường cải tiến (đối với M) thì hiệu đối xứng

M ∆E(P )(nhận được bằng cách đổi các cạnh ghép trên P thành cạnh tự do

và ngược lại) cũng là một ghép cặp và có số cạnh nhiều hơn |M |, vì thế M

không thể là ghép cặp cực đại

Ngược lại, nếu có ghép cặp M0 với ... riêngcủa toán ghép cặp theo trọng số, với trọng số cạnh

Bài toán ghép cặp theo trọng số đồ thị hai phần (cịn gọi tốnphân việc) trình bày chương Bài tốn ghép cặp theo trọng s? ?trên đồ thị tốn... cạnh) ta xét toán mở rộng sau, gọi

là toán ghép cặp theo trọng số (maximum weighted matching problem):Tìm ghép cặp đồ thị cho tổng trọng số cạnh ghép lớn nhất .Bài toán ghép cặp cực đại... ta xét riêng đồ thị hai phần(khơng có chu trình độ dài lẻ) Với đồ thị cách xử lý phức tạphơn

2.2 Ghép cặp đồ thị hai phần

Trong mục ta xét toán ghép cặp đồ thị hai phần

Ngày đăng: 22/01/2015, 10:56

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w