微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

BFS树图

如何解决BFS树图

假设我们获得了以下BFS树,该树以节点D为根,顶点为{A,B,C,D,E,F,G,H}。

Tree

如何确定原始图形中是否存在特定边缘?

这是一个多项选择类型的问题:

原始图形中不存在以下哪些边?

  1. (F,G)
  2. (B,E)
  3. (A,G)
  4. (E,H)

解决方法

您不能确切地知道图中的哪些边,但是您可以确定其中一些边(即BST中的边)和某些边(不是BST中的边)看起来不同):

  1. BST中的每个边也是图中的边
  2. 每个边缘(它允许从根到某个节点的路径短于BST中这两个节点之间的最短路径)不是该图的成员。

让我们看一下以下方面:

  1. [F,G)

如果该边在图形中,则从D到F的最短路径将是DGF,长度为2,但在BST中,从D到F的路径长度为3。这与BST 始终查找图的根与其他任何节点之间的最短路径。

  1. (B,E)

这将允许从D到E的长度为3的路径,这与BST一致。因此,该可能是在图形中的一条边,但没有没有

  1. (A,G)

这将允许从D到A或从D到G的长度为2的路径,这与BST一致,因为在两种情况下BST均提供较短的路径。因此,这可能是在图形中的一条边,但却没有

  1. (E,H)

这将允许从D到E的长度为3的路径,这与BST一致。因此,这可能是在图形中的一条边,但却没有

在这四个边中,只有(F,G)很明显:该边不能在图中。

,

BFS树中的边是原始图形中的边的子集,多个原始图可能会给出相同的BFS树,因此问题的答案是:

  • 如果BFS树具有边=>原始图形也具有该边。
  • 如果BFS树不具有边=>原始图形可能具有此边。

    因此并非总是可能知道原始图是否具有边。

将MCQ问题添加到原始问题中后:
BFS的工作方式是逐级进行的,这意味着将在处理级别(i + 1)中的任何节点之前处理级别(i)中的所有节点。
因此,应先将L3中的所有节点添加到队列中,然后再将L4中的任何节点添加到队列中,因此,如果(F,G)在原始图中退出,则节点F应该在L3中显示为节点G的子节点。 L4 ...的答案就是边缘(F,G)。

,

节点层级之间的差异应该不超过1,这样才能创建一个BFS树,因为它只是层级的问题。

B 距离 E 仅一级。 E 和 H 也是如此。 A 和 G 处于同一水平,因此差异为 0。

F 和 G 相隔 2 级,因此它们可能不存在于图中——如果它们之间存在边,那么 BFS 树可能不会费力地遍历其他节点,这些节点目前位于 3 级( C、B 和 H),在 F 之前。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。