简化您的工作流程:搜索 miniwebtool。
添加插件
主页 > 数学 > 进阶数学计算 > 旅行商问题求解器 TSP
 

旅行商问题求解器 TSP

寻找访问每个城市恰好一次并返回起点的最短路径。针对小规模实例使用精确动态规划 (Held-Karp) 算法,针对大规模实例使用最近邻 + 2-opt 启发式算法。支持输入坐标或距离矩阵,并生成动画 SVG 路径图。

旅行商问题求解器 TSP
坐标行:A, 10, 2010 20。矩阵行:0 10 15 20 — 每行一行,方阵,非负。 最多 40 个城市。
以逗号或空格分隔的标签,每行矩阵对应一个。省略则默认为 A, B, C...

Embed 旅行商问题求解器 TSP Widget

旅行商问题求解器 TSP

旅行商问题求解器是一个实用且具有教育意义的计算器,用于解决经典的旅行商问题 (TSP):给定一组城市和两两之间的距离,寻找访问每个城市恰好一次并返回起点的最短可能路径。该求解器接受平面坐标或自定义距离矩阵,根据问题规模自动选择最佳算法,并将生成的路线渲染为动画 SVG 地图。

什么是旅行商问题?

形式上,给定一个带有顶点集 $V = \{1, 2, \dots, n\}$ 和边权重 $d(i, j)$ 的完全赋权图 $G = (V, E)$,TSP 寻求顶点的排列 $\pi$,使以下各项最小化:

最小化 $\sum_{i=1}^{n-1} d(\pi(i), \pi(i+1)) + d(\pi(n), \pi(1))$

最后一项用于闭合回路。TSP 是组合优化领域中历史最悠久、研究最深入的问题之一——它在一般情况下是 NP-hard 的,这意味着目前还没有已知算法能在多项式时间内解决所有实例。尽管如此,它出现在无数现实世界的应用中:车辆路径规划、PCB 钻孔、DNA 测序、仓库拣选路径、天文观测调度,甚至是农村邮递。

此求解器的工作原理

Held–Karp 动态规划(精确算法)

对于小规模实例(最多 12 个城市),求解器使用 1962 年由 Richard Bellman 和 Michael Held & Richard Karp 独立发表的 Held–Karp 算法计算可证明的最优路径。关键递推式如下,其中 $C(S, j)$ 是从顶点 1 到顶点 $j$ 恰好访问子集 $S$ 的最短路径:

$C(S, j) = \min_{k \in S \setminus \{j\}} [ C(S \setminus \{j\}, k) + d(k, j) ]$

最优路径成本即为 $\min_{j} [C(\{1,\dots,n\}, j) + d(j, 1)]$。Held–Karp 的运行时间复杂度为 $O(2^n \cdot n^2)$,空间复杂度为 $O(2^n \cdot n)$——这比暴力破解的 $n!$ 有了巨大进步,但仍然是指数级的。超过约 20 个城市后,内存占用就会变得不切实际。

Nearest-Neighbor + 2-opt(启发式算法)

对于较大的实例,求解器使用两阶段启发式算法。首先,Nearest-Neighbor(最近邻算法)通过从每个起始顶点贪婪地走向最近的未访问城市来构建一条快速路径。求解器尝试多个起始顶点并保留最佳路径。然后,2-opt 局部搜索通过迭代地移除两条边并以唯一可能的另一种方式重新连接产生的两条路径来改进路线:

之前: ... a — b ... c — d ... 2-opt 交换后: ... a — c ... b — d ... 如果 d(a,c) + d(b,d) < d(a,b) + d(c,d) → 接受交换,反转子路径 b..c

从几何上看,2-opt 移除了路线中的所有“交叉”:任何两个交叉的线段总是可以通过解叉来获得更短的总长度。算法在没有单一交换能提供帮助的局部最优处停止,这被称为 2-optimal 路线。在现实的欧几里得实例中,2-opt 通常能在几毫秒内找到与真实最优解相差 2–5% 以内的路线。

输入格式

坐标模式 (x, y)

每行一个城市。每行格式为 标签, x, y —— 标签是可选的。求解器会自动计算欧几里得距离,并在真实位置可视化城市。

A, 10, 20 B, 40, 70 C, 75, 30 Paris: 2.35, 48.86 10 20 ← 自动标记为 C1

距离矩阵模式

一个 $n \times n$ 的非负距离方阵,每行一行,值由空格或逗号分隔。矩阵可以是对称的或非对称的——非对称矩阵模拟了单行道、可用性不同的机票价格以及受风力影响的旅行。可在“矩阵标签”字段中选择性地提供标签。

