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

Bài toán tìm luồng cực đại và ứng dụng trong vận chuyển hàng cứu trợ thiên tai tại tỉnh sekong nước chdcnd lào

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 (2.4 MB, 95 trang )

Đ IăH CăĐĨăN NG
TR
NGăĐ IăH CăS ăPH M
----------

KEOOUNHUANE VONGPHISITH

BĨIăTOỄNăTỊMăLU NGăC CăĐ IăVĨă NGăD NGăTRONGă
V NăCHUY NăHĨNGăC UăTR
SEKONGăN

THIểNăTAIăT IăT NHă

CăC NGăHọAăDỂNăCH ăNHỂNăDỂNăLĨO

LU NăVĔNăTH CăSƾ
H ăTH NGăTHỌNGăTIN

ĐƠăN ngă- Nĕmă2020


Đ IăH CăĐĨăN NG
TR
NGăĐ IăH CăS ăPH M
----------

KEOOUNHUANE VONGPHISITH

BĨIăTOỄNăTỊMăLU NGăC CăĐ IăVĨă NGăD NGăTRONGă
V NăCHUY NăHĨNGăC UăTR ăTHIểNăTAIăT IăT NHă
SEKONG N



CăC NGăHọAăDỂNăCH ăNHỂNăDỂNăLĨO

Chuyên ngành: H ăTH NGăTHỌNGăTIN
Mƣăs :ă8480104
LU NăVĔNăTH CăSƾ

NG

IăH

NGăD NăKHOAăH C:

TS. NGUY NăĐỊNHăL U

ĐƠăN ngă- Nĕmă2020






v

M CăL C
L I C M N ...................................................................................................................i
L I CAM ĐOAN ........................................................................................................... ii
TÓM T T...................................................................................................................... iii
M C L C .......................................................................................................................v
DANH M C CÁC CH


VI T T T ........................................................................... vii

DANH M C B NG BI U ......................................................................................... viii
DANH M C CÁC HÌNH ..............................................................................................ix
M ăĐ U .........................................................................................................................1
1. LỦ do chọn đ tƠi ................................................................................................1
2. M c tiêu vƠ nhiệm v .........................................................................................2
3. Đối tư ng vƠ ph m vi nghiên c u ......................................................................2
4. Phư ng pháp nghiên c u ....................................................................................2
5. ụ nghĩa c a đ tƠi ...............................................................................................3
6. Bố c c c a đ tƠi .................................................................................................3
Ch ngă1. BĨIăTOỄNăLU NGăC CăĐ I ................................................................4
1.1. Phát bi u bƠi toán .....................................................................................................4
1.1.1. M ng, Luồng trong m ng .............................................................................4
1.1.2. BƠi toán luồng cực đ i trong m ng ...............................................................4
1.2. Thu t toán Ford-Fulkerson .......................................................................................5
1.2.1. Đư ng đi tăng luồng .....................................................................................5
1.2.2. Phư ng pháp FordFulkerson ......................................................................6
Ch

ngă2. BĨIăTOỄNăLU NGăC CăĐ IăV IăCHIăPHệăC CăTI U ................17

2.1. Gi i thiệu ................................................................................................................17
2.1.1. Phát bi u bƠi toán ........................................................................................17
2.1.2. Các gi thi t ................................................................................................ 18
2.1.3. Đồ thi thăng dư ...........................................................................................18
2.2. Đi u kiện tối ưu c a bƠi toán ..................................................................................18
2.2.1. Đi u kiện tối ưu v chu trình ơm ................................................................ 18
2.2.2.Đi u kiện tối ưu v chi phí rút gọn ..............................................................19

2.2.3. Đi u kiện tối ưu bổ sung .............................................................................20
2.3. Mối quan hệ gi a luồng tối ưu vƠ kh năng thông qua t i các đỉnh ......................21
2.4. Một số thu t toán gi i bƠi tốn luồng cực đ i v i chi phí cực ti u ........................22


