Tải bản đầy đủ (.doc) (17 trang)

Giáo trình Toán rời rạc Chương 6

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.26 MB, 17 trang )

Chương VI
ĐỒ THỊ VÀ CÂY
ồ thò là một chủ đề đã cũ nhưng lại có rất nhiều ứng dụng trong các ngành khoa học
hiện đại và được dùng để giải rất nhiều lớp bài toán khác nhau. Đặc biệt là trong
công nghệ thông tin lý thuyết đồ thò có một vai trò rất quan trọng trong việc xác đònh
các kết nối trên mạng máy tính, tối ưu hóa đường truyền dữ liệu cũng như tối ưu hóa bản thân
dữ liệu được trao đổi giữa các máy tính , .v.v..
Đ
Trong chương trước chúng ta đã nghiên cứu một số khái niệm đầu tiên về đồ thò, chương này
cung cấp cho chúng ta thêm một số khái niệm và tính chất thường dùng để giải các bài toán có
áp dụng lí thuyết đồ thò. Cũng cần lưu ý là nếu không có chỉ đònh gì đặc biệt thì đồ thò nói trong
chương này là đồ thò vô hướng.
I. ĐỒ THỊ
Đònh nghóa: Bậc của một đỉnh trong một đồ thò là số cạnh tới nối với đỉnh này.
Ví dụ:
Các đỉnh cô lập A, D có bậc 0.
Bậc của đỉnh F là 3
Bậc của đỉnh B là 4 (Bậc của đỉnh có vòng được cộng thêm 2 cho
mỗi vòng).
Bậc của đỉnh G là 1. Đỉnh bậc 1 gọi là đỉnh treo và cạnh tới tương
ứng gọi là cạnh treo.
Bổ đề 1: Trong một đồ thò thì tổng bậc các đỉnh bằng hai lần số cạnh.
Chứng minh.
Vì mỗi cạnh được tính cho 2 đỉnh có bậc khác 0.
QED
Ví dụ: Có bao nhiêu cạnh trong đồ thò (vô hướng) có 10 đỉnh đều có bậc là 6?
Giải: Tổng bậc tất cả các đỉnh là 6*10 = 60 nên suy ra đồ thò có tất cả 30 cạnh.
Bổ đề 2: Số các đỉnh bậc lẻ là số chẵn.
Chứng minh.
Tổng bậc các đỉnh bậc lẻ+Tổng bậc các đỉnh bậc chẵn = 2 * số cạnh.
Suy ra tổng bậc các đỉnh bậc lẻ là chẳn.


Do đó số các đỉnh bậc lẻ là chẵn. QED.
Đònh nghóa: Một đồ thò gọi là đồ thò đơn nếu không có cặp đỉnh nào được nối với nhau
bằng quá một cạnh.
102
A D A B
C
B E F K H
Đồ thò đơn Không phải đồ thò đơn (đa đồ thò)
Một số kiểu đồ thò đơn đặc biệt:
Đònh nghóa: Một đồ thò đơn n đỉnh gọi là đồ thò hoàn chỉnh, kí hiệu K
n
, nếu nó là một đồ
thò đơn và chứa đúng một cạnh giữa mỗi cặp đỉnh phân biệt.
K
1
K
2
K
3
K
5
Đònh nghóa: Một đồ thò đơn gọi là đồ thò phân đôi nếu tập V các đỉnh của nó có thể phân
thành hai tập con không rỗng V
1
và V
2
rời nhau sao cho mọi cạnh trong đồ thò đều nối một đỉnh
của V
1
và một đỉnh của V

2
(Không có cạnh nào nối hai đỉnh trong V
1
hoặc hai đỉnh trong V
2
với
nhau).
Các đồ thò phân đôi.
Đònh nghóa: Đồ thò đơn gọi là phân đôi hoàn chỉnh, kí hiệu K
m,n
, nếu tập các đỉnh V của
nó có thể phân thành hai tập con V
1
và V
2
lần lượt có m đỉnh và n đỉnh và mỗi đỉnh trong tập
con này đều được nối với mọi đỉnh trong tập con kia.
K
2,3
K
3,3
K
3,5
K
4,3
Ứng dụng của đồ thò trong công nghệ thông tin:
Mạng cục bộ (LAN - Local Area Network): Nhiều máy tính và các thiết bò ngoại vi đi
kèm đặt trong một tòa nhà có thể được nối với nhau thành một mạng gọi là mạng cục bộ. Cấu
103
V

