Tải bản đầy đủ (.docx) (13 trang)

Lập trình song song giải thuật dijkstra

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 (251.14 KB, 13 trang )

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 !"
#"$% &'()*+,
-./01,231(4
5.678
1- 23191:5;5<=>>?=@AA
2- 23B;/C5;5<=>>?DEE?
;81F1G1H@E
;2%DDI=>DD
J77
I- 1K+LGMNJO
1- -8LGMNJO
2- JGMNJO
3- J%F7&9MNJO
4- J%F8 L/PQMNJO
5- 1/877G/P
II-  /P !"
1- R7*8C S
2-  /P !"#"$% &
III- -()*+
1- 1()*+
2- 1 : !7T+()*+
3- B%U7V7T+()*+
IV- H678
1- R QWS6
2- R QW
3- H,
I- 1K+LGMNJO


1- -8LGMNJO
a- MNJOX
1NY*N+
MNJOZMNJZO7N%+8U[O\][7+
+N^+7N_`a +L6+.7":77+b%7c +
GdRcReecf+S77%*:7#'g8 L
#ch#cJ+7M5icLJ7^Yj,
2k+l
• R77&9.97]RNN7N_
• R7/8mN]+N_
• R7G/P]nN++N_
b- 97'MNJO
MNJO[7N7NmNNj+][m_ /a77GF/%+8
U S.c.D,>+ PD>oDAAp7f+,1D>
o+ k.7RIRee,
2o=>>>.=,>7f+o=>>=.=,>7RIRee,
2o=>>@.=,@7RIReeIf++ P,
1@Z=>>?.E,>+ P+l.Lo77*8L
+*87T++*,
2- JGMNJO
MNJO'Gf*Zq r67
1G"7777/s L! S87#'g s
C%l7T]+NN+_,l7Tt67%77S67
*!Qu]++NN_ S.,
fMmHRkv+l7T+ ktV+%77l,<+ k
Vwu /a767Cl$+
V+
qM\2Hl w Vw u
7:t /a7 l%*:7l+ k7G87V /a7678C
l7T,

3- J%F7&9MNJO
3.1 HGV7&9
R&9MNJO /a77/V+
x++N7NZ+Ny7+N,,,zNjN
{x++|.7S!%7 F}7&9MNJORIRee
{N7NZ+N.7T+7&9#"8+x++ U
/7"*8 L
{y7+N,,,zR78 L*G!%77&9
{NjN|.7S!%7`7&9kw8W*F
7":7 /a7+}7C7&9
<
x++++NN^+]+N_+N]N+c_
3.2 OV7T+7&9
• OVv]5+7n#N_
Bkd Vw.V$ S 7F*F7":7
7+`7&9,OVv7T+7&9*GC% 77T7778
7U+w,
• R&9 s %7]M+N(N7N_
R&9 s %77&9#"8 %77&9*7,2klVC
Vv7T+7&9*7,R&9 s %7C%77'7778w
l
• OV %](+7n#N_
OV %7T+7&9+lVv7T+7T+7&9V7T+777&
9l7G
MNJO7k"L7&9/+7c+Nc77+c~c^c+NcNNc
++NcN7cNcN++N,
R77":7/PQ
• R":77+b
• R":7 l%
1VN#777&9 wu

3.3 R":77+b
E,E,DR&9I^
{ J8 L7NN
x++^7NN]+7c_
1•7+I,
f]•D€•€ee_
‚
O^]ƒ„+N…_
Ryzy)z•+]_€

x++^7NN]+7c_
17*‡ˆN,
{ J8 LMNN
{ J8 L2j+
<8 L77l*G7S l%V r7F7u7T+‰Q
,R7lt#'g67 Vw87+‰Q,
E,E,=R&9N7
{ R&9u r7&+77Swu7+777
l678,V7T+7&9N77k777&79N7,`%
N7t /a767 8  C77l*7 +,  HG V7T+ 7&9
N7,
E,E,ER&95N
R&9N7&+W Vw++7&97& /a7678C%
l77l,2*G7k8 L2j+ /a7*+77
l*7]77l*G67 Vw5N_t a7 *
l67 Vw7&9*:7 /a7678777G87
*77&9
17&95N7&7k+8 LO+N~+N
 HGV7&95N
 x++Ny7+Nz

 ‚
 7NZ7*


R&95N7ŠV7& 9%S7T+ Vw /a7678.%
l"c*G"l+N,
R77+N7kr%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%d8
E,‹,DR&9+N
17&9+N Vw++7&97& /a7678Cl7T
77l,
17&9*G7k"7U8 L77l*7*G7S7P
*l7T678#7G877C7&9+N /a767
87G877T+,
E,‹,=R&977+
7&9R7+uw /a77C7&9V%P r7& /a767
8V%l,
2%l k +6787G877C7&97k%l
*77F! ‰6787G87 kkt9*k+7 *l*+67
8#7G87 k,
7krlVL7&977+77.*7+7u%u

,
 E,‹,ER&9+N