vi
2.4.1. Thu t tốn kh chu trình ơm (Cycle canceling) .........................................22
2.4.2. Thu t tốn tìm đư ng đi ng n nhất liên ti p (Successive shortest Path) ....27
2.4.3. Thu t toán Primal-Dual ..............................................................................30
2.4.4. Các thu t toán c i ti n .................................................................................33
Ch ngă 3. XỂYă D NGă NGă D NGă TỊMă Đ
NGă V Nă CHUY Nă HĨNGă
C UăTR ăMINIMUMăCOSTăMAXăFLOW............................................................37
3.1. Yêu cầu thực t vƠ lí do xơy dựng ng d ng ..........................................................37
3.2. M c tiêu c a ng d ng ...........................................................................................37
3.3. Ti p c n bƠi toán ....................................................................................................37
3.3.1. Phát bi u bƠi tốn ........................................................................................37
3.3.2. Mơ hình tốn học ........................................................................................39
3.3.3. Thu t tốn ...................................................................................................40
3.4. Phân tích .................................................................................................................42
3.4.1. u cầu ch c năng ......................................................................................42
3.5.4. Giao diện ắThông tin địa đi m”..................................................................64
3.5.7. Giao diện ắHi n thị k t qu ” ......................................................................71
3.6. Đánh giá k t qu .....................................................................................................74
K TăLU N ..................................................................................................................75
TĨIăLI UăTHAMăKH O
QUY TăĐ NHăGIAOăĐ ăTĨI (bản sao)


vii


DANHăM CăCỄCăCH ăVI TăT T
Từăvi tăt t

ụănghƿa

USD

United States dollar

GDP

Gross Domestic Product

HTML

HyperText Markup Language

CSS

Cascading Style Sheets

SDK

Software Development Kit

API

Application Programming Interface


SQL

Structured Query Language

NNLT

Ngơn ng l p trình

DFS

Depth first search

ATNĐ

Áp thấp nhiệt đ i

UBND

y ban nhơn dơn


viii

DANHăM CăB NGăBI Uă
S hi u
b ng

3.1.
3.2.
3.3.

3.4.
3.5.
3.6.
3.7.
3.8.
3.9.
3.10.
3.11.
3.12.
3.13.
3.14.
3.15.
3.16.
1.17.
3.18.
3.19.
3.20.
3.21.
3.22.
3.23.
3.24.
3.25.
3.26.
3.27.
3.28.
3.29.
3.30.
3.31.

Tên b ng


Kho ng cách gi a các đi m (theo google map API)
Kh năng thông qua gi a các đi m
Kho ng cách gi a các đỉnh (theo google map API)
Kh năng thông qua c a các tuy n đư ng
Ma tr n k t qu
Yêu cầu ch c năng
Đặc t Use ậ Case ắThêm địa đi m”
B ng đồ luồng sự kiện c a ch c năng ắThêm địa đi m”
Đặc t Use ậ Case ắC p nh t địa đi m”
B ng đồ luồng sự kiện c a ch c năng ắC p nh t địa đi m”
Đặc t Use ậ Case ắXóa địa đi m”
B ng đồ luồng sự kiện c a ch c năng ắXóa địa đi m”
Đặc t Use ậ Case ắTìm đư ng đi tối ưu”
B ng đồ luồng sự kiện c a ch c năng ắTìm đư ng đi tối ưu”
Đặc t Use ậ Case ắXem b n đồ”
B ng đồ luồng sự kiện c a ch c năng ắXem b n đồ”
Đặc t Use ậ Case ắXem chi ti t lộ trình đi”
B ng đồ luồng sự kiện c a ch c năng ắXem chi ti t lộ trình đi”
Đặc t Use ậ Case ắĐịnh vị vị trí”
B ng đồ luồng sự kiện c a ch c năng ắđịnh vị trí”
Đặc t b ng lo i địa đi m
Đặc t b ng địa đi m
Đặc t b ng đư ng đi
Đặc t giao diện trang ch
Đặc t giao diện menu
Đặc t giao diện danh sách địa đi m
Đặc t giao diện thông tin địa đi m
Đặc t giao diện c p nh t địa đi m
Đặc t giao diện thêm địa đi m

Đặc t giao diện đư ng đi trên b ng đồ
B ng đặc t giao diện chi ti t lộ trình

Trang

38
39
41
41
42
43
44
44
45
45
46
46
47
47
48
48
49
49
50
50
56
56
56
58
60

63
66
68
70
72
73


ix

DANHăM CăCÁC HÌNH
S hi u
hình
1.1.
1.2:
2.1.
2.2.
3.1.
3.2.
3.3.
3.5.
3.7.
3.8.
3.9.
3.10.
3.11.
3.12.
3.13.
3.14.
3.15.

