Algorithm 构造一个包含哈密顿路径的图
背景我正在研究一个优化问题,并设法将问题简化为检查图形是否包含哈密顿路径。减少的问题如下: 问题我们得到了一系列边(例如:Algorithm 构造一个包含哈密顿路径的图,algorithm,optimization,graph-theory,hamiltonian-cycle,Algorithm,Optimization,Graph Theory,Hamiltonian Cycle,背景我正在研究一个优化问题,并设法将问题简化为检查图形是否包含哈密顿路径。减少的问题如下: 问题我们得到了一系列边(例如:e[1,5],e[3,4],…,e[2,3])。我们需要找到从这个序列开始的边的数目,这样使用这些边形成的图就包含一个哈密顿路径。我们还需要返回路径 我的算法这个问题可以从一个没有边的图开始解决。我们一个接一个地插入边,并在每次迭代中检查图是否包含哈密顿路径。通过使用哈密顿路径存在的必要条件,可以使这种方法更快一些。尽管如此,该算法仍然相当低效 一个大问题有没有一种方法可以更
e[1,5],e[3,4],…,e[2,3]
)。我们需要找到从这个序列开始的边的数目,这样使用这些边形成的图就包含一个哈密顿路径。我们还需要返回路径
我的算法这个问题可以从一个没有边的图开始解决。我们一个接一个地插入边,并在每次迭代中检查图是否包含哈密顿路径。通过使用哈密顿路径存在的必要条件,可以使这种方法更快一些。尽管如此,该算法仍然相当低效
一个大问题有没有一种方法可以更有效地解决这个问题(可能是通过使用在早期迭代中完成的计算来加速后期迭代)?我建议使用来解决这个问题。我将坚持使用框架,但您可以考虑其他选项,例如
让我们介绍一组表示图中每个顶点的布尔变量:
v_0,v_1,…,v_N
接下来,让我们引入一组布尔变量来表示每个可能的边(显然是N^2):
e_0,e_1,…,e_{N^2}
查看详细信息
当且仅当图中存在对应的顶点/边时,布尔变量X为True。在您的情况下,我们讨论的是边
此时,您可以尝试将边选择算法作为一组布尔约束引入:
如果一个图是加权的,你仍然可以使用SAT来解决这个问题,但这将是非常困难的:权重应该在给定的范围内,并且应该是离散的。但是,你可以考虑< /P>你有更多的关于步骤2是如何完成的信息吗?更具体地说,如何选择要添加的边?N有多大?有什么估计吗?inTrunky现在我正在研究N大约为100的问题,但我最终想解决N可以为10的问题^4@justhalf请看我对这个问题的编辑。这个答案提供了一种用哈密顿路径构造图的方法。我意识到我对这个问题的说明有点不清楚。我有edited问题,请看一下更新的版本。我试图解决的是检查图是否有哈密顿路径,而不是构造这样的图。@LakshayGarg您可以或多或少地使用相同的方法来检查是否有哈密顿路径。我很好奇,您真的需要增量构建图吗?我的方法允许你只需要单步构建。不,没有必要以增量方式构建图,但我不确定如何在SAT中包含最小路径权重约束。此外,对于我正在处理的问题,我相信插入边的序列将非常接近最小权重哈密顿路径。我会仍然尝试实施您的方法,看看它是否更有效。@LakshayGarg您可以使用混合整数规划来解决相同的问题。它更适合处理权重。或者您可以尝试最大满意度方法,但这将非常困难。