BFS具有非常有用的属性,即如果a中的所有边缘 图表是未加权(或相同的权重),然后是第一次节点 被访问的是从源节点到该节点的最短路径。
如何验证此属性?为什么不在DFS这种财产的情况下持有?
答案 0 :(得分:1)
要回答您的问题,首先应了解BFS和DFS在一般意义上的工作原理。
考虑二元搜索树,这只是一个非常简单的图,如下所示:
*a
/ \
*b *c
/ \ / \
*d *e *f *g
广度优先搜索(BFS) ,顾名思义,将首先探索距离源节点最近的节点。假设您从节点* a开始搜索,BFS算法将首先探索* b,跟随* c,然后* d,* e,* f,* g。
另一方面,深度优先搜索(DFS) 首先深入。从源节点* a,您将展示* b,然后是* d,* e(直到您到达结尾)。
因此,声明:
...第一次访问节点是从源节点到该节点的最短路径
假设在BFS运行时,您访问了节点* b。这确实是从源节点到节点* b的最短路径,因为BFS具有始终首先探索最靠近源节点的节点的属性。
类似的概念可以应用于更复杂的图形。它们都是一样的。
希望这有帮助!干杯!
答案 1 :(得分:0)
* A
/ \
| \
| \
* B \
\ \
\ \
\ \
* D \
\ \
\______* C
看看这个简单的图表。 例如,如果您从A开始执行DFS,并且访问的第一个邻居将是顶点B,那么第一次访问顶点C将通过D,因此您将获得长度为3的路径。
所以,当A寻找他的另一个邻居(C)他不会去拜访它时,A-B-D-C肯定不是从A到C的最短路径。