3.16.
3.17.
3.18.
3.19.
3.20.
3.21.
3.22.
3.23.
3.24.
3.25.

Tên hình
bài tốn 1
bài tốn 2
Ví d m ng v n t i
Minh họa thu t tốn kh chu trình âm
Mơ hình bài tốn
S đồ bƠi toán sau khi thêm đỉnh o
Bi u đồ Use ậ Case tổng quát
Bi u đồ Use ậ Case ắTìm đư ng đi tối ưu”
Bi u đồ Use ậ Case ắXem chi ti t lộ trình đi”
Bi u đồ Use ậ Case ắĐịnh vị vị trí”
Bi u đồ tuần tự ắThêm địa đi m”
Bi u đồ tuần tự ắC p nh t địa đi m”
Bi u đổ tuần tự ắXóa địa đi m”
Bi u đồ tuần tự ắTìm đư ng đi tối ưu”
Bi u đồ tuần tự ắXem b n đồ”
Bi u đồ tuần tự ắChi ti t đư ng đi”
Bi u đồ tuần tự ắĐịnh vị vị trí”
Giao diện ng d ng

Giao diện menu
Giao diện danh sách địa đi m kho ch a hàng
Giao diện danh sách địa đi m nh n hàng
Giao diện thông tin địa đi m kho hàng
Giao diện thông tin địa đi m nh n hàng
Giao diện c p nh t thông tin địa đi m
Giao diện thêm địa đi m
Giao diện hi n thị k t qu
Giao diện hi n thị chi ti t lộ trình

Trang
9
13
17
26
38
40
43
47
49
50
51
52
53
54
54
55
55
57
59

61
62
64
65
67
69
71
73


1

M ăĐ U
1.ăLỦădoăch năđ ătƠi
BƠi toán luồng cực đ i trong m ng lƠ một trong số nh ng bƠi tốn tối ưu trên đồ
thị 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 nh ng năm 1950, vƠ g n li n v i tên tuổi
c a hai nhƠ bác học Mỹ lƠ Ford vƠ 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 tốn xác định cư ng độ dị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, 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 hệ thống đư ng ống dẫn dầu…NgoƠi ra, ng
d ng c a bƠi tốn cịn đ gi i các bƠi toán như: BƠi toán đám cư i vùng quê, bƠi toán
v hệ thống đ i diện chung, bƠi toán phơn nhóm sinh ho t, bƠi tốn l p lịch cho hội
nghị.
V i sự xuất hiện ngƠy cƠng nhi u c a các hệ thống m ng như: hệ thống m ng
điện, m ng s n xuất vƠ phơn phối hƠng hóa, m ng giao thơng vƠ phổ bi n nhất hiện
nay lƠ m ng internet đã lƠm n y sinh ra nhu cầu v n chuy n các chất liệu trên các
m ng nƠy sao cho đ t hiệu qu cao nhất; chất liệu đơy có th lƠ dịng điện, d liệu,
hƠng hóa hiệu qu
đơy có th xét theo tiêu chuẩn v th i gian, độ dƠi quãng đư ng,

chi phí ti n b c, m c độ an toƠn vƠ bƠi toán luồng cực đ i 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 ngƠnh công nghệ thơng tin cùng v i kh năng tính tốn rất nhanh c a
máy tính đã giúp việc gi i quy t bƠi toán luồng cực đ i trên m ng hiệu qu h n vƠ
đem l i nhi u ng d ng thực tiễn h n.
LƠo lƠ một nh ng nư c chịu nh hư ng l n nhất c a hiện tư ng bi n đổi khí h u
trong hai th p kỷ tr l i đơy. LƠo, trong năm 2018 lƠ đ t thiên tai tồi tệ nhất trong
vòng nhi u năm qua. Sau hƠng lo t các tr n l t liên ti p, 60.000 ngư i đã bị nh
hư ng, 56 trư ng h p thiệt m ng vƠ 35 ngư i khác vẫn còn mất tích, thiệt h i trên
686.136 USD (6.000 tỷ kip). Một vƠi tr n bão l t l n trong th i gian gần đơy có th k
đ n như tr n bão lũ
tỉnh Sekong bão Ketsana (25/9/2009), bão Dephition
(30/9/2016). Nhằm gi m nhẹ thiệt h i v ngư i vƠ c a do bão lũ gơy ra thì cơng tác
phòng chống vƠ c u hộ đư c đặc biệt chú trọng. Trong đó, v n chuy n hƠng c u tr
cho ngư i dơn lƠ một trong nh ng công việc ph i đư c thực hiện một cách nhanh
chóng vƠ hiệu qu .
Xuất phát từ nh ng lỦ do trên đư c sự đồng Ủ vƠ hư ng dẫn c a TS.ă Nguy nă
ĐìnhăL u, tơi chọn đ tƠi “Bài toán luồng cực đại và ứng dụng trong vận chuyển
hàng cứu trợ thiên tai tại tỉnh Sekong nước CHDCND Lào” đ lƠm lu n văn th c sỹ.


