Thông tin tài liệu
Chương Các Thuật Toán Duyệt Đồ Thị (Graph Searching, Graph Traversal) Các thuật tốn duyệt đồ thị • Duyệt đồ thị: Graph Searching Graph Traversal • Duyệt qua đỉnh cạnh đồ thị • Ứng dụng: • Cần để khảo sát tính chất đồ thị • Là thành phần nhiều thuật tốn đồ thị • Hai thuật tốn duyệt bản: • Tìm kiếm theo chiều rộng (Breadth First Search – BFS) • Tìm kiếm theo chiều sâu (Depth First Search – DFS) Ý tưởng chung thuật tốn duyệt Ý tưởng chung: • Trong q trình thực thuật tốn, đỉnh ba trạng thái: • Chưa thăm, thể màu trắng • Đã thăm (nhưng chưa duyệt xong), thể màu xám • Đã duyệt xong, thể màu đen • Trạng thái đỉnh biến đổi theo qui tắc sau: • Thoạt đầu đỉnh có màu trắng (chưa thăm - not visited) • Đỉnh thăm chuyển thành màu xám (trở thành thăm chưa duyệt xong - visited) • Khi tất đỉnh kề đỉnh v thăm, đỉnh v có màu đen (đã duyệt xong – discovered) Tìm kiếm theo chiều rộng Breadth-first Search (BFS) Tìm kiếm theo chiều rộng Breadth-first Search • Input: Đồ thị G = (V, E), vơ hướng có hướng • Output: • d[v] = khoảng cách (độ dài đường ngắn nhất) từ s (là đỉnh xuất phát tìm kiếm) đến v, với v V d[v] = v không đạt tới từ s • [v] = u đỉnh trước v đường từ s (là đỉnh xuất phát tìm kiếm) đến v có độ dài d[v] • Xây dựng BFS với gốc s chứa tất đỉnh đạt tới từ s Procedure BFS(s); (* Tìm kiếm theo chiều rộng đỉnh s *) begin color[s] gray; d[s] 0; [s] nil; Q ; enqueue(Q,s); (* Nạp s vào Q *) while Q begin u dequeue(Q); (* Lấy u từ Q *) for v Adj[u] if color[v] = white then begin color[v] gray; d[v] d[u] + 1; [v] u; enqueue(Q,v) (* Nạp v vào Q *) end; color[u] black end; Trắng: chưa thăm xám: thăm đen: duyệt xong Q: hàng đợi đỉnh thăm color[v]: màu đỉnh v d[v]: khoảng cách từ s đến v [u]: đỉnh trước v end; BEGIN (* Main Program*) Ví dụ: xem minh hoạ for v V (* Khởi tạo *) begin color[v] white; d[v] ; [v] nil; end; for v V if color[v]=white then BFS(v); END Ví dụ (BFS) r v w s t u y x Q: s Ví dụ (BFS) r s v w t u y x Q: w r 1 Ví dụ (BFS) r s v w t u y x Q: r t x 2 Ví dụ (BFS) r s v w t u y x Q: t x v 2 10 Bài tập • Đồ thị có chu trình (đường đi) Hamilton? 86 Bài tập • Với giá trị m n đồ thị phân đơi đầy đủ Km,n có chu trình Hamilton? • Vẽ chu trình Hamilton đồ thị lập phương Q3? • Tìm đường Hamilton hình vẽ? 87 Bài tập • Trong đồ thị liên thơng sau, đồ thị chứa chu trình Hamilton 88 Cho đồ thị có hướng hình vẽ, đồ thị có đường Euler : 89 Cho đồ thị vơ hướng hình vẽ, đồ thị đồ thị Euler : 90 Có đỉnh có bậc chẳn? 91 Có đỉnh có bậc lẻ? 92 • Đồ thị đầy đủ Kn chu trình vịng Cn nào? • Một chu trình vịng Cn đồ thị phân đơi n=? • Đồ thị khơng có tất đỉnh bậc? • Điều kiện để đồ thị đầy đủ Kn có đường Euler khơng có chu trình Euler? • 93 Trong cặp đồ thị sau đây, cặp đồ thị đẳng cấu ? 94 Trong cặp đồ thị sau đây, cặp đồ thị đẳng cấu ? 95 Đồ thị đồ thị Euler ? 96 Tìm chu trình Euler 97 Bài tập: Xác định tên đồ thị sau: 98 99 Tìm chu trình Euler cho đồ thị sau: • A, B, C, D, E, F, K, G, K, E, C, J, K, H, J, I, H, I, B, I, A 100
Ngày đăng: 30/08/2023, 14:43
Xem thêm: Bài giảng lý thuyết đồ thị chương 3 các thuật toán duyệt đồ thị