【问题标题】:Why is BFS more efficient than DFS in this scenario?为什么在这种情况下 BFS 比 DFS 更高效?
【发布时间】:2020-08-07 11:16:11
【问题描述】:

tldr; 你从 3 开始,想以 4 结束。总有一条有保证的路径。你只能跳到1。您每次都像骑士一样移动,向一个方向移动 m 个单位,向另一个方向移动 n 个单位。到达目的地的最少跳数是多少。

Input:
1 2
1 0 1 0 1
3 0 2 0 4
0 1 2 0 0
0 0 0 1 0

您从 3 开始,跳到中间顶部的 1,然后跳到 4。每跳在 1 个方向上是 1 个单位,在另一个方向上是 2 个单位。因此,这个案例的答案是 2。为什么在这种情况下 BFS 比 DFS 更好?

【问题讨论】:

    标签: graph-algorithm depth-first-search shortest-path breadth-first-search


    【解决方案1】:

    广度优先搜索可以保证找到从起点到目标的最短路径,而深度优先搜索则不然。

    【讨论】:

    • 为什么?解决方案说这与一次又一次死胡同后的 DFS 有关,但我不确定为什么?
    • 我想说这不是效率问题,而是正确性问题。 BFS 保证总是找到最短路径,因为它以距离递增的顺序扩展路径。 DFS 会找到到达目标的一些 路径,但不一定是最佳路径。您还可以执行“类似 DFS”的算法,枚举所有可能的路径并取最短路径,但这比其他两种方法更糟糕。
    猜你喜欢
    • 2018-09-29
    • 2017-08-16
    • 2014-09-13
    • 1970-01-01
    • 2012-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多