Python 中的广度优先搜索2024 年 8 月 29 日 | 5 分钟阅读 在 Python 中,广度优先搜索和深度优先搜索技术被用来搜索树或图。这两者都是每个 Python 初学者必须掌握的最重要的话题。我们将深入探讨 Python 中的广度优先搜索是什么,它的算法如何工作,如何在 Python 中实现它(附有示例代码),以及结果。我们还将学习 BFS 的实际应用以及广度优先搜索的用途。 什么是广度优先搜索?正如前面提到的,广度优先搜索 (BFS) 是一种搜索图或树的方法。遍历树意味着访问每个节点。广度优先搜索是一种递归方法,用于搜索树或图的所有节点。在 Python 中,我们可以利用列表或元组等数据结构来执行 BFS。在树和图中,广度优先搜索几乎是相同的。唯一的区别是树可能存在循环,这会使我们能够重新访问同一个节点。 BFS 算法在学习编写 Python 代码之前,让我们先回顾一下广度优先搜索所使用的方法论,并讨论其输出。以魔方(Rubik's Cube)为例。魔方被认为是寻找一种方法,将其从杂乱的颜色变成单一的颜色。将魔方与树或图进行比较,我们可以得出结论,魔方的潜在状态对应于我们网络的顶点,而魔方的潜在动作对应于图的边。 BFS 算法遵循下面讨论的步骤。
由于广度优先搜索扫描给定图的每个节点,标准的 BFS 算法将树或图的每个节点或顶点分成两个不同的组。
所述技术的目标是访问每个顶点,同时避免重复的循环。BFS 从单个节点开始,然后检查距离为一的所有节点,接着是距离为二的所有其他节点,以此类推。为了保留待访问的节点,BFS 需要一个队列(或在 Python 中,一个列表)。 代码 输出 The Breadth First Search Traversal for The Graph is as Follows: 3 1 在上面所示的 Python 程序中,我们首先生成了图,我们在此图上应用了广度优先搜索方法。之后,我们初始化了两个列表:一个用于跟踪 BFS 算法已访问的图节点,另一个用于跟踪队列中的节点。 我们已声明一个函数,其参数为已访问节点、图本身以及按照上述步骤进行的下一个节点。我们需要在函数内不断地添加 visited_vertices 和 queue 列表。 然后程序将对待访问节点队列执行 while 循环,并在访问当前节点后将其移除并显示。最后,我们使用 for 循环查找未访问的节点,然后将它们添加到 visited_vertices 和 queue 列表中。然后,我们使用我们想要在输出中看到的第一个节点作为参数调用 BFSearch 函数。 时间复杂度广度优先搜索算法的时间复杂度为 O(V+E),其中 V 代表顶点的数量,E 代表边的数量。此外,BFS 算法的空间复杂度为 O(V)。 广度优先遍历的应用
|
有时,我们发现自己迷失在庞大的 Python 代码库中,并且难以跟踪变量的预期类型。在这种情况下,类型提示和注解可以提供帮助,以涵盖变量类型。在本教程中,我们将讨论注解...
阅读9分钟
对象识别是计算机视觉广阔领域中的一项技术。该技术能够识别图像和视频中存在的对象并对其进行跟踪。对象识别,也称为对象检测,具有多种应用,如人脸识别、车辆识别……
5 分钟阅读
在数据可视化中,绘图是视觉化表示数据的最有效方法。如果绘制得不够详细,它可能会显得复杂。Python 有 Matplotlib,用于以绘图形式表示数据。用户应该优化...
阅读 3 分钟
机器学习中的线性回归模型用于预测属性的未来值。在此模型中,我们有特定的独立属性,也称为预测变量。模型接受这些预测变量,将直线拟合到数据,并为我们提供一个模型...
7 分钟阅读
os.path.basename() 是 Python os.path 模块中的一个方法,它返回文件路径的基本名称。基本名称是路径的最后一个组件,在剥离所有父目录和扩展信息之后。例如,如果路径是 /home/user/Documents/myfile.txt,则基本名称是...
阅读 3 分钟
在本教程中,我们将学习 doctest 模块。它是一个测试框架,可帮助我们同时文档化和测试代码。此模块允许我们文档化和测试我们的代码,这对于编码至关重要。默认情况下,我们可以使用 docstring...
阅读 17 分钟
在接下来的教程中,我们将借助 Python 编程语言中的不同示例来学习 cryptography 包。那么,让我们开始吧。理解 cryptography 包,密码学是在数据从一台计算机传输到另一台计算机期间保护有用信息的实践,或者...
阅读 6 分钟
水壶问题是一个经典的谜题,涉及使用两个水壶来测量一定量的水。水壶问题的主要目标是使用水壶通过注水和倒水来测量出特定量的水...
阅读9分钟
如何在 Python 中将字节转换为字符串?Python 作为一种多功能且功能强大的编程语言,提供了一种将字节转换为字符串的直接方法。在处理需要转换为字符串的二进制数据(例如文件或网络数据包)时,此过程至关重要。
阅读 3 分钟
函数执行指定的活动,其中几乎肯定包括返回特定值。但是,某些用例可能需要您给出两个或更多答案。其他脚本语言可能需要相当多的代码才能实现这一点,但 Python 有一个...
阅读 3 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India