Chứng minh tồn tại một dây chuyền nối hai đỉnh đó với nhau. 3.[r]
(1)ĐẠI CƯƠNG VỀ ĐỒ THỊ
ntsonptnk@gmail.com
(2)ĐỊNH NGHĨA
Một đồ thị có hướng G=(X,
U) định nghĩa bởi:
Tập hợp X gọi
tập đỉnh đồ thị;
Tập hợp U tập cạnh đồ thị;
Mỗi cạnh uU liên kết
(3)ĐỊNH NGHĨA
Một đồ thị vô hướng G=(X,
E) định nghĩa bởi:
Tập hợp X gọi
tập đỉnh đồ thị;
Tập hợp E tập cạnh đồ thị;
Mỗi cạnh eE liên kết
(4)ĐỒ THỊ HỮU HẠN
Đồ thị có tập đỉnh tập cạnh hữu hạn
gọi ĐỒ THỊ HỮU HẠN
Học phần làm việc ĐỒ THỊ HỮU
(5)ĐỈNH KỀ
Trên đồ thị có hướng, xét cạnh u liên kết
với cặp đỉnh (i, j):
Cạnh u kề với đỉnh i đỉnh j (hay đỉnh i đỉnh j kề
với cạnh u); viết tắt u=(i, j) Cạnh u khỏi đỉnh i vào đỉnh j
(6)ĐỈNH KỀ
Trên đồ thị vô hướng, xét cạnh e liên kết
với cặp đỉnh (i, j):
Cạnh e kề với đỉnh i đỉnh j (hay đỉnh i đỉnh j kề
với cạnh e); viết tắt e=(i, j)
(7)MỘT SỐ KHÁI NIỆM
Cạnh song song Khuyên
(8)CÁC DẠNG ĐỒ THỊ
Đồ thị RỖNG: tập cạnh tập
rỗng
Đồ thị ĐƠN: khơng có khun
và cạnh song song
Đồ thị ĐỦ: đồ thị vô hướng,
đơn, hai đỉnh có cạnh
Đồ thị đủ N đỉnh ký hiệu KN KN có N(N-1)/2 cạnh
C
(9)CÁC DẠNG ĐỒ THỊ
Đồ thị LƯỠNG PHÂN: đồ thị G=(X, E) gọi đồ thị lưỡng phân tập X chia thành hai tập X1 X2 thỏa:
X1 X2 phân hoạch X;
Cạnh nối X1 X2
Đồ thị LƯỠNG PHÂN ĐỦ: đồ thị lưỡng phân đơn, vô hướng thỏa với (i, j)/iX1 jX2 có
đúng cạnh i j
X1=N X2=M, ký hiệu KM, N
C A
B
D
(10)VÍ DỤ: ĐỒ THỊ ĐỦ
K4 K4
K3, 3 K2, 3
K2 K1, 1
(11)BẬC CỦA ĐỈNH
Xét đồ thị vô hướng G
Bậc đỉnh x đồ thị G số cạnh kề với đỉnh x, khuyên tính hai lần, ký hiệu dG(x) (hay
(12)BẬC CỦA ĐỒ THỊ
Xét đồ thị có hướng G
Nửa bậc ngồi của đỉnh x số cạnh khỏi đỉnh x, ký hiệu d+(x)
Nửa bậc của đỉnh x số cạnh vào đỉnh x, ký hiệu d-(x)
(13)BẬC CỦA ĐỈNH
Đỉnh TREO đỉnh có bậc
bằng
Đỉnh CƠ LẬP đỉnh có bậc
bằng
C
A B
(14)MỐI LIÊN HỆ BẬC - SỐ CẠNH
Định lý:
Xét đồ thị có hướng G=(X, U) Ta có:
Xét đồ thị vơ hướng G=(X, E) Ta có:
Hệ quả: số lượng đỉnh có bậc lẻ
đồ thị số chẳn
x d x d x U d X x X x X x
(15)ĐẲNG CẤU ĐỒ THỊ Hai đồ thị vô hướng G1 =(X1,
E1) G2=(X2, E2) gọi
đẳng cấu với tồn hai song ánh thỏa mãn
điều kiện:
: X1 X2 : E1 E2
Nếu cạnh e E1 kề với cặp đỉnh {x, y} X1 G1 cạnh (e) kề với cặp đỉnh
{(x), (y)} G2 (sự tương ứng cạnh)
u1 u5 u
4 u2 u3 u6 a
(16)ĐẲNG CẤU ĐỒ THỊ Hai đồ thị có hướng G1=(X1, U1)
và G2=(X2, U2) gọi
đẳng cấu với tồn hai song ánh thỏa mãn
điều kiện:
: X1 X2 : U1 U2
Nếu cạnh u U1 liên kết với cặp đỉnh (x, y) X1 G1 cạnh (u) liên kết với cặp
đỉnh ((x), (y)) G2 (sự tương ứng cạnh)
1
2 3
G3
1
2 3
(17)ĐỒ THỊ CON
Xét hai đồ thị G=(X, U) G1=(X1, U1) G1 gọi
là đồ thị G ký hiệu G1 G nếu:
X1 X; U1 U
u=(i, j) U G, u U1 i, j X1
u1 u5 u
4
u2
u3
u6
1
4
G
u1
u3
1
4 u2
(18)ĐỒ THỊ BỘ PHẬN
Đồ thị G1=(X1, U1) đồ thị G=(X, U)
gọi đồ thị phận G X=X1
u1 u5 u
4
u2
u3
u6
1
4
G
u1
u4 u2
u3
1
4
(19)ĐỒ THỊ CON SINH BỞI TẬP ĐỈNH
Cho đồ thị G=(X, U) A X Đồ thị sinh
bởi tập đỉnh A, ký hiệu <A> (A, V), đó:
(i) tập cạnh V U
(ii) Gọi u=(i, j) U cạnh G, i, j A
u V u
1
u5 u
4 u2 u3 u6 G u1 u3 u2 <A>
(20)DÂY CHUYỀN, CHU TRÌNH
Một dây chuyền G=(X, U) đồ thị C=(V, E) G với:
V = {x1, x2, …, xM}
E = {u1, u2, …, uM-1} với u1=x1x2, u2=x2x3, …, uM-1=xM-1xM; liên kết xixi+1 khơng phân biệt thứ tự
Khi đó, x1 xM nối với dây chuyền C x1 đỉnh đầu xM đỉnh cuối C
Số cạnh C gọi độ dài C.
(21)DÂY CHUYỀN, CHU TRÌNH
Dây chuyền SƠ CẤP: dây chuyền khơng có đỉnh
lặp lại
CHU TRÌNH: dây chuyền có đỉnh đầu
(22)ĐƯỜNG ĐI, MẠCH
Một ĐƯỜNG ĐI G=(X, U) đồ thị
P=(V, E) G với:
V = {x1, x2, …, xM}
E = {u1, u2, …, uM-1} với u1=x1x2, u2=x2x3, …, uM-1=x M-1xM; liên kết xixi+1 theo thứ tự
Khi đó, có đường P nối từ x1 đến xM x1 đỉnh
đầu xM đỉnh cuối P
Số cạnh P gọi độ dài P.
Khi cạnh hoàn toàn xác định cặp đỉnh
(23)Đường SƠ CẤP: đường đỉnh lặp lại. MẠCH: đường có đỉnh đầu trùng với đỉnh
cuối
Với đồ thị vô hướng:
Dây chuyền đường đi, chu trình mạch
Do đó, thuật ngữ đường dùng cho đồ thị vô hướng
Mạch đồ thị có hướng cịn gọi “chu
trình có hướng” Đường đồ thị có hướng gọi “đường có hướng” để nhấn mạnh
(24)THÀNH PHẦN LIÊN THÔNG
Cho đồ thị G=(X, U) Ta định nghĩa quan hệ
LIÊN KẾT sau tập đỉnh X:
i, jX, i j (ij có dây chuyền nối i với
j)
Quan hệ nầy có ba tính chất: phản xạ, đối xứng
(25)THÀNH PHẦN LIÊN THÔNG Định nghĩa:
Một thành phần liên thông đồ thị lớp tương đương xác định quan hệ LIÊN KẾT ;
Số thành phần liên thông đồ thị số lượng lớp tương đương;
Đồ thị liên thơng đồ thị có thành phần liên thông
Khi đồ G gồm p thành phần liên thơng G1, G2, …, Gp đồ thị Gi đồ thị G
(26)THÀNH PHẦN LIÊN THÔNG
G gồm thành phần liên thông, H đồ thị liên thơng
(27)THÀNH PHẦN LIÊN THƠNG
Thuật tốn xác định thành phần liên thơng
Input: đồ thị G=(X, E), tập X gồm N đỉnh 1, 2, …, N
Output: đỉnh G gán nhãn số hiệu thành phần liên thông tương ứng
1 Khởi tạo biến label=0 và gắn nhãn cho tất đỉnh
2 Duyệt qua tất đỉnh iX
Nếu nhãn i 1 label = label +
(28)THÀNH PHẦN LIÊN THÔNG
Thuật toán gán nhãn đỉnh thuộc thành phần liên thông với đỉnh i – Visit(i, label)
Input: đồ thị G=(X, E), đỉnh i, nhãn label
Output: đỉnh thuộc thành phần liên thông với i gắn nhãn label
1.Gắn nhãn label cho đỉnh i
2.Duyệt qua tất đỉnh jX có cạnh nối với
i
(29)BIỂU DIỄN ĐỒ THỊ BẰNG HÌNH VẼ
A
B
C
D u1
u2
u3
u4
u5 u6
A
B
C
D e1
e2
e3
e4
e5 e6
(30)BIỂU DIỄN ĐỒ THỊ BẰNG MA TRẬN Ma trận KỀ:
Xét đồ thị G=(X, U), giả sử tập X gồm N đỉnh
được thứ tự X={x1, x2, …, xN}, tập U gồm M
cạnh thứ tự U={u1, u2, …, uM}
Ma trận kề đồ thị G, ký hiệu B(G), ma
trận nhị phân cấp NxN B=(Bij) với Bij định
nghĩa:
Bij=1 có cạnh nối xi tới xj,
(31)BIỂU DIỄN ĐỒ THỊ BẰNG MA TRẬN KỀ
(32)BIỂU DIỄN ĐỒ THỊ BẰNG MA TRẬN KỀ
(33)BIỂU DIỄN ĐỒ THỊ BẰNG MA TRẬN Ma trận LIÊN THUỘC đồ thị vô hướng:
Xét đồ thị G=(X, U) vô hướng, giả sử tập X gồm
N đỉnh thứ tự X={x1, x2, …, xN}, tập
U gồm M cạnh thứ tự U={u1, u2,
…, uM}
Ma trận liên thuộc (hay liên kết đỉnh cạnh)
G, ký hiệu A(G), ma trận nhị phân cấp NxM A=(Aij) với Aij định nghĩa:
(34)BIỂU DIỄN ĐỒ THỊ
BẰNG MA TRẬN LIÊN THUỘC
G 1 0 1 0 0 0 1 1 0 1 0 0 0 1 0 0 1 1 0 0 1 1 1 1 A 1 2 3 4 e1 e2 e3 e4
(35)BIỂU DIỄN ĐỒ THỊ BẰNG MA TRẬN Ma trận LIÊN THUỘC đồ thị có hướng:
Xét đồ thị G=(X, U) có hướng, giả sử tập X gồm
N đỉnh thứ tự X={x1, x2, …, xN}, tập U gồm M cạnh thứ tự U={u1, u2, …, uM}
Ma trận liên thuộc (hay liên kết đỉnh cạnh) G,
ký hiệu A(G), ma trận nhị phân cấp NxM A=(Aij) với Aij được định nghĩa:
Aij=1 cạnh uj khỏi đỉnh xi, Aij=-1 cạnh uj vào đỉnh xi,
(36)BIỂU DIỄN ĐỒ THỊ
BẰNG MA TRẬN LIÊN THUỘC
G 1 0 1 0 0 0 1 1 0 1 0 0 0 1 0 0 1 1 0 0 1 1 1 1 A 1 2 3 4 u1 u2 u3 u4
(37)BIỂU DIỄN ĐỒ THỊ BẰNG NNLT C++
#define MAX 100 class Graph
{
protected:
int nVertex; //số đỉnh đồ thị, đỉnh //đánh số từ 0
int labels[MAX]; //nhãn đỉnh int degrees[MAX]; //bậc đỉnh
unsigned char B[MAX][MAX]; //ma trận kề void Visit(int i, int label);
public:
void GetData(const char *filename); int FindConnected();
(38)Source code: nhập liệu từ textfile
void Graph::GetData(const char *filename) {
//nhập liệu từ tập tin văn bản ifstream fin;
fin.open(filename); fin >> nVertex;
for (int i = 0; i < nVertex; ++i)
for (int j = 0; j < nVertex; ++j) fin >> B[i][j];
(39)Source code: xác định bậc đỉnh
void Graph::CountDegree() {
//xác định bậc đỉnh, đồ thị vô hướng for(int i=0;i<nVertex; i++)
for(degrees[i]=0, int j=0;
j<nVertex; j++) degrees[i] += B[i][j];
(40)Source code: gán nhãn TPLT
void Graph::Visit(int i, int label) {
labels[i] = label;
for (int j=0; j<N; j++)
if((labels[j]==0)&&(B[i][j]||B[j][i]) Visit(j, label);
(41)Source code: gán nhãn tất TPLT
int Graph::FindConnected() {
int i, label;
for (int i=0; i<N; i++) labels[i] = 0;
label = 0;
for (int i=0; i<N; i++) if (labels[i]==0) {
label ++;
Visit(j, label) }
(42)BÀI TẬP
1 G đồ thị đơn, vơ hướng có số đỉnh N>3 Chứng minh G có chứa đỉnh bậc
2 Đồ thị G có đỉnh bậc lẻ Chứng minh tồn dây chuyền nối hai đỉnh với
3 Xét đồ thị G đơn, vô hướng gồm N đỉnh, M cạnh P thành phần liên thông
a Chứng minh: M (N-P)(N-P+1)/2,
suy M > (N-1)(N-2)/2 G liên thơng
(43)BÀI TẬP
4 Đồ thị G đơn, vô hướng gồm N đỉnh d(x)(N-1)/2 với đỉnh x Chứng minh G liên
thông
5 Đồ thị vô hướng G liên thông gồm N đỉnh Chứng minh số cạnh G N-1
6 Xét đồ thị G vô hướng đơn Gọi x đỉnh có bậc nhỏ G Giả sử d(x)k2 với k
(44)BÀI TẬP
7 Cho G đồ thị vô hướng liên thông Giả sử C1
và C2 dây chuyền sơ cấp G có số
cạnh nhiều Chứng minh C1 C2 có đỉnh
chung
8 G đồ thị vô hướng không khuyên d(x) 3