Bài giảng lý thuyết đồ thị chương 3 các thuật toán duyệt đồ thị

100 53 0
Bài giảng lý thuyết đồ thị   chương 3 các thuật toán duyệt đồ thị

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

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

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan