Làm cách nào để sử dụng BFS để tìm đường đi ngắn nhất?
Làm cách nào để sử dụng BFS để tìm đường đi ngắn nhất?

Video: Làm cách nào để sử dụng BFS để tìm đường đi ngắn nhất?

Video: Làm cách nào để sử dụng BFS để tìm đường đi ngắn nhất?
Video: #8 [Lý thuyết đồ thị]. Thuật Toán Tìm Đường Đi Ngắn Nhấ Giữa 2 Điểm Trong Ma Trận ( Lưới Ô Vuông) 2024, Có thể
Anonim

Đến tìm thấy NS con đường ngắn nhất , tất cả những gì bạn phải làm là bắt đầu từ nguồn và thực hiện bề rộng đầu tiên tìm kiếm và dừng lại khi bạn tìm thấy Nút đích của bạn. Điều bổ sung duy nhất bạn cần làm là có một mảng trước [n] sẽ lưu trữ nút trước đó cho mọi nút được truy cập. Phần trước của nguồn có thể là rỗng.

Cũng được hỏi, tại sao BFS lại tìm ra con đường ngắn nhất?

Chúng tôi nói rằng BFS là thuật toán sử dụng nếu chúng ta muốn tìm con đường ngắn nhất trong một đồ thị vô hướng, không có trọng số. Yêu cầu cho BFS là lần đầu tiên một nút được phát hiện trong quá trình truyền tải, khoảng cách đó từ nguồn sẽ cung cấp cho chúng tôi con đường ngắn nhất . Điều tương tự không thể nói đối với một đồ thị có trọng số.

Cũng biết, đâu là con đường ngắn nhất trong mê cung? Tìm con đường ngắn nhất trong mê cung

  1. Đi lên: (x, y) -> (x - 1, y)
  2. Đi sang trái: (x, y) -> (x, y - 1)
  3. Đi xuống: (x, y) -> (x + 1, y)
  4. Đi sang phải: (x, y) -> (x, y + 1)

Cũng cần biết, chúng ta có thể sử dụng DFS để tìm đường đi ngắn nhất không?

Không, bạn không thể sử dụng DFS để tìm đường đi ngắn nhất trong một đồ thị không có trọng số. Nó không phải là trường hợp, Phát hiện NS con đường ngắn nhất giữa hai nút được giải quyết độc quyền bởi BFS. Trong một biểu đồ không trọng số, con đường ngắn nhất là số cạnh nhỏ nhất phải được truyền từ nút nguồn đến nút đích.

Thời gian chạy của BFS là gì?

Sự phức tạp của Tìm kiếm đầu tiên theo chiều rộng Tìm kiếm theo chiều rộng-đầu tiên có một thời gian chạy của O (V + E) O (V + E) O (V + E) vì mọi đỉnh và mọi cạnh sẽ được kiểm tra một lần. Tùy thuộc vào đầu vào của biểu đồ, O (E) O (E) O (E) có thể nằm giữa O (1) O (1) O (1) và O (V 2) O (V ^ 2) O (V2).

Đề xuất: