Hacker
Bạn có muốn phản ứng với tin nhắn này? Vui lòng đăng ký diễn đàn trong một vài cú nhấp chuột hoặc đăng nhập để tiếp tục.


Forum Hacker Viet Nam
 
Trang ChínhLatest imagesTìm kiếmĐăng kýĐăng Nhập

 

 Khái niệm Cây bao trùm

Go down 
Tác giảThông điệp
hackervn1992

hackervn1992


Tổng số bài gửi : 200
Join date : 22/10/2010

Khái niệm Cây bao trùm Empty
Bài gửiTiêu đề: Khái niệm Cây bao trùm   Khái niệm Cây bao trùm EmptySat Oct 23, 2010 5:48 pm

 Cho đồ thị G =(X,U). Giả sử G’ là đồ thị bộ phận của G. Nếu G’ =(X,U’) là một cây thì G’ gọi là cây bao trùm của đồ thị G.



Cây bao trùm ngắn nhất
-Cho đồ thị G =(X,U). Mỗi cạnh (x,y) thuộc U có trọng số c(u,v) >= 0
-G’ = (X,U’) là cây bao trùm của G
-Độ dài của cây G’ đýợc xem là tổng trọng số của các cạnh tạo thành G’
-Tìm G’ của G sao cho G’ có độ dài ngắn nhất

Thuật toán Prim
Cho G =(X,U) là đồ thi mà mỗi cạnh u thuộc U có trong số l(u)>=0
-Xác định cạnh có trọng số bé nhất trong tất cả các cạnh trong U. Giả sử là u1
-Giả sử u2 là cạnh có trọng số bé nhất trong các cạnh U \ {u1}
-Giả sử u3 là cạnh có trọng số bé nhất trong các cạnh U \{u1,u2}. Với điều kiện {u1,u2,u3} không tạo thành chu trình
– Giả sử býớc k ta đã xác định đýợc {u1,u2,u3,…,uk} có trọng số bé nhất và không tạo thành chu trình
– Thực hiện býớc n-1 thì dừng lại. Khi đó ta có {u1,u2,u3,…,un-1} không tạo thành chu trình và có trọng số bé nhất.
– Khi đó ta có G’ =(X,Un-1) là cây bao trùm bé nhất của G cần tìm

Thuật toán Prim (tiếp…)
– Cho đồ thị G = (X,U)
– Gọi X’ là tập các đỉnh kề các cạnh trong G’
– Ban đầu X chứa một đỉnh tuỳ ý trong G giả sử x, tập các cạnh G’ rỗng
– Ở mỗi býớc ta chọn cạnh (x,y) ngắn nhất sao cho x X’ và y  X-X’. Thêm y vào X’ và thêm (x,y) vào G’
– Ti ếp t ục phát tri ển G’ cho đ ến khi X’ =X. Khi đó G’ tr ở thành cây bao trùm ng ắn nh ất c ủa G
Thuật toán Prim (tiếp…)
- X ={x} (x: đỉnh tuỳ ý thuộc X)
- G =
- Th ực hi ện các bý ớc sau cho đ ến khi X’=X
- Ch ọn c ạnh (x,y) có tr ọng s ố nh ỏ nh ất v ới x  X’, y  X-X’
- X’ = X’  {x}
- G’ =G’  {(x,y) }





















3. Đýờng đi ngắn nhất
- Tìm đýờng đi ngắn nhất từ một đỉnh nguồn tới các đỉnh các đỉnh còn lại của đồ thị
- Tìm đýờng đi ngắn nhất giữa một cặp đỉnh của đồ thị

3. Đýờng đi ngắn nhất từ một đỉnh nguồn - Thuật toán Dijkstra
- Bài toán:
- Cho đồ thị G =(X,U) đõn liên thông có trọng số
- Tìm đýờng đi ngắn nhất từ đỉnh nguồn X đ ến t ất c ả các đ ỉnh còn l ại.
- Các đ ỉnh x đý ợc đánh s ố 1 t ới n
- Đ ồ th ị đý ợc bi ểu di ễn b ởi ma tr ận k ề C[1..n,1..n], trong đó C[i,j] là đ ộ dài cung (i,j) n ếu không có cung (i,j) thì C[i,j] = 