2
V
1
trúc cách thức nối các máy tính này với nhau gọi là topology mạng. Một topology mạng là một
kiểu đồ thò mà mỗi đỉnh là một máy tính còn các cạnh là các đường truyền (cable đồng trục /
cable UTP / cable quang / vô tuyến).
Topology tuyến tính: Các máy tính được nối với nhau thành một đường. Thông thường
các đường truyền là coaxial thin cable (10BASE-2) hoặc coaxial thick cable sử dụng các đầu
nối chữ T (T-connector)
Topology hình sao: Các máy tính được nối với nhau thành một đồ thò phân đôi hoàn
chỉnh K
1,n
. Đường truyền thường dùng cable UTP 10BASE-T với các đầu nối 10BASE-T
RJ-45 và sử dụng hộp tập trung cable (gọi là HUB).
Topology vòng: Các máy tính được nối với nhau thành một chu trình không tự cắt.
Server là một trong các đỉnh của đồ thò. Trong cấu hình Token ring, server gởi một tín hiệu, gọi
là cờ (flag) luân chuyển trong MAU (Media Access Unit) mạng. Workstation nào nhận được
cờ này sẽ được quyền thu phát tín hiệu. Topology này thường được dùng trong các hệ thống
thời gian thực (real time system).
Ngoài ra có thể dùng cấu trúc hỗn hợp giữa các cấu trúc này:
104
Xử lí song song (parallel processing) : Máy tính đơn sử dụng một CPU hoạt động theo
nguyên lí Von Neumann. Nghóa là tại mỗi thời điểm chỉ có một chỉ thò máy được CPU xử lí và
các chỉ thò này được xử lí tuần tự hết chỉ thò này đến các chỉ thò khác. Khi máy tính hoạt động
theo chế độ đa nhiệm (multitasking) thì CPU thực hiện chế độ xắt lát thời gian (time slicing) và
kỹ thuật đường ống (pipeline) để giải quyết các yêu cầu ngắt dày đặt của các chương trình
1
.
Nếu có quá nhiều chương trình tranh chấp nhau thời gian CPU sẽ xảy ra tình trạng “thắt cổ
chai” và hệ thống máy tính sẽ chạy chậm đi (slow down) đáng kể. Để giải quyết kòp thời các

yêu cầu này hoặc là phải tăng xung nhòp của CPU (tăng tốc độ xử lí) hoặc là phải tăng số bộ
xử lí lên. Nếu có nhiều bộ xử lí thì các giải thuật song song sẽ phân chia bài toán cần giải
quyết ra thành nhiều bài toán con để có thể giải đồng thời. Các bài toán con này sẽ được gởi
đến cho các bộ xử lí khác nhau để xử lí riêng rẽ. Khi tất cả các bài toán con đã được xử lí xong
thì một kết quả tổng hợp sẽ được thực hiện.
Ví dụ: Một đoạn mã giả thể hiện giải thuật có sử dụng quá trình xử lí song song các
phát biểu statement_1, statement_2, ..., statement_n
.....
cobegin
statement_1;
statement_2;
...
statement_n;
coend
Statement_m
....
Ví dụ: Thực hiện đoạn chương trình
2
:
x := a - c*d + e
y := b + d/a
z := x + e*y
Xử lí trên máy tính tuần tự (một bộ xử lí) cần 7 bước:
1 c*d
2 a-(c*d)
3 (a-c*d)+e
4 d/a
5 b+(d/a)
6 e*y
7 x+(e*y)

Xử lí trên máy tính xử lí song song chỉ cần 4 bước:
1
Đề nghò người đọc xem lại các tài liệu về hệ điều hành và chế độ đa nhiệm.
2
An Introduction to Operating Systems - Harvey M. Deitel -Addison Wesley-1990 - pp 319,340
105
Trong đoạn chương trình này các công việc được
khai báo giữa cobegin và coend
(statement_1,statement_2, ... ,statement_n) sẽ
được thực hiện đồng thời trên các CPU khác nhau.
Khi đã thực hiện xong tất cả các công việc đó
statement_m sẽ được thi hành.

