哈密顿回路图,与欧拉回路图正好互相呼应,欧拉回路要求通过每条边一次且仅仅一次,而哈密顿回路图则要求通过每个顶点一次且仅仅一次。
哈密顿回路图有一个重要的问题:traveling salesperson problem,TSP,就是所谓的 *货郎担* 的问题–>要求在图中发现经过所有顶点且总距离最短的路线。(这里说的距离是路径上所有边的权的总和。而不是路的长度)
据现在的研究(当然不是我啦,我只是站在巨人的肩膀上前行),迄今没有一个能简单判定 哈密顿图 的充要条件。从算法设计理论来说,还没有有效的方法可求得该问题的精确解。好在有(nearest neighbor algorithm)最近邻居算法,(best-edge algorithm)最佳边算法 都能给出比较不错的结果。
这里说说其中一个算法
nearest neighbor algorithm 算法基本思想
① 从任何节点开始,将其加入到解的集合中
② 从与该结点连接的边中选择最短的那条边的结点加入到解的集合中,这就是所谓的最近邻居。若同时有多条边距离相等, 任选一条即可。
③ 从上述运算所选的最近邻居出发,重复上述过程,但应避免已选择过的结点,以免形成回路。
④ 当所有结点都加到解的集合中后,将最后加入的结点与起始结点连接,就可以得到哈密顿回路了。