首先是几个定义:
定义1
如果对于每对非相邻顶点u和v,d(u)+ d(v)> = n,则图G =(V,E)称为“密集” 其中n = | V |和d(*)表示顶点的程度*
定义2
G上的“哈密顿循环”是一个顶点序列(vi1,vi2,...... vin,vi1),所有l!= h和{vil,vil}的vil!= vih G的边缘。
问题是:编写一个程序,给定一个密集的无向图G =(V; E)作为输入,确定G是否在G上允许哈密顿循环并输出该循环(如果有的话),或输出`` N''如果没有。
我的解决方案是找到从源开始的所有可能路径,并检查是否存在返回此源的路径。不幸的是,这种解决方案效率不高。
有什么建议吗?谢谢。
答案 0 :(得分:7)
根据Ore's theorem,满足定义1的图总是具有哈密顿循环,而Palmer's algorithm将在O(n 2 )中给出一个。
答案 1 :(得分:-2)
问题是NP难。所以我不希望任何解决方案比蛮力更快。