Algorithm 如何选择广度优先搜索的起点?

Algorithm 如何选择广度优先搜索的起点?,algorithm,breadth-first-search,Algorithm,Breadth First Search,在我正在读的书中,它告诉我选择一个深度为0的顶点,但我不明白在图中深度是如何计算的 查看上面的示例,它选择顶点A作为起点,并说明其深度为0。在我的理解中,它的深度为0,因为它的度数为0(没有传入边) 但是如果图形是无方向的,我们如何计算它的深度呢 如果我把它想象成一棵树,其中a是根,那么在我看来,我指定G为根,因此这次G的深度为0,从而成为一个起点 我看过讲座,读过文章,但不知道如何在一个无向图中找到一个起点,对于有向图,我的理解是否正确(0深度=>0度) 提前谢谢。不,你的理解是错误的。因为图

在我正在读的书中,它告诉我选择一个深度为0的顶点,但我不明白在图中深度是如何计算的

查看上面的示例,它选择顶点A作为起点,并说明其深度为0。在我的理解中,它的深度为0,因为它的度数为0(没有传入边)

但是如果图形是无方向的,我们如何计算它的深度呢

如果我把它想象成一棵树,其中a是根,那么在我看来,我指定G为根,因此这次G的深度为0,从而成为一个起点

我看过讲座,读过文章,但不知道如何在一个无向图中找到一个起点,对于有向图,我的理解是否正确(0深度=>0度)


提前谢谢。

不,你的理解是错误的。因为图中没有深度。在图中,我们使用的是起点,它是由问题设置者给出的

图中没有深度

让我们举个例子:-节点E的深度是多少

--如果我们遵循路径A->B->E

然后2

--如果我们遵循路径A->C->D->E

然后3

如果在任何节点中没有传入边,并且您没有选择它,那么它将不会在遍历中出现。所以你选择一个作为起点(你说它“深度0”)

在无向图中,可以根据算法选择任意节点作为起始节点

深度项用于树数据结构。 希望你现在明白我的意思了


我也能帮你消除困惑。

这取决于你用BFS解决的问题。假设我正在试图找到两个顶点之间的最短路径,那么你就从你想找到路径的顶点开始做BFS。哦,哈哈,问题。。。如果你想访问所有垂直点怎么办?那么你可能会选择任何一个顶点作为起点,如果你没有到达所有顶点,那么从第一个顶点没有到达的任何顶点开始进行另一次BFS,依此类推。但是“访问所有顶点”的问题没有找到最短路径那么明确,因此在不同的情况下,你可能会做不同的事情。有一种东西,比如从给定节点开始的(连接的)图的“BFS树”,它是BFS第一次访问每个节点所遵循的边集。在本文中,您可以合理地讨论BFS树中节点的深度。谢谢,所以你们是说在无向图中,选择哪个起始点并不重要,因为你们将遍历所有的垂直,然而在有向图中,若并没有任何传入边,若并没有选择作为起始点,它将不会被遍历,所以若我想遍历所有的垂直,我会选择一个起始点作为并没有传入边的顶点边缘,对吗?