Một số khái niệm cơ bản trên đồ thị 3.. Biểu diễn đồ thị trong máy tính 4.. Một số bài toán ứng dụng đồ thị... G là đồ thị có trọng số nếu các cạnh/cung của nó giá trị... MỘT SỐ KHÁI
Trang 1Chương 4
MÔ HÌNH DỮ LIỆU ĐỒ THỊ
Trang 2MỤC TIÊU
Trang 3NỘI DUNG CHÍNH
1 Định nghĩa đồ thị
2 Một số khái niệm cơ bản trên đồ thị
3 Biểu diễn đồ thị trong máy tính
4 Cách duyệt (thăm) đồ thị
5 Một số bài toán ứng dụng đồ thị
Trang 41 ĐỊNH NGHĨA ĐỒ THỊ
- Đồ thị là một cấu trúc rời rạc, ký hiệu G = <V, E>
V là tập các đỉnh ( vertices) , mỗi đỉnh tương đương 1 phần tử
dữ liệu
E là tập các cạnh/cung (Edges) - tập các cặp (u,v) mà u,v là
hai đỉnh thuộc V Biểu diễn mối quan hệ giữa các phần tử
4
3
4
3
5
Ví dụ:
G 1 =<V 1 , E 1 >
V 1 ={1, 2, 3, 4}
E 1 ={Tập cung}
={1 2, 1 3, 2 4, 3 2, 4 3}
G 2 = <V 2 , E 2 >
V 2 = {1, 2, 3, 4,5}
E 2 = {Tập cạnh}
={1 2, 1 3, 2 3, 2 4, 2 5, 3 4, 4 5}
Trang 5PHÂN LOẠI ĐỒ THỊ
Dựa vào đặc tính của tập E, ta có:
G là đơn đồ thị nếu giữa hai đỉnh u và v bất kì có nhiều nhất
một cạnh
G là đa đồ thị nếu giữa hai đỉnh u và v bất kì có thể có nhiều
hơn một cạnh
G là đồ thị vô hướng nếu E gồm các cặp (u,v)=(v,u), gọi là
các cạnh
G là đồ thị có hướng nếu E gồm các cặp (u,v)<>(v,u), gọi là
các cung
G là đồ thị có trọng số nếu các cạnh/cung của nó giá trị
Trang 6Một số ví dụ
– Hình 1: Đơn đồ thị, vô hướng
– Hình 2: Đơn đồ thị, có hướng
– Hình 3: Đa đồ thị, vô hướng
– Hình 4: Đa đồ thị, có hướng
Hình 1 Hình 2
Hình 3 Hình 4
Trang 72 MỘT SỐ KHÁI NIỆM CƠ BẢN TRÊN ĐỒ THỊ
a) Cạnh liên thuộc, đỉnh kề, bậc
Nếu e=(u,v) là 1 cạnh E thì ta nói u,v kề nhau (adjacent)
và e là liên thuộc với u và v
Nếu e = (u,v) là một cung thì ta nói u nối tới v và v nối từ u Cung e đi ra khỏi đỉnh u ( đỉnh đầu) và đi vào đỉnh v ( đỉnh cuối), ta cũng nói u kề v
Bậc (degree) của v ( deg(v)) là số cạnh liên thuộc với v
1
4
1
4
Trang 8b) Đường đi và chu trình
Một đường đi P=(v1…vp) mà cạnh (vi-1vi) E với i=2…p
P gọi là đường đi đơn nếu tất cả các đỉnh trên đường đi không trùng nhau
Đường đi con của P là một đoạn liên tục dọc theo P
P gọi là chu trình nếu v1=vp
Một đồ thị là liên thông nếu với mọi cặp đỉnh (u,v) đều có đường đi từ u đến v
2 MỘT SỐ KHÁI NIỆM CƠ BẢN TRÊN ĐỒ THỊ
Trang 93 BIỂU DIỄN ĐỒ THỊ TRONG MÁY TÍNH
a) Ma trận kề
b) Danh sách kề
Trang 10a) Ma trận kề
• Đánh số thứ tự các đỉnh của đồ thị từ 1 đến n
• Biểu diễn đồ thị bằng một ma trận vuông cấp n gọi là
ma trận kề:
a[i,j]=1 nếu i kề j (tức (i,j) là cạnh/cung thuộc E
a[i,j]=0 nếu i không kề j (tức (i,j) là cạnh/cung không thuộc E.)
* Ví dụ:
5
4
3
2
1
1
2
5
0 0 1 1 0
0 0 0 1 1
1 0 0 0 1
1 1 0 0 0
0 1 1 0 0
A =
1
2
5
0 0 1 0 0
0 0 0 1 0
0 0 0 0 1
1 0 0 0 0
0 1 0 0 0
A =
5
4
3
2
1
5
4
3
2
1
5
4
3
2
1
Trang 11Nhận xét
- G là đồ thị vô hướng thì ma trận kề là đối xứng (a[i,j]=a[j,i])
Trực quan, dễ cài đặt
Kích thước luôn là N2 dẫn đến lãng phí đặc biệt lãng phí với
ma trận thưa nhiều đỉnh, ít cạnh/cung
G là đồ thị có trọng số, thay giá trị 1 của ma trận kề bởi giá trị trọng số tương ứng => gọi là ma trận trọng số
Trang 12b) Danh sách kề
- Với mỗi đỉnh u V ta cho tương ứng một danh sách các đỉnh kề với u
- Ví dụ:
1
2
3
4
5
2
1
3
4
5
3 2
4
5
Trang 134 Các phép duyệt đồ thị
Duyệt đồ thị? Mỗi đỉnh chỉ được thăm duy nhất 1 lần
Các phương pháp duyệt đồ thị
loang
Trang 14a) Duyệt theo chiều rộng chiều rộng
(BFS - Breath first search)
Giả sử u là đỉnh xuất phát Nguyên tắc duyệt:
thăm kề với các đỉnh này và tiếp tục lặp lại với các đỉnh mới
Tên gọi khác: Duyệt theo vết dầu loang
2
1
3 4
8
9
Giả sử đỉnh u đỉnh 1,
=> Kết quả duyệt BFS là:
1 2 3 4 5 6 7 8
Ví dụ: Xét đồ thị như hình bên
Trang 15b) Duyệt theo chiều sâu (DFS - Depth first search)
Giả sử u là đỉnh xuất phát
=> Nguyên tắc duyệt như sau:
Thăm u, rồi thăm đến các đỉnh u1, u2,
…., uk kề u với điều kiện khi thăm đến
đỉnh ui (i = 1 k) thì một phép duyệt theo
chiều sâu xuất phát từ ui lại được thực
hiện
Khi thăm đến đỉnh v mà mọi đỉnh kề v
đều đã được thăm thì quay lui đến đỉnh
v’ còn có đỉnh w chưa được thăm, một
phép duyệt theo chiều sâu xuất phát từ w
lại được thực hiện
Phép duyệt kết thúc khi mọi đỉnh liên
thông với u đều được thăm
Ví dụ: Xét đồ thị như hình
2
1
3 4
8
9
Giả sử đỉnh u đỉnh 1,
=> Kết quả duyệt là:
1 2 5 8 6 3 7 4
Trang 165 Bài toán cây khung
Định nghĩa:
Cho đồ thị G=<V,E> là đồ thị vô hướng; cây T=<V,F> trong đó F là tập con của E,
T được gọi là cây khung của G nếu T liên thông và phi
chu trình
Nếu G là đồ thị vô hướng có trọng số: Giá của cây khung
là tổng trọng số của các cạnh trong nó
Trang 17Ví dụ
Nhận xét:
G là đồ thị vô hướng liên thông có thể có nhiều cây khung Nếu
G là đồ thị trọng số => tìm cây khung nhỏ nhất có ý nghĩa thực tiễn? Tìm như thế nào?