Khi xử lí song song, dữ liệu đầu vào của bộ xử lí này có thể chính là dữ liệu đầu ra của
bộ xử lí kia. Do đó các bộ xử lí cần phải được liên kết với nhau theo một sơ đồ cấu trúc nào đó.
Cách liên kết đơn giản nhất là liên kết hai chiều giữa từng cặp bộ xử lí tạo thành một
đồ thò hoàn chỉnh K
n
. Tuy nhiên như vậy thì số liên kết sẽ bùng nổ quá nhiều theo số bộ xử lí.
Với máy tính n bộ xử lí cần đến: (n-1)+(n-2)+ ...+1 = (n/2)(n-1) liên kết giữa các CPU.
Có thể liên kết các bộ xử lí theo đường thẳng: Mỗi bộ xử lí P
i
(i

1 và i

n) được nối
với hai bộ xử lí kế bên P
i-1
và P

i+1
. Nhưng như vậy thì cần các bước xử lí trung gian khi P
i
chia
sẽ dữ liệu với các P
j
(P
j

P
i-1
và P
j

P
i+1
).
Người ta dùng phổ biến cách liên kết theo mảng hai chiều, trong đó số bộ xử lí N là
một số chính phương. Các bộ xử lí được đánh thứ tự P
i,j
trong đó i và j chạy từ 1 đến m (m =
2
N ). Mỗi P
i,j
liên kết với 4 bộ xử lí láng giềng P
i+1,j
, P
i-1,j
, P
i,j+1

và P
i,j-1
trừ các bộ xử lí ở ngoại
vi. Các liên kết có thể có được minh họa như trong đồ thò sau:
P
1,1
P
m,m
Đường đi Euler và đường đi Hamilton:
Đònh nghóa: Đường là một đồ thò G = <V,E,I> mà quan hệ tới I có tính chất nối đuôi
3
.
Tính chất nối đuôi của I có thể được biểu diễn dưới dạng:
I =
{
(A
1
,y
1
,A
2
); (A
2
,y
2
,A
3
); ...;(A
n-2
,y

n-2
,A
n-1
); (A
n-1
,y
n-1
,A
n
)
}

VxExV
3
Lưu ý rằng đường có thể là đồ thò con của một đồ thò khác.
106
Trong bước 1 các phép
toán +,* và / được xử lí
song song.
Trong bước 2 các phép
toán - và + được xử lí
song song
Nói cách khác đường là một chuỗi cạnh nối tiếp nhau.
Ta kí hiệu đường bằng chuỗi đỉnh được nối với nhau bởi đường.
Đường không tự cắt là một đường có 2 đỉnh bậc 1 và mọi đỉnh còn lại đều có bậc 2.
Ví dụ:
Đường DCB là đường không tự cắt.
Đường ACBCD là đường tự cắt.
Đònh nghóa: Đường đi gọi là đơn nếu nó không chứa cạnh nào quá 1 lần.
Khái niệm liên thông:

Đồ thò liên thông là đồ thò mà mọi cặp đỉnh đều có đường nối. Đồ thò không liên
thông được gọi là đồ thò rời rạc.
Ví dụ:
G
1
là đồ thò liên thông còn G
2
là đồ thò rời rạc.
Khái niệm chu trình:
Đònh nghóa: Chu trình là một đường có mọi đỉnh đều bậc chẵn. Chiều dài của chu trình
là số cạnh của chu trình. Chu trình gọi là đơn nếu nó không chứa cạnh nào quá một lần.
Ví dụ:
Trong đồ thò G3 thì đường ACDFEA là một
chu trình không tự cắt có chiều dài 5.
Trong đồ thò G4 thì ADCBCA là một chu
trình tự cắt.
Hệ quả: Nếu một chu trình không tự cắt thì mọi đỉnh đều có bậc 2.
Hệ quả: Chu trình là chu trình đơn nếu mọi đỉnh của nó đều bậc chẳn.
Đònh nghóa: Đường đi Euler trong đồ thò G là đường đi đơn chứa tất cả các cạnh của G.
Chu trình Euler trong G là chu trình đơn chứa tất cả các cạnh của G.
Đònh lí:
Một đa đồ thò liên thông sẽ có chu trình Euler nếu và chỉ nếu tất cả các đỉnh của nó
đều có bậc chẳn.
Ta chấp nhận đònh lí này.
107

×