Thứ Hai, 20 tháng 1, 2014

Tìm hiểu về đồ thị.DOC

Luận văn tốt nghiệp Phan Thanh Long
Chơng 1
một số vấn đề cơ bản của đồ thị
I. Các định nghĩa đồ thị
1. Định nghĩa đồ thị
Đồ thị là một cấu trúc rời rạc bao gồm các đỉnh và các cạnh nối các đỉnh này,
các loại đồ thị khác nhau đợc phân biệt bởi kiểu và số lợng cạnh nối hai đỉnh
nào đó của đồ thị.
Giả sử X là tập hữu hạn, không rỗng các phần tử nào đó và U XìX. Bộ G =
<X, U> đợc gọi là đồ thị hữu hạn. Mỗi phần tử xX gọi là một đỉnh và mỗi
phần tử u = (x,y) U gọi là một cạnh của đồ thị G = <X, U>.
Xét một cạnh u U khi đó tồn tại 2 đỉnh x, y X sao cho u = (x, y), ta nói
rằng x nối với y hoặc x và y thuộc u.
- Nếu cạnh u = (x, y) mà x và y là hai đỉnh phân biệt thì ta nói x, y là hai đỉnh
kề nhau.
- Nếu u = (x, x) thì u là cạnh có hai đỉnh trùng nhau ta gọi đó là một khuyên.
- Nếu u = (x, y) mà x,y là cặp đỉnh có phân biệt thứ tự hay có hớng từ x đến y thì
u là một cung, khi đó x là gốc còn y là ngọn hoặc x là đỉnh ra, y là đỉnh vào.
- Khi giữa cặp đỉnh (x, y) có nhiều hơn một cạnh thì ta nói những cạnh cùng cặp
đỉnh là những cạnh song song hay là cạnh bội
a) b) c)
a. Tại đỉnh y có một khuyên b. Một cung có hớng từ x sang y
c. Cặp đỉnh (x, y) có 2 cạnh song song
Hình 1.1
Trong thực tế ta có thể gặp nhiều vấn đề mà có thể dùng mô hình đồ thị để
biểu diễn, nh sơ đồ một mạng máy tính, sơ đồ mạng lới giao thông, sơ đồ thi
công một công trình.
9
x
y
x
y
u
x
y
y
Luận văn tốt nghiệp Phan Thanh Long
Ví dụ: Xét một mạng máy tính, có thể biểu diễn mạng này bằng một mô hình
đồ thị, trong đó mỗi máy là một đỉnh, giữa các máy đợc nối với nhau bằng các
dây truyền, chúng tơng ứng là các cạnh của đồ thị. Một mô hình mạng máy tính
nh hình 1.2 trong đó có các máy tính A, B, C, D tơng ứng là các đỉnh, giữa 2
máy đợc nối trực tiếp với nhau thì tơng ứng với 1 cặp đỉnh kề nhau.
Hình 1.2 Ví dụ về một đồ thị
2. Đồ thị đơn
Đồ thị G = <X, U> đợc gọi là đồ thị đơn nếu giữa hai đỉnh bất kỳ đợc nối với
nhau bởi không quá một cạnh (cung), tức là đồ thị không có cạnh bội, không có
khuyên.
Hình 1.2 là một ví dụ về đồ thị đơn
3. Đa đồ thị
Đồ thị G = <X, U> đợc gọi là đa đồ thị nếu nó có ít nhất một cặp đỉnh đợc nối
với nhau bởi hai cạnh (hai cung) trở lên.
4. Giả đồ thị
Là đồ thị có ít nhất một khuyên, có thể chứa cạnh bội, cạnh đơn. Tóm lại đây
là loại đồ thị tổng quát nhất.
a) b)
Hình 1.3 a. Đa đồ thị b. Giả đồ thị
II. Các loại đồ thị
1. Đồ thị vô hớng
10
A
B
C
D
A
B
C
D
A
B
C
D
Luận văn tốt nghiệp Phan Thanh Long
Đồ thị G=<X,U> đợc gọi là đồ thị vô hớng nếu tất cả các cạnh e U mà cặp
đỉnh thuộc nó e = (x,y) X không phân biệt thứ tự. Đồ thị vô hớng là đồ thị
không có bất kỳ một cung nào.
Ví dụ: nh hình 1.3.a là biểu diễn của một đồ thị vô hớng.
2. Đồ thị có hớng
Đồ thị G = <X, U> đợc gọi là đồ thị có hớng nếu tất cả các cạnh e U mà cặp
đỉnh thuộc nó e = (x, y) X có phân biệt thứ tự. Đồ thị có hớng là đồ thị mà
mọi e = (x, y) X đều là cung.
Hình 2.1 Đồ thị có hớng
3. Đồ thị hỗn hợp
Đồ thị G=<X,U> vừa có cạnh vô hớng, vừa có cạnh có hớng thì nó đợc gọi là
đồ thị hỗn hợp, loại đồ thị này rất ít khi đợc dùng tới.
Chú ý rằng vấn đề phân chia đồ thị và các thuật ngữ về đồ thị chỉ mang tính
tơng đối, hiện nay vẫn còn cha mang tính thống nhất chuẩn trên nhiều tài liệu.
III. Một số khái niệm và tính chất cơ bản của đồ thị
1. Bậc đồ thị
1.1 Bậc đồ thị vô hớng
Cho đồ thị vô hớng G = <X,U>. Xét 1 đỉnh x X đặt m(x) là số cạnh thuộc
đỉnh x khi đó m(x) đợc gọi là bậc của đỉnh x. Nếu x có một khuyên thì m(x) đợc
cộng thêm 2.

