Tải bản đầy đủ (.pdf) (40 trang)

Bài giảng Toán rời rạc Bài 8 - TS. Nguyễn Văn Hiệu

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.05 MB, 40 trang )

BÀI 8

CÂY & CÂY TỐI ĐẠI

Giáo viên: TS. Nguyễn Văn Hiệu

Email:

Nguyễn Văn Hiệu, 2012, Discrete Mathematics

1


Nội dung
8.1. Cây
8.2. Cây tối đại
8.3. Cây tối đại ngắn nhất
8.4. Xác định cây tối đại ngắn nhất
8.5. Cây có gốc

Nguyễn Văn Hiệu, 2012, Discrete Mathematics

2


8.1. Cây
Định nghĩa

Ví dụ

Cây là một đơn đồ thị vơ


hướng, liên thơng và
khơng chứa chu trình.

Nguyễn Văn Hiệu, 2012, Discrete Mathematics

3


8.1. Cây
Đồ thị nào sau đây là cây?

Nguyễn Văn Hiệu, 2012, Discrete Mathematics

4


8.1. Cây
Định nghĩa

Ví dụ

Rừng là một đồ thị gồm p
thành phần liên thơng,
trong đó mỗi thành phần
liên thơng là một cây.
Lưu ý: cây không chứa
khuyên và cạnh song song

5



8.1. Cây
Tính chất

Ví dụ

Một cây T gồm N đỉnh với
N  2 chứa ít nhất hai đỉnh
treo

6


8.1. Cây
Tính chất
Cho T là một đồ thị vơ hướng
có n đỉnh. Có các mệnh đề
tương đương sau:
1. T là cây.
2. T khơng chứa chu trình và
có n – 1 cạnh.
3. T liên thơng và có n – 1
cạnh.

Tính chất
3. T liên thông và mỗi cạnh
của T đều là cạnh cắt
(cầu).
4. Hai đỉnh bất kỳ của T được
nối với nhau bằng đúng 1

đường đi đơn.
5. T khơng chứa chu trình
nhưng nếu thêm 1 cạnh bất
kỳ vào T thì ta sẽ được
thêm đúng 1 chu trình.

Nguyễn Văn Hiệu, 2012, Discrete Mathematics

7


8.2. Cây tối đại
a

Định nghĩa
Cho G=(X, E) là một đồ thị
liên thông và T=(X, F) là một
đồ thị bộ phận của G. Nếu T là
cây thì T được gọi là một cây
tối đại của G.
 Các tên gọi khác:
 cây khung,
 cây bao trùm,
 cây phủ

c
b
d
e


a

a
b

c

e

d

Nguyễn Văn Hiệu, 2012, Discrete Mathematics

c

b
e

d

8


8.2. Cây tối đại
Tính chất
 Mọi đồ thị liên thơng đều có
chứa ít nhất một cây tối đại

Ví dụ
D

B

A

E

C
F
Nguyễn Văn Hiệu, 2012, Discrete Mathematics

9


8.2. Cây tối đại
Xác định cây tối đại
Thuật toán tựa PRIM
Input:
Đồ thị liên thông G=(X, E),
X gồm N đỉnh
Output:
Cây tối đại T=(V, U) của G

Thuật toán
1.

2.

3.
4.


Chọn tùy ý v  X và khởi tạo
V := { v }; U := ;
Chọn w X \ V sao cho e
 E, e nối w với một đỉnh
trong V
V := V  {w}; U := U  {e}
Nếu U đủ N-1 cạnh thì dừng,
ngược lại lặp từ bước 2.

Nguyễn Văn Hiệu, 2012, Discrete Mathematics

10


8.2. Cây tối đại
Xác định cây tối đại
D
A

Xác định cây tối đại
 V = {F, A, B, E, C, D}
 U = {FA, AB, BE, FC, ED}

B

F
C

E


Nguyễn Văn Hiệu, 2012, Discrete Mathematics

11


8.2. Cây tối đại
Cài đặt
Graph
Graph::SpanningTree()
{
//Tìm cây khung của đồ thị
}

Nguyễn Văn Hiệu, 2012, Discrete Mathematics

12


8.3. Cây tối đại ngắn nhất
Định nghĩa
Cho G=(X, E)
 G được gọi là ĐỒ THỊ CÓ
TRỌNG nếu mỗi cạnh của
G được tương ứng với một
số thực, nghĩa là có một ánh
xạ như sau:
L: E  |R
e | L(e)

Định nghĩa

 TRỌNG LƯỢNG của một cây
T của G bằng với tổng trọng
lượng các cạnh trong cây:

L(T) = (eT)L(e)
 CÂY TỐI ĐẠI NGẮN NHẤT
là cây tối đại có trọng lượng
nhỏ nhất của G.

 Các tên gọi khác: cây khung
bé nhất, cây bao trùm nhỏ nhất,
cây phủ bé nhất

Nguyễn Văn Hiệu, 2012, Discrete Mathematics

13


8.3. Cây tối đại ngắn nhất
Ứng dụng

Ứng dụng

 Bài toán xây dựng hệ thống
đường sắt
Cần xây dựng hệ thống đường
sắt nối n thành phố sao cho
khách hàng có thể đi bất cứ
một thành phố nào đến bất kỳ
một trong số các thành phố cịn

