<span class='text_page_counter'>(1)</span><div class='page_container' data-page=1>
Giảng viên: ThS. Trần Quang Khải
<b>TOÁN RỜI RẠC</b>
<b>Chương 7:</b>
</div>
<span class='text_page_counter'>(2)</span><div class='page_container' data-page=2>
Toán rời rạc: 2011-2012
<b>Nội dung</b>
<b>1. Giới thiệu:</b>
<b>Định nghĩa.</b>
<b>Thuật ngữ.</b>
<b>2. Cây khung:</b>
<b>Cây khung nhỏ nhất.</b>
</div>
<span class='text_page_counter'>(3)</span><div class='page_container' data-page=3>
Toán rời rạc: 2011-2012
Giảng viên: ThS. Trần Quang Khải
<b>Giới thiệu</b>
Chương 7: Cây 3
</div>
<span class='text_page_counter'>(4)</span><div class='page_container' data-page=4>
Toán rời rạc: 2011-2012
<b>CÂY?</b>
</div>
<span class='text_page_counter'>(5)</span><div class='page_container' data-page=5>
Toán rời rạc: 2011-2012
<b>Giới thiệu</b>
Chương 7: Cây 5
<b>TREE</b>
<b>Cây là m</b>
<b>ộ</b>
<b>t đ</b>
<b>ồ</b>
<b>th</b>
<b>ị</b>
<b>vô h</b>
<b>ướ</b>
<b>ng, liên thông </b>
<b>và </b>
<b>khơng ch</b>
<b>ứ</b>
<b>a </b>
<b>chu trình đ</b>
<b>ơ</b>
<b>n.</b>
<b>Ứng dụng trong KHMT:</b>
<b>Các thuật tốn tìm kiếm.</b>
<b>Thiết kế mạng máy tính.</b>
<b>Sắp xếp.</b>
</div>
<span class='text_page_counter'>(6)</span><div class='page_container' data-page=6>
Toán rời rạc: 2011-2012
<b>Example</b>
</div>
<span class='text_page_counter'>(7)</span><div class='page_container' data-page=7>
Toán rời rạc: 2011-2012
<b>Đâu là CÂY?</b>
</div>
<span class='text_page_counter'>(8)</span><div class='page_container' data-page=8>
Toán rời rạc: 2011-2012
<b>Giới thiệu</b>
<b><sub>Rừng (forest): </sub></b>
<b>Là đồ thị vô hướng, </b>
<b>không liên thơng </b>
<b>và khơng </b>
<b>chứa chu trình đơn.</b>
<b>Rừng gồm nhiều cây.</b>
Chương 7: Cây 8
</div>
<span class='text_page_counter'>(9)</span><div class='page_container' data-page=9>
Tốn rời rạc: 2011-2012
<b>Cây</b>
<b><sub>Tính chất:</sub></b>
<b>Giữa </b>
<b>2 đỉnh </b>
<b>bất kz có </b>
<b>duy nhất </b>
<b>1 đường đi đơn</b>
<b>.</b>
<b>Cây n</b>
<b>đỉnh </b>
<b>sẽ có n</b>
– 1 cạnh
<b>.</b>
<b>Nếu thêm 1 cạnh tùy { </b>
<b>Tạo ra 1 chu trình.</b>
</div>
<span class='text_page_counter'>(10)</span><div class='page_container' data-page=10>
Tốn rời rạc: 2011-2012
<b>Cây có gốc</b>
Chương 7: Cây 10
<b>Rooted tree</b>
</div>
<span class='text_page_counter'>(11)</span><div class='page_container' data-page=11>
Toán rời rạc: 2011-2012
<b>Thuật ngữ</b>
</div>
<span class='text_page_counter'>(12)</span><div class='page_container' data-page=12>
Toán rời rạc: 2011-2012
<b>Thuật ngữ</b>
Chương 7: Cây 12
<i><b>(Tổ tiên)</b></i>
</div>
<span class='text_page_counter'>(13)</span><div class='page_container' data-page=13>
Toán rời rạc: 2011-2012
<b>Thuật ngữ</b>
Chương 7: Cây 13
<i><b>(Đỉnh nội, </b></i>
</div>
<span class='text_page_counter'>(14)</span><div class='page_container' data-page=14>
Toán rời rạc: 2011-2012
<b>Thuật ngữ</b>
</div>
<span class='text_page_counter'>(15)</span><div class='page_container' data-page=15>
Toán rời rạc: 2011-2012
<b>Example</b>
</div>
<span class='text_page_counter'>(16)</span><div class='page_container' data-page=16>
Tốn rời rạc: 2011-2012
<b>Cây có gốc </b>
<i>m</i>
<b>-phân</b>
Chương 7: Cây 16
<b>M</b>
<b>ộ</b>
<b>t cây có g</b>
<b>ố</b>
<b>c g</b>
<b>ọ</b>
<b>i là m-phân (m</b>
<b>-ary</b>
<b>) n</b>
<b>ế</b>
<b>u m</b>
<b>ọ</b>
<b>i </b>
<b>đ</b>
<b>ỉ</b>
<b>nh trong c</b>
<b>ủ</b>
<b>a nó có </b>
<b>khơng ít h</b>
<b>ơ</b>
<b>n </b>
<i>m con.</i>
<b>Cây g</b>
<b>ọ</b>
<b>i là m-ary </b>
<b>đ</b>
<b>ầ</b>
<b>y đ</b>
<b>ủ</b>
<b>n</b>
<b>ế</b>
<b>u m</b>
<b>ọ</b>
<b>i đ</b>
<b>ỉ</b>
<b>nh trong </b>
<b>c</b>
<b>ủ</b>
<b>a nó có </b>
<b>chính xác</b>
<i>m con.</i>
<b>V</b>
<b>ớ</b>
<b>i m </b>
= 2
<b>: cây nh</b>
<b>ị</b>
<b>phân (</b>
<b>binary</b>
<b>).</b>
<b>Một cây </b>
<i>m</i>
-ary đầy đủ với
<i>i</i>
<b>đỉnh trong có </b>
</div>
<span class='text_page_counter'>(17)</span><div class='page_container' data-page=17>
Tốn rời rạc: 2011-2012
<b>Example</b>
</div>
<span class='text_page_counter'>(18)</span><div class='page_container' data-page=18>
Toán rời rạc: 2011-2012
<b>Ứng dụng của CÂY</b>
<b><sub>Khoa học máy tính:</sub></b>
<b>Thiết kế mạng.</b>
<b>Cây quyết định.</b>
<b>Giải thuật nén.</b>
<b>Lưu trữ dữ liệu trên ổ cứng.</b>
<b>…</b>
<b>Khác:</b>
<b>Sơ đồ tổ chức hoạt động.</b>
<b>Cơng thức hóa học.</b>
</div>
<span class='text_page_counter'>(19)</span><div class='page_container' data-page=19>
Toán rời rạc: 2011-2012
Giảng viên: ThS. Trần Quang Khải
<b>Cây khung</b>
Chương 7: Cây 19
</div>
<span class='text_page_counter'>(20)</span><div class='page_container' data-page=20>
Toán rời rạc: 2011-2012
<b>Giới thiệu</b>
<b><sub>Sau trận sóng thần tại Miyagi, Nhật Bản (2011), </sub></b>
<b>cần dọn sạch một số con đường để xe cứu hộ </b>
<b>có thể đi tới mọi điểm trong thành phố?</b>
<b>Một công ty viễn thông cần xây dựng đường </b>
<b>trục cáp chính (back-bone), làm thế nào để nối </b>
<i>n</i>
<b>thành phố sao cho tổng chiều dài đường dây </b>
<b>cáp là ngắn nhất?</b>
</div>
<span class='text_page_counter'>(21)</span><div class='page_container' data-page=21>
Toán rời rạc: 2011-2012
<b>Cây khung – Giới thiệu</b>
Chương 7: Cây 21
<b>Spanning tree: Cho G</b>
<b>là m</b>
<b>ộ</b>
<b>t đ</b>
<b>ồ</b>
<b>th</b>
<b>ị</b>
<b>M</b>
<b>ộ</b>
<b>t đ</b>
<b>ồ</b>
<b>th</b>
<b>ị</b>
<b>con c</b>
<b>ủ</b>
<b>a G</b>
<b>và ch</b>
<b>ứ</b>
<b>a </b>
<b>t</b>
<b>ấ</b>
<b>t c</b>
<b>ả</b>
<b>các </b>
<b>đ</b>
<b>ỉ</b>
<b>nh</b>
<b>c</b>
<b>ủ</b>
<b>a G</b>
<b>g</b>
<b>ọ</b>
<b>i là </b>
<i><b>cây khung </b></i>
<b>c</b>
<b>ủ</b>
<b>a G.</b>
</div>
<span class='text_page_counter'>(22)</span><div class='page_container' data-page=22>
Tốn rời rạc: 2011-2012
<b>Tìm cây khung</b>
<b><sub>Giải thuật </sub></b>
<b><sub>Prim</sub></b>
<b><sub>:</sub></b>
<b>Input</b>
<b>: Đồ thị </b>
<i>G</i>
<b>.</b>
<b>Output</b>
<b>: Cây khung </b>
<i>H</i>
<b>(khởi tạo </b>
<i>H</i>
=
∅
<b>).</b>
<b>Bước 1: Chọn tùy { 1 đỉnh của </b>
<i>G</i>
<b>đặt vào </b>
<i>H</i>
<b>.</b>
<b>Bước 2: Nếu mọi đỉnh của </b>
<i>G</i>
<b>đều nằm trong </b>
<i>H</i>
<b>thì </b>
<b>dừng.</b>
<b>Bước 3: Tìm 1 đỉnh của </b>
<i>G</i>
<b>mà không nằm trong </b>
<i>H</i>
<b>và </b>
<b>có nối với 1 đỉnh trong </b>
<i>H</i>
<b>bằng một cạnh. Thêm đỉnh </b>
<b>này và cạnh tương ứng vào </b>
<i>H</i>
<b>. Quay lại bước 2.</b>
</div>
<span class='text_page_counter'>(23)</span><div class='page_container' data-page=23>
Toán rời rạc: 2011-2012
<b>Cây khung nhỏ nhất</b>
Chương 7: Cây 23
<b>Minimum spanning tree</b>
<b>Cho G</b>
<b>là m</b>
<b>ộ</b>
<b>t đ</b>
<b>ồ</b>
<b>th</b>
<b>ị</b>
<b>liên thơng có tr</b>
<b>ọ</b>
<b>ng s</b>
<b>ố</b>
<b>c</b>
<b>ạ</b>
<b>nh.</b>
<b>Cây khung nh</b>
<b>ỏ</b>
<b>nh</b>
<b>ấ</b>
<b>t là cây khung có </b>
<b>t</b>
<b>ổ</b>
<b>ng</b>
<b>tr</b>
<b>ọ</b>
<b>ng </b>
<b>s</b>
<b>ố</b>
<b>các c</b>
<b>ạ</b>
<b>nh là </b>
<b>nh</b>
<b>ỏ</b>
<b>nh</b>
<b>ấ</b>
<b>t </b>
<b>trong t</b>
<b>ấ</b>
<b>t c</b>
<b>ả</b>
<b>các cây </b>
</div>
<span class='text_page_counter'>(24)</span><div class='page_container' data-page=24>
Tốn rời rạc: 2011-2012
<b>Tìm cây khung nhỏ nhất</b>
<b><sub>Giải thuật </sub></b>
<b><sub>Prim</sub></b>
<b><sub>:</sub></b>
<b>Input</b>
<b>: Đồ thị </b>
<i>G</i>
<b>.</b>
<b>Output</b>
<b>: Cây khung </b>
<i>H</i>
<b>(khởi tạo </b>
<i>H</i>
=
∅
<b>).</b>
<b>Bước 1: Chọn tùy { 1 đỉnh của </b>
<i>G</i>
<b>đặt vào </b>
<i>H</i>
<b>.</b>
<b>Bước 2: Nếu mọi đỉnh của </b>
<i>G</i>
<b>đều nằm trong </b>
<i>H</i>
<b>thì </b>
<b>dừng.</b>
<b>Bước 3: Tìm 1 đỉnh của </b>
<i>G</i>
<b>mà không nằm trong </b>
<i>H</i>
<b>và </b>
<b>có nối với 1 đỉnh trong </b>
<i>H</i>
<b>bằng một cạnh có </b>
<b>trọng số </b>
<b>nhỏ nhất</b>
<b>. Thêm đỉnh này và cạnh tương ứng vào </b>
<i>H</i>
<b>. </b>
<b>Quay lại bước 2.</b>
</div>
<span class='text_page_counter'>(25)</span><div class='page_container' data-page=25>
Tốn rời rạc: 2011-2012
<b>Tìm cây khung nhỏ nhất</b>
<b><sub>Giải thuật Prim - Ví dụ:</sub></b>
</div>
<span class='text_page_counter'>(26)</span><div class='page_container' data-page=26>
Tốn rời rạc: 2011-2012
<b>Tìm cây khung nhỏ nhất</b>
<b><sub>Giải thuật </sub></b>
<b><sub>Kruskal</sub></b>
<b><sub>:</sub></b>
<b>Input</b>
<b>: </b>
<b>Đồ thị </b>
<i>G = (V, E)</i>
<b>.</b>
<b>Output</b>
<b>: </b>
<b>Cây khung nhỏ nhất </b>
<i>H</i>
<b>.</b>
<b>Bước 1: Sắp xếp các cạnh theo thứ tự tăng dần và </b>
<b>khởi tạo </b>
<i>H</i>
=
∅
<b>.</b>
<b>Bước 2: Lần lượt lấy từng cạnh </b>
<i>e</i>
<b>thuộc danh sách </b>
<b>đã sắp xếp. Nếu </b>
<i>H+{e}</i>
<b>không tạo chu trình thì gán </b>
<i>H=H+{e}.</i>
<b>Bước 3: Nếu </b>
<i>H</i>
<b>đủ </b>
<i>n –</i>
1
<b>phần tử thì dừng. Ngược lại </b>
<b>quay lại bước 2.</b>
</div>
<span class='text_page_counter'>(27)</span><div class='page_container' data-page=27>
Tốn rời rạc: 2011-2012
<b>Tìm cây khung nhỏ nhất</b>
<b><sub>Giải thuật </sub></b>
<b><sub>Kruskal </sub></b>
<b><sub>- Ví dụ</sub></b>
</div>
<span class='text_page_counter'>(28)</span><div class='page_container' data-page=28>
Toán rời rạc: 2011-2012
<b>Bài tập – Giải thuật Kruskal</b>
Chương 6: Đồ thị 28
<b>1</b>
</div>
<span class='text_page_counter'>(29)</span><div class='page_container' data-page=29>
Toán rời rạc: 2011-2012
<b>Bài tập – Giải thuật Kruskal</b>
Chương 6: Đồ thị 29
</div>
<!--links-->