广度优先搜索队列

时间:2016-07-25 19:38:52

标签: algorithm graph-algorithm breadth-first-search

我正在看这个任务:

  

考虑两个顶点a和b,它们在无向图中从s执行广度优先搜索时在同一点上同时位于FIFO队列中。

     

以下哪项是正确的?

     
      
  1. s和a之间最短路径上的边数比s和b之间最短路径上的边数多一个。
  2.   
  3. s和a之间最短路径上的边数比s和b之间最短路径上的边数少至少一个。
  4.   
  5. a和b之间有一条路径。
  6.         

    可能的答案:

         

    a)仅限1个

         

    b)仅限1和2

         

    c)仅限2个

         

    d)1,2和3

我知道如何解决它,但我对这句话的含义有疑问

  

...在广度优先搜索执行期间同时在FIFO队列中...

这是什么意思?

1 个答案:

答案 0 :(得分:2)

正如@beaker已经评论过,作业中有一个拼写错误。单词 same 应该被理解为 some

  

考虑在无向图中从s执行广度优先搜索期间some点处的FIFO队列上同时位于FIFO队列中的两个顶点a和b。

根据广度优先的定义,您在搜索的第n次次迭代后在队列中找到的节点是 n 离开始节点< EM>取值。当进行下一次迭代时,这个距离增加1,并且队列中的每个节点一个接一个地从队列中取出,以便移动它们的邻居,距离 s < / em>的。虽然这个过程是中途,但是距离 n 的节点和队列中距离 n + 1 的节点,直到所有距离 n < / em>已处理并从队列中删除。

这意味着在任何给定时刻,队列中的任何两个节点与 s 的距离不能超过1步。

我必须说,&#34;这个短语至少少于#34; 在前提2中有点含糊不清:&#34;至少&#34; < / em>将以数学方式解释,即&#34;不小于&#34; dist(a,s)>=dist(b,s)-1

最后,因为这是一个无向图,我们找到了从 s a 的路径和从 s 到<的另一条路径em> b ,还有一条从 a b 的路径(通过 s )。

这解决了这个问题。