m(x) = 3 m(x) = 2
- Nếu m(x) = 0 thì đỉnh x đợc gọi là đỉnh cô lập
- Nếu m(x) = 1 thì đỉnh x đợc gọi là đỉnh treo
Ta đặt
thì m(G) đợc gọi là bậc của đồ thị vô hớng G = <X, U>
11
x
x


=
X x
m(x) m(G)
A
B
C
Luận văn tốt nghiệp Phan Thanh Long
1.2 Bậc đồ thị có hớng
Cho đồ thị có hớng G= <X,U> xét 1 đỉnh x X, ta ký hiệu m
+
(x) là số các
cung vào của đỉnh x, còn m
-
(x) là số các cung ra khỏi x. Khi đó ta gọi m
+
(x) là
bậc vào của đỉnh x còn m
-
(x) là bậc ra của đỉnh x.
- Nếu m
+
(x) + m
-
(x) = 0 thì đỉnh x đợc gọi đỉnh là cô lập
- Nếu m
+
(x) + m
-
(x) = 1 thì đỉnh x đợc gọi là đỉnh treo
Ta đặt
Khi đó m(G) đợc gọi là bậc của đồ thị có hớng G = <X,U>.
Trong đồ thị có hớng thì m
+
(x) = m
-
(x) = U
Ví dụ:
- Xét đồ thị vô hớng nh trong hình 1.3.a ta có:
m(G) = m(A) + m(B) + m(C) + m(D) = 2 + 5 + 2 + 1 = 10
- Xét đồ thị có hớng trong hình 2.1 ta có:
m(G) = [m
+
(A) + m
+
(B) + m
+
(C) ] + [m
-
(A) + m
-
(B) + m
-
(C)]
= [1 + 2 + 1] + [2 + 1 +1] = 8
Định lý:
Cho đồ thị hữu hạn G = <X,U> khi đó bậc của đồ thị G bằng 2 lần số cạnh
của đồ thị, tức là m(G) = 2U .
Chứng minh:
Ta thấy một cạnh thuộc 2 đỉnh, nếu xoá một cạnh thì bậc của G giảm đi 2, nếu
xoá một khuyên u = (x, x) thì bậc của G cũng giảm đi 2, còn nếu xoá hết cạnh,
hết khuyên thì bậc của đồ thị bằng 0. Từ đó suy ra định lý.
Hệ quả: Số đỉnh bậc lẻ của đồ thị G = <X,U> là một số chẵn
Chứng minh:
Gọi A và B tơng ứng là tập đỉnh bậc lẻ và tập đỉnh bậc chẵn của đồ thị. Ta có:
Do vế trái chẵn nên tổng vế phải cũng là số chẵn. Mà tổng bậc của các đỉnh
bậc chẵn (xA) là số chẵn nên tổng bậc của các đỉnh bậc lẻ (x) phải là số
chẵn, do tất cả các số hạng của nó là số lẻ, nên tổng này phải gồm một số chẵn
các số hạng. Vì vậy số đỉnh bậc lẻ phải là số chẵn.
12




