file đính kèm

Download Report

Transcript file đính kèm

ĐỒ THỊ
I. Định nghĩa - Các khái niệm
Đồ thị G (Graph) là một tập hữu hạn gồm V đỉnh
(Vertices) hay nút và một tập hữu hạn E cung
(Edges) nối các cặp đỉnh. Ký hiệu G(V,E)
Nếu (v1, v2) là cặp đỉnh thuộc E thì có một cung nối
v1 và v2.
I. Định nghĩa - Các khái niệm
1. Đồ thị định hướng hướng (directed graph)
với đồ thị G(V,E) nếu có cung nối từ v1 đến v2 và
cung khác nối từ v2 đến v1 thì G là đồ thị định hướng,
cung (v1, v2) là cung định hướng từ v1 đến v2.
1
2
3
4
I. Định nghĩa - Các khái niệm
2. Đồ thị không định hướng (undirected graph)
đồ thị G(V,E) trong đó nếu thứ tự các nút không được
coi trọng thì gọi là đồ thị không định hướng.
1
2
3
4
5
I. Định nghĩa - Các khái niệm
3. Lân cận (adjacent)
(v1, v2) là một cung trong E (tập các cung của đồ thị)
thì v1 và v2 được gọi là lân cận của nhau.
4. Đường đi (path):
một dãy các đỉnh vp, vi1, vi2, …, vin, vq mà (vp, vi1), (
vi1, vi2),…,( vin, vq) là các cung thuộc E được gọi là
một đường đi. Số lượng các cung trên đường đi ấy
được gọi là độ dài của đường đi.
I. Định nghĩa - Các khái niệm
5. Đường đi đơn
Là đường đi mà mọi đỉnh trên đó trừ đỉnh đầu và đỉnh
cuối đều khác nhau.
6. Chu trình
Là một đường đi đơn mà đỉnh đầu và đỉnh cuối trùng
nhau.
I. Định nghĩa - Các khái niệm
7. Tính liên thông
Trong đồ thị G, hai đỉnh vi và vj được gọi là liên thông
nếu có một đường đi từ vi đến vj.
8. Đồ thị liên thông
Một đồ thị G là liên thông nếu đối với mọi cặp đỉnh phân
biệt vi, vj trong V đều có đường đi từ vi đến vj.
II. Biểu diễn đồ thị
1. Biểu diễn bằng ma trận lân cận
Xét đồ thị G(V,E) có n đỉnh (n>=1) , các đỉnh được đánh số thứ tự theo quy
định nào đó. Có thể dùng ma trận vuông A kích thước n x n để biểu diễn đồ thị
G.
Các phần tử của ma trận A có giá trị 0 hoặc 1.
Nếu:
Aij = 1 tức là có cung (vi, vj);
Aij = 0 không tồn tại cung (vi, vj)12345
Ví dụ
1
Đồ thị hình bên được biểu diễn bằng ma trận sau:
0
1
1
0
0
1
0
0
1
1
1
0
0
0
1
0
1
0
0
0
0
1
1
0
2
3
4
5
0
Đối với đồ thị có trọng số thì ma trận lân cận có thể lập bằng cách thay giá trị 1
bởi trọng số tương ứng.
II. Biểu diễn đồ thị
2. Biểu diễn bằng danh sách lân cận
Trong cách biểu diễn này, n hàng của ma trận được thay đổi bởi n danh sách
móc nối.
Mỗi đỉnh của G có một danh sách tương ứng, các nút trong danh sách i biểu
diễn các đỉnh lân cận với nút i. Mỗi nút có hai trường Index và Link. Trường
Index là chỉ số (số thứ tự) của các đỉnh lân cận, trường Link là con trỏ trỏ tới
nút kế tiếp trong danh sách.
Với đồ thị ở hình trên có thể biểu diễn như sau:
2
3
v2
1
4
v3
1
5
v4
2
v5
2
v1
3
5
III. Phép duyệt đồ thị
1. Tìm kiếm theo chiều sâu (Breadth First Search)
Tìm kiếm theo chiều sâu đối với đồ thị không định hướng được thực
hiện như sau:
B1: Xuất phát từ đỉnh v
B2: Thăm đỉnh v
B3: Quay lại B2 với mỗi đỉnh w lân cận của v chưa được thăm
1
Procedure DFS(v) 1 2 3 4 5 6 7 8
Begin
Thăm v;
For mỗi đỉnh w lân cận của v do
If w chưa thăm then DFS(w);
End;
2
4
3
5
6
7
8
Với phép tìm kiếm theo chiều sâu thì thứ tự các đỉnh của đồ thị hình bên được
đưa ra: 1, 2, 4, 8, 5, 6, 3, 7
III. Phép duyệt đồ thị
2. Tìm kiếm theo chiều rộng (BFS)
Xuất phát từ đỉnh v
Thăm v
Lần lượt thăm các đỉnh w lân cận của v kế tiếp nhau chưa được thăm
rồi mới đến các đỉnh lân cận của các đỉnh này.
1
Procedure BFS(v)
Begin
2
3
Thăm v;
PUT(v);
4
5
6
7
while Q chưa rỗng do
begin
GET(v);
8
For mỗi đỉnh w lân cận của v do
If w chưa thăm then
Trong phép tìm kiếm theo chiều rộng cần sử dụng một
Begin
Queue với 2 thao tác cơ bản:
PUT(w);
PUT(v) : thủ tục đưa đỉnh v vào queue;
Thăm w;
GET(v) : thủ tục lấy một đỉnh trong queue ra gán cho v.
End;
Với phép tìm kiếm theo chiều rộng thì thứ tự các đỉnh
End;
trên đồ thị hình trên được đưa ra như sau: 1, 2, 3, 4, 5,
End;
6, 7, 8