Tải bản đầy đủ (.pdf) (74 trang)

Nghiên cứu bài toán luồng cực đại trong mạng và thuật toán ford fulkerson

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.93 MB, 74 trang )

BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC VINH
________________________________________________________________________________

NGUYỄN HOÀNG VŨ

NGHIÊN CỨU BÀI TOÁN LUỒNG CỰC ĐẠI
TRONG MẠNG VÀ THUẬT TỐN FORD - FULKERSON

LUẬN VĂN THẠC SĨ CƠNG NGHỆ THƠNG TIN

NGHỆ AN, 2017


BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC VINH
________________________________________________________________________________

NGUYỄN HOÀNG VŨ

NGHIÊN CỨU BÀI TOÁN LUỒNG CỰC ĐẠI
TRONG MẠNG VÀ THUẬT TỐN FORD - FULKERSON

Chun ngành: Cơng nghệ thơng tin
Mã ngành: 8.48.02.01

LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN
Người hướng dẫn khoa học: TS. PHAN LÊ NA

NGHỆ AN, 2017




1

LỜI CAM ĐOAN
Tôi xin cam đoan luận văn “Nghiên cứu bài toán luồng cực đại trong mạng
và thuật toán Ford - Fulkerson” là cơng trình nghiên cứu của tơi với sự
hướng dẫn khoa học của TS Phan Lê Na, những tham chiếu tài liệu được ghi
rõ ở phần tài liệu tham khảo. Các số liệu thực nghiệm được nghiên cứu thực
tế trên cùng một mơi trường thí nghiệm, các con số thống kê được ghi nhận
một cách khách quan, trung thực và chưa được cơng bố dưới bất kỳ hình thức
nào trước đây.

Tác giả

Nguyễn Hoàng Vũ


2

LỜI CẢM ƠN
Em xin chân thành cảm ơn cô giáo, TS. Phan Lê Na đã tận tình hướng
dẫn, giúp đỡ để tơi hồn thành tốt luận văn này.
Em xin cảm ơn sự giúp đỡ của các thầy giáo, cô giáo Khoa công nghệ
thông tin - Trường đại học Vinh đã tận tình giảng dạy những kiến thức
chuyên đề CNTT cho tơi trong q trình học tập.
Ngồi ra tơi chân thành cảm ơn các bạn học viên cao học K24 tại Vĩnh
Long đã giúp tôi trong việc cung cấp tài liệu, trau đổi các vấn đề thuộc lĩnh
vực mà tôi nghiên cứu, cảm ơn các cán bộ lãnh đạo nơi tôi công tác đã hỗ trợ
cho tôi trong thời gian làm luận văn.

Vĩnh Long, tháng 5 năm 2018
Học viên

Nguyễn Hoàng Vũ


3

MỤC LỤC
Nội dung
Trang
LỜI CAM ĐOAN ............................................................................................. 1
LỜI CẢM ƠN ................................................................................................... 2
MỤC LỤC ......................................................................................................... 3
DANH MỤC CÁC BẢNG................................................................................ 5
DANH MỤC CÁC HÌNH VẼ .......................................................................... 6
MỞ ĐẦU ........................................................................................................... 8
1. Sự cần thiết của vấn đề nghiên cứu ........................................................... 8
2. Mục tiêu nghiên cứu .................................................................................. 9
2.1. Mục tiêu tổng quát .............................................................................. 9
2.2. Mục tiêu cụ thể ................................................................................... 9
3. Đối tượng và phạm vi nghiên cứu ........................................................... 10
3.1. Đối tượng nghiên cứu ....................................................................... 10
3.2. Phạm vi nghiên cứu .......................................................................... 10
4. Nội dung nghiên cứu ............................................................................... 11
5. Cấu trúc của luận văn .............................................................................. 11
Chương 1: TỔNG QUAN LUỒNG CỰC ĐẠI .............................................. 12
1.1. Tổng quan về đồ thị .............................................................................. 12
1.1.1. Định nghĩa đồ thị (graph) .............................................................. 12
1.1.2. Các loại đồ thị ................................................................................ 13

1.1.3. Các khái niệm liên quan ................................................................ 16
1.2. Tổng quan về luồng cực đại ................................................................. 18
1.2.1.Mạng (network) .............................................................................. 18
1.2.2. Luồng (flow) (Luồng trong mạng) ................................................ 18
1.2.3.Tính chất cơ bản về Luồng ............................................................. 20
1. 3. Kết luận chương 1. .............................................................................. 22
Chương 2: BÀI TOÁN LUỒNG CỰC ĐẠI TRONG MẠNG VÀ THUẬT
TOÁN FORD-FULKERSON ......................................................................... 23
2.1. Bài toán luồng cực đại trong mạng ...................................................... 23


4

2.1.1. Phát biểu bài toán luồng cực đại .................................................... 23
2.1.2. Lát cắt, định lý Ford – Fulkerson .................................................. 24
2.2. Thuật toán Ford – Fulkerson. ............................................................... 25
2.3. Giới thiệu các ứng dụng luồng cực đại ................................................ 31
2.3.1. Bài tốn tìm cơng suất bơm dầu .................................................... 31
2.3.2. Bài toán đám cưới vùng q .......................................................... 32
2.3.3. Bài tốn xét ứng cử viên vơ địch ................................................... 33
2.3.4. Bài toán về hệ thống đại diện chung ............................................. 34
2.3.5. Bài toán tối ưu rời rạc .................................................................... 35
2.3.5.1. Phát biểu bài toán ....................................................................... 35
2.3.5.2. Bài toán phân nhóm sinh hoạt .................................................... 36
2.3.5.3. Bài tốn lập lịch cho hội nghị ..................................................... 36
2.4. Kết luận chương 2. ............................................................................... 36
Chương 3: ỨNG DỤNG THUẬT TỐN FORD-FULKERSON THIẾT KẾ
HỆ THỐNG TÍNH SỐ LƯỢT KHÁCH THĂM ĐÌNH THẦN BÌNH THỦY37
3.1 Đặt vấn đề: ............................................................................................. 37
3.2 Bài tốn tính số lượt khách về thăm Đình thần Bình Thủy................... 38

3.3. Thiết kế mơ hình hệ thống tính số lượt khách về thăm Đình thần Bình
Thủy ............................................................................................................. 39
3.4 Thiết kế chương trình ............................................................................ 50
3.4.1 Mơi trường cài đặt .......................................................................... 50
3.4.2 Giao diện và chức năng .................................................................. 51
3.5 Dữ liệu thử nghiệm ................................................................................ 52
3.5.1 Thử nghiệm 1: Tính tốn trong ngày thứ nhất (14/04 âm lịch) ...... 52
3.5.2 Thử nghiệm 2: Tính tốn trong ngày thứ hai (15/04 âm lịch) ........ 58
3.6. So sánh hiệu quả của các hệ thống. ...................................................... 64
3.7. Một số nhận xét và đề xuất ................................................................... 64
3.8. Kết luận chương 3. ............................................................................... 64
KẾT LUẬN ..................................................................................................... 65
TÀI LIỆU THAM KHẢO ............................................................................... 67
PHỤ LỤC ........................................................................................................ 69


5

DANH MỤC CÁC BẢNG
CHƯƠNG 1
CHƯƠNG 2
Bảng 2.1: Bảng dữ liệu phân bổ các chàng trai và cô gái ............................. 32
CHƯƠNG 3
Bảng 3.1: Bảng chỉ số các quận/huyện trên bản đồ ....................................... 41
Bảng 3.2: Bảng dữ liệu giả định 1 về nhu cầu ............................................... 41
Bảng 3.3: Bảng dữ liệu giả định 1 về khả năng thông qua ............................ 42
Bảng 3.4: Bảng dữ liệu giả định 1 trên file .................................................... 50
Bảng 3.5:. Bảng dữ liệu giả định 1 về nhu cầu .............................................. 53
Bảng 3.6: Bảng dữ liệu giả định 1 về khả năng thông qua ............................ 53
Bảng 3.7: Dữ liệu file kết quả khi chạy chương trình thử nghiệm 1. ............. 56

