Bài giảng Cấu trúc dữ liệu và giải thuật - Chương 5: Đồ thị - Ngô Công Thắng

Chương 5: Đồ thị  
1. Các khái nim  
1.1. Định nghĩa đồ thị  
Đồ thG(V,E) bao gm mt tp hu hn V các đỉnh  
(hay nút) và mt tp hu hn E các cp đỉnh mà ta  
gi là cung ( hay cnh).  
Ví d1: Mt mng gm các máy tính và các kênh đin  
thoi ni các máy tính này là mt đồ th.  
Ví d2: Mt mng gm các thành ph, thxã và các  
đường bni các thành ph, thxã là mt đồ th.  
1.2. Định nghĩa đồ thvô hướng  
Đồ thvô hướng G=(V,E) bao gm V là tp các đỉnh và  
E là tp các cp đỉnh không có thtgi là các cung.  
* Nếu (v1, v2) là mt cung trong tp E(G) thì v1 và v2 gi là lân  
cn ca nhau.  
Ví dtrên 1,2 là lân cân, 1,3 là lân cn.  
* Mt đường đi từ đỉnh u đến đỉnh v trong đồ thlà mt dãy các  
đỉnh  
u=x0, x1, ..., xn-1, xn=v mà dãy các cnh (x0, x1), (x1, x2), ...,  
(xn-1, xn) là các cung thuc E(G) .  
* Slượng cung trên đường đi gi là độ dài ca đường đi.  
Ví dụ đường đi t1 đến 4 có độ dài là 2.  
* Đường đi đơn: Là đường đi mà mi đỉnh trên đó, trừ đỉnh đầu và  
đỉnh cui đều khác nhau.  
* Mt chu trình là mt đường đi đơn mà đỉnh đầu và đỉnh cui  
trùng nhau.  
Ví d: 13 541  
3. Phép duyt đồ thị  
* Xét đồ thvô hướng G(V,E) và mt đỉnh vÎ V. Ta cn thăm tt ccác  
đỉnh ca G mà có th“ vi ti” từ đỉnh v ( nghĩa là đồ thliên thông).  
Có 2 cách duyt đồ th:  
- Phép tìm kiếm theo chiu sâu ( Depth first search )  
- Phép tìm kiếm theo chiu rng (Breadth first search )  
3.1. Phép tìm kiếm theo chiu sâu ( Depth first search )  
Xét đồ thvô hướng. Phép tìm kiếm theo chiu sâu thhin như sau:  
- Đỉnh xut phát v được thăm.  
- Tiếp theo đó ta thăm đỉnh w là đỉnh chưa được thăm và là lân cn ca  
v. Phép tìm kiếm theo chiu sâu xut phát tw li được thc hin.  
Trong trường hp đỉnh u đã được thăm mà mi đỉnh lân cn ca nó đã  
được thăm ri thì ta quay li đỉnh cui cùng va được thăm ( mà  
đỉnh này còn đỉnh w là lân cn ca nó chưa được thăm) và phép tìm  
kiếm theo chiu sâu xut phát tw li được thc hin.  
Phép duyt theo chiu sâu đi theo trình tsau:  
v1 ® v2 ® v4 ® v8 ® v5 ® v6 ® v3 ® v7  
* Thtc phép duyt theo chiu sâu như sau:  
Cho mt đồ thG(V,E) vô hướng có n đỉnh và véc tơ Visited(n) gm n phn t,  
ban đầu véc tơ này có giá tr=0. Thut gii này thc hin thăm mi đỉnh “  
vi ti được “ từ đỉnh v.  
Procedure DFS(v)  
1) Visited[v]:=1; { đánh du v được thăm }  
2) Write(v); {Đưa ra đỉnh v}  
3) FOR mi đỉnh w lân cn vi v DO  
If Visited[w] = 0 then CALL DFS(w);  
Return  
* Đánh giá thut toán:  
+ Trường hp biu din đồ thdùng danh sách móc ni: G có e cung, mi  
nút vi ti 1 ln, nên thi gian tìm kiếm là O(e).  
+ Trường hp biu din đồ thdùng ma trn lân cn : thì thi gian xác  
định mi đim lân cn ca v là O(n). Có n đỉnh nên thi gian tìm kiếm là  
O(n2).  
3.2. Phép tìm kiếm theo chiu rng (Breadth first search )  
Xét đồ thvô hướng. Phép tìm kiếm theo chiu rng thhin  
như sau:  
- Đỉnh xut phát v được thăm.  
- Tiếp theo các đỉnh chưa được thăm mà là lân cn ca v sẽ  
được thăm, ri đến các đỉnh chưa được thăm là lân cn làn  
lượt ca các đỉnh này và ctương tnhư vy.  
Ví d1 trên: Phép duyt theo chiu rông đi theo trình tsau:  
v1 ® v2 ® v3 ® v4 ® v5 ® v6 ® v7 ® v8  
* Thtc phép duyt theo chiu rong như sau:  
Cho mt đồ thG(V,E) vô hướng có n đỉnh và véc tơ Visited(n)  
gm n phn t, ban đầu véc tơ này có giá tr=0. Thut gii này  
thc hin thăm mi đỉnh “ vi ti được “ từ đỉnh v. Bt đầu từ  
đỉnh v. Mi đỉnh i được thăm đánh du bng Visited(i):=1.  
Dùng hàng đợi Q có kích thước n; F, R là li trước và li sau ca  
hàng đợi. Khi thăm 1 đình thì loi bkhi hàng đợi; khi chưa  
thăm thì bsung vào hàng đợi  
Procedure BFS(v)  
1) Khi to hàng đợi Q vi v được đưa vào.  
2) Visited[v]:=1; { đánh du v được thăm }  
3) Write(v); {Đưa ra v}  
4) While Q không rng DO  
Begin  
Call CQDELETE(v,Q)  
{ loi bv ra khi Q}  
FOR mi đỉnh w lân cn vi v DO  
Begin  
If Visited[w]=0 then  
Begin  
Visited[w]:=1; Write(w);  
CALL CQINSERT(w,Q); { Bsung w vào Q}  
End  
End  
End  
Return  
* Đánh giá gii thut: Vòng lp While lp li n ln .  
- Nếu biu din đồ thbng ma trn lân cn thì thi gian thc  
hin là O(n2).  
- Nếu biu din đồ thbng danh sách lân cn thì thi gian thc  
hin là O(e).  
4. Cây khung và cây khung vi giá trcc tiu  
4.1. Cây khung  
* Nếu G là đồ thliên thông thì phép tìm kiếm theo chiu sâu hoc  
theo chiu rng xut phát t1 đỉnh thăm mi đỉnh. Như vy các  
cung trong G phân thành 2 tp:  
- Tp T cha các cung đã được duyt qua.  
- Tp b gm các cung còn li.  
* Tt ccác cung và các đỉnh trong T sto thành mt cây con  
bao gm mi đỉnh ca G. Cây con như vy gi là cây khung  
ca G.  
4.2. Cây khung vi giá trcc tiu  
* Bài toán: Xác định cây khung vi giá trcc tiu ca đồ thliên  
thông có trng s.  
Gía trca cây khung là tng các trng số ứng vi các cnh ca  
cây khung.  
* Có nhiu gii thut xác định cây khung vi giá trcc tiu nhưng  
trong phn này ta chxét gii thut Kruskal. Vi gii thut này  
cây khung T sẽ được xây dng dn tng cung mt. Các cung  
đưa vào T thomãn:  
- Cung có giá trcc tiu trong các cung còn li.  
- Không to ra chu trình vi các cung đã có ca T.  
* Gii thut Kruskal được viết như sau:  
1. T=F { T rng  
2. While T cha ít hơn (n-1) cung Do  
3. Begin Chn 1 cung (v,w) tE có giá trnhnht.  
4. Loi (v,w) ra khi E  
5. If (v,w) không to nên chu trình trong T Then  
đưa (v,w) vào T.  
End;  
6. Return  
* Đánh giá gii thut:  
Thi gian thc hin gii thut xác định qua thc hin  
bước 3 và 4.  
Trường hp xu nht slà O(e.log e) trong đó e là số  
cung ca đồ thG.  
5. Bài toán tìm đường đi ngn nht  
( Bài toán mt ngun mi đích)  
( Single source all destination )  
* Cho đồ thcó hướng G(V,E), mt hàm trng sw(e)  
cho các cung e ca G và mt đỉnh ngun v0 .  
Bài toán đặt ra là: Xác định đường đi ngn nht tv0  
đến mi đỉnh còn li ca G ( độ dài đường đi là tng  
các trng strên các cung đường đi đó và các trng  
số đều dương )  
* Gi S là tp các đỉnh kcv0 mà đường đi ngn nht  
xác lp.  
Đối vi 1 đỉnh w Î S, gi Dist(w) là độ dài ca đường  
đi ngn nht tv0 qua các đỉnh trong S và kết thúc ở  
w thì scó mt snhn xét sau:  
1. Nếu đường đi ngn nht ti w thì đường đi đó bt  
đầu tv0 kết thúc w và chỉ đi qua nhng đỉnh thuc  
S.  
2. Đích ca đường đi sinh ra tiếp theo phi là mt đỉnh  
w nào đó Ï S mà có Dist(w) ngn nht so vi mi đỉnh  
Ï S .  
3. Nếu đã chn được mt đỉnh w như trong nhn xét 2  
trên và sinh ra mt đường đi ngn nht tv0 đến w  
thì w strthành 1 phn tca S.  
* Dưa trên các quan đim như các nhn xét nêu trên Diskstra đưa ra gii thut  
tìm đường đi ngn nht như sau:  
- Githiết n đỉnh ca G được đánh st1 ti n.  
- Tp S được thhin bng véc tơ bít: S[i] = 0 nếu đỉnh i Ï S  
S[i] = 1 nếu đỉnh i Î S  
- Độ dài trng sbiu din bng ma trn lân cn Cost:  
Cost[i,j] là trng scung (i,j)  
Cost[i,j] = + ¥ nếu cung (i,j) không có.  
Cost[i,j] = 0 nếu i=j  
Ví dtrên thì ma trn lân cân Cost như sau:  
v0  
v00  
v1  
50  
0
v2  
10  
15  
0
v3  
+ ¥  
+ ¥  
15  
0
v4  
45  
10  
+ ¥  
35  
0
v5  
+ ¥  
+ ¥  
+ ¥  
+ ¥  
+ ¥  
0
v1+ ¥  
v220  
v3+ ¥  
v4+ ¥  
v5+ ¥  
+ ¥  
20  
+ ¥  
+ ¥  
+ ¥  
+ ¥  
+ ¥  
30  
3
+ ¥  
* Gii thut:  
Procedure Shortest_Path(v,Cost,Dist,n)  
{ Dist(j) 1<= j <=n là độ dài đường đi ngn nht tv đến j trong đồ thcó  
hướng G có n đỉnh, Dist(v)=0. G được biu din bi ma trn lân cn Cost có  
kích thước n x n. }  
1. For i:=1 To n Do Begin  
S[i]:=0; Dist[i]:= Cost[v,i];  
End;  
2. S[v]:=1; Dist[v]:=0; k:=1; { đưa v vào S }  
3. While k<n { xác định n-1 đường đi từ đỉnh v }  
4. Begin  
Chn u sao cho Dist[u]= min(Dist[i])) vi S[i]=0;  
5. S[u]:=1; k:=k+1; { đưa u vào S}  
6. For mi w vi S[w]=0 Do  
7. Dist[w]:= min(Dist[w], Dist[u]+Cost[u,w]) { tính li khong cách theo  
đường đi ngn nht }  
End;  
8. Return  
Bài tp  
1. Nêu khái nim đồ th, đồ thvô hướng, đồ thcó hướng, đường  
đi, cây khung, cây khung vi gía trcc tiu.  
2. Cho đồ thsau đây.  
a- Hãy biu din đồ thbng ma trn lân cn, bng danh sách  
lân cn  
b- Duyt đồ ththeo chiu sâu, duyt đồ ththeo chiu rng.  
c- Tìm cây khung theo chiu sâu, cây khung theo chiu rng.  
d-Tìm cây khung vi giá trcc tiu.  
e- Viết chương trình trong Pascal tìm cây khung vi giá trcc  
tiu.  
pdf 17 trang yennguyen 08/04/2022 8940
Bạn đang xem tài liệu "Bài giảng Cấu trúc dữ liệu và giải thuật - Chương 5: Đồ thị - Ngô Công Thắng", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfbai_giang_cau_truc_du_lieu_va_giai_thuat_chuong_5_do_thi_ngo.pdf