2
2. M cătiêuăvƠănhi măv
2.1. Mục tiêu
- N m đư c các thu t toán gi i bƠi toán luồng cực đ i v i chi phí cực ti u.
- Xơy dựng thƠnh cơng chư ng trình hỗ tr cơng tác v n chuy n hƠng c u tr cho
ngư i dơn các vùng lũ l t.
2.2. Nhiệm vụ
Về lý thuyết:
- Tìm hi u lỦ thuy t bƠi tốn luồng cực đ i vƠ một số bƠi toán ng d ng c a bƠi

toán luồng cực đ i.
- Nghiên c u kỹ các thu t toán trên bƠi toán luồng cực đ i v i chi phí cực ti u.
- N m đư c quy trình cƠi đặt thu t tốn, xơy dựng ng d ng cho smartphone.
Về thực tiễn:
- Tìm ra đư c phư ng án v n chuy n hƠng c u tr cho ngư i dơn các vùng lũ l t
hiệu qu vƠ tốn ít chi phí nhất.
- Xơy dựng chư ng trình máy tính thực hiện đư c ch c năng trên.
3.ăĐ iăt

ngăvƠăph măviănghiênăc u

3.1. Đối tượng nghiên cứu
- BƠi toán luồng cực đ i v i chi phí cực ti u.
- Các ngơn ng l p trình: Html, Css, JavaScript, C#, Google Maps SDK, Google
Maps API…
- Hệ qu n trị c s d liệu: SQL.
3.2. Phạm vi nghiên cứu
- BƠi toán luồng cực đ i, các thu t toán c b n gi i bƠi toán luồng cực đ i v i chi
phí cực ti u.
- Chỉ nghiên c u vƠ phát tri n ng d ng t i tỉnh Sekong, LƠo.
4. Ph

ngăphápănghiênăc u

V phư ng pháp nghiên c u, tôi s d ng hai phư ng pháp chính lƠ nghiên c u lỦ
thuy t vƠ nghiên c u thực nghiệm.
4.1. Phương pháp nghiên cứu lý thuyết
- Nghiên c u các tƠi liệu v c s lỦ thuy t: BƠi tốn tìm luồng cực đ i.
- Các tƠi liệu cƠi đặt một số d ng bƠi tốn tìm luồng cực đ i.
- Các tƠi liệu liên quan đ n một số nghiên c u.

- Các tƠi liệu v quy trình xơy dựng, phát tri n phần m m ng d ng.
- Các tƠi liệu v thực tr ng công tác c u tr ngư i dơn các vùng lũ l t.


3
4.2. Phương pháp nghiên cứu thực nghiệm
Sử dụng phương pháp nghiên c u lý thuyết kết hợp với nghiên c u thực nghiệm:
- CƠi đặt các thu t toán cho bƠi tốn.
- Vi t chư ng trình cho bƠi tốn ng d ng c th .
- Ch y th nghiệm, lưu tr k t qu đ t đư c vƠ đánh giá l i k t qu .
5. ụănghƿaăc aăđ ătƠi
V mặt khoa học, trên c s nghiên c u lỦ thuy t bƠi toán luồng cực đ i vƠ các
phư ng pháp gi i bƠi toán luồng cực đ i v i chi phí cực ti u, lu n văn xơy dựng đư c
chư ng trình hỗ tr cơng tác v n chuy n hƠng c u tr cho ngư i dơn các vùng bão l t.
V mặt thực tiễn: V i việc xơy dựng thƠnh công chư ng trình, cơng tác v n
chuy n hƠng c u tr khi có bão lũ xẩy ra s đư c ti n hƠnh một cách nhanh chóng,
nơng cao hiệu qu vƠ ti t kiệm đư c chi phí v n chuy n cho từng chuy n hƠng.
6.ăB ăc căc aăđ ătƠi
NgoƠi phần m đầu vƠ k t lu n. ToƠn bộ nội dung c a lu n văn đư c chia lƠm 3
chư ng sau:
Chư ng 1: BƠi toán luồng cực đ i
- Phát bi u bƠi toán vƠ c s lỦ thuy t c a bƠi toán luồng cực đ i.
Chư ng 2: BƠi toán luồng cực đ i v i chi phí cực ti u
- Phát bi u bƠi tốn luồng cực đ i v i chi phí cực ti u, các gi thuy t, đồ thị
thằng dư vƠ nh ng đi u kiện tối ưu c a bƠi toán. Đưa ra mối quan hệ gi a luồng tối ưu
vƠ kh năng thông qua t i các đỉnh. Nêu ra một số thu t toán gi i bƠi toán luồng cực
đ i v i chi phí cực ti u.
Chư ng 3: Xơy dựng ng d ng tìm đư ng v n chuy n hƠng c u tr Minimum
Cost Max Flow
- ng d ng các thực toán đ thi t k vƠ l p trình ng d ng hỗ tr tìm đư ng v n

chuy n hƠng c u tr Minimum Cost Max Flow.


4

Ch

ngă1

BĨIăTOỄNăLU NGăC CăĐ I
1.1.ăPhátăbi uăbƠiătoánă
1.1.1. Mạng, Luồng trong mạng
Định nghĩa 1. Ta gọi m ng lƠ đồ thị có hư ng G = (V,E), trong đó có duy nhất
một đỉnh s khơng có cung đi vƠo gọi lƠ đi m phát, duy nhất một đỉnh t khơng có cung
đi ra gọi lƠ đi m thu vƠ mỗi cung e = (v,w) E đư c gán v i một số không ơm c(e) =
c(v,w) gọi lƠ kh năng thông qua c a cung e.
Đ thu n tiện cho việc trình bƠy ta s quy ư c rằng n u khơng có cung (v,w) thì
kh năng thơng qua c(v,w) đư c gán bằng 0.
Định nghĩa 2. Gi s cho m ng G = (V,E). Ta gọi luồng f trong m ng G = (V,E)
lƠ ánh x f: E R+ gán cho mỗi cung e =(v,w) E một số thực không ơm f(e) =
f(v,w), gọi lƠ luông trên cung e, tho mãn các đi u kiện sau:
1. 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),
2. Đi u kiện cơn bằng luồng trên mỗi đỉnh c a m ng: Tổng luồng trên các cung
đi vƠo đỉnh v bằng tổng luồng trên các cung đi ra khỏi đỉnh v, n u v ≠ s,t:




eE ( v)


f (e ) 



eE ( v )


f (e )

Trong đó E-(v) và E+(v) tư ng ng lƠ t p các cung đi vƠo vƠ đi ra khỏi đỉnh v.
3. Giá trị c a luồng f lƠ số

val ( f ) 



eE  ( v)

f ( e) 



eE  ( v)

f ( e)


1.1.2. Bài toán luồng cực đại trong mạng
1.1.2.1. Phát biểu bài toán luồng cực đại
Trong thực t ta thư ng gặp bƠi toán gọi lƠ bài tốn tìm luồng cực đại như sau:
Cho m ng G v i nguồn a, đích z vƠ kh năng thơng qua cij, (i,j)G. Trong số các
luồng trên m ng G tìm luồng có giá trị l n nhất.
BƠi tốn luồng cực đ i có th bi u diễn như bƠi tốn quy ho ch tuy n tính
v( f ) 

v i đi u kiện



( a ,i )G

fai 



( i , a )G

fia  max


5



( i , k )G

0 ≤ fij ≤ cij ∀(i,j) G

fik 

v( f ) 





( k , j )G

( a ,i )G

fkj k  V \ a ; z

cai

 e E ,n  V

Vì giá trị luồng v( f ) 



( a ,i )G

cai vƠ tồn t i luồng {fij = 0, ∀ (i,j) G}, nên, theo lý