+
+=
X xX x
(x)m (x)m m(G)


+==
B xA xX x
m(x) m(x) m(x) 2m
Luận văn tốt nghiệp Phan Thanh Long
2. đờng đi và chu trình
2.1 Đờng đi
Xét đồ thị G = <X,U> với
- Tập đỉnh X = {x
1
,x
2
, ,x
n
}
- Tập cạnh U = {u
1
,u
2
, ,u
m
}
Tập hợp các đỉnh kề nhau từ x
i
đến x
j
đợc gọi là 1 đờng đi, kí hiệu
x
i
x
i1
x
i2
x
j
x
i
u
i
x
i1
u
i1
x
i2
u
i2
u
j
x
j
Trong đó các cạnh, các đỉnh trong đờng đi có thể lặp lại
Độ dài của đờng đi bằng số các cạnh (hoặc cung) trong đờng đi đó.
*Chú ý rằng trong đồ thị có hớng, trên một cung uv chẳng hạn thì đờng đi chỉ
có thể đi từ gốc (u) đến ngọn (v) không thể đi ngợc lại.
2.2 Chu trình
Xét một đờng đi từ x
i
- x
j
. Nếu x
i
x
j
thì đờng đi này đợc gọi là một chu trình.
Nh vậy chu trình là một đờng đi có đỉnh xuất phát và đỉnh kết thúc trùng nhau.
Chú ý rằng đờng đi trong đồ thị có hớng không đợc đi ngợc chiều mũi tên
- Đờng đi (chu trình) đợc gọi là đơn nếu nó đi qua mỗi cạnh không quá một
lần.
- Đờng đi (chu trình) đợc gọi là sơ cấp nếu nó đi qua mỗi đỉnh đúng một lần
Hình 3.1
Ví dụ nh ở hình 3.1 ADBE là một đờng đi sơ cấp từ A đến E độ dài 3;
ABCDBE là đờng đi không sơ cấp ( qua B 2 lần) từ A đến E độ dài 5; ABDAB
là một đờng đi không đơn (chứa cạnh AB 2 lần) từ A đến B độ dài 4; ABDA Là
1 chu trình đơn và sơ cấp độ dài 3; CC là đờng đi độ dài 0.
Xét đồ thị có hớng nh hình 2.1 thì ABCB là một đờng đi độ dài 3; CBA không
là một đờng đi vì không có cung đi từ B đến A.
Định lý:
Nếu trong đồ thị G = <X,U> các đỉnh đều có bậc không nhỏ hơn 2 ( x X |
m(x) 2 ) thì trong G tồn tại ít nhất một chu trình.
Chứng minh:
Xét tất cả các đờng đi đơn. Vì đồ thị là hữu hạn cho nên số các đờng đi đơn là
hữu hạn. Chọn một đờng đi là dài nhất nào đó ví dụ từ x
i1
đến x
ij +1
(xem hình vẽ
13
A
B
C
D
E
Luận văn tốt nghiệp Phan Thanh Long
dới đây). Theo giả thiết m(x) 2 nên tồn tại ít nhất một đỉnh x
i0
và một cạnh nối
đỉnh x
i1
và x
i0
. Đỉnh x
i0
thuộc một trong các đỉnh trên đờng đi đã chọn chẳng hạn
x
ij
vì đờng đi là dài nhất, nên chứng tỏ tồn tại một chu trình trong đờng đi.

