当前位置: 首页 > 知识库问答 >
问题:

在无向图上运行BFS后如何构建BFS树?

谢鸿
2023-03-14

我有一个无向图,从中我重新绘制了相同的图,但是是树状结构(有层次)。我知道广度优先搜索(BFS)算法是如何工作的,但我不知道如何从图转换

在这里,在维基百科的这篇文章中,如果你向下滚动一点,你会看到两张德国城市的照片。即使在阅读了那里的伪代码后,我还是不明白你是如何从第一张照片变成第二张的。

共有1个答案

姚骁
2023-03-14

从图中获取BFS树的一种标准方法是运行BFS,并且在这样做的时候,保留一个表,将图中的每个节点映射到树中的父节点。您按如下方式填充它:源节点没有父节点(毕竟它是根节点)。然后,每当您处理一个节点u并探索其未探索的邻居之一v时,您将v的父节点设置为u。尝试在一些小示例中追踪一下,您会发现这隐式地构建了树,除了边向后(边从子节点向上指向父节点,而不是相反)。然后,您可以反转边缘以返回BFS树。

希望这有帮助!

 类似资料:
  • 小结 深搜和广搜的相同点 深搜和广搜的框架基本相同,都需要解决如下四个问题: 如何表示状态? 如何扩展状态? 在扩展状态的过程中,如何判断新状态是否有效? 在扩展状态的过程中,如何判断重复? 深搜和广搜的最显著区别,在于第三步,扩展状态的时候,顺序不一样。代码层面上,仅需要修改一行代码,就可以将广搜变成深搜,那就是,把队列queue替换为栈stack,就变成深搜了。 适用场景 输入数据:没什么特征

  • 我最近在研究数据结构,我在图形方面有困难。我读了这本书:C语言中的数据结构和算法分析(第二版)。 事实上,我也读了一些其他算法书籍,我发现几乎没有一本书给我一个完整的图形实现。虽然我可以阅读伪代码,了解BFS和DFS是如何运行的,以及graph中用于解决问题的一些其他算法,但我仍然需要一个完整的实现来帮助我更好地理解它是如何工作的。然而,在研究图形时,在这里编写代码不重要吗?我不确定。 此外,我还

  • bfs

    bfs 是基于 Facebook haystack 用 Golang 实现的小文件存储系统。 特性 高吞吐量和低延迟 容错性 高效 维护简单 directory directory主要负责请求的均匀调度和元数据管理,元数据存放在hbase,由gosnowflake产生文件key store store主要负责文件的物理存储 pitchfork pitchfork负责监控store的服务状态、可用性

  • 简介 当题目看不出任何规律,既不能用分治,贪心,也不能用动规时,这时候万能方法——搜索, 就派上用场了。搜索分为广搜和深搜,广搜里面又有普通广搜,双向广搜,A*搜索等。 深搜里面又有普通深搜,回溯法等。 广搜和深搜非常类似(除了在扩展节点这部分不一样),二者有相同的框架,如何表示状态? 如何扩展状态?如何判重?尤其是判重,解决了这个问题,基本上整个问题就解决了。

  • BFS 是一款专门为 Linux 桌面环境所设计的内核调度器,它基于 Staircase Deadline 和 EEVDF 算法,支持 Linux 2.6.31 之后的内核。它提供了前所未有的流畅桌面性能,不仅得到了用户的认可,也为一些商业系统所采用。 BFS 是一个进程调度器,可以解释为“脑残调度器”。这古怪的名字有多重含义,比较容易被接受的一个说法为:它如此简单,却如此出色,这会让人对自己的思

  • The Baidu File System 百度的核心数据库Tera将数据持久化在分布式文件系统上,分布式文件系统的性能、可用性和扩展性对整个上层搜索业务的稳定性与效果有着至关重要的影响。现有的分布式文件系统(如HDFS等)无法满足低延迟、高可用、跨地域扩展等方面的需求,所以我们从百度搜索的业务特点出发,开发了自己的分布式文件系统BFS。 设计目标 高可靠、高可用 通过将数据副本进行多机房、多地域