thuy t quy ho ch tuy n tính, tồn t i luồng cực đ i.
1.1.2.2. Luồng cực đại và lát cắt cực tiểu
Định nghĩa


Cho m ng G =(V,E,c) v i nguồn a vƠ đích z. V i mọi S, T  V, kỦ hiệu t p các
cung đi từ S vƠo T lƠ (S,T), t c
(S,T) = {(i, j)  E  i  S & j  T}

N u S, T  V lƠ phơn ho ch c a V ( ST = V & ST =  ) và a S, zT, thì
cặp (S,T) gọi lƠ lát cắt (nguồnđỉnh) .
Khả năng thông qua c a lát c t (S, T) lƠ giá trị
C(S, T) =

 c
iS jT

ij

Cho luồng f vƠ lát c t (S,T) trên m ng G. V i mọi S, T  V, kỦ hiệu
f(S,T) =

f

ij
( i , j )( S ,T )

1.2.ăThu tătoánăFord-Fulkerson
1.2.1. Đường đi tăng luồng
*Mạng thặng dư (residual network) Gf
Cho luồng f trên m ng G=(V,E,c). Ta định nghĩa mạng thặng dư, kỦ hiệu Gf, là
m ng có t p đỉnh V vƠ t p cung Ef cùng kh năng thông qua cf như sau:
V i mọi cung (u,v)  E, n u f(u,v) > 0 thì (v,u)  Ef v i kh năng thơng qua
cf(v,u) = f(u,v).


V i mọi cung (u,v)  E, n u c(u,v)  f(u,v) > 0 thì (u,v)  Ef v i kh năng thông
qua cf(u,v) = c(u,v)  f(u,v).
Mỗi đư ng đi có hư ng từ đỉnh nguồn a đ n đỉnh đích z trong m ng thặng dư Gf
gọi lƠ đường đi tăng luồng.
Gi s


6
P = (a, u, … , i, j, … , v, z) lƠ đư ng đi tăng luồng từ a đ n z.

Xét cung (i,j)  Gf là cung trên P. N u (i,j)  E thì cung đó cùng hư ng v i P.
Ngư c l i n u (j,i)  E thì cung đó ngư c hư ng v i P.
T p các cung cùng hư ng v i P kỦ hiệu lƠ P+ .
T p các cung ngư c hư ng v i P kỦ hiệu là P .
1.2.2. Phương pháp FordFulkerson

Phư ng pháp nƠy đư c Ford vƠ Fulkerson đưa ra năm 1962. ụ tư ng xơy dựng
luồng cực đ i như sau: xuất phát từ luồng nƠo đó, ta tìm đư ng đi tăng luồng từ a đ n z
cho phép hiệu chỉnh giá trị luồng trên đư ng đi đó sao cho luồng m i có giá trị l n
h n. N u khơng tìm đư c đư ng đi như v y thì ta có luồng cực đ i.
Sau đơy lƠ mơ t thu t tốn tổng qt. Thu t tốn nƠy có th c i ti n đ tăng hiệu
năng.

 Đầu vào. M ng G = (V, E) v i nguồn a, đích z, kh năng thơng qua C = (c ij),
(i,j)G.
Các đỉnh trong G đư c s p x p theo th tự nƠo đó.
 Đầu ra. Luồng cực đ i F = (fij), (i,j)G
 Các bước.
1. Khởi tạo
Luồng xuất phát:

Đặt nhãn cho đỉnh nguồn

fij := 0 (i,j)G

a( , )

T o l p t p S gồm các đỉnh đã có nhãn nhưng chưa đư c dùng đ sinh nhãn, S’
lƠ t p đỉnh đư c gán nhãn nh các đỉnh c a t p S
S : = { a }, S’ := 

2. Sinh nhãn
2.1. Chọn đỉnh sinh nhãn

 Trư ng h p S  : Chọn đỉnh u  S nhỏ nhất (theo th tự). Lo i u khỏi S, S:=
S \ { u }. KỦ hiệu nhãn c a u lƠ (p, ) và A lƠ t p các đỉnh chưa có nhãn vƠ k đỉnh
sinh nhãn u.
Qua bư c 2.2.

 Trư ng h p S =  vƠ S’  : Gán S := S’ vƠ S’ := . Quay l i bư c 2.1.
 Trư ng h p S =  vƠ S’ = , thì k tăthúc, luồng F là cực đại.
