跳至主要內容

哈密尔顿路径

linwu大约 1 分钟

哈密尔顿路径

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

哈密尔顿回路
哈密尔顿回路

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

Naive 算法

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

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

回溯算法

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

参考资料

关注公众号

和小伙伴们一起学习

加入技术交流群

扫描二维码 备注加群