0 10 15 20 10 0 35 25 15 35 0 30 20 25 30 0

算法比较

算法 时间复杂度 内存消耗 结果质量 实用规模
暴力破解 O(n!) O(n) 最优 n ≤ 10
Held–Karp DP O(2n · n²) O(2n · n) 最优 n ≤ 20
Nearest-Neighbor O(n²) O(n) 比最优约差 25% n ≤ 数千
NN + 2-opt O(n² · passes) O(n) 比最优约差 2–5% n ≤ 数百

如何使用此求解器

  1. 选择输入模式。 如果您的城市有明确的 (x, y) 位置,请选择“坐标”;如果您的成本是非欧几里得或非对称的,请选择“距离矩阵”。
  2. 粘贴或输入数据。 每行一个城市或一行矩阵。点击表单上方的快速示例按钮可预填有效示例。
  3. 选择算法。 保持“自动”以使用正确的默认设置:当实例足够小以保证可证明的最优性时使用 Held–Karp,否则使用 NN + 2-opt。如果您想进行比较,可以强制指定特定算法。
  4. 选择闭合或开放。 闭合路径返回起点——这是传统的 TSP。开放路径模式解决相关的哈米尔顿路径问题,即销售员在不同的城市结束行程。
  5. 点击“求解”。 结果页面会显示路径总长度、路线动画 SVG(点击“重放动画”再次观看)、完整城市序列、逐边明细以及突出显示路径边的距离矩阵。

实例详解

考虑五个城市——一个矩形加一个顶点:A (0, 0), B (4, 0), C (4, 3), D (0, 3), E (2, 5)。求解器返回:

现实世界的应用

常见问题解答

什么是旅行商问题?

旅行商问题 (TSP) 要求找到访问每个城市恰好一次并返回起始城市的最短可能路径。它是组合优化中最著名的问题之一,在一般情况下属于 NP-hard 问题,这意味着目前还没有已知算法能在多项式时间内解决所有实例。

什么是 Held–Karp 算法?

Held–Karp 是一种动态规划算法,它在 $O(2^n \cdot n^2)$ 时间和 $O(2^n \cdot n)$ 内存内精确解决 TSP。它比暴力破解(n 阶乘)快得多,但仍是指数级的,因此在实践中仅用于约 20 个城市以下的实例。本求解器在城市数量不超过 12 个时使用 Held–Karp。

什么是 2-opt,为什么要使用它?

2-opt 是一种局部搜索启发式算法,它反复从当前路径中移除两条边,并以另一种可能的方式重新连接产生的两条路径。当新路径更短时,保留该交换。2-opt 每次迭代在多项式时间内运行,并能一致地找到与最优路径相差几个百分点以内的路径,这就是为什么它是大规模 TSP 实例的经典首选启发式算法。

我该什么时候使用坐标还是距离矩阵?

当您的城市位于具有直线距离的平面上时(例如地图上的点、仓库位置或电路板上的钻孔),请使用坐标。当成对成本非欧几里得时(例如机票价格、考虑交通的旅行时间、单行道距离或非对称成本),请使用距离矩阵。矩阵模式接受任何非负距离,甚至是由于单行道引起的非对称距离。

2-opt 解决方案是最优的吗?

不是,2-opt 返回的是 2-最优路径,这意味着无法通过交换单对边来产生更短的路线。这是一个局部最优解,在表现良好的实例上通常在全局最优解的几个百分点以内,但不保证是全局最佳。对于小规模实例的可证明最优路径,请选择 Held–Karp。

此工具是否支持非对称距离矩阵?

支持。在距离矩阵模式下,您可以输入任何非负方阵,包括 $D[i][j]$ 与 $D[j][i]$ 不同的非对称矩阵。Held–Karp 和 2-opt 都能正确处理非对称矩阵。这对于具有单行道、交通或受风力影响的飞行成本等实际路由问题非常有用。

延伸阅读

引用此内容、页面或工具为:

"旅行商问题求解器 TSP" 于 https://MiniWebtool.com/zh-cn/旅行商问题求解器-tsp/,来自 MiniWebtool,https://MiniWebtool.com/

由 miniwebtool 团队制作。更新日期:2026年4月21日

您还可以尝试我们的 AI数学解题器 GPT,通过自然语言问答解决您的数学问题。

其他相关工具:

进阶数学计算:

常用工具:

随机信用卡生成器MAC地址查找彩票号码生成器网址提取器英尺英寸转换为厘米相对标准偏差计算器太阳、月亮与上升星座计算器 🌞🌙✨CAGR计算器音频提取器比例计算器cpm计算器SRT转为TXT工具斜边计算器定期存款计算器二进制计算器🌡️ 体感温度计算器血糖转换器HEX计算器分数计算器样本量计算器图片打码工具音频分割器VAT计算器厘米到英尺和英寸转换器对数计算器调整视频速度MAC地址生成器随机字符串生成器wpa密钥生成器t检验计算器百分比折扣计算器随机IMEI生成器One Rep Max (1RM) 计算器随机选择器随机名字选择器srt时间偏移📅 日期计算器MAC 地址分析工具FPS 转换器合并视频椭圆周长计算器英尺到米转换器总和计算器卡方检验计算器随机扑克牌生成器毛利率计算器随机数学题生成器百分比变化计算器凯利公式计算器随机化数字💧 露点计算器kg到lbs转换器标准偏差计算器 - 高精度SHA256 哈希生成器为图片添加文字🎮 游戏灵敏度转换器质数检查器体脂百分比计算器平方根计算器真心话大冒险生成器不可见字符移除器利润计算器年龄计算器按字符数换行MD5哈希生成器图片压缩器圆形面积计算器多项式展开计算器年度天数计算器 - 今天是今年的第几天根式化简器磅转千克转换器个人贷款计算器百分比到ppm转换器Log Base 10 计算器最简分数计算器考拉兹猜想计算器SRT合并工具位数计算器罗马数字转换器图片分割器变异系数计算器圆计算器移除标点符号在线工具自酿啤酒酒精度计算器英寸到厘米转换器视频转图片提取器闰年清单随机装备生成器随机RPG角色生成器随机超能力生成器Facebook用户ID查询月亮星座计算器积分计算器文本转二进制/十六进制/ASCII转换器线性回归计算器随机颜色生成器余弦定理计算器数据传输速率转换器科学记数法计算器伊斯兰历转换器随机虚假地址生成器atan2计算器十进制到十六进制转换器分贝 (dB) 计算器工资转换计算器直方图生成器PSI 转 Bar 转换器年金现值计算器指数计算器-高精度百分比计算器矩形计算器螺栓扭矩计算器跑步配速计算器AI标点符号添加器沸点计算器IPv4/IPv6到十六进制转换器先付年金现值计算器复数计算器每个月的天数随机ip地址生成器kpa到psi转换器双曲函数计算器极坐标方程绘图器弧长计算器花样字体生成器DOY日历Voronoi 图生成器三角函数绘图器农历转换器极限计算器泰勒级数计算器箱线图生成器配速卡路里计算器随机名称生成器随机电影选择器凯撒密码工具半衰期计算器反向文字因子计算器逻辑门模拟器预期寿命计算器万花尺图案生成器惯性矩计算器枢轴点计算器百分比增加计算器相关系数计算器镶嵌图案生成器圆柱体体积计算器 高精度平均值计算器3D距离计算器方差计算器 高精度模计算器组合计算器翻转视频英亩到平方米转换器视频分割器视频压缩器Bar to PSI 转换器JWT生成器月经周期计算器条形码生成器黄金分割计算器YouTube频道统计为视频添加水印分数百分比转换器十六进制到十进制转换器卷积计算器房屋翻新利润计算器排序数字最小公倍数计算器杀手数独生成器止损止盈计算器股票盈亏计算器555定时器计算器Zalgo文本生成器参数曲线绘图器指数积分计算器新月和满月日历🖱️ 点击计数器百分比增长率计算器角速度计算器随机小数生成器两个日期之间体型计算器利率计算器商和余数计算器四分位数计算器循环播放视频成绩计算器按位计算器旅行商问题求解器 TSP误差函数计算器随机分组生成器随机扑克手牌生成器随机用户画像生成器AI Token 计数器Argon2哈希生成器Mann-Whitney U 检验计算器乘法计算器指数增长计算器 高精度AI阅读清单生成器AI健身计划生成器AI膳食计划生成器AI礼物点子生成器ai食谱生成器根据现有食材奖学金投资回报率计算器大学费用计算器语言学习流利度小时数计算器词汇测验生成器康奈尔笔记生成器学习曲线计算器抽认卡间隔重复调度器颜料调色计算器瓷砖填缝剂计算器洗碗机装载优化器洗涤剂用量计算器染发剂调配计算器打印成本计算器燃气与电力成本对比礼品卡小费计算器搬家纸箱数量计算器储物单元尺寸计算器胶囊衣橱搭配计算器皮带长度计算器液压缸推力计算器滑轮组计算器齿轮比计算器机械比热容计算器热膨胀计算器热传递计算器伯努利方程计算器雷诺数计算器太阳位置计算器潮汐时间计算器星空可见度计算器绳结打法参考工具睡袋温度评级指南帐篷地布尺寸计算器背包旅行食物重量计算器奈史密斯徒步配速计算器刺绣线长度计算器树脂浇注用量计算器串珠图案计算器陶土收缩率计算器折纸纸张尺寸计算器被子滚边计算器十字绣绣线计算器针织图案计算器编织针尺寸转换器钩针尺寸转换器马匹干草计算器宠物航空旅行航空箱尺寸查询器爬虫栖息地UVB计算器鸟笼尺寸计算器鱼缸加热棒瓦数计算器猫砂盆数量计算器前照灯光束距离计算器发动机压缩比计算器轮胎花纹磨损计算器挂车舌重计算器车辆重量分布计算器旅行费用分摊计算器刹车距离计算器工伤赔偿计算器遗嘱资产分配计算器商标分类查询工具专利申请费计算器销售税关联检查器刑期减免计算器诉讼时效计算器Airbnb 定价优化器室友房租分摊计算器Section 8 租金计算器BRRRR 方法计算器现金对现金回报率计算器租金收益率计算器1031 交换计算器财富增长可视化工具午餐花费计算器健身房 vs 家庭健身花费计算器咖啡花费计算器远程办公省钱计算器副业ROI计算器订阅费用追踪器SaaS定价计算器自由职业项目报价计算器烟熏木材搭配指南发酵时间计算器腌制时间计算器饮食限制食谱筛选器香料替代查找器咖啡因半衰期追踪器标准杯计算器葡萄酒搭配建议器攀岩难度等级转换器自行车齿轮比计算器钓鱼结强度计算器瑜伽体式保持计时器游泳SWOLF计算器跑步成绩预测计算器拳击出拳力量计算器橄榄球得分计算器板球得分率计算器足球 xG预期进球计算器网球计分器Wells评分计算器 (DVT/PE)格拉斯哥昏迷评分计算器阿普加评分计算器FFMI计算器库珀12分钟跑步计算器一英里步行测试Rockport计算器瘦体重力量计算器碳水化合物胰岛素比例计算器胰岛素敏感系数计算器希伯来历转换器跨文化年龄计算器多久以前计算器还有多久倒计时计算器日期模式生成器中间日期计算器日期添加工作日工作日计算器词频分析器句子长度方差分析器海明威风格可读性编辑器发音音标转换器维吉尼亚密码工具埃特巴什密码工具ROT13编码解码器EXIF数据查看与移除工具猪拉丁文翻译器倒推首字母缩写生成器首字母缩写生成器全字母句检查器漏字文检测器图像转SVG描摹器图片转 ASCII 艺术转换器JSON Schema 生成器TypeScript 在线演练场Less 到 CSS 编译器SCSS转CSS编译器SVG 转 React/JSX 转换器查询字符串生成器URL解析器UUID验证和解码器HTTP状态码参考cURL命令构建器谢尔宾斯基三角形生成器3D曲面绘图器朱利亚集合生成器曼德博集合探索器L-System分形生成器Delaunay 三角剖分生成器六西格玛过程能力计算器帕累托图生成器NPS净推荐值计算器留存率同期群计算器客户流失率计算器客户获取成本CAC计算器客户终身价值 CLV 计算器转化率计算器A/B测试样本量计算器A/B测试显著性计算器透镜方程计算器导线磁场计算器电场计算器库仑定律计算器斯涅尔定律计算器向心力计算器单摆周期计算器弹簧劲度系数计算器多普勒效应计算器索提诺比率计算器特雷诺比率计算器股票贝塔系数计算器通胀保值美国国债 (TIPS) 计算器房贷重新摊还计算器远期利率计算器债券久期计算器 (麦考利和修正)债券凸性计算器固定指数年金计算器变额年金计算器反向抵押贷款计算器年金支付计算器日本算盘模拟器俄罗斯农民乘法吠陀数学技巧计算器古埃及乘法计算器罗马数字数学求解器心算训练器乘法口诀表测验进位与借位可视化工具数的分合生成器硬币应用题求解器距离速度时间三角形计算器工作效率问题求解器混合问题求解器年龄问题求解器火车相遇问题求解器补水计算器药物剂量计算器酒精卡路里计算器身体重塑计算器随机辩论话题生成器随机猫狗名字生成器YouTube缩略图下载器youtube收益估算器