2.2. Gán nhãn cho đỉnh chưa có nhãn vƠ k đỉnh sinh nhãn
 Trư ng h p A = : Quay l i bư c 2.1.


7
 Trư ng h p A  : Chọn t  A nhỏ nhất (theo th tự). Lo i t khỏi A, A:= A \ {
t }. Gán nhãn cho t như sau:
N u (u,t)E và fu,t < cu,t , đặt nhãn đỉnh t là ( u, min{, cu,t  fu,t}).
N u (t, u)E và ft,u > 0, đặt nhãn đỉnh t lƠ (u, min{, ft,u}).
N u t không đư c gán nhãn thì quay l i bư c 2.2.

N u t đư c gán nhãn vƠ t = z thì sang bư c 3.

N u t đư c gán nhãn vƠ t  z thì bổ sung t vƠo S’, S’ := S’ {t}, vƠ quay l i bư c
2.2.
3. Hiệu chỉnh tăng luồng

Gi s z có nhãn (q, ). Ta hiệu chỉnh luồng f như sau.
3.1. Kh i t o
j := z, i := q
3.2. Hiệu chỉnh

N u cung (i, j)  G, thì hiệu chỉnh fij = fij + .
N u cung (j, i)  G, thì hiệu chỉnh fji = fji  .
3.3. Tịnh ti n
N u i = a thì xố tất c nhãn c a các đỉnh trên m ng, trừ đỉnh nguồn a, vƠ quay
l i bư c 2.
N u i  a, thì đặt j := i vƠ i := p, v i p lƠ thƠnh phần th nhất c a nhãn đỉnh j.
Sau đó quay l i bư c 3.2.

Đo n chư ng trình sau minh họa thu t tốn Ford- Fulkerson bằng NNLT Pascal,
trong đó s d ng tìm ki m sơu DFS đ tìm một đư ng tăng luồng trên đồ thị tăng
luồng.
Procedure Findpath (u:integer);{tìm đường tăng luồng trên Gf }
Var
v:integer;
Front, rear: integer;
Begin
Trace [s]:= n+1;

{Trace[v] = 0 nghĩa là v chưa được thăm}


For v:=1 to n do
Begin
If (trace[v] = 0) and (c[u,v]>f[u,v]) then
Begin

{xỨt v kề u chưa thăm trên Gf}


8
Trace[v]:=u;
if v=t then

{đến được t thì dừng thuật tốn }

Begin
path := True; exit;
End;
findpath(v);
End;
if path =true then exit;
End;
End;
Procedure IncFlow; {tăng luồng dọc đường tăng luồng: f :=(f+ff)}
Var
Delta, u, v: Integer;
Begin
{Tính Delta = Δf}
Delta:= Maxint;
V:=t;

Repeat
U:= trace[v];
If c[u,v] - f[u,v] < Delta then Delta := c[u,v] ậ f[u,v] ;
V := u;
Until v = s;
f := (f+ff)
V :=t;
Repeat
u := trace[v];
f[u,v] :=f[u,v] + Delta ;
f[u,v] :=f[u,v] - Delta ;
v:=u ;
until v = s;
End;


9
Trong đó:

 C[1..n,1..n]: ma tr n bi u diễn kh năng thông qua các cung trên m ng.
 F[1..n,1..n]: ma tr n bi u diễn luồng trên các cung.

 Trace[1..n]: dùng đ lưu v t đư ng tăng luồng, thu t tốn tìm đư ng tăng
luồng s s d ng lƠ thu t tốn tìm ki m theo chi u sơu (DFS).
Ta có th tìm ki m (u,v) có ph i lƠ cung trên m ng thặng dư Gf không bằng đẳng
th c: c[u,v]>f[u,v]. N u (u,v) lƠ cung trên Gf thì kh năng thơng qua c a nó lƠ c[u,v] ậ
f[u,v]
Víăd ă1:
Xét m ng v n t i G =(V,E) đư c cho hình sau v i 1 lƠ đỉnh phát, 6 lƠ đỉnh thu,
luồng đư c đặt trong ngoặc, kh năng thông qua đư c ghi trên các cung :


Hình 1.1. Bài tốn 1
S d ng thu t tốn Ford-Fulkerson đ tìm luồng cực đ i vƠ lát c t nhỏ nhất
1. Bư c 1: Kh i t o luồng f =0.