Bảng 3.8:. Bảng dữ liệu giả định 2 về nhu cầu .............................................. 58
Bảng 3.9: Bảng dữ liệu giả định 1 về khả năng thông qua ............................ 59
Bảng 3.10:: Dữ liệu file kết quả khi chạy chương trình thử nghiệm 2. .......... 61
Bảng 3.11. So sánh kết quả tính tốn và dữ liệu thực tế ................................ 64


6

DANH MỤC CÁC HÌNH VẼ
CHƯƠNG 1
Hình 1.1: Ví dụ về mơ hình đồ thị .................................................................. 12
Hình 1.2: Sơ đồ máy tính là đơn đồ thị vơ hướng .......................................... 13
Hình 1.3: Đơn đồ thị có hướng ...................................................................... 14
Hình 1.4: Sơ đồ mạng máy tính với đa kênh thoại (đa đồ thị vơ hướng) ....... 14
Hình 1. 5: Mạng máy với các kênh thoại một chiều (đa đồ thị có hướng) .... 15
Hình 1.6: Các loại đồ thị đặc biệt .................................................................. 16
Hình 1.7: Minh họa các khái niệm liên quan đến đồ thị ................................ 16
Hình 1.8: Mạng và luồng trên mạng .............................................................. 19
CHƯƠNG 2
Hình 2.1: Luồng cực đại trên mạng ............................................................... 24
Hình 2.2: Lát cắt trên mạng ........................................................................... 24
Hình 2.3: Lát cắt hẹp nhất mạng .................................................................... 25
Hình 2.4: Mạng ban đầu ................................................................................ 27
Hình 2.5: Khởi tạo luồng bằng 0.................................................................... 28
Hình 2.6: Xây dựng mạng thặng dư ............................................................... 28
Hình 2.7: Tăng luồng theo đường Pf1 ............................................................. 29
Hình 2.8: Tăng luồng theo đường Pf2 ............................................................. 29
Hình 2.9: Tăng luồng theo đường Pf3 ............................................................. 30
Hình 2.10: Mạng đã tăng luồng cực đại ........................................................ 30
Hình 2.11: Bài tốn tìm cơng suất bơm dầu .................................................. 32

Hình 2.12: Mạng tương ứng với bài toán đám cưới vùng quê ....................... 33
Hình 2.13: Bài tốn loại bỏ ứng cử viên vơ địch ........................................... 34
CHƯƠNG 3
Hình 3.1: Bài tốn tính số lượt khách tới thăm .............................................. 40
Hình 3.2: Mạng của bộ dữ liệu 1 ................................................................... 43


7

Hình 3.3: Khởi tạo luồng bằng 0 của bộ dữ liệu 1 ........................................ 43
Hình 3.4: Xây dựng mạng thặng dư của bộ dữ liệu 1 .................................... 44
Hình 3.5: Tìm luồng theo Pf 1 của bộ dữ liệu 1 .............................................. 44
Hình 3.6: Tìm luồng theo Pf 2 của bộ dữ liệu 1 .............................................. 45
Hình 3.7: Tìm luồng theo Pf 3 của bộ dữ liệu 1 .............................................. 46
Hình 3.8: Tìm luồng theo Pf 4 của bộ dữ liệu 1 .............................................. 46
Hình 3.9: Tìm luồng theo Pf 5 của bộ dữ liệu 1 .............................................. 47
Hình 3.10: Tìm luồng theo Pf 6 của bộ dữ liệu 1 ............................................ 47
Hình 3.11: Tìm luồng theo Pf 7 của bộ dữ liệu 1 ............................................ 48
Hình 3.12: Tìm luồng theo Pf 8 của bộ dữ liệu 1 ............................................ 48
Hình 3.13: Tìm luồng theo Pf 9 của bộ dữ liệu 1 ............................................ 49
Hình 3. 14: Luồng cực đại của bộ dữ liệu 1................................................... 49
Hình 3. 15: Giao diện của chương trình ........................................................ 51
Hình 3. 16: Mơ phỏng với bộ dữ liệu 1 về chỉ số và khả năng ...................... 55
Hình 3. 17: Mơ phỏng với bộ dữ liệu 1 về nhu cầu và luồng ......................... 58
Hình 3. 18: Mơ phỏng với bộ dữ liệu 2 về chỉ số và khả năng ...................... 61
Hình 3. 19: Mơ phỏng với bộ dữ liệu 2 về nhu cầu và luồng ......................... 63


