Danh mục

Bài giảng Toán rời rạc: Tìm kiếm trên đồ thị (Version 0.5) - Trần Vĩnh Đức

Số trang: 58      Loại file: pdf      Dung lượng: 1.09 MB      Lượt xem: 16      Lượt tải: 0    
Thư viện của tui

Xem trước 6 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

Bài giảng Toán rời rạc: Tìm kiếm trên đồ thị (Version 0.5) cung cấp cho người học những nội dung kiến thức như: Biểu diễn đồ thị, tìm kiếm theo chiều sâu trên đồ thị vô hướng, tìm kiếm theo chiều sâu trên đồ thị có hướng, thành phần liên thông mạnh. Mời các bạn cùng tham khảo.
Nội dung trích xuất từ tài liệu:
Bài giảng Toán rời rạc: Tìm kiếm trên đồ thị (Version 0.5) - Trần Vĩnh Đức Tìm kiếm trên đồ thị (Version 0.5) Trần Vĩnh Đức HUST Ngày 16 tháng 9 năm 2019CuuDuongThanCong.com https://fb.com/tailieudientucntt 1 / 58 Tài liệu tham khảo ▶ S. Dasgupta, C. H. Papadimitriou, and U. V. Vazirani, Algorithms, July 18, 2016. ▶ Chú ý: Nhiều hình vẽ trong tài liệu được lấy tùy tiện mà chưa xin phép.CuuDuongThanCong.com https://fb.com/tailieudientucntt 2 / 58 Nội dung Biểu diễn đồ thị Tìm kiếm theo chiều sâu trên đồ thị vô hướng Tìm kiếm theo chiều sâu trên đồ thị có hướng Thành phần liên thông mạnhCuuDuongThanCong.com https://fb.com/tailieudientucntt Đồ thị ▶ Một đồ thị xác định bởi một tập đỉnh (còn gọi là nút) V và bởi các cạnh E giữa các cặp đỉnh được chọn. ▶ Đồ thị có thể vô hướng: cạnh e = {u, v} ▶ hoặc có hướng e = (u, v).CuuDuongThanCong.com https://fb.com/tailieudientucntt 4 / 58 Biểu diễn đồ thị dùng Ma trận kề Nếu đồ thị có n = |V| đỉnh v1 , v2 , . . . , vn , thì ma trận kề là một mảng n × n với phần tử (i, j) của nó là { 1 nếu có cạnh từ vi tới vj aij = 0 ngược lại. Ví dụ v2   1 1 1 v1 A = 0 0 1 0 1 0 v3CuuDuongThanCong.com https://fb.com/tailieudientucntt 5 / 58 Dùng ma trận kề có hiệu quả? ▶ Có thể kiểm tra có cạnh nối giữa cặp đỉnh bất kỳ chỉ cần một lần truy cập bộ nhớ. ▶ Tuy nhiên, không gian lưu trữ là O(n2 )CuuDuongThanCong.com https://fb.com/tailieudientucntt 6 / 58 Biểu diễn đồ thị dùng danh sách kề ▶ Dùng một mảng Adj gồm |V| danh sách. ▶ Với mỗi đỉnh u ∈ V, phần tử Adj[u] lưu trữ danh sách các hàng xóm của u. Có nghĩa rằng: Adj[u] = {v ∈ V | (u, v) ∈ E}. Ví dụ 1 Adj[0] = {0, 1, 2} Adj[1] = {2} 0 Adj[2] = {1} 2CuuDuongThanCong.com https://fb.com/tailieudientucntt 7 / 58 Dùng danh sách kề có hiệu quả? ▶ Có thể liệt kê các đỉnh kề với một đỉnh cho trước một cách hiệu quả. ▶ Nó cần không gian lưu trữ là O(|V| + |E|). Ít hơn O(|V|2 ) rất nhiều khi đồ thị ít cạnh.CuuDuongThanCong.com https://fb.com/tailieudientucntt 8 / 58 Nội dung Biểu diễn đồ thị Tìm kiếm theo chiều sâu trên đồ thị vô hướng Tìm kiếm theo chiều sâu trên đồ thị có hướng Thành phần liên thông mạnhCuuDuongThanCong.com https://fb.com/tailieudientucntt EALIZETHATTHEORDERINWHICHEDGESWHICHVERTICESAPPEARINTHEARRAYOF -HM T E R E CâutinyG.txt hỏi T VTừ một 13 đỉnh của đồ thị ta có % thể đi tớiGraph java những tinyG.txt đỉnh nào? E 13 vertices, 13 edges Y 13 0: 6 2 1 5 0 5 T 4 3 1: 0 2: 0 N 0 1 CuuDuongThanCong.com 3: 5 4 first adjacent https://fb.com/tailieudientucntt 10 / 58 Tìm đường trong mê cung Algorithms 83 Figure 3.2 Exploring a graph is rather like navigating a maze. L K D A B E F H ...

Tài liệu được xem nhiều: