带你读《图解算法小抄》二十五、图(10)

简介: 带你读《图解算法小抄》二十五、图(10)

带你读《图解算法小抄》二十五、图(9)https://developer.aliyun.com/article/1347763?groupCode=tech_library


12.哈密尔顿路径


哈密尔顿路径(或称为可遍历路径)是指在无向或有向图中恰好访问每个顶点一次的路径。哈密尔顿环(或哈密尔顿回路)是一条既是哈密尔顿路径又是环的路径。确定图中是否存在这样的路径和环是哈密尔顿路径问题。

 

image.png

 

哈密尔顿回路

一个十二面体的可能的哈密尔顿回路示例,如图中的红色路径所示 - 像所有的柏拉图立体一样,十二面体是哈密尔顿图。

1Naive 算法

生成所有可能的顶点配置,并打印满足给定约束条件的配置。共有 n!(n 的阶乘)种配置。

当还有未尝试的配置时
{
   生成下一个配置
   如果(这个配置的连续顶点之间有边,并且最后一个顶点到第一个顶点有边)
   {
      打印这个配置;
      中断;
   }
}

2回溯算法

创建一个空的路径数组,并将顶点 0 添加到其中。从顶点 1 开始添加其他顶点。在添加一个顶点之前,检查它是否与先前添加的顶点相邻且尚未添加。如果找到这样的顶点,则将其作为解的一部分添加。如果找不到这样的顶点,则返回 false。

3参考资料

  • 维基百科上的哈密尔顿路径
  • YouTube 上的哈密尔顿路径
  • GeeksForGeeks 上的哈密尔顿回路

带你读《图解算法小抄》二十五、图(11)https://developer.aliyun.com/article/1347761?groupCode=tech_library

相关文章
|
7月前
|
存储 人工智能 算法
图与树的遍历:探索广度优先、深度优先及其他遍历算法的原理与实现
图与树的遍历:探索广度优先、深度优先及其他遍历算法的原理与实现
411 0
|
6月前
|
存储 算法 Java
Java中,树与图的算法涉及二叉树的前序、中序、后序遍历以及DFS和BFS搜索。
【6月更文挑战第21天】Java中,树与图的算法涉及二叉树的前序、中序、后序遍历以及DFS和BFS搜索。二叉树遍历通过访问根、左、右子节点实现。DFS采用递归遍历图的节点,而BFS利用队列按层次访问。以下是简化的代码片段:[Java代码略]
48 4
|
5月前
|
存储 算法 Python
“解锁Python高级数据结构新姿势:图的表示与遍历,让你的算法思维跃升新高度
【7月更文挑战第13天】Python中的图数据结构用于表示复杂关系,通过节点和边连接。常见的表示方法是邻接矩阵(适合稠密图)和邻接表(适合稀疏图)。图遍历包括DFS(深度优先搜索)和BFS(广度优先搜索):DFS深入探索分支,BFS逐层访问邻居。掌握这些技巧对优化算法和解决实际问题至关重要。**
45 1
|
5月前
|
数据采集 存储 算法
「AIGC算法」图搜索算法详解
本文探讨了图搜索算法,包括遍历和最短路径搜索。DFS和BFS是遍历算法,前者使用栈深入搜索,后者用队列逐层遍历。Dijkstra、Bellman-Ford、A*、Floyd-Warshall和Johnson算法则解决最短路径问题。文中还给出了DFS的Python实现示例。这些算法在路径规划、网络分析等领域有重要应用。
91 0
|
7月前
|
存储 算法 C++
c++算法学习笔记 (8) 树与图部分
c++算法学习笔记 (8) 树与图部分
|
7月前
|
算法 数据可视化 大数据
圆堆图circle packing算法可视化分析电商平台网红零食销量采集数据
圆堆图circle packing算法可视化分析电商平台网红零食销量采集数据
|
6月前
|
算法 计算机视觉
图像处理之基于图的广度优先搜索组件标记算法
图像处理之基于图的广度优先搜索组件标记算法
33 0
|
6月前
|
存储 算法
数据结构学习记录——图应用实例-六度空间(题目描述、算法思路、伪代码及解读、图解)
数据结构学习记录——图应用实例-六度空间(题目描述、算法思路、伪代码及解读、图解)
61 0
|
7月前
|
算法 数据可视化
圆填充( CIRCLE PACKING)算法圆堆图圆形空间填充算法可视化
圆填充( CIRCLE PACKING)算法圆堆图圆形空间填充算法可视化
|
7月前
|
存储 算法
图的深度优先算法
图的深度优先算法
42 0
下一篇
无影云桌面