8


MỞ ĐẦU
1. Sự cần thiết của vấn đề nghiên cứu
Trong thời đại cơng nghiệp hố – hiện đại hố, việc áp dụng công nghệ
thông tin (CNTT) vào các lĩnh vực của đời sống xã hội chúng ta đã trở nên
mạnh mẽ hơn bao giờ hết, từ những lĩnh vực công nghệ cao đến những vấn
đề thuộc về phục vụ con người hằng ngày, từ những tiện ích xã hội đến
những vấn đề giáo dục.
Lý thuyết đồ thị là ngành khoa học xuất hiện từ lâu nhưng đã mang lại
rất có nhiều ứng dụng hiện đại. Những ý tưởng cơ bản đã được đưa ra từ thế
kỷ 18 do nhà toán học Thụy Sĩ Leonhard Euler. Ông dùng đồ thị để giải
quyết bài toán cây cầu Konigsberg rất nổi tiếng. Từ đó lý thuyết đồ thị ngày
càng khẳng định được vị trí quan trọng trong việc áp dụng để giải quyết các
bài tốn thực tế nhờ vào việc tìm ra ngày càng nhiều của các định lý, cơng
thức và thuật tốn.
Có một bộ phận quan trọng của lý thuyết đồ thị là dạng bài toán luồng
trên mạng, đã xuất hiện từ những nghiên cứu của Gustav Kirchhoff, và được
những nhà nghiên cứu tiên phong như Lester Randolph Ford và Delbert Ray
Fulkerson phát triển thành một lĩnh vực khoa học độc lập.
Bài toán luồng cực đại trong mạng cũng là một trong số những bài tốn
tối ưu trên đồ thị tìm được những ứng dụng rộng rãi trong thực tế cũng như
những ứng dụng thú vị trong lý thuyết tổ hợp. Bài toán đã được đề xuất vào
đầu năm 1950, và gắn liền với tên tuổi của hai nhà bác học người Mỹ là
Lester Randolph Ford và Delbert Ray Fulkerson. Bài toán luồng cực đại
trong mạng có nhiều ứng dụng trong thực tế như: Bài toán xác định cường độ
lớn nhất của dòng vận tải giữa hai nút của một bản đồ giao thơng, hay là bài
tốn tìm luồng dầu lớn nhất có thể bơm từ tàu chở dầu vào bể chứa của một


9


hệ thống ống dẫn dầu, …Ngồi ra, ứng dụng cịn để giải các bài toán như: bài
toán lập lịch cho hội nghị, bài toán đám cưới vùng quê, bài toán phân nhóm
sinh hoạt, bài tốn về hệ thống đại diện chung, … Bài toán luồng trên mạng
ngày càng khẳng định được tính quan trọng của nó trong các ngành khoa học
hiện đại. Sự phát triển mạnh mẽ của công nghệ thơng tin cùng với khả năng
tính tốn siêu nhanh của các máy tính đã giúp việc giải quyết các bài toán
luồng trên mạng hiệu quả hơn và đem lại nhiều ứng dụng thực tiễn hơn. Trên
cơ sở các nghiên cứu về bài toán luồng cực đại.
Với nhận thức như trên, tơi chọn đề tài: “Nghiên cứu bài tốn luồng
cực đại trong mạng và thuật toán Ford - Fulkerson” làm luận văn tốt
nghiệp thạc sỹ ngành CNTT.
2. Mục tiêu nghiên cứu
2.1. Mục tiêu tổng quát
Đề tài sẽ củng cố các kiến thức về Đồ thị và Luồng, nghiên cứu sâu về
các bài toán luồng cực đại trong mạng và thuật toán Ford – Fulkerson.
2.2. Mục tiêu cụ thể
Đề tài tập trung vào các mục tiêu cụ thể sau:
(i) Nghiên cứu tổng quan về bài toán luồng cực đại trong mạng.
(ii) Nghiên cứu thuật toán Ford – Fulkerson.
(iii) Nghiên cứu các bài toán ứng dụng của luồng cực đại.
(iv) Cài đặt thử nghiệm thuật toán Ford – Fulkerson.
(v) Đánh giá hiệu quả của thuật toán.


