Bài giảng Toán rời rạc: Cây cung cấp cho người học những nội dung kiến thức như: Tính chất của cây, đếm cây gán nhãn, định lý Cayley, lưu trữ cây, Father code, Prüfer code mở rộng. Mời các bạn cùng tham khảo để biết thêm nội dung chi tiết.
Trang 1Trần Vĩnh Đức
HUST
Ngày 24 tháng 7 năm 2018
Trang 2Tài liệu tham khảo
Press, 2002
Elementary and Beyond, Springer-Verlag New York, 2003.
2 / 46
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Trang 3Nội dung
Một số tính chất của cây
Đếm cây gán nhãn
Trang 5Các cây với 1, 2 hoặc 3 đỉnh
Trang 6Có hai cây với 4 đỉnh
6 / 46
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Trang 7Có ba cây với 5 đỉnh
Trang 9Mệnh đề
Nếu T = (V, E) là một cây với ít nhất hai đỉnh, thì với mỗi cặp
đỉnh x, y có duy nhất một đường đi từ x tới y.
Chứng minh
Vì T liên thông nên có đường đi từ x tới y Nếu có đường đi khác
từ x tới y, vậy thì ta có chu trình
x
y
Mâu thuẫn với định nghĩa của cây
Trang 10Bài tập
Hãy chứng minh rằng tính chất:
(T3) với mỗi cặp đỉnh x, y có duy nhất một đường đi từ x tới y;
kéo theo cả hai tính chất:
(T1) T liên thông; và
(T2) T không có chu trình.
10 / 46
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Trang 11Mệnh đề
Nếu T = (V, E) là một cây với ít nhất hai đỉnh, thì đồ thị thu
được từ T bằng cách xóa đi một cạnh bất kỳ sẽ có hai thành phần
liên thông, mỗi thành phần là một cây
Trang 13Chứng minh bằng quy nạp mạnh
Bước cơ sở:P(1) đúng Tại sao?
Bước quy nạp:Giả sử P(1), · · · , P(k) đều đúng để chứng minh
P(k + 1).
Trang 14Định lý
Nếu T = (V, E) là một cây với ít nhất hai đỉnh, vậy thì:
hai thành phần liên thông, mỗi thành phần là một cây;
(T5) |E| = |V| − 1.
14 / 46
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Trang 15Bài tập
hai đỉnh bậc 1
Trang 18Định lý
Xét đồ thị T = (V, E) Các khẳng định sau đây là tương đương
nhau:
1. T là cây;
2. T không chứa chu trình và |E| = |V| − 1;
3. T liên thông và |E| = |V| − 1;
4. T là đồ thị liên thông, nhưng nếu xóa đi một cạnh bất kỳ thì
đồ thị thu được là không liên thông;
một đường;
6. T không chứa chu trình, nhưng nếu ta thêm một cạnh nối hai
đỉnh không kề nhau trong T thì đồ thị nhận được có đúng
một chu trình
18 / 46
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Trang 19Bài tập
Hãy chứng minh định lý trước
Trang 20Nội dung
Một số tính chất của cây
Đếm cây gán nhãn
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Trang 21Câu hỏi
Có bao nhiêu cây với n đỉnh?
Trang 22Câu hỏi
Hai cây này có trùng nhau?
22 / 46
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Trang 23Cây gán nhãn
Trang 25Bài tập
Tìm số cây gán nhãn với 2, 3, 4, và 5 đỉnh?
Trang 29Lưu trữ cây: dùng danh sách cạnh
Trang 31Lưu trữ cây: dùng Father code
hai dòng); tuy nhiên
còn gọi là cha của) đỉnh ở dòng trên, và
Trang 33Father code
Trang 35Mệnh đề
Trang 36Lưu trữ cây: dùng Prüfer code mở rộng
Thuật toán tính Prüfer code mở rộng từ cây
toán dừng
khác 0
8.4 How to Store Trees 151
What about 5? It does not occur in the second row; does this mean that
it is a leaf of the original tree? The answer is yes; otherwise, 5 would have been the father of some other node, and it would have been written in the second row when this other node was deleted Thus 5 was a leaf with smallest label, and the first row of the extended Pr¨ufer code must start with 5.
Let’s try to figure out the next entry in the first row, which is, as we know, the leaf with smallest label of the tree after 5 was deleted The node
1 is still ruled out, since it occurs later in the second row ; but 2 does not occur again, which means (by the same argument as before) that 2 was the leaf with smallest label after 5 was deleted Thus the second entry in the first row is 2.
Similarly, the third entry must be 4, since all the smaller numbers either occur later or have been used already Continuing in a similar fashion, we get that the full array must have been
5 2 4 6 7 3 1
2 4 0 3 3 1 0 This corresponds to the tree in Figure 8.5 Proof [of Lemma 8.4.1] The considerations above are completely general, and can be summed up as follows:
Each entry in the first row of the extended Pr¨ufer code is the smallest integer that does not occur in the first row before it, nor in the second row below or after it.
36 / 46
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Trang 41Bài tập
Hãy hoàn thành nốt hàng trên của Prüfer code mở rộng sau
Trang 42Khẳng định
Mỗi phần tử ở hàng đầu tiên của Prüfer code mở rộng là số
nguyên nhỏ nhất thỏa mãn:
Trang 43Prüfer code
Trang 44Bổ đề
Prüfer code của một cây n đỉnh nào đó.
Ta đã hoàn thành chứng minh định lý sau chưa?
Định lý (Cayley)
44 / 46
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Trang 45Bài tập (Lập trình)
Viết chương trình nhập vào một dãy là mã Prüfer của một cây và
in ra cây đó Bạn có thể hiện cây ở dạng danh sách cạnh, hoặc sửdụng công cụ Graphviz để vẽ tự động
Trang 46Cài đặt Prufer Code