10
2. Bư c 2:
● Đồ thị tăng luồng Gf c a G:

● Chọn đư ng tăng luồng P = (1,2,4,6), tăng luồng dọc theo đư ng nƠy:
- ΔP = min (5,6,6) = 6.
- Tăng luồng dọc theo P thu đư c luồng m i f = 5:

- Đồ thị tăng luồng:


11
● Chọn đư ng tăng luồng P = (1,3,5,6), tăng luồng dọc theo đư ng nƠy:
- ΔP = min(5,1,6) = 1.
- Tăng luồng dọc theo P thu đư c luồng m i f = 6:

- Đồ thị tăng luồng:

● Chọn đư ng tăng luồng P = (1,3,4,2,5,6), tăng luồng dọc theo đư ng nƠy:
- ΔP = min (4,3,5,3,5) = 3.
- Tăng luồng dọc theo P thu đư c luồng m i f = 9:


12

- Đồ thị tăng luồng:

Đ n đơy khơng cịn đư ng đi c b n nƠo trên đồ thị tăng luồng nên thu t toán k t
thúc.
Bư c 3: Luồng cực đ i
Luồng cực đ i có giá trị lƠ 9, lát c t cực ti u (X,Y) v i X={1,3}, Y={2,4,5,6}

Đ nhă lỦă v ă tínhă nguyên: ắN u tất c các kh năng thông qua lƠ số nguyên thì
thu t tốn trên ln tìm đư c luồng cực đ i v i luồng trên cung lƠ các số nguyên.
Gọi e số c nh c a đồ thị, n lƠ số đỉnh  e E , n  V

Thu t tốn Ford Fulkerson có độ ph c t p lƠ O(e) mỗi lần thực hiện, nhưng số
lần lặp không chính xác, xấp xỉ giá trị luồng cực đ i f, t c lƠ thu t tốn nƠy có độ ph c
t p lƠ một hƠm đa th c, vì v y, chúng ta cần đ n một thu t tốn mƠ th i gian thực hiện
khơng ph thuộc chút nƠo vƠo C. Xét cho cùng, các thu t toán tìm đư ng đi ng n nhất
v i kh năng thông qua c a cung e lƠ ce, nhưng th i gian thực hiện c a các thu t toán
nƠy chỉ ph thuộc các tham số e vƠ n. Một thu t toán như th gọi lƠ ắph thuộc đa th c
m nh” (strongly polynomial).


13
Víăd ă2:ă
Xét m ng v n t i G đư c cho

hình sau:
7(2)

2
5(2)


8(0)

5

5(4)
7(4)

1

3

9(6)

5(3)

7(3)

4

6

Hình 1.2. Bài tốn 2
Trong đó: 1 lƠ đỉnh phát, 6 lƠ đỉnh thu, giá trị luồng đư c vi t trong ngoặc vƠ kh
năng thông qua đư c cho trên mỗi c nh. Ta s dùng thu t tốn Ford-Fulkersons đ tìm
luồng cực đ i vƠ lát c t cực ti u trên G.
*ăDùngăthu tătoánăFord-Fulkersons:
Bư c 1: Kh i t o luồng f=0:

7(0)


2
5(0)

8(0)

5

5(0)
7(0)

1

3

9(0)

5(0)

7(0)

4

Bư c 2: Tăng luồng:
- Đồ thị tăng luồng:

6

7

2

5
8
7

1

5

5
3

9
5
4

7

6


14
Chọn đư ng tăng luồng P = (1,2,5,6), tăng luồng dọc theo đư ng nƠy:
ΔP = min(5,7,9) = 5.
- Tăng luồng dọc theo P thu đư c luồng m i f = 5:
- Đồ thị tăng luồng:

2

5
2


5

5

7

1

5

8
3

4

5

7

4

5

6

- Chọn đư ng tăng luồng P = (1,3,2,5,6), tăng luồng dọc theo đư ng nƠy:
+ ΔP = min(7,8,2,4) = 2.
+ Tăng luồng dọc theo P thu đư c luồng m i f = 7:
7(7)


2
5(5)

8(2)

5

5(0)
7(2)

1

3

9(7)

5(0)

7(0)

4
- Đồ thị tăng luồng:

6
7

2
2


5

6
2

1

5

5

5
3

2
7

5
4

7

6


×