10

3. Đối tượng và phạm vi nghiên cứu
3.1. Đối tượng nghiên cứu
(a) Nghiên cứu lý thuyết
- Nghiên cứu cơ bản về lý thuyết đồ thị;

- Nghiên cứu thuật toán Ford – Fulkerson để giải quyết các bài toán luồng
cực đại trong mạng;
- Nghiên cứu tài liệu về ngôn ngữ lập trình C# để cài đặt các thuật tốn
thử nghiệm.
(b) Nghiên cứu thực nghiệm
- Cài đặt thử nghiệm hệ thống tính số lượt khách về thăm đình thần Bình
Thuỷ. Đánh giá hiệu quả của thuật toán luồng cực đại trong mạng.
3.2. Phạm vi nghiên cứu
Luồng trong mạng là một bài toán có lịch sử khá dài và được nghiên cứu
dưới góc độ khoa học máy tính từ năm 1956 với thuật tốn Ford-Fulkerson
[9]. Sau đó, rất nhiều giải thuật từ các nhà nghiên cứu khác nhau: Ahuja,
Magnanti và Orlin, Edmonds and Karp, Dinic, and Karzano và đã đạt được
nhiều thành tựu lớn. Trong phạm vi luận văn này, tôi thử nghiệm giải quyết
một số bài toán luồng cực đại trong mạng dựa trên tập dữ liệu đã được cho
trước. Hướng tiếp cận được thử nghiệm để nhận ra đối tượng được đưa vào
từ bài toán là:
Giải quyết bài toán dựa trên thuật toán Ford – Fulkerson.


11

4. Nội dung nghiên cứu
- Nghiên cứu tổng quan lý thuyết đồ thị, luồng và các bài toán luồng cực
đại.
- Nghiên cứu thuật tốn Ford – Fulkerson.
- Nghiên cứu ngơn ngữ lập trình C# để cài đặt thử nghiệm thuật tốn
luồng cực đại.
- Lập trình thử nghiệm thuật tốn Ford – Fulkerson về bài tốn tính số
lượt khách về thăm đình thần Bình Thuỷ.
- Thử nghiệm và đánh giá thuật toán.

- Viết báo cáo luận văn.
5. Cấu trúc của luận văn
Ngoài phần mở đầu và phần kết luận, luận văn được sắp xếp theo bố
cục sau đây:
Chương 1: Tổng quan luồng cực đại.
Chương 2: Bài toán luồng cực đại trong mạng và thuật toán FordFulkerson.
Chương 3: Ứng dụng thuật toán Ford-Fulkerson thiết kế hệ thống tính
số lượt khách thăm đình thần Bình Thủy.


12

Chương 1: TỔNG QUAN LUỒNG CỰC ĐẠI
Chương 1 trình bày định nghĩa cơ bản về lý thuyết đồ thị và một số các
khái niệm có liên quan. Ngồi ra cịn giới thiệu các khái niệm về mạng, luồng
và tính chất cơ bản trên luồng là cơ sở để giải quyết bài toán (xem
[1,4,5,6,9]).
1.1. Tổng quan về đồ thị
1.1.1. Định nghĩa đồ thị (Graph)
Đồ thị là một cấu trúc rời rạc bao gồm các đỉnh và các cạnh nối các đỉnh
đó. Người ta ký hiệu đồ thị G = (V, E), trong đó V gọi là tập các đỉnh
(Vertices) và E gọi là tập các cạnh (Edges). [6]

Hình 1.1: Ví dụ về mơ hình đồ thị
Xét cạnh e  E nếu tồn tại hai đỉnh x, y của V sao cho e = (x,y), thì x nối
với y.
- Nếu e = (x,y) trong đó x và y là hai đỉnh phân biệt thì x, y là hai đỉnh
kề nhau.
- Nếu e = (x,y) trong đó x, y là cặp đỉnh phân biệt có hướng từ x đến y
thì e là một cung, thì x là gốc, y là ngọn hay y là đỉnh vào, x là đỉnh ra.



13

- Nếu cạnh e = (x,x) thì e là cạnh có hai đỉnh trùng nhau gọi đó là một
khuyên.
- Nếu cặp đỉnh (x,y) có nhiều hơn một cạnh thì những cạnh có cùng cặp
đỉnh là những cạnh song song hay là cạnh bội.
1.1.2. Các loại đồ thị
Dựa vào các đặc tính sau của cạnh để phân biệt các dạng đồ thị của G =
(V, E):
-

Các cạnh e  E được gọi là vơ hướng nếu các cặp cạnh khơng có thứ

tự.
Xét mạng máy tính, và thể biểu diễn mạng này bằng một mơ hình đồ thị,
mà trong đó mỗi một máy tính là một đỉnh, giữa các máy được nối với nhau
bằng đường truyền mạng, chúng tương ứng là các cạnh của đồ thị.

Hình 1.2: Sơ đồ máy tính là đơn đồ thị vơ hướng
Một mơ hình mạng máy tính như hình 1.2 trong đó a, b, c, d, e, g, h, i, k,
l là các máy tính tương ứng các đỉnh, giữa hai máy được nối trực tiếp với
nhau thì tương ứng với một cặp đỉnh kề nhau.
-

Các cạnh e  E được gọi là có hướng nếu như trên đồ thị G = (V, E)

quan tâm đến thứ tự hai đỉnh của một cạnh: có sự phân biệt giữa hai cạnh e1
= (i, j) và e2 = (j, i).



14

Hình 1.3: Đơn đồ thị có hướng
-

Cạnh e1 = (u, v) và cạnh e2 = (x, y) trên đồ thị G = (V, E) được gọi là

cạnh lặp nếu u  x và v  y
-

Xét trong trường hợp giữa hai máy tính thường xun phải trao đổi

nhiều thơng tin người ta phải nối hai máy này bởi nhiều kênh thoại. Mạng đa
kênh thoại giữa các máy được cho trong hình 1.4 (hay cịn gọi là đa đồ thị vơ
hướng).

Hình 1.4: Sơ đồ mạng máy tính với đa kênh thoại (đa đồ thị vơ hướng)
Ngồi ra trong mạng máy tính có thể chỉ cho phép truyền dữ liệu theo
một chiều. Chẳng hạn trong hình 1.5 máy a, b, l chỉ có thể nhận dữ liệu từ
các máy khác, cịn các kênh thoại cho phép truyền tin theo cả hai chiều được
thay thế bởi hai cạnh có hướng ngược chiều nhau.


15

Hình 1.5: Mạng máy với các kênh thoại một chiều (đa đồ thị có hướng)
Một số dạng đơn đồ thị đặc biệt: [5]
Đồ thị vòng Cn (cycle graph): Đồ thị vòng Cn, n≥3. gồm n đỉnh v1, v2,

…, vn và các cạnh (v1,v2), (v2,v3), …, (vn-1,vn), (vn,v1).
Đồ thị bánh xe Wn (wheel graph): là đơn đồ thị vô hướng thu được từ
đồ thị Cn bằng cách thêm một đỉnh mới nối với tất cả các đỉnh của Cn.
Đồ thị hai phía Km,n (bipartite graph): Đơn đồ thị G = (V, E) sao cho
V=V1 V2, V1 V2 = , V1 ≠ , V2 ≠  và mỗi cạnh của G được nối một
đỉnh trong V1 và một đỉnh trong V2 gọi là đồ thị hai phía.
Đồ thị đầy đủ Kn (compelte graph): Là đơn đồ thị vô hướng mà giữa
hai đỉnh bất kỳ luôn tồn tại cạnh nối.
Đồ thị đầy đủ Kn có tất cả n(n-1)/2 cạnh, nó là đơn đồ thị có nhiều cạnh
nhất.


16

Hình 1.6: Các loại đồ thị đặc biệt
1.1.3. Các khái niệm liên quan
Ta xét các khái niệm được trình bày dưới đây có thể dùng cho cả đồ thị
có hướng và vơ hướng hoặc từng dạng đồ thị cụ thể.