3.

- Gán trọng số các đỉnh
- Trọng số của đỉnh xuất phát là t(a) = 0
- Tại các đỉnh còn lại ta ghi một trọng số dýõng t đủ lớn sao cho giá trị t này lớn hõn trọng số của các đỉnh từ a tới.
- Thực hiện việc giảm trọng số các đỉnh
- Giả sử tại đỉnh x có trọng số t(x)
- Nếu tồn tại đỉnh y có trọng số t(y) từ y đến x mà t(x) > t(y) + l(y,x) thì ta thay trọng số t(x) bởi trọng số t’(x) = t(y) + l(y,x)
- Trong trường hợp t(x) < t(y) + l(y,x) ta giữ nguyên giá trị t(x)
- Quá trình này lặp lại cho đến khi trọng số của tất cả trong G=(X,U) đạt giá trị cực tiểu nghĩa là với mọi x thuộc X không tồn tại y thuộc X kề với x mà t(y) + l(y,x) < t(x)

1. Ta xác định đường đi ngắn nhất từ đỉnh nguồn tới các đỉnh còn lại qua các bước, mỗi bước ta xác định đường đi ngắn nhất từ đỉnh nguồn tới một đỉnh trong đồ thị
2. Lưu các đỉnh mà đường đi ngắn nhất tới chúng đã được xác định vào tập S
3. Ban đầu tập S chỉ chứa đỉnh nguồn
4. Ta gọi các đường đi từ đỉnh nguồn tới các đỉnh u khác nhưng chỉ đi qua các đỉnh nằm trong S là đường đi đặc biệt
5. Dùng mảng D[2..n], trong đó D[u] lưu độ dài đường đi đặc biệt ngắn nhất từ đỉnh nguồn tới u
6. Ban đầu S chứa đỉnh 1 (đỉnh nguồn), ta xác định D[u] = C[1,u] (u =2,…n)
7. Tại mỗi bước ta sẽ chọn một đỉnh x Î X-S mà D[x] là nhỏ nhất và thêm x vào S
8. Sau khi thêm x vào S, ta xác định lại các D[y] với y Ï S. Nếu độ dài đường đi đặc biệt qua đỉnh x (vừa được chọn) tới y mà nhỏ hơn D[y] thì ta lấy D[y] làm độ dài đường đi đó
9. Khi S = X thì D[u] sẽ lưu độ dài đường đi ngắn nhất từ 1 tới u với u =2…n
10. Để lưu vết của đường đi ta sử dụng mảng P[2..n], trong đó P[y] =x nếu ta đi tới y theo cung (x,y)

3. Thuật toán Dijkstra (tiếp…)

• Disjktra;
1. S = {1};
2. For i = 2 to n do
1. D[i] = C[1,i];
2. P[i]=1;
3. While X-S ¹ Æ do
1. Chọn x Î X- S mà D[x] nhỏ nhất;
2. S =S È {x}
4. For y Î X- S do
1. If D[x] +C[x,y] < D[y] then
1. D[y] = D[x] +C[x,y];
2. P[y]=x;


Về Đầu Trang Go down
 
Khái niệm Cây bao trùm
Về Đầu Trang 
Trang 1 trong tổng số 1 trang
 Similar topics
-
» Khái niệm về Bandwidth
» Các khái niệm cơ bản về Internet :
» ASP: Các nguyên tắc bảo mật khi triển khai các ứng dụng Web :
» Khai thác lỗi tràn heap trên Microsoft Exchange 2000
» Hack Php-Nuke, Khai thác lỗi trong modules Members List:

Permissions in this forum:Bạn không có quyền trả lời bài viết
Hacker :: Security :: Hacker and Security-
Chuyển đến