lại. Mặt khác, địi hỏi chi phí
để xây dựng hệ thống đường
sắt là nhỏ nhất.

 Bài toán nối mạng máy tính
Cần nối mạng một hệ thống
gồm n máy vi tính. Biết chi phí
nối máy i với máy j là c[i,j]
(chi phí phụ thuộc vào độ dài
cáp). Hãy tìm cách nối mạng
sao cho tổng chi phí nối mạng
là bé nhất.

Nguyễn Văn Hiệu, 2012, Discrete Mathematics

14


8.3. Cây tối đại ngắn nhất
Chú ý
• Trong các thuật tốn tìm cây
tối đại ngắn nhất chúng ta
có thể bỏ đi
 các khuyên;
 hướng các cạnh;
 đối với các cạnh song song thì
có thể bỏ đi và chỉ để lại một
cạnh trọng lượng nhỏ nhất
trong chúng.


Nhắc lại
 MA TRẬN TRỌNG SỐ:
LNxN :
– Lij = trọng lượng cạnh nhỏ
nhất nối i đến j (nếu có)
– Lij =  nếu khơng có cạnh
nối i đến j

Nguyễn Văn Hiệu, 2012, Discrete Mathematics

15


8.3. Cây tối đại ngắn nhất
Ví dụ

Ma trận trọng số
5

D

16
12

A

B
6

7


5

15

C

10

E



12
7

5



12

15
16
6

Nguyễn Văn Hiệu, 2012, Discrete Mathematics

7 5 


15 16 6 
  10 

  5

10 5  
16


8.4. Xác định cây tối đại ngắn nhất
Tiếp cạnh truyền thống
 Liệt kê tất cả các cây khung
của G
 TÍNH TRỌNG LƯỢNG của
mỗi cây tối đại của G
 Chọn cây tối đại có trọng
lượng bé nhất

Tiếp cạnh truyền thống
 Số cây khung của đồ thị đầy đủ
Kn là nn-2

thời gian cỡ nn-2

Nguyễn Văn Hiệu, 2012, Discrete Mathematics

17


8.4. Xác định cây tối đại ngắn nhất

KRUSKAL
Input: đồ thị G=(X, E) liên
thông, X gồm N đỉnh
Output: cây tối đại ngắn nhất
T=(V, U) của G

KRUSKAL
1.

2.

3.

Sắp xếp các cạnh trong G
tăng dần theo trọng lượng;
khởi tạo T := .
Lần lượt lấy từng cạnh e
thuộc danh sách đã sắp xếp.
Nếu T+{e} không chứa chu
trình thì kết nạp e vào T:
T := T+{e}.
Nếu T đủ N-1 cạnh thì dừng;
ngược lại, lặp bước 2.

Nguyễn Văn Hiệu, 2012, Discrete Mathematics

18


8.4. Xác định cây tối đại ngắn nhất

KRUSKAL
Input: đồ thị G=(X, E) liên
thông, X gồm N đỉnh
Output: cây tối đại ngắn nhất
T=(V, U) của G

Mã giả
KRUSKAL(...){
T = ʘ;
while(|T| < n-1 && E!= ʘ) {
E = E \{e}
if(T hợp {e} không chu trình)

T = T hợp {e};

}
if((|T| < n-1 ) <Đồ thị không
liên thông>
}

Nguyễn Văn Hiệu, 2012, Discrete Mathematics

19


8.4. Xác định cây tối đại ngắn nhất

33

2

18

1

20
16

4
8
9

6
14

17

3

4

5

Trọng số

Cạnh

4

(3,5)


8

(4,6)

9

(4,5)

14

(5,6)

Khơng

16

(3,4)

17

(1,3)

Khơng
Chọn

18

(2,3)

20


(2,4)

33

(1,2)

Chọn
Chọn
Chọn

Chọn.
Dừng vì đã
đủ cạnh.

20


8.4. Xác định cây tối đại ngắn nhất

33

2
18

1

20
16


2

4
6
14

17

3

4

8

8
9

5

4

18

1
17

3

9


6

5

21


8.4. Xác định cây tối đại ngắn nhất

5
16

B

12

A

10

7

F

D

 E = {AD, DE, EB, AC,
CC, FC, AF, CE, AB, BC,
DB}
 Trọng lượng: 32


5

6
15

9

E
C

10

8

Nguyễn Văn Hiệu, 2012, Discrete Mathematics

22


8.4. Xác định cây tối đại ngắn nhất

8

 E=?
 Trọng lượng = ?

5
10


18

2

3

12

30

16

14

4

26

Nguyễn Văn Hiệu, 2012, Discrete Mathematics

23


8.4. Xác định cây tối đại ngắn nhất
Cài đặt
Graph
Graph::MST_Kruskal()
{
//Tìm cây tối đại ngắn nhất
của đồ thị có trọng


}

Nguyễn Văn Hiệu, 2012, Discrete Mathematics

24


8.4. Xác định cây tối đại ngắn nhất
Nhược điểm thuật toán
 Thuật toán Kruskal làm việc
kém hiệu quả đối với những
đồ thị dày.
 Đồ thị có số cạnh m 
n(n1)/2.

Hướng tiếp cạnh
 Sử dụng thuật toán Prim

Nguyễn Văn Hiệu, 2012, Discrete Mathematics

25


×