那么,
您可以考虑数据结构:
广度优先搜索:它是作为队列实现的。展开节点(父节点)时,在队列中包含子节点。父节点已删除。
我们举一个例子:
-
展开 45 :我们在队列中包含20和70并删除45,所以:
20 | 70
-
展开 20 :我们从队列中展开第一个节点并包含他的儿子:
70 | 10 | 28
-
展开 70 :我们从队列中展开第一个节点并包含他的儿子:
10 | 28 | 60 | 85
依旧......
醇>
如您所见,空间复杂度为指数:O(
)( b =分支因子; d =深度,最初为0 )
Deepth-first-search:它是作为堆栈实现的:
-
展开 45 :我们在堆叠中包含20和70并删除45,所以:
20 | 70
-
展开 20 :我们从堆栈顶部展开第一个节点并包含他的儿子:
10 | 28 | 70
-
展开 10 :我们从堆栈顶部展开第一个节点并包含他的儿子:
1 | 18 | 28 | 70
依旧......
醇>
现在空间复杂度线性:O(d)。两种算法的时间复杂度均为O(
)。
Best-first-search:根据启发式评估函数 f(n)对队列进行排序,并使用最佳 f(n)扩展成功者。空间复杂度是线性的: O(d)。
希望这有帮助。