图论---Hamilton圈

本文介绍了如何利用lingo软件解决图论中的Hamilton圈问题。通过对图中任意两点间的最短距离计算,构建完全图,并通过0-1变量表示边的选择。通过设置约束条件确保每个顶点的出度和入度为1,进一步确保形成的是一个圈。然而,仅凭这些条件无法保证唯一解,因此需要增加额外条件限制边的数量,以排除多个圈的情况。最后,文章讨论了编号策略和处理分段函数的问题,以适应lingo求解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

用lingo求解hamilton圈

hamilton圈:

包含的每个顶点的轨叫做Hamilton(哈密顿)轨;闭的Hamilton轨叫做Hamilton圈或圈;含Hamilton圈的图叫做Hamilton图。

直观地讲,Hamilton图就是从一顶点出发每顶点恰通过一次能回到出发点的那种图,即不重复地行遍所有的顶点再回到出发点。

分析:hamilton圈要每个点不重复的经过,因此要确定他,只需要确定选那几条边即可,假设有n个点的图,首先用flod算法算出任意两点的最短距离,此时可得到一个完全图。这时我们只需确定n条边即可。如果群举的话只需在 的2倍选出n条边,这时我们列出约束条件,用lingo求解:

一条边选不选我们用0-1变量标记(1表示选,0表示不选)

这时我们根据hamliton圈的特点(任意一个顶点的出度和入度都为1)列出约束条件



此时我们列出着两个条件,但不能确定是负这两个条件一定能得到hamilton圈,我们可以举反例试试能不能推翻它,

这时发现:若一共有6个人,3个一首尾相连,即有两个圈,此时他不是hamilton圈,因此我们还要增加条件,

让他只能形成一个圈,其实一个圈和多个圈的不同就是:构成这个圈的边的数量不同,因此增加条件:

先随便写一点:

从一点k1(编号)出发,就可以确定下一个点k2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值