TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
Đề tài !"
#"$% &'()*+,
-./01,231(4
5.678
1- 23191:5;5<=>>?=@AA
2- 23B;/C5;5<=>>?DEE?
;81F1G1H@E
;2%DDI=>DD
J77
I- 1K+LGMNJO
1- -8LGMNJO
2- JGMNJO
3- J%F7&9MNJO
4- J%F8 L/PQMNJO
5- 1/877G/P
II- /P !"
1- R7*8C S
2- /P !"#"$% &
III- -()*+
1- 1()*+
2- 1 : !7T+()*+
3- B%U7V7T+()*+
IV- H678
1- R QWS6
2- R QW
3- H,
I- 1K+LGMNJO
1- -8LGMNJO
a- MNJOX
1NY*N+
MNJOZMNJZO7N%+8U[O\][7+
+N^+7N_`a +L6+.7":77+b%7c +
GdRcReecf+S77%*:7#'g8 L
#ch#cJ+7M5icLJ7^Yj,
2k+l
• R77&9.97]RNN7N_
• R7/8mN]+N_
• R7G/P]nN++N_
b- 97'MNJO
MNJO[7N7NmNNj+][m_ /a77GF/%+8
U S.c.D,>+ PD>oDAAp7f+,1D>
o+ k.7RIRee,
2o=>>>.=,>7f+o=>>=.=,>7RIRee,
2o=>>@.=,@7RIReeIf++ P,
1@Z=>>?.E,>+ P+l.Lo77*8L
+*87T++*,
2- JGMNJO
MNJO'Gf*Zq r67
1G"7777/s L! S87#'g s
C%l7T]+NN+_,l7Tt67%77S67
*!Qu]++NN_ S.,
fMmHRkv+l7T+ ktV+%77l,<+ k
Vwu /a767Cl$+
V+
qM\2Hl w Vw u
7:t /a7 l%*:7l+ k7G87V /a7678C
l7T,
3- J%F7&9MNJO
3.1 HGV7&9
R&9MNJO /a77/V+
x++N7NZ+Ny7+N,,,zNjN
{x++|.7S!%7 F}7&9MNJORIRee
{N7NZ+N.7T+7&9#"8+x++ U
/7"*8 L
{y7+N,,,zR78 L*G!%77&9
{NjN|.7S!%7`7&9kw8W*F
7":7 /a7+}7C7&9
<
x++++NN^+]+N_+N]N+c_
3.2 OV7T+7&9
• OVv]5+7n#N_
Bkd Vw.V$ S 7F*F7":7
7+`7&9,OVv7T+7&9*GC% 77T7778
7U+w,
• R&9 s %7]M+N(N7N_
R&9 s %77&9#"8 %77&9*7,2klVC
Vv7T+7&9*7,R&9 s %7C%77'7778w
l
• OV %](+7n#N_
OV %7T+7&9+lVv7T+7T+7&9V7T+777&
9l7G
MNJO7k"L7&9/+7c+Nc77+c~c^c+NcNNc
++NcN7cNcN++N,
R77":7/PQ
• R":77+b
• R":7 l%
1VN#777&9 wu
3.3 R":77+b
E,E,DR&9I^
{ J8 L7NN
x++^7NN]+7c_
1•7+I,
f]•D€•€ee_
‚
O^]ƒ„+N…_
Ryzy)z•+]_€
†
x++^7NN]+7c_
17*‡ˆN,
{ J8 LMNN
{ J8 L2j+
<8 L77l*G7S l%V r7F7u7T+‰Q
,R7lt#'g67 Vw87+‰Q,
E,E,=R&9N7
{ R&9u r7&+77Swu7+777
l678,V7T+7&9N77k777&79N7,`%
N7t /a767 8 C77l*7 +, HG V7T+ 7&9
N7,
E,E,ER&95N
R&9N7&+W Vw++7&97& /a7678C%
l77l,2*G7k8 L2j+ /a7*+77
l*7]77l*G67 Vw5N_t a7 *
l67 Vw7&9*:7 /a7678777G87
*77&9
17&95N7&7k+8 LO+N~+N
HGV7&95N
x++Ny7+Nz
‚
7NZ7*
†
R&95N7ŠV7& 9%S7T+ Vw /a7678.%
l"c*G"l+N,
R77+N7kr%F+
• Private
• Firstprivate
• Copyprivate
• Nowait
Các luồng khác mà không thực thi đoạn mã trong chỉ thị SINGLE sẽ phải đợi
đến khi luồng thực thi đoạn mã trong chỉ thị kết thúc mới được thực hiện các công
việc ngoài chỉ thị SINGLE nếu không có mệnh đề NOWAIT được đưa ra. Lưu ý trong chỉ
thị SINGLE chỉ có hai mệnh đề là private và firstprivate .
.
E,‹R":7 l%d8
E,‹,DR&9+N
17&9+N Vw++7&97& /a7678Cl7T
77l,
17&9*G7k"7U8 L77l*7*G7S7P
*l7T678#7G877C7&9+N /a767
87G877T+,
E,‹,=R&977+
7&9R7+uw /a77C7&9V%P r7& /a767
8V%l,
2%l k +6787G877C7&97k%l
*77F! ‰6787G87 kkt9*k+7 *l*+67
8#7G87 k,
7krlVL7&977+77.*7+7u%u
,
E,‹,ER&9+N
R&9u r l%"777G77l,*!Q7&
9+N`lt7PVP r k]P r!Q7&9+N_
7 *"777l7‰V!Q7&9+N,5+ k77lt
7u677&9+N,
HGV7&9+N
x+++NNjZN
E,‹,‹R&9[7
17&9[777 9+7&u /a77%77.Fs
87uLl7F!.k,
x+++7NjN
+NN‡N#N
R&97&67%778+
#•N#
#ee
ee#
#ZZ
ZZ#
#C%
N#%rU7C%*G+7 #
%ecŒcZcIc•cŽc•c•‘
R:gW7&7kŠV/d#.F,
4- J%F8 LMNJO
1MNJO'778 L+
ZJ8 LO+N
ZJ8 Lf+N
ZJ8 L++N
ZJ8 L5+N
ZJ8 L(N^+
ZJ. LmN7
ZJ8 LR
@Z1/877G/P
@,D1/8mN
MNJO77"%/8"L777U7o+l77
".+ F/a7&F77lcF/a77l'c
N+Nc77G/P67,1RIRee r7kr'
77. ~N/8,,
• MJO‡5n1‡2hJ‡1;mn[(5
• MJO‡-n1‡2hJ‡1;mn[(5
• MJO‡-n1‡J[i‡1;mn[(5
• MJO‡-n1‡1;mn[(‡2hJ
• MJO‡-n1‡2hJ‡OmMR5
• MJO‡\2‡O[m[n
• MJO‡5n1‡(|2[J\R
• MJO‡-n1‡(|2[J\R
• MJO‡5n1‡2n51n(
• MJO‡-n1‡2n51n(
• MJO‡\2\1‡MRH
• MJO‡5n1‡MRH
• MJO‡h25n1‡MRH
• MJO‡1n51‡MRH
@,=G/P
R7G/P /a7u r L*r6678 Vw
,+l77G/P+
• MJO‡5R;n(hn
• MJO‡2hJ‡1;mn[(5
• MJO‡(|2[J\R
• MJO‡2n51n(
II- /P !"
1- R7*8C S
• Bl97k/Bl97k/-%7Q7kU6-•]<cn_c k
- <c77 &Q7:c
- nc777Q7kU67U+77 &c /a7}777V7k/Q77,
J%7VN•]#c_ /a777k/$#€# /a7} r SIF7
/a7} r7FI}7T+7V,
• 2`7VN•]#c_%7n+ Q%F67/sU7]#c_}}F
7T+k,7]#c_•’N•]#c_*G%7n,
• 2w
>
c
D
c
=
“““
% /P .- %7T+k /a7 9v+
/+
”7]
ZD
c
_
\•D
1U7 %7T+ /P 7K77}F.777V k,
2- /P !"
Bài toán tìm đường đi ngắn nhất là bài toán quan trọng trong Lý thuyết đồ thị, nó được
áp dụng để giải quyết rất nhiều bài toán trong thực tế như điều khiển tối ưu, giao thông
vận tải, mạng viễn thông
Bài toán này có thể chia làm 2 loại:
Tìm đường đi ngắn nhất giữa một cặp đỉnh: Cho đồ thị G(V,E) có trọng số cạnh và
hai đỉnh u, v thuộc V tìm đường đi ngắn nhất từ đỉnh u đến đỉnh v trên đồ thị G. Các giải
thuật được phát triển để giải bài toán dạng này tiêu biểu là các giải thuật: Dijkstra,
Bellman-Ford,
Tìm đường đi ngắn nhất giữa tất cả các cặp đỉnh: Cho đồ thị G(V,E) có trọng số
cạnh tìm đường đi từ đỉnh u đến đỉnh v, với mọi cặp đỉnh u, v thuộc V. Các giải thuật đã
được phát triển để giải bài toán này là: Floyd-Warshall, Johnson,
Trong thực tế nhiều khi ta không chỉ cần tìm đường đi ngắn nhất giữa hai đỉnh mà còn
cần xác định đường đi ngắn nhất giữa một tập đỉnh này đến một tập đỉnh khác. Bài toán
đó được phát biểu như sau: Cho đồ thị G(V,E) có trọng số cạnh và hai tập đỉnh A,B ⊂ V
tìm đường đi ngắn nhất từ tập đỉnh A đến tập đỉnh B.
Các thuật toán quan trọng nhất giải quyết bài toán này là:
• Thuật toán Dijkstra — giải bài toán nguồn đơn nếu tất cả các trọng số đều không âm.
Thuật toán này có thể tính toán tất cả các đường đi ngắn nhất từ một đỉnh xuất phát
cho trước s tới mọi đỉnh khác mà không làm tăng thời gian chạy.
• Thuật toán Bellman-Ford — giải bài toán nguồn đơn trong trường hợp trọng số có thể
có giá trị âm.
• Giải thuật tìm kiếm A* giải bài toán nguồn đơn sử dụng heuristics để tăng tốc độ tìm
kiếm
• Thuật toán Floyd-Warshall — giải bài toán đường đi ngắn nhất cho mọi cặp đỉnh.
• Thuật toán Johnson — giải bài toán đường đi ngắn nhất cho mọi cặp đỉnh, có thể
nhanh hơn thuật toán Floyd-Warshall trên các đồ thị thưa.
• Lý thuyết nhiễu (Perturbation theory); tìm đường đi ngắn nhất địa phương (trong
trường hợp xấu nhất)
Ứng dụng thực tế của bài toán tìm đường đi ngắn nhất:
1VN7&rL /P !"d+%7Q
& k,
III- -()*+
1- -()*+
1/Pa}F.777V*G•()*+ L
#" r /P !"$ & 77 &7‰V7T+ l
987d8s"L77 wC7/7,
16+.7sC777 &77wVP,2w7T+` &
77.7T+ % /P !"$ k,R7w K
N%T7QcC k`/7Q7s%wVPCw
7F 9,2w7T+% & kC7F 9–t7+*G
7.7T+ % %7T+ /P !"$ & k,
1 /a7G7r/+
Procedure Dijkstra
]Œ
Đầu vàoBl97k/-•]<cn_ &
5%7< &#"c7yzyzcc%7<+}F
Giả thiết+ycz—•>c%7<
Đầu raH77$ 77 &7‰Vyzc%7<
17yz & /7 /P !"$
Œ_
N
]Œ*CVŒ_
f
N
(yz•7ycz€
17yz•€
n
(yz•>€
1•<„‚†]Œ177 &7kwVPŒ_
]Œ/7QŒ_
YN]1
N
1 &1˜+wyz•‚yˆzˆ1†€
1•1„‚†€]Œ7F 9wŒ_
f]Œ-Vw777 &1Œ_
\^]yz—yze+ycz_
N
yz•yze+ycz€
7yz•€
N€
N€
N€
Ví dụ :
J+}F
D=E‹@™
D>D’’’’
=’>@=’p
[•E’’>’’D
‹=’D>‹’
@’’’E>’
™’’’’D’
*N()*+
š/7+S7T+wNU6yz7yz
/7Q B&D B&= B&E B&‹ B&@ B&™
HCV >,D DcDŒ ’cD ’cD ’cD ’cD
D Z Z ™c= E,=Œ ’cD ?c=
= Z Z ‹c‹Œ Z pc‹ ?,=
E Z Z Z Z pc‹ @cEŒ
‹ Z Z Z Z ™c™Œ Z
@ Z Z Z Z Z Z
2- 1 : !7T+()*+
1/7+ 7U /a7 /P !"$ &
77 &7‰V7T+ l9,
-'WC%/7Q k77w7F 97+ %77 /P !
"$ 77 &7kw7F 9c+t7UCSQN &
Œ
/a7w7F 9y
Œ
z7 % /P !"$
Œ,
1+7k
H85
D
77 &7kw7F 7‰5
=
77 &7kwVPC
/7Q +#Š,H:7`/7QwVPyz7+ % /P $
7&+dW5
D,
-'W /P !"$
Œ
*GW}5
Dc
U7k +"% &7T+5
=
,-}ˆ%7
5
=
& S./. /P ,(}F.777*G•c
. V /P$ˆ
Œ
7k %—>
yˆz•y
Œ
z›•y
Œ
z,
" œU7•077#7 9 &
Œ
&7kwVP˜
", /P !"$
Œ
W}5
D
y
Œ
z %
7T+k,(CSQ S.5
D
•‚†+`SQ+7&.5
D
% &
Œ
.yz7 % /P !"$ }%75
D
:
/7Q S.,1NV}7+7+ /P !
"$ & } &7T+ l9,
3- 1P+7T+()*+
B9g1()*+ /a7 /P !". l9+P+7•
M]
=
_
•P+t FŠ7S678N,ž`/7Q r
+ &7S678M]_Š rwV747S67
8%F/aŠ74M]_,1678ZD/7Q
P+7T+M]
=
_
IV- H678
1- 5d+S6
2+oSd8 S]o*7/7+}F_,1P+
7T+()*+7 QWS6toSN l9
+
2- H
š+*6787"
1P+7T++sS
6,H*7/7%d8 S7P+7T+
7+sS6
1P+7T+to+oFl67
8coF%'g
B9[+-}^S˜7T++7
678%77S6c>‘^‘D,1F7 %F +57kr V /a7W
77'i /a77C7GU7
5‘
1P+7S87#'g7T+UtS >*
+oF/ai,1P+787#'gS6GWF,
74/8o7+ +#Ÿ8+
.,i/7kr3"+6o}LF/a
%#'gg7a.%7doS •,1. k"
Lad8F: w /a7r/Yj
;OR5NNcm7*RN“V 76r7T+,
18+*
1- \NN
2- -PV7›23BU72v+c231G1