哈密顿环,也称为哈密顿回路、哈密顿圈或哈密顿路径,是一个穿过图的图环(即闭环),它恰好访问每个节点一次(Skiena 1990, p. 196)。 具有哈密顿环的图被称为哈密顿图。 按照惯例,单例图 被认为是哈密顿图,即使它不具有哈密顿环,而两个节点的连通图 则不是。
哈密顿环以威廉·罗文·哈密顿爵士的名字命名,他设计了一个谜题,其中寻求沿多面体边的十二面体的这种路径(二十面体游戏)。
图的哈密顿环可以使用 Wolfram 语言 有效地计算,使用FindHamiltonianCycle[g][[All, All, 1]][[1]](其中返回的环不一定是字典序第一个)。图的所有简单(无向)环都可以有效地计算时间(但内存开销超过表示实际环所需的 10 倍),使用Sort[FindHamiltonianCycle[g, All][[All, All, 1]]]。(请注意,默认情况下,返回的环不一定按排序顺序返回。)可能的Method选项包括FindHamiltonianCycleinclude"Backtrack", "Heuristic", "AngluinValiant", "Martello"和"MultiPath"。 此外,Wolfram 语言 命令FindShortestTour[g] 尝试找到最短路径,这对于哈密顿图 来说是一个哈密顿环(初始顶点在末尾重复),如果它返回的列表的第一个元素等于 的顶点计数。
可以使用以下命令获取许多命名图的哈密顿环的预计算列表GraphData[graph,"HamiltonianCycles"]。 类似地,可以使用以下命令获得相应哈密顿环数量的预计算计数GraphData[graph,"HamiltonianCycleCount"]..
对于阶数 , 2, ... 的所有简单图,有向哈密顿环的总数分别为 0, 0, 2, 10, 58, 616, 9932, 333386, 25153932, 4548577688, ... (OEIS A124964)。
恰好具有一个哈密顿环的图被称为唯一哈密顿图。
一般而言,找到哈密顿环的问题是 NP 完全问题(Karp 1972;Garey 和 Johnson 1983, p. 199),因此确定给定的通用图是否具有哈密顿环的唯一已知方法是进行详尽的搜索。 Rubin (1974) 描述了一种有效的搜索程序,可以使用极大地减少回溯和猜测的推导来查找图中的一些或所有哈密顿路径和回路。 Angluin 和 Valiant (1979) 提出的概率算法,由 Wilf (1994) 描述,也可能有助于找到哈密顿环和路径。
所有柏拉图立体都是哈密顿图(Gardner 1957),如上图所示。
恰好有五个已知的连通非哈密顿顶点传递图,即路径图 、彼得森图 、考克斯特图 、三角形替换彼得森图和三角形替换考克斯特图。 正如 Gould (1991) 引用 Bermond (1979) 所述,Thomassen 推测所有其他连通顶点传递图都是哈密顿图(参见 Godsil 和 Royle 2001, p. 45;Mütze 2024)。
Khomenko 和 Golovko (1972) 给出了一个公式,给出了任何长度的图环的数量,但它的计算需要计算和执行涉及大小高达 的所有子集的矩阵运算,这使得计算成本很高。 Khomenko 和 Golovko 公式的一个大大简化和改进的版本,用于 -环(即哈密顿环)的特殊情况,给出
其中 是邻接矩阵 的子矩阵的第 次矩阵幂,其中删除了行和列的子集 , 是矩阵迹 (Perepechko 和 Voropaev)。
下表总结了各种图类上的(无向)哈密顿环的数量。-超立方体由 Gardner (1986, pp. 23-24) 考虑,然而他给出了 -超立方体的计数,对于 , 2, ... 为 2, 8, 96, 43008, ... (OEIS A006069),这必须除以 才能得到不同(有向)环的数量,而不管起始顶点如何,都将点的位移视为等效。
图 | OEIS | 序列 |
Andrásfai 图 | A307902 | 0, 1, 5, 145, 8697, 1109389, 236702901, ... |
反棱柱图 | A306447 | X, X, 16, 29, 56, 110, 225, 469, 991, 2110, 4511, ... |
-黑主教图 | A307920 | X, X, 0, 4, 704, 553008, , 13802629632, 1782158930138112, ... |
鸡尾酒会图 | A307923 | 0, 1, 16, 744, 56256, ... |
完全图 | A001710 | 0, 0, 1, 3, 12, 60, 360, 2520, 20160, 181440, ... |
完全二部图 | A010796 | 0, 1, 6, 72, 1440, 43200, 1814400, ... |
完全三部图 | A307924 | 1, 16, 1584, 463104, 29928960, ... |
-交叉棱柱图 | A007283 | X, X, X, 6, 12, 24, 48, 96, 192, 384, 768, 1536, ... |
皇冠图 | A306496 | 1, 6, 156, 4800, 208440, 11939760, 874681920, ... |
立方体连接环图 | A000000 | X, X, 6, 28628, ... |
环图 | A000012 | X, X, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ... |
折叠立方体图 | A307925 | X, 0, 3, 72, 23760, 332012113920, ... |
网格图 | A003763 | 0, 1, 0, 6, 0, 1072, 0, 4638576, 0, ... |
网格图 | A000000 | 0, 6, 0, ?, 0, ... |
半立方体图 | A307926 | 0, 0, 3, 744, 986959440, 312829871511322359060480, ... |
超立方体图 | A066037 | 0, 1, 6, 1344, 906545760, ... |
-国王图 | A140519 | X, 3, 16, 2830, 2462064, 22853860116, ... |
-骑士图 | A001230 | X, 0, 0, 0, 0, 9862, 0, 13267364410532, ... |
-梯形图 | A057427 | 0, 1, 1, 1, 1, 1, 1, ... |
莫比乌斯梯形 | A103889 | X, X, X, 6, 5, 8, 7, 10, 9, 12, 11, 14, 13, 16, 15, ... |
Mycielski 图 | A307927 | 0, 1, 10, 102310, ... |
奇图 | A301557 | X, 1, 0, 1419264, ... |
置换星图 | A000000 | 0, 0, 1, 18, ... |
棱柱图 | A103889 | X, X, 3, 6, 5, 8, 7, 10, 9, 12, 11, 14, 13, 16, ... |
-皇后图 | A307928 | 0, 3, 1960, 402364270, 39741746126749664, ... |
车图 | A269561 | X, 1, 48, 284112, 167875338240, ... |
太阳图 | A000012 | X, X, 1, 1, 1, 1, 1, 1, ... |
环面网格图 | A222199 | X, X, 48, 1344, 23580, 3273360, ... |
转置图 | A307896 | 0, 0, 6, 569868288, ... |
三角图 | A307930 | X, 0, 1, 16, 3216, 9748992, ... |
三角形网格图 | A112676 | 1, 1, 3, 26, 474, 17214, 685727, ... |
轮图 | A000027 | X, X, X, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, ... |
-白主教图 | A307929 | X, X, 1, 4, 396, 553008, 4701600128, 1782158930138112, ... |
下表总结了其中一些图类的闭合形式,其中 、 和 是 的根, 是第二类修正贝塞尔函数。