哈密顿路径与回路
哈密顿路径经过图中每个顶点恰好一次;若最后还能沿一条边回到起点,则为哈密顿回路。例如四边形 中, 是哈密顿路径,按 走就是哈密顿回路。回到起点的重复只用于闭合,不算重新访问一个待遍历顶点。这里讨论有限简单无向图;有向图也可作类似定义,但相邻顺序必须遵守箭头。
与欧拉问题区分
哈密顿问题要求“不漏顶点”,允许某些边完全不用;欧拉路径要求“不漏边”,允许某些顶点被多次经过。把一个三角形与一个四边形只共用一个顶点拼在一起,两圈的边可从公共顶点出发分别走一遍,形成欧拉回路;却没有哈密顿回路。因为若从三角形走到四边形,必须经唯一公共顶点;想回到三角形或闭合全图还需第二次经过它。这说明两个概念不能仅凭名字里的“路径”互换。
必要条件与一个反例
有哈密顿回路的图中,每个顶点在回路上要有一条进入边和一条离开边,所以顶点度数至少为 2。图也必须连通,且删去任意一个顶点之后仍应连通:将回路上的该顶点及两条相邻边删掉,剩下的回路部分是一条经过所有其余顶点的路径。故存在割点的图不可能有哈密顿回路。这里得出的只是必要条件;满足它们仍可能没有哈密顿回路。
例如完全二分图 连通、每个顶点度数至少为 2,却没有哈密顿回路:任何二分图中的回路在左右两组之间交替,因此在两组使用的顶点数相等; 两组分别有 2 与 3 个顶点,无法在一个回路中各用尽。这个反例也提醒读者,检查最低度数只是开始,不是构造的替代品。
小图上的构造与复杂性
若图有顶点 ,候选顺序 只有在 都是边时才构成哈密顿路径;若还存在 ,才构成回路。验证一个给定顺序很直接:检查顶点是否各出现一次,再逐对检查相邻边。可是寻找顺序一般要在许多排列中选择,不能把“容易验证”误写成“容易求得”。对任意图判定哈密顿回路是否存在是经典的 NP 完全问题;特殊结构的图可以使用专门定理或动态规划,不应声称一项简单度数公式可解决全部图。
再看一个能帮助自己构造路线的边界情形:若图中有度数为 1 的顶点 ,任何哈密顿路径若存在, 只能是路径的一个端点;路径若在 的中间经过,就必须从同一条唯一边进出,违反顶点不重复。若度数为 1 的顶点超过两个,哈密顿路径也不存在,因为一条路径只有两个端点。四点链 有两个度数为 1 的端点,确有哈密顿路径 ,却无哈密顿回路。由此可以先用度数排除部分图,再对尚有可能的图寻找具体顺序。
哈密顿问题常把“每个地点到一次”抽象出来;若再给边加距离并要求总距离最短,就进入旅行商问题,目标比仅判定是否有一圈更强。阅读图论和二分图可先弄清图中的顶点、边及交替结构。