简化您的工作流程:搜索 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计算器样本量计算器百分比折扣计算器VAT计算器HEX计算器比例计算器随机扑克牌生成器二进制计算器毛利率计算器音频提取器FPS 转换器月亮星座计算器定期存款计算器随机名字选择器时间持续计算器SRT转为TXT工具音频分割器kg到lbs转换器斜边计算器图片打码工具年龄计算器血糖转换器股票平均成本计算器厘米到英寸转换器MAC地址生成器厘米到英尺和英寸转换器📅 日期计算器随机IMEI生成器两个日期之间磅转千克转换器视频转图片提取器随机字符串生成器合并视频分数计算器英寸到厘米转换器MAC 地址分析工具卡方检验计算器💧 露点计算器螺栓扭矩计算器凯利公式计算器圆计算器百分比变化计算器One Rep Max (1RM) 计算器🎮 游戏灵敏度转换器随机分组生成器英尺到米转换器调整视频速度srt时间偏移质数检查器椭圆周长计算器三角函数绘图器百分比增长率计算器罗马数字转换器图片分割器年度天数计算器 - 今天是今年的第几天百分比计算器石头剪刀布生成器随机用户代理生成器对数计算器随机化数字SHA256 哈希生成器t检验计算器最简分数计算器商和余数计算器条形码生成器利润计算器MD5哈希生成器百分比增加计算器线性回归计算器每个月的天数随机超能力生成器日历DOY日历半衰期计算器圆形面积计算器职位查找器Facebook用户ID查询随机坐标生成器快速傅里叶变换FFT计算器电池续航计算器分数百分比转换器移除标点符号在线工具随机端口号生成器位数计算器为图片添加文字平方根计算器随机装备生成器六西格玛过程能力计算器逻辑门模拟器随机颜色生成器体脂百分比计算器数字提取器两点间距离计算器分贝 (dB) 计算器视频压缩器SRT合并工具复合增长率计算器股息收益率计算器行数统计工具AI Token 计数器自酿啤酒酒精度计算器随机字母生成器黄金分割计算器kpa到psi转换器命运数字计算器圆台计算器方向场斜率场绘图器质数分解计算器闰年清单Log Base 10 计算器图片添加线条圆柱体体积计算器 高精度填字游戏制作器查找并替换文本年金现值计算器组合计算器随机数字选择器AI改写工具AI标点符号添加器卧推计算器根式化简器箱线图生成器PSI 转 Bar 转换器方差计算器 高精度获取字符串长度迷宫生成器AI内容检测器Instagram用户ID查询🎲 掉落概率计算器楼梯计算器百分比减少计算器英亩到平方米转换器随机域名生成器YouTube频道统计克到磅转换器工资转换计算器IPv4/IPv6到十六进制转换器为视频添加水印十进制到十六进制转换器平均值计算器盎司到克转换器字符计数器相关系数计算器磅到克转换器视频分割器图片压缩器模计算器死链检查器黄金时刻和蓝调时刻计算器AI语言检测器标准偏差计算器 - 高精度科学计算器atan2计算器克到盎司转换器🎰 抽卡保底计算器🌍 碳足迹计算器线性方程组求解器误差函数计算器平均偏差计算器指数计算器-高精度旋转视频沸点计算器百分比到ppm转换器隐形文本生成器YouTube缩略图下载器⏱️ 倒计时器农历转换器双重积分计算器真心话大冒险生成器翻转视频随机圣经经文生成器鞋码转换器文本去重工具十六进制到十进制转换器坡度与倾斜度计算器幻方生成器折扣计算器斜率截距式计算器步数距离计算器随机生日生成器anova计算器原根计算器⏱️ 小时计算器工作日计算器文本格式化工具标准误差计算器直方图生成器竖式加减法计算器配色方案生成器随机物品生成器标准杯计算器葡萄酒搭配建议器攀岩难度等级转换器自行车齿轮比计算器钓鱼结强度计算器瑜伽体式保持计时器游泳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 三角剖分生成器Voronoi 图生成器万花尺图案生成器镶嵌图案生成器帕累托图生成器NPS净推荐值计算器留存率同期群计算器客户流失率计算器客户获取成本CAC计算器客户终身价值 CLV 计算器转化率计算器A/B测试样本量计算器A/B测试显著性计算器透镜方程计算器导线磁场计算器电场计算器库仑定律计算器斯涅尔定律计算器惯性矩计算器角速度计算器向心力计算器单摆周期计算器弹簧劲度系数计算器多普勒效应计算器索提诺比率计算器特雷诺比率计算器股票贝塔系数计算器通胀保值美国国债 (TIPS) 计算器房贷重新摊还计算器远期利率计算器债券久期计算器 (麦考利和修正)债券凸性计算器固定指数年金计算器变额年金计算器反向抵押贷款计算器年金支付计算器日本算盘模拟器俄罗斯农民乘法吠陀数学技巧计算器古埃及乘法计算器罗马数字数学求解器心算训练器乘法口诀表测验进位与借位可视化工具数的分合生成器硬币应用题求解器距离速度时间三角形计算器工作效率问题求解器混合问题求解器年龄问题求解器火车相遇问题求解器补水计算器配速卡路里计算器药物剂量计算器酒精卡路里计算器身体重塑计算器随机辩论话题生成器随机猫狗名字生成器随机数学题生成器随机段落生成器随机英文句子生成器砾石、砂和表土计算器钢材重量计算器管道流量计算器梁荷载计算器美元换黄金转换器期权概率计算器股票拆分计算器员工持股计划计算器发票滞纳金计算器自由职业者时薪计算器租赁与购买对比计算器高级小费分摊计算器装箱清单生成器时差反应计算器旅行预算计算器飞行距离计算器热损失计算器发电成本计算器用水量计算器家电用电成本计算器家庭能源审计计算器太阳能投资回报率计算器太阳能板计算器堆肥CN比计算器草坪肥料计算器霜冻日期计算器高床种植箱土壤计算器NPK肥料计算器种子发芽率计算器视频比特率计算器音乐调性转换器音乐BPM节拍点击器照片文件大小估算计算器百万像素到打印尺寸计算器裁切系数计算器曝光三角计算器车辆牵引能力计算器汽车租赁计算器0–60与四分之一英里计算器电动车充电时间计算器电动汽车续航计算器3D距离计算器环面计算器不规则多边形面积计算器正多边形计算器圆锥曲线识别器双曲线计算器长除法计算器Twitter/X 字符计数器YouTube评论抽选器YouTube标签提取器youtube收益估算器随机RPG角色生成器