<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 6:</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 (phần 3)</b>
<b>1. Bài tốn tìm đường đi ngắn nhất:</b>
<b>Giải thuật Dijsktra.</b>
<b>2. Giới thiệu bài toán TSP.</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>Bài tốn tìm đường đi </b>
<b>ngắn nhất</b>
</div>
<span class='text_page_counter'>(4)</span><div class='page_container' data-page=4>
Toán rời rạc: 2011-2012
<b>Đồ thị có trọng số</b>
Chương 6: Đồ thị 4
<b>Weighted graph</b>
</div>
<span class='text_page_counter'>(5)</span><div class='page_container' data-page=5>
Tốn rời rạc: 2011-2012
<b>Đồ thị có trọng số</b>
<b><sub>Liên quan:</sub></b>
<b>Thời gian.</b>
<b>Khoảng cách.</b>
<b>Chi phí.</b>
<b>…</b>
</div>
<span class='text_page_counter'>(6)</span><div class='page_container' data-page=6>
Tốn rời rạc: 2011-2012
<b>Đồ thị có trọng số</b>
<b><sub>Độ dài </sub></b>
<b><sub>(</sub></b>
<b><sub>length</sub></b>
<b><sub>) của đường đi có trọng số:</sub></b>
<b>Tổng</b>
<b>trọng số của </b>
<b>các cạnh </b>
<b>trên đường đi.</b>
<b>Đường đi ngắn nhất: đường đi có độ dài nhỏ </b>
<b>nhất trong số các đường đi có thể có.</b>
<b>Lưu ý:</b>
<b>Khác với khái niệm độ dài là </b>
<b>tổng số cạnh</b>
<b>.</b>
</div>
<span class='text_page_counter'>(7)</span><div class='page_container' data-page=7>
Tốn rời rạc: 2011-2012
<b>Bài tốn tìm đường đi ngắn nhất</b>
<b><sub>Shortest path </sub></b>
<b><sub>problems:</sub></b>
<b>Tìm ra đường đi có độ dài nhỏ nhất giữa 2 đỉnh </b>
<i>s</i>
<b>(</b>
<b>source</b>
<b>) và </b>
<i>t</i>
<b>(</b>
<b>destination</b>
<b>).</b>
<b>Các thuật tốn:</b>
<b>Dijsktra (giữa 2 đỉnh, khơng cạnh âm).</b>
<b>Floyd-Warshall (mọi cặp đỉnh).</b>
<b>Bellman-Ford (có cạnh âm).</b>
</div>
<span class='text_page_counter'>(8)</span><div class='page_container' data-page=8>
Tốn rời rạc: 2011-2012
<b>Bài tốn tìm đường đi ngắn nhất</b>
<b><sub>Nhận xét:</sub></b>
<b>Có thể bỏ bớt các cạnh bội, chỉ giữ lại cạnh có trọng </b>
<b>số nhỏ nhất.</b>
<b>Có thể bỏ đi các khun có trọng số khơng âm.</b>
<b>Nếu có khun trọng số âm: có thể khơng</b> <b>có lời giải.</b>
</div>
<span class='text_page_counter'>(9)</span><div class='page_container' data-page=9>
Tốn rời rạc: 2011-2012
<b>Bài tốn tìm đường đi ngắn nhất</b>
<b><sub>Biểu diễn đồ thị dạng ma trận kề:</sub></b>
<i>a</i>
<i><sub>ij</sub></i>
=
<b>Trọng số cạnh nhỏ nhất nối i</b> <b>đến j</b> <b>nếu có.</b>
0 <b>nếu khơng có cạnh nối i</b> <b>đến j</b> <b>nếu có.</b>
<b>Phải kiểm tra giá trị </b>0 <b>trong ma trận.</b>
<b>Tổng quát hơn: thay </b>0 <b>bằng </b>+<b>∞.</b>
</div>
<span class='text_page_counter'>(10)</span><div class='page_container' data-page=10>
Toán rời rạc: 2011-2012
<b>Nguyên lý Bellman</b>
<b>Gọi </b>
<i>P</i>
<b>là đường đi </b>
<b>ngắn nhất </b>
<b>từ </b>
<i>i</i>
<b>đến </b>
<i>j</i>
<b>, </b>
<i>k</i>
<b>là một </b>
<b>đỉnh nằm giữa </b>
<i>i</i>
<b>và </b>
<i>j</i>
<b>trên </b>
<i>P</i>
<b>thì:</b>
<b>Đường đi P</b><sub>1</sub> <b>từ </b><i>i</i> <b>đến </b><i>k</i> <b>cũng chính là đường đi ngắn </b>
<b>nhất từ i</b> <b>đến k.</b>
<b>Đường đi P</b><sub>2</sub> <b>từ </b><i>k</i> <b>đến </b><i>j</i> <b>cũng chính là đường đi ngắn </b>
<b>nhất từ k</b> <b>đến j.</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 toán Dijsktra</b>
<b><sub>Ý tưởng: </sub></b>
<b>Giải thuật Dijsktra chủ yếu </b>
<b>dựa trên nguyên lý gán </b>
<b>nhãn (labeling).</b>
<b>Tác giả: Edsger Dijkstra</b>
<b>Công bố: 1959</b>
Chương 6: Đồ thị 11
</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 tốn Dijsktra</b>
<b><sub>Điều kiện:</sub></b>
<b>Đồ thị G = </b>(<i>V, E</i>)<b>.</b>
<b>Có hướng hoặc vơ hướng.</b>
<b>Khơng có cạnh âm.</b>
</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 toán Dijsktra</b>
<b><sub>Ý tưởng:</sub></b>
<b>Dựa trên một dãy các bước </b>
<b>lặp</b>
<b>:</b>
<b>Bắt đầu từ tập chỉ chứa đỉnh xuất phát </b><i>a.</i>
<b>Mỗi bước lặp thêm 1 đỉnh vào tập đỉnh đã ghé qua.</b>
<b>Gán nhãn cho các đỉnh trong mỗi bước lặp:</b>
<b>Nhãn của đỉnh w</b> <b>là độ dài của đường đi ngắn nhất </b>
<b>từ a</b> <b>đến nó (thơng qua các đỉnh trong tập đã thăm).</b>
<b>Bước lặp tiếp:</b>
<b>Chọn một đỉnh đã được gán nhãn (có giá trị nhãn </b>
<b>nhỏ nhất) để tiếp tục.</b>
</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 tốn Dijsktra</b>
<b>Ví dụ: tìm đường đi từ </b>
<i>s</i>
<b>đến </b>
<i>t</i>
<b>.</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>
Toán rời rạc: 2011-2012
<b>Example</b>
</div>
<span class='text_page_counter'>(17)</span><div class='page_container' data-page=17>
Toán rời rạc: 2011-2012
<b>Thuật toán Dijsktra</b>
<b><sub>Cài đặt thuật tốn Dijsktra:</sub></b>
<b>Trình bày - Nhóm (thời gian: </b>
<b>tuần 9</b>
<b>):</b>
<b>1. Liêu Tấn Đạt - MSSV: 1131200001.</b>
<b>2. Hoàng Trung Thành - MSSV: 1131200016.</b>
<b>3. Lê Trọng Hà - MSSV: 1131200006.</b>
</div>
<span class='text_page_counter'>(18)</span><div class='page_container' data-page=18>
Toán rời rạc: 2011-2012
Giảng viên: ThS. Trần Quang Khải
<b>Bài toán TSP</b>
</div>
<span class='text_page_counter'>(19)</span><div class='page_container' data-page=19>
Toán rời rạc: 2011-2012
<b>Bài toán TSP</b>
Chương 6: Đồ thị 19
<b>The travelling salesman problem</b>
<b>:</b>
<i><b>“Cho m</b></i>
<i><b>ộ</b></i>
<i><b>t danh sách</b></i>
<i><b>các thành ph</b></i>
<i><b>ố</b></i>
<i><b>và</b></i>
<i><b>kho</b></i>
<i><b>ả</b></i>
<i><b>ng cách</b></i>
<i><b>đ</b></i>
<i><b>ườ</b></i>
<i><b>ng đi gi</b></i>
<i><b>ữ</b></i>
<i><b>a m</b></i>
<i><b>ỗ</b></i>
<i><b>i c</b></i>
<i><b>ặ</b></i>
<i><b>p thành</b></i>
<i><b>ph</b></i>
<i><b>ố</b></i>
<i><b>, tìm đ</b></i>
<i><b>ườ</b></i>
<i><b>ng đi</b></i>
<i><b>ng</b></i>
<i><b>ắ</b></i>
<i><b>n nh</b></i>
<i><b>ấ</b></i>
<i><b>t</b></i>
<i><b>có th</b></i>
<i><b>ể</b></i>
<i><b>sao cho</b></i>
<i><b>m</b></i>
<i><b>ỗ</b></i>
<i><b>i thành ph</b></i>
<i><b>ố</b></i>
<i><b>đ</b></i>
<i><b>ượ</b></i>
<i><b>c ghé qua</b></i>
<i><b>đúng m</b></i>
<i><b>ộ</b></i>
<i><b>t</b></i>
<i><b>l</b></i>
<i><b>ầ</b></i>
<i><b>n”.</b></i>
</div>
<span class='text_page_counter'>(20)</span><div class='page_container' data-page=20>
Toán rời rạc: 2011-2012
<b>Bài toán TSP</b>
<b>The travelling salesman problem:</b>
<b>Bài tốn “lớn+khó” (NP-hard) trong tối ưu tổ hợp </b>
<b>(combinatorial optimization).</b>
<b>Được nghiên cứu trong vận trù học</b> <b>(operations research) và </b>
<b>khoa học máy tính lý thuyết (theoretical computer science).</b>
<b>Nguồn gốc thật sự: unknown.</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>Bài toán TSP</b>
<b><sub>Ứng dụng:</sub></b>
<b>Lập quy hoạch.</b>
<b>Ngành hậu cần.</b>
<b>Sản xuất vi mạch.</b>
<b>Xử lý chuỗi DNA.</b>
<b>….</b>
</div>
<span class='text_page_counter'>(22)</span><div class='page_container' data-page=22>
Toán rời rạc: 2011-2012
<b>Bài toán TSP</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>Bài toán TSP</b>
<b>Lược sử nghiên cứu (với sự trợ giúp của máy tính):</b>
<b>1950s, 1960s: phổ biến ở châu Âu, châu Mỹ.</b>
<b>Phương pháp mặt phẳng cắt.</b>
<b>1972: Richard Karp chứng minh độ khó của TSP.</b>
<b>Cuối 1970s, đầu 1980s: giải được trường hợp 2392 thành </b>
<b>phố (Grötschel, Padberg, Rinaldi).</b>
<b>2005: Cook và cộng sự đã giải được một trường hợp có </b>
<b>33810 thành phố, xuất phát từ một bài toán thiết kế vi mạch.</b>
</div>
<span class='text_page_counter'>(24)</span><div class='page_container' data-page=24>
Toán rời rạc: 2011-2012
<b>Bài toán TSP</b>
<b><sub>Giải pháp: </sub></b>
<b>Các phương pháp “xấp xỉ”, là sự kết hợp giữa:</b>
<b>Lý thuyết đồ thị.</b>
<b>Phương pháp tối ưu hóa trong KHMT:</b>
•<b>Giải thuật di truyền.</b>
•<b>Các giải thuật tìm kiếm cục bộ (local search): Tabu </b>
<b>search, giải thuật leo đồi, giải thuật mô phỏng </b>
<b>luyện kim, đế chế đàn kiến,…</b>
</div>
<span class='text_page_counter'>(25)</span><div class='page_container' data-page=25>
Toán rời rạc: 2011-2012
<b>Bài toán TSP</b>
</div>
<span class='text_page_counter'>(26)</span><div class='page_container' data-page=26>
Toán rời rạc: 2011-2012
<b>Bài tập – Giải thuật Dijsktra</b>
Chương 6: Đồ thị 26
<b>1</b>
<b>2</b>
</div>
<span class='text_page_counter'>(27)</span><div class='page_container' data-page=27>
Toán rời rạc: 2011-2012
<b>Bài tập – Giải thuật Dijsktra</b>
Chương 6: Đồ thị 27
<b>3</b> <b>4</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 Dijsktra</b>
Chương 6: Đồ thị 28
<b>5</b>
</div>
<!--links-->