Hình 1.7: Minh họa các khái niệm liên quan đến đồ thị


17

Cạnh (edge)
Nếu (x, y) là một cặp đỉnh thuộc E thì nó có một cạnh nối x và y. Lúc đó
x, y là hai đỉnh kề nhau. Xét G1 trong hình 1.7 ta có đỉnh 1 và, đỉnh 2 là kề
nhau và có cạnh là e = (1, 2) hoặc trên G2 có đỉnh b và đỉnh e là kề nhau và
cạnh là e = (b, e)
Cạnh liên thuộc

Xét một cạnh e ∈ E trên đồ thị vô hướng G = (V, E), nếu e = (x, y) thì
cạnh e này liên thuộc (incident) với đỉnh x và đỉnh y.
Bậc của đỉnh
Bậc (degree) của đỉnh trong đồ thị vô hướng là số cạnh liên thuộc với nó
và kí hiệu là deg(v), xét bậc của đỉnh e trên G2 trong hình 1.7 ta có:
deg(e)=3.
Bán bậc của đỉnh
Bán bậc vào (ra) của đỉnh trong đồ thị có hướng là số cạnh của đồ thị đi
vào (ra) đỉnh đó và kí hiệu là deg+(v) hay deg-(v). Ví dụ trong hình 1.7 đỉnh 3
của G1 có bán bậc vào là 1: hay deg-(3) = 1 và bán bậc ra là 2: deg+(3) = 2.
Đường đi (path)
Xét đồ thị G = (V, E) khi đó một đường đi từ đỉnh u đến đỉnh v là một
dãy đỉnh u1, u2, …, ui, v mà các cạnh (u, u1), (u1, u2), …, (ui, v)  E.
Xét đồ thị G2 trên hình 1.7 ta có đường đi: abcfeb
Đường đi đơn
Xét đồ thị G = (V, E), một đường đi đơn là đường đi mà các đỉnh trên
đó khác nhau từng đơi một. Xét đồ thị G2 trên hình 1.7 ta có đường đi đơn:
abcfed


18

Hai đỉnh liên thông
Nếu hai đỉnh u và v được gọi là liên thông với nhau trên đồ thị G = (V,
E) thì có một đường đi từ u đến v trên đồ thị đó.
Đồ thị liên thơng
Nếu tất cả cặp đỉnh của đồ thị đều liên thơng thì đồ thị đó được gọi là
liên thơng.
Chu trình (cycle)
Một chu trình trên đồ thị G = (V, E) là một đường đi đơn có đỉnh đầu và

đỉnh cuối trùng nhau. Xét trong hình 1.7 trên G2 ta có chu trình:
abcda.
1.2. Tổng quan về luồng cực đại
1.2.1. Mạng (network)
[4][7][9] Mạng (network) là một đồ thị có hướng G = (V, E) trong đó:
- Tồn tại duy nhất một đỉnh khơng có cung đi vào mà chỉ có cung đi ra,
gọi là đỉnh phát (source).
- Có duy nhất một đỉnh khơng có cung đi ra mà chỉ có cung đi vào, được
gọi là đỉnh thu (sink).
- Mỗi cạnh e=(i, j)E được gán một số nguyên không âm c(e)= c(i, j)
gọi là khả năng thơng qua (capacity) của cung đó.
1.2.2. Luồng (flow) (Luồng trong mạng)
[4][7][8][9] Cho một mạng có dạng một đồ thị có hướng G = (V, E). Ta
gọi luồng f trong mạng là ánh xạ f:ER+ gán cho mỗi cung e=(i, j)  E một
số thực không âm f(e) thoả mãn các điều kiện:


19

- Điều kiện 1: Ràng buộc khả năng thông qua (Capacity Constraint):
luồng trên mỗi cung e  E không vượt q khả năng thơng qua của nó:0 
f(e)  c(e).
- Điều kiện 2: Cân bằng luồng (Flow Conversion): Với i  s, t, tổng
luồng trên các cung vào đỉnh i bằng tổng luồng trên các cung đi ra khỏi đỉnh
i.

 f ( j, i)   f (i, k )

 ( j ,i )


( i , k )

