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
40 trang |
Chia sẻ: Mr Hưng | Lượt xem: 734 | Lượt tải: 0
Bạn đang xem trước 20 trang nội dung tài liệu Toán học - Bài 8: Cây và cây tối đại, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
BÀI 8
CÂY & CÂY TỐI ĐẠI
Nguyễn Văn Hiệu, 2012, Discrete Mathematics 1
Giáo viên: TS. Nguyễn Văn Hiệu
Email: nvhieuqt@dut.udn.vn
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
Cây là một đơn đồ thị vô
hướng, liên thông và
không chứa chu trình.
Ví dụ
Nguyễn Văn Hiệu, 2012, Discrete Mathematics 3
8.1. Cây
Nguyễn Văn Hiệu, 2012, Discrete Mathematics 4
Đồ thị nào sau đây là cây?
8.1. Cây
Định nghĩa
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
Ví dụ
5
8.1. Cây
Tính chất
Một cây T gồm N đỉnh với
N 2 chứa ít nhất hai đỉnh
treo
Ví dụ
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
Đị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ủ
Nguyễn Văn Hiệu, 2012, Discrete Mathematics 8
e
b
c
d
a
e
b
c
d
a
e
b
c
d
a
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ụ
Nguyễn Văn Hiệu, 2012, Discrete Mathematics 9
C
A B
D
E
F
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. Chọn tùy ý v X và khởi tạo
V := { v }; U := ;
2. Chọn w X \ V sao cho e
E, e nối w với một đỉnh
trong V
3. V := V {w}; U := U {e}
4. 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
Xác định cây tối đại
V = {F, A, B, E, C, D}
U = {FA, AB, BE, FC, ED}
Nguyễn Văn Hiệu, 2012, Discrete Mathematics 11
C
A B
D
E
F
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) = (eT)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
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.
Ứng dụng
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 toá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ố
Nguyễn Văn Hiệu, 2012, Discrete Mathematics 16
C
A B
D
E
12
7
15
6
5
5
10
16
5106
5165
10157
6161512
5712
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à n
n-2
Nguyễn Văn Hiệu, 2012, Discrete Mathematics 17
thời gian cỡ nn-2
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. Sắp xếp các cạnh trong G
tăng dần theo trọng lượng;
khởi tạo T := .
2. 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}.
3. 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
20
20
4
9
8
14
16 18
33
17
1
2
3
4
5
6
Trọng số Cạnh
4 (3,5)
8 (4,6)
9 (4,5)
14 (5,6)
16 (3,4)
17 (1,3)
18 (2,3)
20 (2,4)
33 (1,2)
Chọn
Chọn
Chọn
Chọn
Chọn.
Dừng vì đã
đủ cạnh.
Không
Không
8.4. Xác định cây tối đại ngắn nhất
21
9
8
18
17
1
2 4
5
6
3
20
4
9
8
14
16 18
33
17
1
2
3
4
5
6
8.4. Xác định cây tối đại ngắn nhất
E = {AD, DE, EB, AC,
CC, FC, AF, CE, AB, BC,
DB}
Trọng lượng: 32
Nguyễn Văn Hiệu, 2012, Discrete Mathematics 22
C
A
B
D
E
F
10
12
9
7
15
6
5
5
10
8
16
8.4. Xác định cây tối đại ngắn nhất
E = ?
Trọng lượng = ?
Nguyễn Văn Hiệu, 2012, Discrete Mathematics 23
16
26
5
10
3 2
12
14
30
4
18
8
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(n1)/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
8.4. Xác định cây tối đại ngắn nhất
Prim
Input:
Đồ thị liên thông G=(X, E),
X gồm N đỉnh
Output:
Cây tối đại ngắn nhất
T=(V, U) của G
Prim
1. Chọn tùy ý v X và khởi tạo
V := { v }; U := ;
2. Chọn cạnh e có trọng lượng
nhỏ nhất trong các cạnh (w,
v) mà w X\V và v V
3. V := V {w}; U := U {e}
4. 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 26
8.4. Xác định cây tối đại ngắn nhất
• 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(n1)/2.
Nguyễn Văn Hiệu, 2012, Discrete Mathematics 27
8.4. Xác định cây tối đại ngắn nhất
Nguyễn Văn Hiệu, 2012, Discrete Mathematics
15
5
10
3
8
20
15
10
9
b
a
f
e
d
c
15
5
10
3
8
20
15
10
9
b
a
f
e
d
c
8.4. Xác định cây tối đại ngắn nhất
E = ?
Trọng lượng = ?
Nguyễn Văn Hiệu, 2012, Discrete Mathematics 29
16
26
5
10
3 2
12
14
30
4
18
8
8.4. Xác định cây tối đại ngắn nhất
Cài đặt
Graph
Graph::MST_Prim()
{
//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 30
Bài tập
1. Chứng minh các định lý tương đương
2. Xác định số lượng cây tối đại của đồ thị dạng
CÂY, CHU TRÌNH SƠ CẤP, ĐỦ,
3. Chứng minh tính đúng đắn của các giải thuật
PRIM, KRUSKAL
Nguyễn Văn Hiệu, 2012, Discrete Mathematics 31
Bài tập - Kruskal
Bài tập - Prim
8.5. Cây có gốc
Định nghĩa
CÂY CÓ HƯỚNG là đồ thị
có hướng mà đồ thị nền của nó
là một cây.
CÂY CÓ GỐC là một cây có
hướng, trong đó có một đỉnh
đặc biệt, gọi là gốc, từ gốc có
đường đi đến mọi đỉnh khác
của cây.
Chú ý: Trong cây có gốc thì gốc
có bậc vào bằng 0, còn tất cả các
đỉnh khác đều có bậc vào bằng 1.
Nguyễn Văn Hiệu, 2012, Discrete Mathematics 34
G1
G2
8.5. Cây có gốc
Trong một cây có gốc
thì v là đỉnh mức k khi
và chỉ khi đường đi từ
gốc đến v có độ dài
bằng k.
Mức lớn nhất của một
đỉnh bất kỳ trong cây
gọi là chiều cao của cây.
Cây có gốc thường được
vẽ như trong hình dưới
đây để làm rõ mức của
các đỉnh.
Nguyễn Văn Hiệu, 2012, Discrete Mathematics 35
8.5.Cây có gốc
Định nghĩa
Cây T có gốc v0. Giả sử v0,
v1, ..., vn là một đường đi
trong T. Ta gọi:
vi+1 là con của vi và vi là cha
v0, v1, ..., vn-1 là các tổ tiên của
vn
Đỉnh treo vn là đỉnh không có
con; đỉnh treo cũng gọi là lá
hay đỉnh ngoài;
Đỉnh không là lá gọi đỉnh
trong.
Định nghĩa
Một cây có gốc T gọi là CÂY
m- PHÂN nếu mỗi đỉnh của T
có nhiều nhất là m con.
Cây có gốc T gọi là CÂY m-
PHÂN ĐẦY ĐỦ nếu mỗi đỉnh
trong của T đều có m con.
Nguyễn Văn Hiệu, 2012, Discrete Mathematics 36
8.5. Cây có gốc
Mệnh đề 1
Một cây m-phân đầy đủ có t
đỉnh trong thì có m*t+1
đỉnh và có (m1)*t +1 lá.
Ví dụ
Minh họa bài toán chuyển
thư
Gọi T là một cây nhị phân
đủ với N nút trong và có
chiều cao h. Chứng minh
rằng:
h ≥ log2(N + 1)
• Hướng dẫn: ai (0 ≤ i ≤ h) là số nút
trong ở mức i. Ta có: a0 ≤ 2
0; ai ≤ 2ai-1
Nguyễn Văn Hiệu, 2012, Discrete Mathematics 37
8.5. Cây có gốc
Mệnh đề 1
Một cây m-phân đầy đủ có t
đỉnh trong thì có m*t+1
đỉnh và có (m1)*t +1 lá.
Minh họa bài toán chuyển
thư
Mệnh đề 2
Một cây m-phân có chiều
cao h thì có nhiều nhất là
mh lá.
Một cây m-phân có l lá thì
có chiều cao h [logml].
Nguyễn Văn Hiệu, 2012, Discrete Mathematics 38
Tóm lại
Các khái niệm và tính chất về cây và
cây tối đại
Thuật toán Kruskal
Thuật toán Prim
Khái niệm và tính chât về cây có gốc
Nguyễn Văn Hiệu, 2012, Discrete Mathematics 39
THAT’S ALL; THANK YOU
What NEXT?
BÀI TOÁN TỐI ƯU TRÊN ĐỒ THỊ
Các file đính kèm theo tài liệu này:
- 8_cay_va_cay_khung_3875.pdf