Xem mẫu
- 1
B GIÁO D C VÀ ĐÀO T O
Đ I H C ĐÀ N NG
NGUY N T N TH NG
THU T TOÁN SONG SONG GI I QUY T M T S
BÀI TOÁN V LÝ THUY T Đ TH
Chuyên ngành: KHOA H C MÁY TÍNH
Mã s : 60.48.01
TÓM T T LU N VĂN TH C SĨ K THU T
Đà N ng - Năm 2011
- 2
Công trình ñư c hoàn thành t i
Đ I H C ĐÀ N NG
Ngư i hư ng d n khoa h c: PGS.TSKH Tr n Qu c Chi n
Ph n bi n 1:
Ph n bi n 2:
Lu n văn s ñư c b o v trư c H i ñ ng ch m Lu n văn t t nghi p
th c sĩ k thu ttính h p t i Đ i h c Đà N ng vào ngày ….. tháng
10 năm 2011
* Có th tìm hi u lu n văn t i:
- Trung tâm Thông tin - H c li u, Đ i h c Đà N ng
- Trung tâm h c li u, Đ i h c Đà N ng.
- 3
M Đ U
1. Lý do ch n ñ tài:
Khoa h c k thu t ngày càng phát tri n, ñ t ra nhi u bài toán v i
kh i lư ng tính toán r t l n. Trong s ñó có nh ng bài toán mà k t qu ch
có ý nghĩa n u ñư c hoàn thành trong kho ng th i gian cho phép. Ví d
như các tính toán trong th i gian th c, mô ph ng s chuy n ñ ng c a các
phân t , tính quĩ ñ o chuy n ñ ng c a v t th trong không gian, d báo
th i ti t...
Đ gi i quy t nh ng bài toán này, ngư i ta ñã nghiên c u tăng t c
ñ tính toán b ng hai phương pháp hay k t h p c hai:
Phương pháp 1: C i ti n công ngh , tăng t c ñ x lý c a máy
tính. Công vi c này ñòi h i nhi u th i gian, công s c và ti n c a, nhưng t c
ñ cũng ch ñ t ñư c ñ n m t gi i h n nào ñó.
Phương pháp 2: Chia bài toán ra thành nh ng công vi c nh ñ có
th ch y song song trên nhi u b x lý.
Vi c phát tri n công ngh tính toán theo phương pháp 2 ñã cho ra
ñ i công ngh tính toán song song, ñó là vi c s d ng ñ ng th i nhi u tài
nguyên tính toán ñ gi i quy t m t bài toán. Các tài nguyên tính toán có th
bao g m m t máy tính v i nhi u b vi x lý hay m t t p các máy tính k t
n i m ng hay là m t s k t h p c a hai d ng trên. Công ngh tính toán
song song cho phép gi m th i gian th c thi bài toán tùy thu c cách phân
chia và s b x lý th c thi chương trình. Nguyên t c quan tr ng nh t c a
tính toán song song chính là tính ñ ng th i hay x lý nhi u tác v cùng m t
lúc.
Trong tính toán song song hi n nay, có hai công ngh chính:
Th nh t là s d ng các siêu máy tính v i r t nhi u b x lý ñư c
tích h p bên trong ñư c thi t k ñ ng b c v ph n c ng và ph n m m.
Các công ngh ñư c áp d ng trong các siêu máy tính thư ng là các công
ngh tiên ti n làm cho giá thành c a h th ng siêu máy tính tăng r t cao.Vì
- 4
th các siêu máy tính thư ng ñư c s d ng trong các lĩnh v c mà v n ñ
tính toán ph c t p, nh y c m và yêu c u th i gian th c như mô ph ng th c
hi n c a các ñ ng cơ máy bay, qu c phòng, vũ tr ...
Cách th hai là k t n i các máy tính l i v i nhau và cùng th c hi n
bài toán. H th ng các máy tính k t n i này chính là h th ng tính toán
song song phân c m. H th ng này có ưu ñi m là giá thành r hơn r t nhi u
so v i siêu máy tính có cùng s c m nh (do s d ng các thi t b thông
thư ng) và tính linh ho t c a h th ng (s nút, s b x lý, b nh , thi t b
m ng... ñ u mang tính tuỳ bi n cao). S phát tri n m nh m c a m ng máy
tính, các công ngh m ng hi n nay ñã l p ñi h n ch v truy n thông trong
h th ng máy tính song song phân c m làm cho nó ñư c phát tri n r ng rãi.
Các lĩnh v c s d ng h th ng tính toán song song phân c m thư ng yêu
c u tính toán không quá l n, không yêu c u th i gian th c như x lý nh,
nh n d ng vân tay, tính toán k t c u công trình, mô ph ng các thí nghi m...
V i s ra ñ i c a chíp ña lõi (multi-core) và x lí ña lu ng (multi-
threads) thì vi c khai thác h t kh năng x lí c a nó là m t v n ñ c n quan
tâm hi n nay. Tuy nhiên v i l p trình truy n th ng (l p trình tu n t ), các
câu l nh, các quá trình x lý ñư c th c h ên m t cách l n lư t, tu n t như
v y s không phát huy h t hi u năng c a b vi x lý ña lõi. Các nhà s n
xu t chip và ph n m m máy tính ñã b t ñ u nh ng n l c ñ ñ nh hư ng
gi i phát tri n ph n m m, cung c p cho h nh ng công c t t hơn trong
vi c l p trình ña lõi. Đi u ñó có nghĩa là ngư i l p trình ph i l p trình l i
theo m t cách khác ñ t n d ng s gia tăng v s lõi.
V i m c ñích tìm hi u và nghiên c u v thu t toán song song, tôi
ch n ñ tài “Thu t toán song song cho m t s bài toán v lí thuy t ñ th ”
nh m tìm hi u, nghiên c u và tìm gi i pháp song song cho m t s bài toán
v lý thuy t ñ th trên cơ s nh ng thu t toán tu n t truy n th ng.
- 5
2. M c tiêu c a ñ tài:
Tìm hi u, nghiên c u và xây d ng thu t toán song song cho m t s
bài toán c th ñ nâng cao kh năng th c hi n c a chương trình, gi m th i
gian th c hi n, góp ph n năng cao hi u năng ho t ñ ng c a h th ng.
3. Đ i tư ng và ph m vi nghiên c u:
+ Đ i tư ng nghiên c u:
- XLSS và thu t toán song song.
- Lý thuy t ñ th .
+ Ph m vi nghiên c u:
- M t s bài toán v lý thuy t ñ th : Tìm ñư ng ñi, cây bao trùm.
4. Phương pháp nghiên c u:
- Nghiên c u lý thuy t: XLSS, thu t toán song song, lý thuy t ñ th .
- Tìm hi u m t s thu t toán cơ b n: Tìm ñư ng ñi, cây bao trùm.
- Nghiên c u và xây d ng thu t toán song song.
4.1 Ý nghĩa khoa h c và th c ti n c a ñ tài:
- Nghiên c u và tìm gi i pháp nâng cao hi u năng c a h th ng b ng
XLSS.
- Có th áp d ng cho m t s lĩnh v c c th và m t s bài toán có ñ
ph c t p v th i gian l n, nh ng bài toán th i gian th c.
4.2 B c c c a ñ tài:
N i dung c a ñ tài này bao g m 3 chương:
Chương 1: Tính toán song song và thu t toán song song.
- Chương này gi i thi u t ng quan v tính toán song song, thu t
toán song song, các mô hình l p trình song song.
Chương 2: Lí thuy t ñ th .
- Chương này gi i thi u t ng quan v lí thuy t ñ th .
Chương 3: Song song hóa m t s bài toán v lí thuy t ñ th
- Chương này phát bi u, mô t và th c hi n song song hóa bài toán
tìm cây bao trùm nh nh t và bài toán tìm ñư ng ñi ng n nh t t ñ nh
ngu n ñ n m i ñ nh trên ñ th có tr ng s .
- 6
K t lu n: Nêu lên nh ng v n ñ ñã nghiên c u và k t qu ñ t
ñư c, nh ng h n ch và hư ng phát tri n c a ñ tài.
CHƯƠNG 1
Đ I CƯƠNG V X LÍ SONG SONG
1.1 M t s khái ni m v x lí song song
X lí song song là cách x lí thông tin b ng vi c s d ng nhi u hơn
m t b x lí ñ th c hi n nhi u hơn m t thao tác trên d li u t i m t th i
ñi m.
Thu t toán song song là m t t p các ti n trình (process) ho c các tác v
(task) có th th c hi n ñ ng th i và có th trao ñ i d li u v i nhau ñ k t
h p cùng gi i m t bài toán ñ t ra.
Nh ng thu t toán, trong ñó có m t s thao tác có th th c hi n ñ ng
th i ñư c g i là thu t toán song song.
1.2 Các ki n trúc song song
1.2.1 Mô hình SISD : Đơn l nh, ñơn d li u
Máy tính theo mô hình SISD ch có m t CPU, m i th i ñi m ch th c
hi n m t l nh và ch ñ c/ghi m t m c d li u. Có m t thanh ghi, g i là b
ñ m chương trình, ñư c s d ng ñ n p ñ a ch c a l nh ti p theo khi x lý
tu n t . Các câu l nh ñư c th c hi n theo m t th t xác ñ nh. Hay nói
cách khác, máy tính lo i SISD là máy tính thông thư ng, ch có duy nh t
m t b vi x lý, không có c u trúc song song và cũng không có d li u
song song.
Tín hi u
ñi u khi n
Đơn v ñi u BXL
khi n
Lu ng Lu ng Lu ng
l nh k t qu d li u
B nh
- 7
1.2.2 Mô hình SIMD: Đơn l nh, ña d li u
Máy theo mô hình SIMD có m t ñơn v ñi u khi n ñ ñi u khi n nhi u
ñơn v x lý (nhi u hơn m t ñơn v ) th c hi n theo m t lu ng các câu l nh.
Đơn v ñi u khi n (CU) phát sinh tín hi u ñi u khi n t i t t c các ph n t
x lý, nh ng b x lí này cùng th c hi n m t phép toán trên các m c d
li u khác nhau, nghĩa là m i b x lí có lu ng d li u riêng.
Đơn v ñi u khi n (CU)
Tín hi u ñi u
khi n
Ph n t Ph n t Ph n t
x lí 1 x lí 2 ... x lí n
1.2.3 Mô hình MISD: Đa l nh, ñơn d li u
Máy tính lo i MISD là ngư c l i v i SIMD. Máy tính MISD có th
th c hi n nhi u chương trình (nhi u l nh) trên cùng m t m c d li u.
Dòng l nh 1
CU 1 Ph n t x lí 1
Dòng l nh 2
CU 2 Ph n t x lí 2
. .
. .
. .
Dòng l nh n
CU n Ph n t x lí n
1.2.4 Mô hình MIMD: Đa l nh, ña d li u
Máy tính lo i MIMD còn g i là ña b x lí, trong ñó m i b x lí có
th th c hi n nh ng lu ng l nh (chương trình) khác nhau trên các lu ng d
- 8
li u riêng.
Dòng l nh 1 Lu ng d li u 1
CU 1 Ph n t x lí 1
Dòng l nh 2 Lu ng d li u 2
CU 2 Ph n t x lí 2
. .
. .
. .
Lu ng d li u
Dòng l nh n
CU n Ph n t x lí n N
1.3 Thi t k và ñánh giá thu t toán song song
1.3.1 Nguyên lý thi t thi t k thu t toán song song
Khi mu n th c hi n vi c x lí song song ta ph i xét c ki n trúc máy
tính và các thu t toán song song.
Đ thi t k ñư c các thu t toán song song c n ph i th c hi n:
- Phân chia d li u cho các tác v .
- Ch ra cách truy c p và chia s d li u.
- Phân các tác v cho các ti n trình (b x lí).
- Các ti n trình ñư c ñ ng b ra sao
Khi thi t k m t thu t toán song song có th s d ng năm nguyên lí
chính trong thi t k thu t toán song song:
+ Nguyên lý l p l ch: m c ñích là gi m t i thi u các b x lí s d ng
trong thu t toán sao cho th i gian tính toán là không tăng (xét theo khía
c nh ñ ph c t p).
+ Nguyên lý hình ng: Nguyên lý này ñư c áp d ng khi bài toán xu t
hi n m t dãy các thao tác {T1, T2, . . ., Tn}, trong ñó Ti+1 th c hi n sau khi
Ti k t thúc.
- 9
+ Nguyên lý chia ñ tr : Chia bài toán thành nh ng ph n nh hơn tương
ñ i ñ c l p v i nhau và gi i quy t chúng m t cách song song.
+ Nguyên lý ñ th ph thu c d li u: Phân tích m i quan h d li u
trong tính toán ñ xây d ng ñ th ph thu c d li u và d a vào ñó ñ xây
d ng thu t toán song song.
+ Nguyên lý ñi u ki n tương tranh: N u hai ti n trình cùng mu n
truy c p vào cùng m t m c d li u chia s thì chúng ph i tương tranh v i
nhau, nghĩa là chúng có th c n tr l n nhau.
Ngoài nh ng nguyên lý nêu trên, khi thi t k thu t toán song song ta
còn ph i chú ý ñ n ki n trúc c a h th ng tính toán. Khi chuy n m t thu t
toán tu n t sang thu t toán song song ho c chuy n m t thu t toán song
song thích h p v i ki n trúc ñang có. C n xác ñ nh ñư c yêu c u sau:
- Ki n trúc tính toán nào s phù h p v i bài toán?
- Nh ng bài toán lo i nào s x lý hi u qu trong ki n trúc
song song cho trư c ?
1.3.2 Các giai ño n thi t k thu t toán song song
- Song song hóa các thu t toán tu n t , bi n ñ i nh ng c u trúc tu n t
ñ t n d ng kh năng song song t nhiên c a t t c các thành ph n trong h
th ng x lí.
- Thi t k thu t toán song song hoàn toàn m i.
- Thi t k thu t toán song song t nh ng thu t toán song song ñã ñư c
xây d ng.
1.3.3 Đánh giá thu t toán song song
+ Th i gian tính toán
Th i gian tính toán c a gi i thu t song song là th i gian dành ñ th c
hi n tính toán. Th i gian tính toán s ph thu c vào s tác v th c hi n.
+ Th i gian truy n thông
Th i gian truy n thông c a m t gi i thu t là th i gian các tác v dành
- 10
ñ g i và nh n thông ñi p.
+ Th i gian r i
M t BXL có th ñ t trong tr ng thái r i n u thi u tính toán ho c d
li u ñ tính toán.
+ T c ñ và hi u qu :
Hi u qu c a thu t toán ñư c ñ nh nghĩa là ph n th i gian mà các b
x lí dùng ñ th c hi n công vi c có ích, ch ra m c ñ hi u qu c a m t
gi i thu t khi s d ng các tài nguyên tính toán c a m t chương trình song
song theo hư ng ñ c l p v i kích thư c bài toán.
Thu t toán song song có th có ñ ph c t p l n hơn thu t toán tu n t ,
do ñó r t khó ñ ñánh giá thu t toán song song. K t qu ñ t ñư c thư ng
ñư c ñánh giá b ng th c nghi m chương trình.
1.4 M t s mô hình l p trình song song
1.4.1 Mô hình chia s b nh :
Trong mô hình này các BXL ñ u có th truy c p vào b nh chia s , các
BXL có th ho t ñ ng ñ c l p nhưng luôn chia s ñ a ch các ô nh .
CPU 1 CPU 2 CPU n
Memory
1.4.2 Mô hình truy n thông ñi p
Trong mô hình truy n thông ñi p, các ti n trình chia s v i nhau kênh
truy n thông. Các kênh ñư c truy c p b i hai phương th c: g i và nh n
thông ñi p.
Mem1 Mem2 Memn
CPU 1 CPU 2 CPU n
Network
- 11
1.5 Môi trư ng l p trình song song
1.5.1 MPI
MPI là vi t t t c a Message Passing Interface. Đó là m t thư vi n các
hàm trong C và Fortran cho phép chèn vào trong code ñ th c hi n trao ñ i
d li u gi a các ti n trình.
MPI thư ng s d ng cho h th ng có ki n trúc b nh phân tán (h
th ng máy tính phân c m (cluster))), tuy nhiên nó cũng ho t ñ ng bình
thư ng trên h th ng ki n trúc chia s b nh .
Chương trình MPI ñư c d ch và ch y trên n n t ng có h tr chu n
MPI.
Trong mô hình l p trình MPI, các ti n trình truy n thông b ng cách g i
các hàm thư vi n ñ g i và nh n thông ñi p v i nh ng ti n trình khác.
Trong h u h t các chương trình MPI, s b x lí c ñ nh khi kh i t o
chương trình, và m t ti n trình ñư c t o ra trên m t b x lí. Tuy nhiên,
nh ng ti n trình này có th ch y nh ng chương trình khác nhau.
M t chương trình MPI bao g m nhi u chương trình tu n t có trao
ñ i d li u v i nhau thông qua vi c g i các hàm trong thư vi n.
1.5.2 OpenMP
OpenMP là công c cho phép l p trình song song h tr C/C++ và
Fortran77/90. OpenMP ho t ñ ng trên h th ng ki n trúc chia s b nh và
các máy tính ña lõi (multi-core).
OpenMP cung c p mô hình l p trình ña lu ng c p cao, xây d ng trên
thư vi n l p trình ña lu ng c a h th ng. Theo mô hình này ngư i l p trình
có th t o nhóm các lu ng cho th c hi n song song ñ ng th i ch rõ cách
các chia s công vi c gi a các lu ng thành viên c a nhóm. Cho phép khai
báo d li u chia s , riêng tư và ñ ng b các lu ng, cho phép các lu ng th c
- 12
hi n th c hi n công vi c m t các ñ c quy n. Ngoài ra OpenMP còn h tr
qu n lí th i gian th c hi n và s lư ng lu ng.
OpenMP cho phép vi t chương trình song song trong khi v n gi
nguyên mã ngu n c a chương trình tu n t . OpenMP s d ng ch th
chương trình d ch ñ ñi u khi n s song song.
OpenMP ñưa ra 2 cách song song ñó là:
+ Song song theo ch c năng: l p trình song song có c u trúc d a trên
phân chia công vi c trong vòng l p.
+ Song song theo d li u: H tr vi c gán các công vi c c th cho các
lu ng thông qua ch s c a lu ng.
CHƯƠNG 2
Đ I CƯƠNG V Đ TH
2.1 Các khái ni m cơ b n v ñ th
2.1.1 Đ nh nghĩa ñ th
Đ nh nghĩa 2.1: M t ñơn ñ th vô hư ng là m t b G=(V,E), trong ñó:
- V ≠∅ là t p h p h u h n g m các ñ nh c a ñ th .
- E là t p h p các c p không có th t g m hai ph n t khác
nhau c a V g i là các c nh.
Đ nh nghĩa 2.2: Đơn ñ th có hư ng là m t b G=(V,E), trong ñó:
- V ≠∅ là t p h p h u h n g m các ñ nh c a ñ th .
- E là t p h p các c p có th t g m hai ph n t khác nhau
c a V g i là các cung.
2.1.2 M t s khái ni m:
Đ nh nghĩa 2.3: Cho ñ th vô hư ng G=(V,E).
- Hai ñ nh u và v c a ñ th ñư c g i là k nhau n u (u,v) là
m t c nh c a ñ th .
- 13
- N u e = (u,v) là c nh c a ñ th thì ta nói c nh này là liên
thu c v i hai ñ nh u và v. C nh ñư c nói là n i ñ nh u và v. Đ nh u
và v ñư c g i là ñ nh ñ u c a c nh e.
Đ nh nghĩa 2.4: Cho ñ th vô hư ng G=(V,E). B c c a ñ nh v trong
ñ th , ký hi u là deg(v), là s c nh liên thu c v i nó. Đ nh có b c 0
ñư c g i là ñ nh cô l p, ñ nh có b c 1 g i là ñ nh treo.
Đ nh nghĩa 2.5: Cho ñ th có hư ng G=(V,E).
- Hai ñ nh u và v c a ñ th ñư c g i là k nhau n u (u,v) là m t
cung c a ñ th .
- N u e = (u,v) là cung c a ñ th thì ta nói cung này ñi ra kh i
ñ nh u vào ñi vào ñ nh v. Đ nh u ñư c g i là ñ nh ñ u c a cung
e và ñ nh v ñư c g i là ñ nh cu i c a cung e.
Đ nh nghĩa 2.6: Cho ñ th có hư ng G=(V,E)
+
- N a b c ra c a ñ nh v trong ñ th , ký hi u là deg (v), là s
c nh ñi ra kh i v.
-
- N a b c vào c a ñ nh v trong ñ th , ký hi u là deg (v), là s
c nh vào v.
2.2 Đư ng ñi, chu trình, tính liên thông
Đ nh nghĩa 2.7: Cho ñ th G = (V,E). Đư ng ñi ñ dài n t ñ nh u
ñ n ñ nh v (n là s nguyên dương) là dãy:
x0, x1, …, x n-1, xn
trong ñó u = x0, v = xn, (xixi+1)∈E, i = 0, 1, …, n-1.
Đư ng ñi nói trên còn có th ñư c bi u di n b ng dãy các c nh/cung:
(x0, x1), (x1, x2), …, (xn-1, xn)
Đ nh u g i là ñ nh ñ u c a ñư ng ñi, ñ nh v g i là ñ nh cu i c a ñư ng ñi.
Đư ng ñi có ñ nh ñ u và ñ nh cu i trùng nhau (u=v) g i là chu trình.
Đ nh nghĩa 2.8: Đ th vô hư ng G = (V,E) ñư c g i là liên thông n u
luôn tìm ñư c ñư ng ñi gi a hai ñ nh b t kỳ c a nó.
- 14
Đ nh nghĩa 2.9: Cho ñ th G = (V,E). Đ th H = (W,F) ñư c g i là ñ
th con c a G n u và ch n u W ⊆ V và F ⊆ E.
Trong trư ng h p m t ñ th vô hư ng G không liên thông, nó s ñư c
phân thành các ñ th con ñ c l p nhau và chúng ñ u liên thông. M i ñ th
con như v y ñư c g i là m t thành ph n liên thông c a G.
Đ nh nghĩa 2.10. Cho G = (V,E) là ñ th có hư ng.
- G ñư c g i là liên thông m nh n u luôn tìm ñư c ñư ng ñi gi a
hai ñ nh b t kỳ c a nó.
- G ñư c g i là liên thông y u n u ñ th vô hư ng tương ng v i nó
(ñ th vô hư ng có ñư c b ng cách bi n các cung m t
chi u thành các c nh hai chi u) là ñ th vô hư ng liên thông.
2.3 Bi u di n ñ th trong máy tính
2.3.1 Ma tr n k , ma tr n tr ng s
Xét ñ th ñơn vô hư ng G =(V, E), v i t p ñ nh V = {1, 2, . . ., n},
t p c nh E = {e1, e2, . . ., em}. Ta g i ma tr n k c a ñ th G là ma tr n
có các ph n t ho c b ng 0 ho c b ng 1 theo qui ñ nh như sau:
A = { aij: aij = 1 n u (i, j) ∈E, aij = 0 n u (i,j) ∉E; i, j =1, 2, . . ., n}.
2.3.2 Danh sách c nh (cung)
M i c nh (cung) e (x, y) ñư c tương ng v i hai bi n dau[e],
cuoi[e]. Như v y, ñ lưu tr ñ th , ta c n 2m ñơn v b nh . Như c ñi m
l n nh t c a phương pháp này là ñ nh n bi t nh ng c nh nào k v i c nh
nào chúng ta c n m phép so sánh trong khi duy t qua t t c m c nh (cung)
c a ñ th . N u là ñ th có tr ng s , ta c n thêm m ñơn v b nh ñ lưu
tr tr ng s c a các c nh.
2.3.3 Danh sách k
Trong bi u di n này, v i m i ñ nh v c a ñ th chúng ta lưu tr
danh sách các ñ nh k v i nó mà ta ký hi u là Ke(v), nghĩa là
Ke(v) = { u∈ V: (u, v)∈E},
V i cách bi u di n này, m i ñ nh i c a ñ th , ta làm tương ng v i
- 15
m t danh sách t t c các ñ nh k v i nó và ñư c ký hi u là List(i). Đ bi u
di n List(i), ta có th dùng các ki u d li u ki u t p h p, m ng ho c danh
sách liên k t.
2.4 Các thu t toán tìm ki m trên ñ th
2.4.1 Thu t toán tìm ki m theo chi u sâu
Thu t toán tìm ki m theo chi u sâu b t ñ u t ñ nh v nào ñó s
duy t t t c các ñ nh liên thông v i v. Thu t toán có th ñư c mô t b ng
th t c ñ qui DFS () trong ñó: chuaxet - là m ng các giá tr logic ñư c
thi t l p giá tr TRUE
procedure DFS( v);
begin
Thăm_Đ nh(v); chuaxet[v] := FALSE;
for u ∈ke(v) to n do
begin
if (chuaxet[u] ) then
DFS(A, n, v, chuaxet);
end;
2.4.2 Thu t toán tìm ki m theo chi u r ng (Breadth First Search)
Khác v i thu t toán tìm ki m theo chi u sâu, thu t toán tìm ki m
theo chi u r ng thay th vi c s d ng stack b ng hàng ñ i queue. Trong th
t c này, ñ nh ñư c n p vào hàng ñ i ñ u tiên là v, các ñ nh k v i v ( v1,
v2, . . ., vk) ñư c n p vào queue k ti p. Quá trình ñư c th c tương t v i
các ñ nh trong hàng ñ i. Thu t toán d ng khi ta ñã duy t h t các ñ nh k
v i ñ nh trong hàng ñ i.
chuaxet- m ng ki m tra các ñ nh ñã xét hay chưa;
queue – hàng ñ i lưu tr các ñ nh s ñư c duy t c a ñ th ;
procedure BFS(u);
begin
queue := φ;
u
- 16
chuaxet[u] := false;
while (queue ≠ φ ) do
begin
queue
- 17
2.5 Đ th Euler và Hamilton
2.5.1 Đ th Euler
Đ nh nghĩa 2.11: Cho ñ th G = (V,E). Chu trình ñơn trong G ñi qua
t t c các c nh c a nó ñư c g i là chu trình Euler. Đư ng ñi ñơn ñi qua t t
c các c nh c a ñ th ñư c g i là ñư ng ñi Euler.
Đ th G ñư c g i là ñ th Euler n u nó có ch a chu trình Euler. G
ñư c g i là ñ th n a Euler n u nó có ch a ñư ng ñi Euler.
2.5.2 Đ th Hamilton
Đ nh nghĩa 2.12: Cho ñ th G = (V,E). Chu trình sơ c p trong G ñi qua t t
c các ñ nh c a nó ñư c g i là chu trình Hamilton. Đư ng ñi sơ c p ñi qua
t t c các ñ nh c a ñ th ñư c g i là ñư ng ñi Hamilton.
Đ th G ñư c g i là ñ th Hamilton n u nó có ch a chu trình
Hamilton. G ñư c g i là ñ th n a Hamilton n u nó có ch a ñư ng ñi
Hamilton.
Đ th Hamilton cũng là ñ th n a Hamilton, ngư c l i thì không ph i
lúc nào cũng ñúng.
2.6 Cây và cây bao trùm c a ñ th
2.6.1 Cây và các tính ch t cơ b n c a cây
Đ nh nghĩa 2.13: Cây là m t ñ th vô hư ng liên thông và không ch a
chu trình.
+ G c c a cây là m t ñ nh ñ c bi t, thông thư ng là ñ nh trên cùng.
+ M c c a ñ nh là ñ dài ñư ng ñi t g c ñ n ñ nh ñó.
+ Đ cao c a cây là m c l n nh t c a cây (t c m c c a ñ nh cách xa cây
nh t).
2.6.2 Cây bao trùm c a ñ th
Đ nh nghĩa 2.14: Cho ñ th G=(V,E). Cây T g i là cây bao trùm c a G,
n u T là ñ th con ph c a G.
Đ nh lý 2.8: Đ th G=(V,E) có cây bao trùm khi và ch khi G liên thông.
- 18
2.6.3 Cây bao trùm nh nh t
Bài toán tìm cây bao trùm nh nh t là m t trong nh ng bài toán t i
ưu trên ñ th có ng d ng trong nhi u lĩnh v c khác nhau c a th c t . Bài
toán ñư c phát bi u như sau:
Cho ñ th vô hư ng G = (V,E,w). Hãy tìm cây bao trùm T c a
G sao cho t ng tr ng s c a các c nh c a T ñ t giá tr nh nh t.
Đ tìm m t cây bao trùm chúng ta có th th c hi n theo các bư c
như sau:
Bư c 1. Thi t l p t p c nh c a cây bao trùm là φ . Ch n c nh e = (i, j)
có ñ dài nh nh t b sung vào T.
Bư c 2. Trong s các c nh thu c E \ T, tìm c nh e = (i1, j1) có ñ dài
nh nh t sao cho khi b sung c nh ñó vào T không t o nên chu trình. Đ
th c hi n ñi u này, chúng ta ph i ch n c nh có ñ dài nh nh t sao cho
ho c i1∈ T và j1∉ T, ho c j1∈ T và i1∉ T.
Bư c 3. Ki m tra xem T ñã ñ n-1 c nh hay chưa? N u T ñ n-1 c nh
thì nó chính là cây bao trùm ng n nh t c n tìm. N u chưa ñ n-1 c nh thì
th c hi n l i bư c 2.
CHƯƠNG 3
XÂY D NG THU T TOÁN SONG SONG CHO M T S
BÀI TOÁN V Đ TH
3.1 Bài toán tìm cây bao trùm nh nh t
3.1.1 Bài toán:
Cho ñ th vô hư ng có tr ng s G =(V, E, w). Hãy tìm cây bao trùm
T c a G sao cho t ng tr ng s c a các c nh c a T ñ t giá tr nh nh t.
3.1.2 Thu t toán Prim tìm cây bao trùm nh t
Thu t toán Prim còn ñư c g i là phương pháp lân c n g n nh t. Trong
phương pháp này, b t ñ u t m t ñ nh tùy ý s c a ñ th , ñ u tiên, ta n i s
v i ñ nh lân c n g n nó nh t, ch ng h n là ñ nh t. K ti p, trong s các c nh
- 19
n i v i s hay t, ta l i ch n c nh có tr ng s nh nh t, … cho ñ n khi ta thu
ñư c cây g m n ñ nh và n-1 c nh. Đây chính là cây khung nh nh t c n
tìm.
+ Thu t toán Prim ñư c mô t như sau : Đ bi u di n l i gi i, ta s s
d ng 2 m ng:
- M ng d: d[v] dùng ñ lưu ñ dài c nh ng n nh t n i v i v trong
s các c nh chưa xét.
- M ng near: near[v] dùng ñ lưu ñ nh còn l i (ngoài v) c a c nh
ng n nh t nói trên.
+ Đ u vào: Đ th G = (V,E,w)
+ Đ u ra: Cây bao trùm nh nh t c a G và tr ng s tương ng
1. Procedure Prim(V, E, w)
2. Begin (* Kh i t o *)
3. Ch n s là m t ñ nh nào ñó c a ñ th .
4. H := {s}; (* T p nh ng ñ nh ñã ñưa vào cây *)
5. T := ∅; (* T p c nh c a cây *)
6. d[s] = 0;
7. near[s] = s;
8. For v∈(V \ H) do
9. Begin
10. d[v] := a[s,v];
11. near[v] := s;
12. End;
13. Stop := False;
14. While (not Stop) do (* Bư c l p *)
15. Begin
16 Tìm u∈(V \ H) th a mãn d[u] = min{d[v]: v∈(V \ H)};
17. H := H ∪ {u};
18. T := T ∪ { (u, near[u]) };
- 20
19. If |H| = n then
20. Begin
21. C := (H, T) là cây khung c a ñ th .
22. Stop := True;
23. End;
24. Else
25. For v ∈(V \ H) do
26. If d[v] > a[u,v] then
27. Begin
28. d[v] := a[u,v];
29. near[v] := u;
30. End;
31. End;
32. End;
+ Đ ph c t p c a thu t toán Prim là Ө(n2). Thu t toán s d ng 2 vòng
l p, m i vòng có (n-1) l n l p.
T(n)=2(n-1)(n-1) ∊ O(n2)
Do ñó ñ ph c t p c a thu t toán là O(n2)
3.1.3 Xây d ng thu t toán song song
+ Chia d li u cho thu t toán Prim:
- Gi thi t ñ th có n ñ nh, thu t toán th c hi n trên p BXL.
- T p các ñ nh V c a ñ th ñư c chia thành p t p con, m i t p con g m n/p
ñ nh li n k và m i t p ñư c gán ñ th c hi n trên m t BXL.
- BXL Pi qu n lí m t t p con Vi là các c t liên ti p c a ma tr n k và s
dòng là n (tương ng v i s ñ nh c a ñ th ).
- T i bư c k t n p ñ nh u vào H, BXL Pi s tính di[u]=min{d[v]:v∈(Vi H)};
- Tr ng s c a cây bao trùm nh nh t c a ñ th thu ñư c t các di[u] b ng
cách t ng h p k t qu t các BXL, l y di min[u] và chuy n v P0.
nguon tai.lieu . vn