CH ƯƠ NG 5: Đ TH Ồ Ị
Nguy n Văn LinhễKhoa CNTT-TT
Đ i h c C n Thạ ọ ầ ơnvlinh@cit.ctu.edu.vn
Trang 3CÁC KHÁI NI M (1) Ệ
• M t đ th G bao g m m t t p h p V các đ nh và m t t p ộ ồ ị ồ ộ ậ ợ ỉ ộ ậ
h p E các c nh, ký hi u G=(V,E) ợ ạ ệ
• Các đ nh còn đ ỉ ượ c g i là nút (node) hay đi m (point) Các ọ ể
c nh n i gi a hai đ nh, hai đ nh này có th trùng nhau ạ ố ữ ỉ ỉ ể
• Hai đ nh có c nh n i nhau g i là hai đ nh k (adjacency) ỉ ạ ố ọ ỉ ề
M t c nh n i gi a hai đ nh v, w có th coi nh là m t c p ộ ạ ố ữ ỉ ể ư ộ ặ
đi m (v,w) ể
• N u c p này có th t thì ta có c nh có th t , ng ế ặ ứ ự ạ ứ ự ượ ạ c l i thì c nh không có th t ạ ứ ự
Trang 4• Đ nh v1 còn g i là đ nh đ u, vn g i là đ nh cu i ỉ ọ ỉ ầ ọ ỉ ố
Đ dài c a độ ủ ường đi này b ng s đ nh tr 1 ằ ố ỉ ừ
• Trường h p đ c bi t dãy ch có m t đ nh v thì ta ợ ặ ệ ỉ ộ ỉcoi đó là đường đi t v đ n chính nó có đ dài ừ ế ộ
b ng không.ằ
Trang 5CÁC KHÁI NI M (3) Ệ
Trang 6BI U DI N Đ TH Ể Ễ Ồ Ị
• Bi u di n đ th b ng ma tr n k ể ễ ồ ị ằ ậ ề
k ề
Trang 8BI U DI N B NG MA TR N K (2) Ể Ễ Ằ Ậ Ề
0
3 2
Trang 10MA TR N TR NG S (1) Ậ Ọ Ố
0
3 2
10
30
50
10 100
Trang 1130
50
10 100
Trang 14CÁC PHÉP DUY T TRÊN Đ TH Ệ Ồ Ị
Trang 15Nguy n Văn Linh ễ
DUY T THEO CHI U SÂU (1) Ệ Ề
Trang 16DUY T THEO CHI U SÂU (2) Ệ Ề
}
Trang 17DUY T THEO CHI U SÂU (3) Ệ Ề
• Kh i đ u t i A, đánh d u A, duy t ở ầ ạ ấ ệG,
Trang 18DUY T THEO CHI U R NG (1) Ệ Ề Ộ
• Gi s ta có đ th G v i các đ nh ban đ u đả ử ồ ị ớ ỉ ầ ược đánh d u là ch a duy t (unvisited) ấ ư ệ
• T m t đ nh v nào đó ta b t đ u duy t nh sau: ừ ộ ỉ ắ ầ ệ ư
đánh d u v đã đấ ược duy t, k đ n là duy t t t c ệ ế ế ệ ấ ảcác đ nh k v i v ỉ ề ớ
Trang 19DUY T THEO CHI U R NG (2) Ệ Ề Ộ
Trang 20DUY T THEO CHI U R NG (3) Ệ Ề Ộ
} }
}
Trang 21DUY T THEO CHI U R NG (4) Ệ Ề Ộ
• Kh i đ u t A, đánh d u A, đ a A vào ở ầ ừ ấ ư hàng.
Trang 22CÁC BÀI TOÁN TRÊN Đ TH Ồ Ị
• Tìm đu ng đi ng n nh t t m t đ nh c a đ ờ ắ ấ ừ ộ ỉ ủ ồ
Trang 24TÌM Đ ƯỜ NG ĐI NG N NH T T Ắ Ấ Ừ
• Xác đ nh m t t p h p S ch a các đ nh mà kho ng ị ộ ậ ợ ứ ỉ ảcách ng n nh t t nó đ n đ nh ngu n v đã bi t ắ ấ ừ ế ỉ ồ ế
• Kh i đ u S={v}, sau đó t i m i bở ầ ạ ỗ ước ta s thêm ẽvào S các đ nh mà kho ng cách t nó đ n v là ỉ ả ừ ế
ng n nh t ắ ấ
• V i gi thi t m i c nh có m t kho ng cách không ớ ả ế ỗ ạ ộ ả
âm thì ta luôn luôn tìm được m t độ ường đi ng n ắ
nh t nh v y mà ch đi qua các đ nh đã t n t i ấ ư ậ ỉ ỉ ồ ạ
trong S
Trang 2530
50
10 100
Trang 26• T i m i b ạ ỗ ướ ủ c c a gi i thu t thì D[i] s đ ả ậ ẽ ượ ậ c c p nh t l i ậ ạ
đ l u đ dài đ ể ư ộ ườ ng đi ng n nh t t đ nh v t i đ nh i, ắ ấ ừ ỉ ớ ỉ
đ ườ ng đi này ch đi qua các đ nh đã có trong S ỉ ỉ
• Đ cài đ t gi i thu t d dàng, ta gi s các đ nh c a đ th ể ặ ả ậ ễ ả ử ỉ ủ ồ ị
đ ượ c đánh s t 1 đ n n, t c là V={1, ,n} và đ nh ngu n ố ừ ế ứ ỉ ồ
Trang 27TÌM Đ ƯỜ NG ĐI NG N NH T T Ắ Ấ Ừ
void Dijkstra () {
S=[0]; //S ch ch a m t đ nh ngu n ỉ ứ ộ ỉ ồ
for (i=1; i<n; i++)
D[i]:=C[0,i]; //kh i đ u các giá tr cho D ở ầ ị for (i=1; i<n; i++) {
L y đ nh w trong V-S sao cho D[w] nh nh t; ấ ỉ ỏ ấ Thêm w vào S;
for (m i đ nh u thu c V-S) do ỗ ỉ ộ
D[u] := min(D[u], D[w] + C[w,u]);
}
}
Trang 29TÌM Đ ƯỜ NG ĐI NG N NH T T Ắ Ấ Ừ
void Dijkstra () {
S=[0]; //S ch ch a m t đ nh ngu n ỉ ứ ộ ỉ ồ
for (i=1; i<n; i++) {
D[i]=C[0,i]; //kh i đ u các giá tr cho D ở ầ ị P[i] = 0; }
for (i=1; i<n; i++) {
L y đ nh w trong V-S sao cho D[w] nh nh t; ấ ỉ ỏ ấ Thêm w vào S;
}
Trang 30i=3 0 3 0 2
i=4 0 3 0 2
for (i=1; i<n; i++) {
L y đ nh w trong V-S sao cho D[w] nh nh t, Thêm w vào S; ấ ỉ ỏ ấ for (m i đ nh u thu c V-S) do ỗ ỉ ộ
if (D[w] + C[w,u] < D[u]) {
D[u]=D[w] + C[w,u];
P[u]=w; } }
T m ng P, suy ng ừ ả ượ ạ c l i ta s có đ ẽ ườ ng đi ng n nh t Ví d tr ắ ấ ụ ướ c 4 là 2, tr ướ c
2 là 3 và tr ướ c 3 là 0 V y đ ậ ườ ng đi ng n nh t t 0 đ n 4 là 0,3,2,4 v i đ dài ắ ấ ừ ế ớ ộ
Trang 31TÌM CÂY BAO TRÙM T I THI U (1) Ố Ể
• Gi s ta có m t đ th vô hả ử ộ ồ ị ướng G=(V,E)
• Đ th G g i là liên thông n u t n t i đồ ị ọ ế ồ ạ ường đi
gi a các thành ph ữ ố
Trang 32TÌM CÂY BAO TRÙM T I THI U (2) Ố Ể
• Gi s G có n đ nh đả ử ỉ ược đánh s 1 n ố
• Gi i thu t Prim đ gi i bài toán này nh sau: ả ậ ể ả ư
• B t đ u, cho U = {1} và T=ắ ầ ∅
• Sau đó ta l p l i cho đ n khi U=V, t i m i bặ ạ ế ạ ỗ ướ ặc l p
ta ch n c nh nh nh t (u,v) sao cho u ọ ạ ỏ ấ ∈ U và v ∈
V-U N u thêm (u,v) vào T mà không t o thành chu ế ạ
trình thì thêm v vào U và (u,v) vào T
• Khi gi i thu t k t thúc thì (U,T) là m t cây ph t i ả ậ ế ộ ủ ố
ti u.ể
Trang 33TÌM CÂY BAO TRÙM T I THI U (3) Ố Ể
• Kh i đ u cho U={1} và T= ở ầ ∅
• (1,3) nh nh t nên U={1,3} và ỏ ấ T={(1,3)}
• (3,6) nh nh t nên U={1,3,6} và ỏ ấ T={(1,3); (3,6)}
• (6,4) nh nh t nên U={1,3,4,6} và ỏ ấ T={(1,3); (3,6); (6,4)}
• (3,2) nh nh t nên U={1,2,3,4,6} và ỏ ấ T={(1,3); (3,6); (6,4), (3,2)}
• (2,5) nh nh t nên U={1,2,3,4,5,6} ỏ ấ
và T={(1,3); (3,6); (6,4); (3,2); (2,5)}
Trang 34TÌM CÂY BAO TRÙM T I THI U (4) Ố Ể
void Prim(Graph G, Set_of_Edges &T) {
Trang 35TÌM CÂY BAO TRÙM T I THI U (5) Ố Ể
Trang 36TÌM CÂY BAO TRÙM T I THI U (6) Ố Ể
• K ti p c nh (2,3) đ ế ế ạ ượ c xét và đ ượ c
đ a vào T ư
• T={(1,3),(4,6),(2,5),(3,6),(2,3)}
Trang 37• N u hai đ nh i,j không đế ỉ ược n i thì C[i,j]= ố ∞
• Gi i thu t Floyd xác đ nh đả ậ ị ường đi ng n nh t ắ ấ
Trang 39TÌM BAO ĐÓNG CHU N TI P (1) Ể Ế
• C n xác đ nh có hay không có đ ầ ị ườ ng đi n i gi a hai đ nh i,j ố ữ ỉ
b t kỳ ấ
• Gi i thu t Floyd có th đ c bi t hoá đ gi i bài toán này ả ậ ể ặ ệ ể ả
Ma tr n k C có C[i,j]=1n u i,j đ ậ ề ế ượ c n i nhau b i m t ố ở ộ
Trang 40}