Giá trị của luồng được tính bằng tổng luồng trên các cung đi ra từ đỉnh
phát s bằng tổng luồng trên các cung đi vào đỉnh thu t.

 f ({s},V )   f (V ,{t})

Hình 1.8: Mạng và luồng trên mạng
Chúng ta có hình 1.11 minh họa mạng G = (V, E) và luồng f trên mạng
đó. Mỗi cạnh của đồ thị có 2 trọng số kí hiệu là f/c. Xét mạng G:
- Có đỉnh phát là 1.
- Có đỉnh thu là 6.
- Mỗi cạnh của mạng được gán trọng số là khả năng thơng qua của cạnh
đó.


20

Xét luồng f với các điều kiện ràng buộc:
- Xét điều kiện ràng buộc khả năng thông qua của luồng: f(v)  c(v), v
 V.
- Xét điều kiện cân bằng luồng:  f (u, v)   f (v, w), v V \ {s, t} . Ví dụ
với

đỉnh

4:

 f (u,4)  f (1,4)  f (2,4)  f (3,4)  3  1  1  5  3  2  f (4,5)  f (4,6)   f (4, w)
- Khi đó, giá trị của luồng là:


 f (s, v)  f (1,2)  f (1,3)  f (1,4)  2  3  3  8  1  3  4  f (2,6)  f (4,6)  f (5,6)   f (u, t )
1.2.3. Tính chất cơ bản về Luồng
Cho mạng G = (V, E) và một luồng f trên G. Gọi c(X, Y) là khả năng
thông qua từ X sang Y và f(X, Y) là giá trị của luồng từ X sang Y.
Tính chất 1:
Cho f là một luồng trên mạng G = (V, E) khi đó:
a) ∀ X ⊆ V, ta có f(X, X) = 0.
Chứng minh
Với ∀ X ⊆ V, ta có:
f(X, X) =



f (e)

e{X  X }

Như vậy f(e) xuất hiện trong tổng khi và chỉ khi f(-e) cũng xuất hiện
trong tổng. Theo tính đối xứng lệch của luồng: f(e) = − f(-e), ta có f(X, X) = 0.
b) ∀ X, Y ⊆ V, ta có f(X, Y) = − f(Y, X)
Chứng minh
Với ∀ X, Y ⊆ V, ta có:


21

f(X, Y) =






f (e) = 

f (e) = − f(Y, X)

 e{Y  X }

e{X Y }

c) ∀ X, Y, Z ⊆ V và X ∩ Y = ∅, ta có f(X, Z) + f(Y, Z) = f(X ∪ Y, Z).

Chứng minh
Với ∀X, Y, Z ⊆ V và X ∩ Y = ∅, ta có:
f(X ∪ Y, Z) =



f ( e)

e{X Y  Z }

=

+

d) ∀ X ⊆ V − {s, t}, ta có f(X, V)= 0.
Chứng minh
Với ∀ X ⊆ V − {s, t}, do

X=

{u}
u X

theo chứng minh ở trên phần c):
f(X, V) =  f ({u},V )
u X

Mỗi hạng tử của tổng: f({u}, V) chính là tổng luồng trên các cung đi ra
khỏi đỉnh u, theo tính bảo tồn luồng và u không phải đỉnh phát cũng không
phải đỉnh thu, hạng tử này phải bằng 0, suy ra f(X, V) = 0. Theo chứng minh
ở phần b), ta cịn suy ra f(V, X) = 0.
Tính chất 2:
Giá trị luồng trên mạng bằng tổng luồng trên các cung đi vào đỉnh thu


22

Chứng minh
Cho f là một luồng trên mạng G = (V, E) ta có:
| f | = f({s}, V)
= f(V, V) − f(V − {s}, V)
= − f(V − {s}, V)
= f(V, V − {s})
= f(V, {t}) + f(V, V − {s,t})
= f(V, {t})
1. 3. Kết luận chương 1.
Chương này trình bày định nghĩa cơ bản về lý thuyết đồ thị và một số
các khái niệm có liên quan. Bên cạnh đó cịn giới thiệu các khái niệm về

mạng, luồng và một số tính chất cơ bản trên luồng để giải quyết bài toán.


×