BFS中的字母顺序

时间:2017-12-31 08:53:01

标签: breadth-first-search alphabetical

我很难区分BFS与字母顺序和没有它的BFS。

例如,要在此图中查找生成树(从E开始)。

Starting G

添加{E,B}和{E,C}

之后

T after added EB and EC

我不确定是继续添加{B,F}还是{C,F}。 非常感谢你。

1 个答案:

答案 0 :(得分:0)

  

我不确定是继续添加{B,F}还是{C,F}。非常感谢你   得多。

嗯,答案取决于在BFS算法队列中添加顶点 B C 的顺序。如果你看一下算法:

BFS (G, s)      //Where G is the graph and s is the Source Node

  let Q be queue.
  Q.enqueue( s ) //Inserting s in queue until all its neighbour vertices are marked.

  mark s as visited.
  while ( Q is not empty)
       //Removing that vertex from queue,whose neighbour will be visited now
       v  =  Q.dequeue( )

      //processing all the neighbours of v  
      for all neighbours w of v in Graph G
           if w is not visited 
                Q.enqueue( w ) //Stores w in Q to further visit its neighbours                       

      mark w as visited.

很明显,没有指定应该是顺序,在其中您可以使用顶点的邻居。

因此,如果您按顺序访问 E 的邻居: B C ,那么显然是由于 FIFO 属性的队列数据结构,节点 B 将在 C 之前被取消(从队列中取出),你将获得边缘 B - F 。如果订单是 C B ,则边缘将是 C - F ,原因类似。

一旦你理解了伪代码,你就会非常清楚地理解它。