Python 中的 Hierholzer 算法2024年8月29日 | 阅读 7 分钟 引言在本教程中,我们将学习 Python 中的 Hierholzer 算法。Hierholzer 算法的基本步骤是将不同的圆组合成一个欧拉圆。它从一个随机节点开始。然后,它沿着未访问的边随机地移动到邻居。重复这些步骤直到回到起始节点。第一个圆形成了图。 在图论中,欧拉路径是恰好访问图的所有边一次的路径。具有相同起始点和终点的欧拉路径是欧拉圆,称为欧拉图。我们将使用堆栈和递归来搜索欧拉图中的路径。在这里,我们给出了欧拉图并打印了欧拉回路。欧拉回路是一条经过图中每条边并以起始顶点结束的路径。示例如下 - 示例 我们讨论了确定特定图是否代表欧拉图的问题。本教程讨论了打印欧拉轨道或回路的算法。Fleury 算法也可以解决相同的问题。但是,Fleury 算法的复杂度大于 Hierholzer 算法。Fleury 算法的时间复杂度为 O(E*E)。使用 Hierholzer 算法,我们可以以 O(E) 的时间复杂度找到回路或路径,例如线性时间。算法如下:参考(维基百科)。 请注意,一个图具有欧拉回路的条件是 (1) 所有非零度顶点属于一个连通系统。(2) 每个顶点的内度和外度都相同。此算法假设给定的图有一个欧拉回路。
因此,目标是跟踪未使用的边并删除它们,直到它们卡住。一旦我们卡住了,我们就返回到当前路径上具有未使用边的最近点,并重复该过程,直到所有边都被使用。我们可以使用另一个容器来保存最后和最终的路径。 程序代码 现在,我们给出了 Hierholzer 算法的程序代码。在这里,我们在 Python 中使用 Hierholzer 算法来打印给定有向图的欧拉回路。代码如下 - 输出 现在,我们在 Python 中编译上述代码,成功编译后运行它。输出如下: 0 - 1 - 2 - 0 0 - 1 - 5 - 3 - 4 - 2 - 0 - 3 - 5 - 0 上面的代码列出了每个顶点的边数。这是不必要的,因为我们仍然并排保留名称。我们刚刚删除了 edge_count 数组的创建。此算法将 'if edge_count[current_v]' 替换为 'if adj[current_v]'。 上面的代码将第一个或初始节点推入堆栈两次。虽然我们正确地收集了结果,但该方法需要更清晰、更有效。通过将下一个顶点添加到堆栈而不是当前顶点来解决此问题。在测试算法部分,邻接名称“adj1”和“adj2”的开头略有不同。药剂也得到了改善。改进后的代码如下。 程序代码 现在,我们给出了 Hierholzer 算法的改进程序代码。在这里,我们在 Python 中使用 Hierholzer 算法来打印给定有向图的欧拉回路。代码如下 - 输出 现在,我们在 Python 中编译上述代码,成功编译后运行它。输出如下: 0 - 1 - 2 - 0 0 - 1 - 5 - 3 - 4 - 2 - 0 - 3 - 5 - 0 |
Python 有一个名为 Enchant 的模块,用于检查单词的拼写并提供更正建议。它还提供词语的反义词和同义词选项。它还可以检查单词是否存在于字典中。check()...
阅读 2 分钟
众所周知,Python 是一种标准的脚本语言,因为它具有多功能特性。在下面的教程中,我们将了解如何借助 tkinter 和... 构建一个 GUI 应用程序来关闭、重启和注销计算机。
阅读 24 分钟
在本教程中,我们将了解 Python 当前的 Google 搜索包。我们将探索最常用的 Google 搜索库的用法。我们还将学习如何使用 Python 代码在 Google 上进行搜索查询。Python 为 Google 搜索提供了许多库,...
阅读 4 分钟
什么是排序?排序是用于以特定顺序排列数据的技术。它按升序或降序排列数值数据。它用于以一种更易于理解的简单方式表示数据。基于此,开发了各种算法...
阅读 6 分钟
Python 中的 "isna()" 函数 isna() 方法在 Python 中是一个强大的数据操作和分析工具箱,在处理 pandas 时被广泛使用。isna() 函数用于查找 pandas DataFrame 或 Series 中的缺失或空值。isna() 函数在各种场景中的使用...
阅读 3 分钟
为了创建 GUI,Python 提供了多种选择(图形用户界面)。Tkinter 是所有 GUI 技术中最广泛使用的方式。它是 Tk GUI 工具包的标准 Python 接口,随 Python 预装。这是开发最快、最直接的方法...
阅读 6 分钟
在本文中,我们将讨论 Python 中的解析错误。这变得严重了。但不要害怕。我们知道“编码”这个词对于初学者和那些有点技术背景的人来说是多么令人生畏……但别担心。让你的 Python...
阅读 3 分钟
一种流行且有效的排序算法 Quick Sort 使用分治法来组织列表或数组中的项。虽然 Quick Sort 通常实现为基于文本的算法,但您可以使用 Python 的 Matplotlib 以三维方式可视化该方法,以便更好地...
阅读 6 分钟
IDE 与代码编辑器简介:在本文中,我们将讨论 IDE 与代码编辑器。代码编辑器是程序员最重要的关键设备之一,其明确目的是使代码编辑技术更高效、更简单。文本编辑器是...
阅读 6 分钟
Python 中的 Excel 模块是一个强大的工具,它允许 Python 程序员处理 Microsoft Excel 文件。该模块提供了一种使用 Python 代码自动执行 Excel 操作的方法,例如读取和写入 Excel 文件、设置单元格格式、创建图表和执行计算。它是...
阅读 13 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India