3. Đồ thị liên thông
Cho đồ thị G = <X,U>. Hai đỉnh phân biệt x,y X đợc gọi là liên thông nếu
tồn tại một đờng đi nối các đỉnh x, y với nhau. Đồ thị G đợc gọi là liên thông
nếu với hai đỉnh phân biệt bất kỳ trong đồ thị đều là liên thông.
Ví dụ nh hình 3.1 là một đồ thị liên thông vì luôn có đờng đi nối hai đỉnh bất
kỳ của đồ thị, còn đồ thị nh hình 3.2 là không liên thông vì không có đờng đi từ
A tới D hoặc từ D tới F v.v
Xét 2 đồ thị liên thông
G
1
= <X
1
, U
1
> và G
2
= <X
2
, U
2
>
Trong đó: X
1
X
2
=
và U
1
U
2
=
Khi đó: X = X
1
X
2
U = U
1
U
2
Thì G = <X,U> là đồ thị có 2 thành phần liên thông G
1
, G
2
.
Hình 3.3
Ví dụ nh đồ thị trong hình 3.3 có ba thành phần liên thông sau:
G
1
= <X
1
, U
1
> với X
1
= {A,B,C} và U
1
= {AB, AC, CB}
G
2
= <X
2
, U
2
> với X
2
= {D, E} và U
2
= {DE}
G
3
= <X
3
, U
3
> với X
3
= {F} và U
3
=
Cho đồ thị có hớng G = <X, U>
- G đợc gọi là đồ thị liên thông yếu nếu đồ thị vô hớng tơng ứng với nó là liên
thông
- G là liên thông một chiều nếu với hai đỉnh x,y khác nhau bất kỳ của G luôn
có đờng đi x - y hoặc đờng đi y - x.
14
x
i0
x
i1
x
i2
x
i3
x
ij
x
ij+1
A
B
F
C
ED
n
p
b
c
Luận văn tốt nghiệp Phan Thanh Long
- G là liên thông mạnh (liên thông 2 chiều) nếu hai đỉnh x,y khác nhau bất kỳ
của G đều có đờng đi x - y và đờng đi y - x.
H
1
H
2
H
3
Hình 3.4
ở hình 3.4 đồ thị H
1
là liên thông mạnh, giả sử cặp đỉnh (A,C) ta có chiều đi
từ C tới A, và đồng thời cũng có chiều đi từ A tới C, và bất kỳ các cặp đỉnh khác
cũng tơng tự nh vậy. H
2
là liên thông một chiều vì xét cặp đỉnh (A,D) có chiều
đi từ D tới A nhng không có chiều đi từ A tới D. H
3
là liên thông yếu vì tồn tại
cặp đỉnh (B,C) không có chiều đi B - C cũng không có chiều đi C - B, nhng đồ
thị vô hớng tơng ứng là liên thông.
4. Đồ thị con và đồ thị bộ phận
Cho đồ thị G = <X,U>
- Nếu trong đồ thị đó ta bỏ đi một số đỉnh nào đó và các cạnh xuất phát từ đỉnh
đó thì phần còn lại của đồ thị đợc gọi là đồ thị con của đồ thị G đã cho, hoặc là
nếu D = <X',U'> là đồ thị con của G = <X,U> thì X' X và U' U
- Nếu trong đồ thị G ta bỏ đi một số cạnh nhng giữ nguyên các đỉnh thì phần
còn lại của đồ thị đợc gọi là đồ thị bộ phận của đồ thị G.
IV. Các dạng biểu diễn của đồ thị
1. Biểu diễn hình học của đồ thị
Để có cái nhìn trực quan ta thờng biểu diễn đồ thị bằng hình học, một đồ thị có
thể biểu diễn trên một mặt phẳng hoặc trong không gian. Phơng pháp biểu diễn
nh sau: Biểu diễn các đỉnh của đồ thị bằng các điểm (hay vòng tròn nhỏ, ô vuông
nhỏ) và nối hai điểm bằng một đờng (cong, thẳng, mũi tên) khi cặp điểm đó ứng
với một cạnh (cung) của đồ thị.
Ví dụ 1: Cho đồ thị G = <X,U> trong đó
X = {A, B, C, D, E} và U = {AB, AC, AD, AE, BD, CD, CE}
15
A
B
C
D
A
B
C
D
A
B
C
D
A
B
D
E
C
C
D
E
B
A
n
p
b
c
Luận văn tốt nghiệp Phan Thanh Long
a) b)
Hình 4.1
Hình 4.1.a và hình 4.1.b đều là biểu diễn hình học của đồ thị G đã cho ở trên
2. Sự đẳng cấu
Với mỗi đồ thị thì có thể có nhiều dạng biểu diễn hình học, có nhiều đồ thị tởng
chừng khác nhau nhng đó là cách biểu diễn hình học khác nhau của cùng một đồ
thị, sự đẳng cấu cho phép chúng ta kết luận đợc điều đó.
Định nghĩa: Xét 2 đồ thị G
1
= (X
1
, U
1
) và G
2
= <X
2
, U
2
>
Hai đồ thị này đợc gọi là đẳng cấu với nhau nếu tồn tại 1 song ánh từ X
1
vào X
2

từ U
1
vào U
2
sao cho nếu có cạnh e = (u, v) U
1
tơng ứng với cạnh e' = (u', v')
U
2
thì cặp đỉnh u, v X
1
cũng là tơng ứng cặp đỉnh u', v' X
2
Ví dụ xét 2 đồ thị G
1
và G
2
nh hình 4.2
G
1
G
2
Hình 4.2
Ta có f : G
1
G
2

f(a) = m f(c) = n
f(d) = q f(b) = p
Nếu a, b X
1
kề nhau thì f(a), f(b) X
2
kề nhau.
Vậy đây là 2 đồ thị đẳng cấu với nhau, ta có thể xem G
1
và G
2
thực chất chỉ là 1
chỉ có điều biểu diễn ở dạng hình học khác nhau, các tên đỉnh khác nhau.
Để xét 2 đồ thị có đẳng cấu không là việc khó, tuy nhiên để xét 2 đồ thị không
đẳng cấu với nhau thì đơn giản hơn.
Đối với 2 đồ thị đẳng cấu thì các đồ thị đó có những tính chất bất biến nh sau:
- Số đỉnh bằng nhau
- Số cạnh bằng nhau
- Bậc các đỉnh tơng ứng cùng nh nhau
- 2 Ma trận kề cũng nh nhau
- Các chu trình cũng nh nhau
16
m
n
p
q
a
b
c
d
Luận văn tốt nghiệp Phan Thanh Long
3. Một số đồ thị đặc biệt
Do tính chất, dạng biểu diễn có những nét đặc thù riêng biệt nên ta phân loại
một số đồ thị thành các dạng đặc biệt sau:
3.1 Đồ thị đều
Là một đồ thị mà mọi đỉnh có cùng bậc, nếu bậc này bằng k thì đó là đồ thị k -
đều
a) b) c) d)
Hình 4.3 a: G- 1 đều; b: G - 2 đều; c: G - 2 đều; d: G - 3 đều.
Trờng hợp riêng nh đồ thị hình 4.3.b và hình 4.3.c là những đồ thị vòng ký
hiệu C
n
(n là số đỉnh)
3.2 Đồ thị đầy đủ
Đồ thị đầy đủ n đinh, ký hiệu K
n
là đơn đồ thị vô hớng mà mọi cặp đỉnh phân
biệt luôn kề nhau. Xem ví dụ nh hình 4.4 dới đây hoặc 1 trờng hợp riêng của đồ
thị đều G - 3 là những đồ thị đầy đủ
a) b)
Hình 4.4 a - đồ thị đầy đủ K
2
; b - đồ thị đầy đủ K
4
3.3 Đồ thị bánh xe:
Ký hiệu W
n
, thu đợc từ đồ thị vòng có n đỉnh bằng cách bổ sung một đỉnh mới
nối tất cả các đỉnh đã có.
W
4
W
5
W
6
Hình 4.5 Các dạng đồ thị bánh xe
17
Luận văn tốt nghiệp Phan Thanh Long
3.4 Một vài ứng dụng của đồ thị đặc biệt
ở các mạng cục bộ (LAN), các máy tính thờng đợc kết nối theo một cách thức
nào đó gọi là hình trạng (topolopy). Dựa theo đặc điểm của các totolopy này mà
ta có thể mô hình bằng 1 số dạng đồ thị đặc biệt. Ví dụ với mạng LAN các máy
tính đợc kết nối theo topolopy hình sao (Star) sau đây:
Hình 4.6
ở dạng này, tất cả các máy đợc nối vào một thiết bị trung tâm có nhiệm vụ
nhận tín hiệu từ các máy và chuyển đến máy đích của tín hiệu. Từ đặc điểm này
có thể mô hình bằng một đồ thị bộ phận của đồ thị bánh xe W
6
nh hình 4.7.a
a) b) c) d)
a) Dạng sao b) dạng vòng c) dạng hỗn hợp d) dạng đầy đủ (Complete)
Hình 4.7 Một số topolopy của LAN
ở mạng LAN ta cũng thờng có các dạng topolopy khác nh dạng chu trình
(loop) hoặc gọi là vòng. ở dạng này mỗi máy nối đúng với 2 máy khác. Mạng
cục bộ với cấu trúc vòng tròn đợc mô hình bằng các đồ thị đặc biệt dạng vòng C
n
nh hình 4.7.b, thông báo gửi từ máy này sang máy khác theo chu trình vòng
tròn cho tới khi tới đợc máy đích. Hoặc 1 dạng nữa là dạng hỗn hợp, đó là sự kết
hợp của dạng hình sao và hình vòng. Topolopy kiểu này là một đồ thị bánh xe
W
n
(hình 4.7.c). Mạng cục bộ dạng bánh xe các máy có thể truyền vòng quanh
theo vòng tròn hoặc có thể qua bộ phận trung tâm. Ngoài ra ngời ta cũng thờng
hay bố trí mạng sao cho các máy đều kết nối trực tiếp với nhau, với kiểu này có
thể mô hình bằng đồ thị đầy đủ K
n
(hình 4.7.d)
4. Biểu diễn đồ thị trên máy tính
18
Luận văn tốt nghiệp Phan Thanh Long
Lĩnh vực đồ thị có nhiều ứng dụng trong thực tế, có thể mô hình nhiều ứng
dụng bằng đồ thị và sử dụng máy tính để giải quyết các bài toán về ứng dụng đó.
Nên việc biểu diễn và lu trữ đồ thị trên máy tính là một vấn đề khá trọng tâm,
phơng thức biểu diễn từng loại đồ thị trên máy tính ảnh hởng đến các giải thuật,
phơng pháp giải quyết các ứng dụng trên máy tính.
4.1 Biểu diễn bằng ma trận kề
Phơng pháp này dựa trên mối quan hệ giữa các cặp đỉnh, mỗi đồ thị đợc đặt t-
ơng ứng với một ma trận vuông cấp n (n là số đỉnh của đồ thị). Gọi ma trận kề là
A = (a
ij
) i,j = 1 n.
+ Trờng hợp G = <X,U> là đồ thị vô hớng với X = {x
1
, x
2
, ,x
n
} khi đó mỗi
phần tử a
ij
của ma trận A đợc xác định nh sau: a
ij
= a
ji
= d, nếu cặp đỉnh (x
i
, x
j
)
có d cạnh nối với nhau. Khi cặp đỉnh (x
i
, x
j
) không có cạnh nào nối với nhau thị
a
ij
= 0. Ta thấy ma trận kề của đồ thị vô hớng là ma trận đối xứng.
+ Trờng hợp G = <X,U> là đồ thị có hớng với X = {x
1
, x
2
, ,x
n
} thì mỗi phần
tử a
ij
của A đợc xác định nh sau: đối với mỗi cặp đỉnh (x
i
, x
j
) từ x
i
đến x
j
nếu có
d cung thì a
ij
= d. Chú ý a
ji
= 0 nếu không có cung nào hớng từ x
j
đến x
i
. Ma trận
kề trong trờng hợp này là không đối xứng.
Trong 2 trờng hợp trên ta chú ý nếu đỉnh x
i
có một khuyên thì phần tử tơng ứng
của ma trận kề là a
ii
= 1

G1 G2
Hình 4.8
Ta có thể dùng ma trận kề biểu diễn đồ thị G1 và G2 trong hình 4.8 nh sau:
Đối với đồ thị có trọng số mỗi cạnh e = (x
i
, x
j
) đợc gán một trọng số l(e) (còn
viết là l(x
i
, x
j
) ) thì ma trận kề của nó đợc thay bằng ma trận có trọng số, khi đó
mỗi phần tử của ma trận bằng trọng số của cạnh tơng ứng: a
ij
= l(x
i
, x
j
)
19














=
0010
0021
1201
0111
1G
M










=
011
010
110
2G
M
A
C
B
D
A
B
C
D
Luận văn tốt nghiệp Phan Thanh Long
Ưu điểm của phơng pháp này là dễ dàng xác định đợc các cặp đỉnh có kề nhau
hay không hoặc rất thuận tiện khi tìm số bậc của mỗi đỉnh. Việc truy cập phần
tử của ma trận kề qua chỉ số không phụ thuộc vào số đỉnh của đồ thị.
Nhợc điểm lớn nhất của phơng pháp này là không phụ thuộc vào số cạnh của
đồ thị, ta luôn phải sử dụng n
2
đơn vị bộ nhớ để lu trữ ma trận kề của nó.
Định lý:
Nếu G = <X,U> là đa đồ thị với A = (a
ij
) là ma trận kề tơng ứng, thì số đờng
đi khác nhau từ đỉnh x
i
đến đỉnh x
j
có độ dài s bằng phần tử P
ij
của ma trận tích
AìAì ìA = A
s
= (P
ij
)
Xét ví dụ ứng dụng: Trong một số hệ thống thông tin khi đợc mô hình bằng đồ
thị có thể thực hiện tốt một số công tác kiểm kỹ thuật. Ví dụ khi biểu diễn một
mạng máy tính bằng đồ thị, giả sử có 2 máy nào đó mà thông tin truyền giữa
chúng là quan trọng, cần tiến hành kiểm tra xem đã có đờng truyền dự phòng
giữa chúng không. Xét ở góc độ đồ thị thì cần kiểm tra xem số đờng đi giữa cặp
đỉnh tơng ứng với 2 máy đó, nếu số đờng đi lớn hơn 1 là đã có đờng truyền dự
phòng.
* Chơng trình viết bằng PASCAL sau tính số đờng đi độ dài l nhập từ bàn
phím
Type MaTran = Array[1 20,1 20] Of Integer;
Var a, b, aa: MaTran;
n,l,x1,x2: Integer;
Procedure InputMt(Var Mt: Matran);
Var i, j: Integer;
Begin
For i:=1 to n do
For j:=1 to n do Begin
Write('a',i,j,'= '); Readln(Mt[i,j]);
End;
End;
Procedure Gan(Mt1: MaTran; Var Mt2: MaTran); {Mt2 < Mt1}
Var i,j:Integer;
Begin
For i:=1 to n do
For j:=1 to n do Mt2[i,j]:=Mt1[i,j];
End;
Procedure TichMt(mt1,mt2: Matran; Var MtKq: MaTran); { MtKq = Mt1*Mt2 }
Var i,j,k: Integer;
20
s lần
Luận văn tốt nghiệp Phan Thanh Long
Begin
For i:=1 to n do
For j:=1 to n do Begin
MtKq[i,j]:=0;
For k:=1 to n do MtKq[i,j]:=MtKq[i,j]+Mt1[i,k]*Mt2[k,j];
End;
End;
Procedure LthuaMt(m: Integer); {aa = a ^m (m: do dai duong di, m>=2) }
Var i: Integer;
Begin
Gan(a,b);
For i:=1 to m-1 do Begin
TichMt(b,a,aa);
Gan(aa,b);
End;
End;
Procedure FindWay(i,j: Integer); { Tim so duong di tu dinh i >j }
Begin
If aa[i,j]<>0 then
Writeln('So duong di do dai ',l,' tu x',x1,' > ','x2 ','la: ',aa[i,j])
Else
Writeln('Khong co duong di tu dinh ',i,' toi dinh ',j,' voi do dai ',l);
End;
BEGIN
Writeln('Nhap ma tran ke cho do thi:');
Write('So dinh do thi: '); Readln(n);
InputMt(a);
Write('Dinh xuat phat: '); Readln(x1);
Write('Dinh ket thuc: '); Readln(x2);
Write('Do dai duong di: '); Readln(l);
LthuaMt(l);
FindWay(x1,x2);
END.
4.2 Danh sách cạnh (cung)
Cho đồ thị G = <X, U> với số cạnh m, số đỉnh n. Nếu m < 6n thì G thờng đợc
biểu diễn dới dạng danh sách cạnh (cung).
21
Luận văn tốt nghiệp Phan Thanh Long
Theo cách này danh sách tất cả các cạnh (cung) của đồ thị vô hớng (có hớng).
Mỗi cạnh (cung) e = (x, y) của đồ thị tơng ứng với hai biến Dau[e], Cuoi[e].
G
1
G
2
Hình 4.9
Ví dụ: Hình 4.9 đồ thị G
1
và G
2
đợc biểu diễn bằng danh sách cạnh (cung) nh
sau:
Nh vậy để lu trữ đồ thị cần sử dụng 2m đơn vị bộ nhớ. Nhợc điểm của phơng
pháp này là để xác định những đỉnh nào của đồ thị là kề với một đỉnh cho trớc
chúng ta phải làm cỡ m phép so sánh.
4.3 Danh sách kề
Phơng pháp biểu diễn bằng danh sách kề cũng đợc sử dụng khá phổ biến và
thờng hay dùng cho đồ thị có hớng.
Danh sách kề cho đỉnh x
i
là danh sách gồm tất cả các đỉnh kề của x
i
theo thứ tự
các đỉnh trong tập đỉnh X. Ta có thể biểu diễn đồ thị nh một mảng FIRST, với
phần tử FIRST[i] là con trỏ trỏ tới danh sách kề cho đỉnh x
i
.
Ví dụ: ở hình 4.9 đồ thị G
1
và G
2
đợc biểu diễn bằng danh sách kề nh sau:
FIRST
1
2
3
4
a) Danh sách kề của đồ thị G
1
22
1
2
4
3
1
2
3
4
Dau Cuoi
1 2
1 3
2 3
2 4
3 4
Danh sách cạnh G
1

Dau Cuoi
1 2
2 3
3 1
4 1
4 2
Danh sách cung G
2

2
1
1
2
3 Nil
3
2
3 Nil
4 Nil
4 Nil

Không có nhận xét nào:

Đăng nhận xét