Cho G = (V,E) là đồ thị có tập các đỉnh V và tập các cạnh E. v là một đỉnh trong V va u là đỉnh kề của v, sao cho u cũng thuộc V. Khi đó ta dán nhãn cho tất cả các đỉnh của đồ thị là 0. Chọn một đỉnh v thuộc tập V để bắt đầu duyệt. Gán nhãn đỉnh v này la 1v đã được duyệt. Chọn đỉnh u trong tập V kề với đỉnh v mà nhãn là 0. Duyệt qua đỉnh u và gán nhãn u là 1. Tiếp tục quá trình duyệt đến khi tất cả các đỉnh đồ thị có nhãn là 1.
Trang 15.2 Tìm kiếm trên đồ thị 5.3 Cây bao trùm ngắn nhất 5.4 Sắp xếp tôpô
Trang 35.2 Tìm kiếm trên đồ thị
Tìm kiếm ưu tiên chiều sâu
Tìm kiếm ưu tiên chiều rộng
3 giá trị : WHITE, GRAY, BLACK Lúc đầu,
Color(u)=WHITE nghĩa là chưa được xét, với những đỉnh u bắt đầu xét, Color(u)=GRAY,
khi u đã xét xong Color(u)=BLACK
Trang 4Nội dung bài toán tìm kiếm
Cho đồ thị G=(V,E) và một đỉnh s Xuất phát
từ đỉnh s, hãy duyệt qua tất cả các đỉnh của
đồ thị
Kí hiệu:
V(G)=tập các đỉnh của G, E(G)=tập các cạnh của G.
Hàm Color(u) chỉ trạng thái các đỉnh trong quá trình tìm kiếm Color(u) nhận một trong
3 giá trị : WHITE, GRAY, BLACK Lúc đầu,
Color(u)=WHITE nghĩa là chưa được xét, với những đỉnh u bắt đầu xét, Color(u)=GRAY, khi
u đã xét xong Color(u)=BLACK
Trang 55 then DFS-Visit (u)
Procedure DFS-Visit (u)
Trang 6 Hàm Push(v,Stack) đặt phần tử v vào đỉnh ngăn xếp Stack
Hàm Pop(Stack) lấy phần tử đửng ở đỉnh ngăn xếp ra
khỏi ngăn xếp
Trang 7Đỉnh trắng Đỉnh
đen
A A B,C,D,E B,C,D,E,F A,B B C C,D,E,F A,B,C C E,F D,E,F
Trang 8F
C B
E
F
C B
E
F
Trang 9F
C B
E
F
Trang 106. For each v ∈ Adj(u)
7. if color(v)= WHITE then
8. color(v):=GRAY; Prev(v):= u;
9. ENQUEUE(Q,v);/*đặt v vào cuối hàng đợi*/
10. DeQueue(Q,u);/* Gỡ u khỏi hàng đợi */
11. Color(u):= BLACK;
Trang 12F
C B
E
F
C B
E
F
Q=Rỗng
Trang 14chưa tính xong L(u);
Trang 15Với mọi v ∈ Adj(u) {tính lại L(v)}
nếu L(v)> L(u)+W(u,v) thì đặt lại
L(v):= L(u)+W(u,v) ; Pre(v):=u;
Quay lại 2.1
Trang 16Giả mã giải thuật DIJSKTRA
Giả mã- Khởi tạo
Trang 18Ví dụ: Dùng giải thuật DIJSKTRA
Tìm đường đi ngắn nhất từ A tới tất cả
9 4 5
8
3 9
Trang 19D E
9 4 5
8
3 9
Trang 206.3 Tìm cây bao trùm nhỏ nhất
Giải thuật Prim
Giải thuật Kruskal
Trang 21Giải thuật Prim
Mô tả bằng ngôn ngữ tự nhiên
/*Khởi tạo: mọi đỉnh chưa xét*/
Trang 226 for each v in Adj(u) do
7 if v ∈Q and Key(v) < w(u,v) then
8 Key(v):= w(u,v); Pre(v):=u;
Trang 239 12 9
8
11 9
Bổ sung loại bỏ
đỉnh
AAB,AC,AD,AF AB B
Trang 249 12
9
8
11 9
B
A
C D
9 12 9
8
11 9
B
A
C D
9 12 9
8
11 9
B
A
C D
9 12 9
8
11 9
B
A
C D
9 12 9
8
11 9
B
A
C D
9 12
9
8
11 9
Trang 25Đặc trưng của giải thuật PRIM
Trong quá trình xây dựng , T luôn là một cây con của G Khi T chứa tất cả các
đỉnh của G, T trở thành cây bao trùm của G
Trang 26Giải thuật KRUSKAL
Mô tả bằng ngôn ngữ tự nhiên
Trang 27Giả mã giải thuật KRUSKAL
Procedure KRUSCAL
2. For each u in V(G) do Make-Set(u);
3. Sắp xếp các cạnh của E(G) theo trong số
không giảm w;
4. For each (u,v) in E(G)
5. if Find-Set(u)<> Find-Set(v) then
Trang 28AD(4) {A,B},{D},{C},{E},{F}, {G} AD FG(4) {A,B,D}, {C},{E},{F},{G} FG BD(5) {A,B,D}, {C},{E},{F,G} CF(6) {A,B,D}, {C},{E},{F,G} CF AF(6) {A,B,D}, {E},{C,F,G} AF AC(7) {A,B,D,C,F,G}, {E} DG(8) {A,B,D,C,F,G}, {E} EG(8) {A,B,D,C,F,G}, {E} EG DC(9) {A,B,D,C,F,G,E} BE(9) {A,B,D,C,F,G,E}
B
A
C D
4 5
9
8 8
Trang 29Giải thuật KRUSKAL: Ví dụ
Trong quá trình xây dựng T luôn không có chu trình nên là một rừng
B
A
C D
4
6 9
4 5
9
8 8
Trang 30Khi nào một cạnh (u,v) tạo thành một chu trình với các cạnh đã có trong T
?
Khi hai đầu mút u, v thuộc cùng một cây
của T
Trang 316.4 Sắp xếp tô pô
Bài toán: Cho một đồ thị có hướng, hãy xếp các đỉnh trên một đường thẳng sao cho các cạnh luôn hướng từ trái sang phải
B
A
C
F E
D
B
Trang 32Giải thuật sắp xếp tôpô
Ngôn ngữ tự nhiên mô tả thuật toán tìm
sắp xếp tôpô của G=(V,E) như sau:
1 Nếu mọi đỉnh của G đều có bậc vào >0 thì
G không có sắp xếp tôpô.
2 Nếu v ∈ V(G) có bậc vào bằng 0 (không có
cạnh đi vào) thì nó đặt nó ở đầu danh
sách, xóa v và các cạnh xuất phát từ v khỏi G được G’ Tiếp tục làm như trên
với G’
Trang 33B
F
C E
C
F
F
Trang 34Tìm cây bao trùm theo chiều sâu
xong:
trong T thì bổ xung cạnh (v,u) và đỉnh u
vào T; thay v bằng u để tiếp tục xét đỉnh
u như với v;
nằm trong T thì đỉnh v đã được xét xong và quay lại xét đỉnh đứng trước v trong quá
trình tìm kiếm
Trang 35
F Không còn,quay lại C
C Không còn, quay lại D
E
F
G
Trang 36F
G
Trang 37Hết chương