R&9u r l%"777G77l,*!Q7&
9+N`lt7PVP r k]P r!Q7&9+N_
7 *"777l7‰V!Q7&9+N,5+ k77lt
7u677&9+N,
HGV7&9+N
 x+++NNjZN
 E,‹,‹R&9[7
17&9[777 9+7&u /a77%77.Fs
87uLl7F!.k,
x+++7NjN
+NN‡N#N
R&97&67%778+
#•N#
#ee
ee#
#ZZ
ZZ#
#C%
N#%rU7C%*G+7 #
%ecŒcZcIc•cŽc•c•‘
R:gW7&7kŠV/d#.F,
4- J%F8 LMNJO
1MNJO'778 L+
ZJ8 LO+N
ZJ8 Lf+N
ZJ8 L++N
ZJ8 L5+N
ZJ8 L(N^+

ZJ. LmN7
ZJ8 LR
 @Z1/877G/P
@,D1/8mN
MNJO77"%/8"L777U7o+l77
".+ F/a7&F77lcF/a77l'c
N+Nc77G/P67,1RIRee r7kr'
77. ~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
R7G/P /a7u r L*r6678 Vw
,+l77G/P+
• MJO‡5R;n(hn
• MJO‡2hJ‡1;mn[(5
• MJO‡(|2[J\R
• MJO‡2n51n(


II-  /P !"
1- R7*8C S
• Bl97k/Bl97k/-%7Q7kU6-•]<cn_c k
- <c77 &Q7:c
- nc777Q7kU67U+77 &c /a7}777V7k/Q77,
J%7VN•]#c_ /a777k/$#€# /a7} r SIF7
 /a7} r7FI}7T+7V,
• 2`7VN•]#c_%7n+ Q%F67/sU7]#c_}}F
7T+k,7]#c_•’N•]#c_*G%7n,
• 2w
>
c
D
c
=
“““

% /P .- %7T+k /a7 9v+
/+

”7]
ZD
c

_
\•D
1U7 %7T+ /P 7K77}F.777V 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:
1VN7&rL /P !"d+%7Q
& k,
III- -()*+

1- -()*+
1/Pa}F.777V*G•()*+ L
#" r /P !"$ & 77 &7‰V7T+ l
987d8s"L77 wC7/7,
16+.7sC777 &77wVP,2w7T+` &
77.7T+ % /P !"$ k,R7w K
N%T7QcC k`/7Q7s%wVPCw
7F 9,2w7T+% & kC7F 9–t7+*G
7.7T+ % %7T+ /P !"$ & k,
1 /a7G7r/+
Procedure Dijkstra
]Œ
Đầu vàoBl97k/-•]<cn_ &
5%7< &#"c7yzyzcc%7<+}F
Giả thiết+ycz—•>c%7<
Đầu raH77$ 77 &7‰Vyzc%7<
17yz & /7 /P !"$ 
Œ_
N
]Œ*CVŒ_
f
N
(yz•7ycz€
17yz•€
n
(yz•>€
1•<„‚†]Œ177 &7kwVPŒ_
]Œ/7QŒ_
YN]1
N

1 &1˜+wyz•‚yˆzˆ1†€
1•1„‚†€]Œ7F 9wŒ_
f]Œ-Vw777 &1Œ_
\^]yz—yze+ycz_
N
yz•yze+ycz€
7yz•€
N€
N€
N€
Ví dụ :
J+}F
D=E‹@™
D>D’’’’
=’>@=’p
[•E’’>’’D
‹=’D>‹’
@’’’E>’
™’’’’D’
*N()*+
š/7+S7T+wNU6yz7yz
/7Q B&D B&= B&E B&‹ B&@ B&™
HCV >,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+ 7U /a7 /P !"$ & 

77 &7‰V7T+ l9,
-'WC%/7Q k77w7F 97+ %77 /P !
"$ 77 &7kw7F 9c+t7UCSQN &
Œ
 /a7w7F 9y
Œ
z7 % /P !"$ 
Œ,
1+7k
H85
D
77 &7kw7F 7‰5
=
77 &7kwVPC
/7Q +#Š,H:7`/7QwVPyz7+ % /P $
7&+dW5
D,
-'W /P !"$

Œ
*GW}5
Dc
U7k +"% &7T+5
=
,-}ˆ%7
5
=
 & S./. /P ,(}F.777*G•c
. V /P$ˆ 
Œ

7k %—>
yˆz•y
Œ
z›•y
Œ
z,
" œU7•077#7 9 &
Œ 
 &7kwVP˜
", /P !"$ 
Œ
W}5
D
y
Œ
z %
7T+k,(CSQ S.5
D
•‚†+`SQ+7&.5
D
% &
Œ
.yz7 % /P !"$ }%75
D
 :
/7Q S.,1NV}7+7+ /P !
"$ & } &7T+ l9,
3- 1P+7T+()*+
B9g1()*+ /a7 /P !". l9+P+7•
M]

=
_
•P+t FŠ7S678N,ž`/7Q r
+ &7S678M]_Š rwV747S67
8%F/aŠ74M]_,1678ZD/7Q
P+7T+M]
=
_
IV- H678
1- 5d+S6
2+oSd8 S]o*7/7+}F_,1P+
7T+()*+7 QWS6toSN l9
+
2- H
š+*6787"
 1P+7T++sS
6,H*7/7%d8 S7P+7T+
7+sS6
1P+7T+to+oFl67
8coF%'g
B9[+-}^S˜7T++7
678%77S6c>‘^‘D,1F7 %F +57kr V /a7W
77'i /a77C7GU7
5‘

1P+7S87#'g7T+UtS >*
+oF/ai,1P+787#'gS6GWF,
74/8o7+ +#Ÿ8+
.,i/7kr3"+6o}LF/a
%#'gg7a.%7doS •,1. k"

Lad8F: w /a7r/Yj
;OR5NNcm7*RN“V 76r7T+,

18+*
1- \NN
2- -PV7›23BU72v+c231G1

×