Tìm hiểu thuật toán tối ưu trên đồ thị và hướng ứng dụngTìm hiểu thuật toán tối ưu trên đồ thị và hướng ứng dụngTìm hiểu thuật toán tối ưu trên đồ thị và hướng ứng dụngTìm hiểu thuật toán tối ưu trên đồ thị và hướng ứng dụngTìm hiểu thuật toán tối ưu trên đồ thị và hướng ứng dụngTìm hiểu thuật toán tối ưu trên đồ thị và hướng ứng dụngTìm hiểu thuật toán tối ưu trên đồ thị và hướng ứng dụngTìm hiểu thuật toán tối ưu trên đồ thị và hướng ứng dụngTìm hiểu thuật toán tối ưu trên đồ thị và hướng ứng dụngTìm hiểu thuật toán tối ưu trên đồ thị và hướng ứng dụngTìm hiểu thuật toán tối ưu trên đồ thị và hướng ứng dụngTìm hiểu thuật toán tối ưu trên đồ thị và hướng ứng dụngTìm hiểu thuật toán tối ưu trên đồ thị và hướng ứng dụng
Trang 1L I C
tài Nghiên c u khoa h c này là nh s ng d n và
c a gi ng viên Ts Em xin chân thành c
c a th y.
Em t c y cô trong khoa K thu t Công ngh thông tin
i h c Qu n tình gi ng d y, truy t nh ng ki n th c quý báu
và t u ki n cho em hoàn thành báo cáo này.
Trang 2M U 1
1 Lý do ch tài 1
2 M c tiêu nghiên c u 1
3 N i dung nghiên c u 1
4 i ng, ph m vi nghiên c u 1
u 1
1: LÝ THUY TH 3
1.1 M t s khái ni th 3
th 3
1.1.2 Các lo th 3
th th b ph th 3
th th b ph n 3
th 3
th E th n a E th Hamilton 4
th th n a Euler 4
th Hamilton 8
1.4 Bi u di th trên máy tính 8
1.4.1 Bi u di n b ng ma tr n k , ma tr n tr ng s : 8
1.4.2 Danh sách c nh 9
1.4.3 Danh sách k 9
2: GI I THI U M T S THU TH 12
2.1 Thu t toán tìm ki th 12
2.1.1 Tìm ki m theo chi th 12
2.1.2 Tìm ki m theo chi u r th 12
m tra tính liên thông 14
th có tr ng s n nh t 14
n nh th không có tr ng s 14
n nh t 15
2.2.3 Thu t toán Ford Bellman 15
2.2.4 Thu t toán Dijkstra 15
2.2.5 Thu t toán Floyd n nh t gi a t t c các c nh .16
3: LU NG C NG NG D NG 18
3.1 Gi i thi u lu ng c i 18
3.1.1 Bài toán lu ng trên m ng 18
3.1.2 Bài toán lu ng c i trong m ng 18
3.1.3 M ng, lu ng trong m ng, bài toán lu ng c i 18
3.2 ng d ng bài toán lu ng c i trong m ng 19
Trang 33.3 M t s bài toán t h p ng d ng t bài toán lu ng 25
3.3.1 Bài toán v th y l i 26
3.3.2 Bài toán v h th i di n chung 27
3.3.3 V m t bài toán t i r c .27
3.4 K t lu n 28
4: 29
4.1 Phát bi u bài toán 29
4.2 Yêu c u bài toán 30
4.3 C 31
33
34
35
K T LU NG PHÁT TRI N 36
TÀI LI U THAM KH O 37
PH L C 38
Trang 5DANH M C HÌNH NH
Hình 1.1 th th không liên thông 4
Hình 1.2 Liên thông m nh và liên thông y u 4
Hình 1.3 B y cây c u trên sông Pregel 5
Hình 1.4 th bi u di n thành ph Konigsberg 5
Hình 1.5 th th n a Euler 6
Hình 1.6 8
Hình 1.7 1 9
Hình 4.1 C 31
Hình 4.2 Giao di n c a ng d ng 32
Hình 4.3 Giao diên ch y ng d ng 32
Hình 4 4 V m 33
Hình 4.5 V ng 34
Hình 4.6 Các ch 35
Trang 6M U1.
T
Hi n nay có nhi u tài li t v lý thuy th v i nh ng
n giúp cho nh i mu n nghiên c u v lý thuy th tham
kh o Tuy nhiên h u h t các tài li u ch nghiên c u v lý thuy t và xây d ng các thu t toán chung u tài li u vi t v các ng d ng các thu gi i bài toán ng d ng c th hi n th c hóa trong vi c h c t p, gi ng
Trang 7- u th c nghi m:
S d u lý thuy t k t h p v i nghiên c u th c nghi m:
+Nghiên c u, tìm hi u ng d tài trong th c t
Trang 81: LÝ THUY TH
th : th là m t c u trúc r i r c bao g nh và các c nh n i các
- Khi gi a c nh (x, y) có nhi t c nh thì ta nói nh ng c nh cùng c p
nh là nh ng c nh song song hay là c nh b i
1.1.2 Các lo th
th không có b t k m t cung nào [2]
H: không liên thông
Trang 9Xét bài toán 7 cây c u Konigsberg [3]
Thành ph Konigsberg thu c C ng hoà Litva có con sông Pregel ch y qua,
gi a sông có cù lao Kneiphof t o nên b i ng 7 cây c
n t này l i v i nhau
Trang 10i Thu i
có th 7 cây c u, m i c u ch t l n r i quay tr v xu t
c hay không?
c r ng bài toán trên là không
Trang 12n=1
b -
I v
d ( )
S v
O
I v d v
d ( ) ( )
T v
I
O v d v
d ( ) ( )
Trang 14Hình 1.7 1 1.4.1.2.
Trang 15End;
Var
Trang 16new(t); t^.v:=x, t^.next:=Ke[y]; Ke[y]:=t;
new(t); t^.v:=y, t^.next:=Ke[x]; Ke[x]:=t;
end;
for J:=1 to m dobegin
t:=Ke[j];
while t^.next<>nil dobegin
K t lu n: Lý thuy th là m ng r t l n n m trong toán r i r th
trò quan tr toán cho tin h c và có nhi u ng d ng trong th c ti n Vì v y
vi c nghiên c lý thuy th là r t c n thi t giúp cho vi c ng d ng xây d ng các thu t toán c th Trong ph m vi nghiên c tài, nh ng v n mà tôi nêu trên là m t ph n c a lý thuy th , nh m m c v cho quá trình nghiên c u
Trang 172: GI I THI U M T S THU TH2.1 Thu
2.1.1 Tìm ki m theo chi th
toán duy t ho c tìm ki m trên m t câyho c m t th Thu t toán kh u t i g c (ho c ch n m c) và phát tri n xa nh t có th theo m i nhánh
Trang 18Tronglý thuy th, tìm ki m theo chi u r ng (BFS) là m t thu t toán tìm
Trang 20if d[v] > d[u] + a[u,v] thenbegin
d[v]:= d[u] + a[u,v];
Truoc[v]:= u;
end;
end;
2.2.4 Thu t toán Dijkstra
A
Trang 21B Th
X, Y, Z X-Y-ZX-Y
Trang 22Cho G=(V,E) là m th ng, có tr ng s ng n nh t gi a
m i c nh c a G, ta áp d ng thu t toán Dijkstra nhi u l n ho c áp d ng thu t toán
Gi s V={v1, v2, , vn} và có ma tr n tr ng s là W W0 Thu t toán Floyd xây
p[i,j]>p[k,j];
end;
end;
Trang 233: LU NG C NG NG D NG
3.1.1 Bài toán lu ng trên m ng.
Nhi u bài toán quy ho ch tuy n tính có th quy v bài toán làm c c ti u phí t n
c các nhu c u m t s t ngu n cung c p t i m t s nút khác
c g i là các bài toán lu ng trên m ng ho c bài toán tuy n tính L p này bao g m các bài toán quen thu c trong th c t
v n t i, các bài toán m n và m ng giao thông, các bài toán qu n lý và phân b
toán lu ng c [6]
3.1.2 Bài toán lu ng c c i trong m ng
Bài toán lu ng c i [1] trong m t trong s nh ng bài toán t
th c nh ng ng d ng r ng rãi trong th c t nh ng ng d ng
li n v i tên tu i c a hai nhà bác h c M là L.R.Fordvà D.R.Fulkerson Bài toán lu ng
c i trong m ng có nhi u ng d ng trong th c t
dòng l n nh t c a dòng v n t i gi a hai nút c a m t b giao thông, bài toán tìm
lu ng d u l n nh t có th tàu ch d u vào b ch a c a m t h th ng
i vùng quê, bài toán v h th i di n chung, bài toán phân nhóm sinh
ho t, bài toán l p l ch cho h i ngh
3.1.3 M ng, lu ng trong m ng, bài toán lu ng c i
Gi s cho m ng G=(V,E) Ta g i lu ng f trong m ng G=(V,E) là ánh x
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 u ki n sau:
1 Lu ng trên m i cung e t quá kh
u ki n cân b ng lu ng trên m nh c a m ng : T ng lu ng trên các cung
Trang 24Thu t toán Ford-Fulkerson [4]
Vi c ch nh lý lu ng c i-lát c t c c ti u ngay l p t c cho chúng ta
m t thu t toán Tìm lu ng c i- thu t toán Ford-Fulkerson:
Trang 25Procedure Findpath(u:integer); ng trên G f }
Trang 26f[u,v] :=f[u,v] - Delta ;
v :=u ;until v = s;
End;
F[1 n,1 n]: ma tr n bi u di n lu ng trên các cung
s s d ng là thu t toá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 f không b ng
th c: c[u,v]>f[u,v] N u (u,v) là cung trên Gf thì kh a nó là c[u,v] f[u,v]
X, thì f(u,v) xu t hi n v i d u c ng trong Divf(v) và v i d u tr trong Divf(u), vì th ,
c M t khác, t u ki n 1 rõ ràng là:
Trang 27qu này chúng ra s c n thêm m t s khái ni m.
Gi s f là m t lu ng trong m ng G = (V, E) T m ng G = (V, E) ta xây d
th có tr ng s trên cung Gf = (V, Ef), v i t p cung Ef và tr ng s c
nh theo qui t c sau:
Xét m ng v n t i G =(V,E) [6] c cho hình sau v nh phát, 6
nh thu, lu t trong ngo c, kh c ghi trên các cung :
S d ng thu t toán Ford- tìm lu ng c i và lát c t nh nh t
1 c 1: Kh i t o lu ng f =0
2 c 2:
th ng Gfc a G
Trang 30nh lý v tính nguyên u t t c các kh nguyên thì thu t
c lu ng c i v i lu ng trên cung là các s nguyên
G i e s c nh c th , n là s nh => e = E , n = V
s l n l p không chính xác, x p x giá tr lu ng c i f, t c là thu
ph c t p là m c, vì v y, chúng ta c n m t thu t toá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
ng n nh t v i kh a cung e là ce 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 g
thu t toán Ford-Fullkerson t ng quát
Bài toán lu ng c i có r t nhi u ng d ng trong vi c gi i nhi u bài toán t h p
i xây d ng sao cho vi c tìm lu ng c i
False
True
False True
Trang 31trong nó s i vi c gi t ra M c này s gi i thi u m t s bài
Trang 32m, thì bài toán có l i gi i, và các cung v i lu ng b ng 1 s ch ra cách
th cung c c cho các th a ru nào là t t nh t, tho u ki t
c l i, n u bài toán có l i gi i thì V max =m, bài toán v th y l i là m ng
h p riêng c a bài toán v c th gi i nó có th xây d ng thu t toán hi u qu [5]
3.3.2 Bài toán v h th i di n chung
Cho t p m ph n t X = {z 1 ,z 2 m } Gi s <A 1 ,A A n > và <B 1 ,B 2 n > là hai dãy t p con c a X Dãy g m n ph n t khác nhau c a X:< a 1 ,a 2, n c g i là
,
, ,,, ,
,,
2 1 2
1
2 1 2
1
n m
m n
y y y v
v v
u u u x x x t s V
Trong m c này ta s trình bày thu c xây d ng d a trên thu t toán tìm
lu ng c gi i m t bài toán t i r c là mô hình toán h c cho m t s bài toán t h p
Trang 33Có nhi u bài toán ng d ng, n c mô hình t t b th thì s d dàng gi i quy c trên máy tính ng d ng các thu t toán c a lý thuy th là r t th c ti n
và quan tr ng giúp cho vi c nh n Vi c nghiên c u lý thuy th và các ng d ng
c a nó góp ph n phát tri n các k thu t Tin h c
Trang 34Hi n nay có nhi u tài li t v lý thuy th v i nh ng
n giúp cho nh i mu n nghiên c u v lý thuy th tham
kh o Tuy nhiên h u h t các tài li u ch nghiên c u v lý thuy t và xây d ng các
thu gi i bài toán ng d ng c th hi n th c hóa trong vi c h c t p, gi ng
Xây d ng m t m ng sao cho: m nh v c a G ng v nh v + , v
-trong , m i cung (u,v) trong G ng v i cung (u,v + ) trong , m i cung (v,w) trong G
ng v i cung (v - ,w + ) trong Ngoài ra, m i cung (v + ,v - ) trong có kh
thông qua cung.
c trên ta có th bi u di i d thu t toán sau:
Trang 364.3
Hình 4.1 C
Project g m packages demo, file, icon trong a các file d
li u ph c v th ng s n, packages file ch a 2 file about và help ch a
n i dung gi i thi i dùng, packages icon ch a các nh làm icon, packages chính là packages ch
Trang 37Hình 4.2 Giao di n c a ng d ng
Giao di n khi ch
Hình 4.3 Giao diên ch y ng d ng
Trang 38Hình 4 4 V m
Trang 40Hình 4.6 Các ch
4.4.2.
Trong
Trang 41K T LU NG PHÁT TRI N
K t Lu n
- Lý thuy th không nh ng có nhi u ng d ng trong th c t mà còn là công
c c l c cho ngành công ngh thông tin Nó giúp cho chúng ta mô t m t cách ddàng các bài toán ph c t p c th t mã hoá
ng c i trong m ng c a hai nhà toán h c M là Ford
và Fullkerson là m t ví d n hình, thông qua vi t thu t toán này giúp chúng
ng Phát Tri n
- Do th i gian và kinh nghi m nghiên c u còn thi u, ki n th c còn h n ch , ng
thi n s n ph m ng d ng
Trang 42[1] Lê Duy Quang, (2015), Bài toán lu ng c i.
[2] Lê Minh Hoàng, (2002), lý thuy th
[3] t, (2012), Nghiên c u các thu t toán lý thuy th và ng
d ng d y tin h c chuyên Trung h c ph thông
[4] ng Qúy Linh, (2012), Bài toán tìm lu ng c i trong m ng theo thu t toán ford-fulkerson
Website:
[5] http://vnoi.info/wiki/translate/wcipeg/Flows, Lý Thuy th
[6] https://vi.wikipedia.org/wiki/ , Lý Thuy th , bài toán lu ng c i
Trang 43PH L C
Code Java: Ford Fullkerson