Sự khác biệt giữa BFS và DFS Khác biệt giữa

Anonim

BFS vs DFS

Breadth First Search (còn gọi là BFS) là một phương pháp tìm kiếm được sử dụng để mở rộng tất cả các nút của biểu đồ cụ thể. Nó hoàn thành nhiệm vụ này bằng cách tìm kiếm mọi giải pháp đơn lẻ để kiểm tra và mở rộng các nút này (hoặc kết hợp các trình tự trong đó). Như vậy, một BFS không sử dụng một thuật toán heuristic (hoặc một thuật toán tìm kiếm một giải pháp thông qua nhiều kịch bản). Sau khi tất cả các nút được thu được, chúng được thêm vào một hàng đợi gọi là First In, First Out queue. Những nút không được khám phá được 'lưu trữ' trong một thùng chứa được đánh dấu 'mở'; một khi khám phá chúng được vận chuyển đến một thùng chứa được đánh dấu là 'đóng cửa'.

Tìm kiếm chiều sâu (còn gọi là DFS) là một phương pháp tìm kiếm chôn sâu hơn vào nút con của một tìm kiếm cho đến khi đạt được mục tiêu (hoặc cho đến khi có một nút không có bất kỳ hoán vị nào khác hoặc ' bọn trẻ'). Sau khi một mục tiêu được tìm thấy, các tìm kiếm backtracks đến một nút trước đó đã đi với một giải pháp, lặp lại quá trình cho đến khi tất cả các nút đã được tìm kiếm thành công. Như vậy, các nút tiếp tục được đặt sang một bên để thăm dò thêm - điều này được gọi là triển khai không đệ quy.

- Các tính năng của BFS là không gian và thời gian phức tạp, đầy đủ, chứng minh sự hoàn chỉnh, và optimality. Không gian phức tạp đề cập đến tỷ lệ số nút ở mức sâu nhất của một tìm kiếm. Thời gian phức tạp đề cập đến số tiền thực tế của 'thời gian' được sử dụng để xem xét mọi đường dẫn một nút sẽ thực hiện trong một tìm kiếm. Hoàn thiện về cơ bản là một tìm kiếm tìm ra giải pháp trong một đồ thị bất kể loại đồ thị đó là gì. Bằng chứng của sự hoàn chỉnh là mức độ nông nhất mà tại đó một mục tiêu được tìm thấy trong một nút ở một độ sâu xác định. Cuối cùng, optimality đề cập đến một BFS mà không phải là trọng số - đó là một đồ thị được sử dụng cho chi phí đơn vị bước.

DFS là đầu ra tự nhiên nhất bằng cách sử dụng cây trải dài - là một cây có tất cả các đỉnh và một số cạnh trong một đồ thị vô hướng. Trong sự hình thành này, đồ thị được chia thành ba lớp: Chuyển tiếp các cạnh, chỉ từ một nút đến một nút con; các cạnh sau, chỉ từ một nút đến một nút trước đó; và các cạnh chéo, mà không làm một trong hai.

Tóm tắt:

1. Một BFS tìm kiếm mọi giải pháp trong một đồ thị để mở rộng các nút của nó; một DFS hố sâu trong một nút con cho đến khi đạt được một mục tiêu.

2. Các tính năng của một BFS là không gian và thời gian phức tạp, đầy đủ, chứng minh của sự hoàn chỉnh, và optimality; đầu ra tự nhiên nhất cho một DFS là một cây trải dài với ba lớp: các cạnh về phía trước, cạnh sau và cạnh chéo.