广度优先搜索算法:概述、重要性和应用

已发表: 2020-12-23

图表无处不在。 图可以被认为是节点和边的互连网络。 您在 Facebook 上的朋友、您在 LinkedIn 上的联系或您的 Twitter/Instagram 关注者构成了您的社交图谱。 同样,如果你想从 A 点到 B 点,你可以通过多条路线来实现,这可以在谷歌地图上进行可视化。

所有这些从 A 点到 B 点的多个路线选择也构成了一个图形。 图是我们在学术界和现实世界中遇到的最常见的数据结构之一,因为它们无处不在。 可以在图上执行的最频繁的操作之一是图遍历。

什么是图遍历?

图遍历是一种快速且精确地访问图中每个节点一次的方法。 它是一种高级图搜索算法,使您能够打印访问节点的序列,而不会陷入无限循环。 有许多图遍历算法,例如深度优先搜索广度优先搜索 Djikstra 算法 A-Star 算法等。

本文将深入探讨广度优先搜索算法或 BFS。

图结构

在我们详细了解 BFS 引擎盖之前,让我们借助上图熟悉一些图术语:

根节点– 开始遍历过程的节点。 为简单起见,我们可以将 A 视为根节点。

级别- 级别是与根节点等距的所有节点的集合。 因此,如果我们认为节点 A 处于级别 0,节点 B 和 C 处于级别 1,而节点 D、E 和 F 处于级别 2。确定节点级别数的简单启发式方法是计算节点数所述节点和根节点之间的边数。 请注意,这仅在您将根节点定义为级别 0 时才有效。

父节点- 节点的父节点是比它高一层并与之相邻的节点。 它可以被认为是所述节点的起源节点。 A是B和C的父节点。

子/子节点- 分支并与父节点相邻的节点。 B 和 C 是 A 的子节点

阅读:十大数据可视化技术

什么是广度优先搜索?

BFS 是一种图遍历算法,可以有效地探索树或图。 该算法从一个初始节点(根节点)开始,然后以广度优先方式探索与其相邻的所有节点,而不是深度优先,它沿着特定分支向下直到该分支中的所有节点被访问。 简而言之,它逐层遍历图,而不是向下移动一个级别,直到该级别中的所有节点都被访问和标记。

它按照先进先出 (FIFO) 原则运行,并使用队列数据结构实现。 一旦一个节点被访问,它就被插入到一个队列中。 然后它被记录下来,它的所有子节点都被插入到队列中。 这个过程一直持续到图中的所有节点都被访问和记录。

让我们看一下上面给出的图的 BFS 算法的详细队列操作:

() – 表示队列

[] – 表示打印输出

  1. 将 A 插入队列 (a)
  2. 打印A,将B和C插入队列(cb)[a]
  3. 打印B,将其子节点D和E插入队列(edc)[ba]
  4. 打印C,将其子节点F插入队列(fed)[cba]
  5. 打印D,将其子节点插入队列。 没有了。 (fe)[dcba]
  6. 打印 E,其子节点 F 已插入队列。 (f)[edcba]
  7. 打印 F. [fedcba]

是什么让 BFS 算法如此重要

部署 BFS 作为一种快速搜索大量数据集的方法有很多理由。 使其成为开发人员和数据工程师首选的一些显着特性是:

  • BFS 可以有效地探索图中的所有节点,并找出探索所有节点的最短路径。
  • 遍历整个图所需的迭代次数少于其他搜索算法。
  • 由于它是使用队列实现的,因此它的架构是健壮、可靠和优雅的。
  • 与其他算法相比,BFS 的输出准确无误。
  • BFS 迭代顺利进行,没有陷入无限循环的风险。

结帐:您可以复制的数据可视化项目

BFS算法的应用

由于其简单性和易于设置,BFS 算法已广泛用于各种关键的现实世界情况。 让我们看一些突出的应用程序:

搜索引擎爬虫——试着想象一个没有 Google 或 Bing 的世界。 你不能。 搜索引擎是互联网的支柱。 而BFS算法是搜索引擎的支柱。 它是用于索引网页的主要算法。 该算法从源页面(根节点)开始其旅程,然后以广度方式跟踪该源页面上的所有链接。 每个网页都可以被认为是图中的一个独立节点。

未加权图遍历——BFS可以识别未加权图中的最短路径和最小生成树。 找到最短路径仅仅是找到一条边数最少的路径,BFS 非常适合。 它可以通过访问最少数量的节点来完成工作。

GPS 导航 BFS 利用 GPS 系统从您的起点显示所有可能的邻近位置,帮助您从 A 点无缝导航到 B 点。

广播——广播网络使用数据包作为单位来传输信号和数据。 BFS 算法引导这些数据包到达它们应该到达的网络中的所有节点。

P2P 网络——种子或其他文件共享网络依赖于 P2P 通信。 BFS 可以很好地找到最近的节点,以便更快地进行数据传输。

另请阅读:数据可视化的好处

结论

因此,广度优先搜索算法是现代互联网最重要的算法之一。 希望这篇博客能成为您探索搜索算法的便捷起点。

我们建议您选择在 upGrad 上托管的 IIIT Bangalore 提供的数据科学 PG 文凭,因为在这里您可以与课程讲师进行 1-1 的查询。 它不仅注重理论学习,而且重视基于实践的知识,这对于让学习者为面对现实世界的项目做好准备并为您提供印度第一个 NASSCOM 证书,这有助于您获得数据科学领域的高薪工作。

使用广度优先搜索算法的缺点是什么?

BFS 的缺点是“盲”搜索,这意味着当搜索空间很大时,搜索性能将不如其他启发式搜索。 为了使二分优先搜索算法正常​​工作,所有关联的顶点都必须保存在内存中,这意味着它会使用更多的内存。 另一个缺点是它具有广泛的路径,即使到目标的所有路径都具有几乎相同的搜索深度。

BFS 算法与 DFS 算法有何不同?

BFS 使用大量内存,尤其是当树的分支因子很高时。 另一方面,如果树的深度很大,DFS 可能需要很长时间才能访问其他附近的节点,但它的空间复杂度较低。 BFS 在查找靠近指定源的顶点时效果很好。 当存在无法从源中获得的解决方案时,首选使用 DFS。 与 BFS 不同,回溯在 DFS 中必不可少。 BFS 基于树的层次进行遍历,而 DFS 基于树的深度进行遍历。

A-Star 算法是如何工作的?

A-Star 算法是一种寻路方法,它找到开始状态和结束状态之间的最短路径。 它用于多种用途,包括地图,它有助于找到源(初始状态)和目的地(最终状态)(最终状态)之间的最短距离。 与 Dijkstra 方法一样,A-Star 搜索算法创建从起始节点到目标节点的成本最低的路径树。