メインコンテンツへスキップ
← ブログに戻る

如何掌握旅行商问题

TLDR: 旅行商问题要求你恰好访问每座城市一次并返回起点,沿最短环路行走。按顺序点击城市,全部上路后按下 Check,仅当距离与最优解一致时才算获胜。失败时游戏会展示最优路线,请仔细研究·自交叉路线通常是问题根源,解开交叉即可缩短路径。

你真正要解决的问题

旅行商问题是计算机科学著名难题的简化版。你从散落在地图上的城市中的起点出发,目标明确但求解极难:恰好访问每座城市一次,然后返回起点,使总距离最短。没有公式,也没有捷径;你必须直接依据几何关系推理,并逐一比较整条路径,直到找到最优解。

随着点击,路线距离会实时显示。全部城市访问完毕后按下 Check,若你的环路与真实最优解一致则获胜并进入下一关;若更长,游戏会叠加显示真实最短路线·这是游戏最有价值的一刻。直观的视觉对比能精准指出你的错误。

让游戏保持新鲜感的是“增长”机制:每过几关,地图会增加一座城市。五城变为六城,再变为七城。每次增加看似微小,但可能的排列组合会急剧膨胀。开局一眼可辨的局面,到第十关已成为真正的优化挑战。

Traveling SalesmanOpen game →
Loading…

完整规则

先研究地图。你会看到起点标记(你的起点与终点)以及散落在周围的其他城市。你的路线始终从起点出发并回到起点·你只需点击非起点的城市,它们会构成环路。

按你希望访问的顺序点击城市。路线会自动以线段连接每次点击,距离计数器实时更新。若出现错误,可使用 Undo 移除最后一步,或使用 Clear 清除整条路线后重试。

所有城市都被点击后,按下 Check。游戏会将你的环路与穷举所有可能顺序得出的真实最优解进行比较。若一致则获胜;若更长,屏幕会并列显示两条路线供你诊断错误。

规则严格:每座城市恰好访问一次,环路必须闭合回起点,且距离必须与最优解完全一致才能获胜。没有部分得分或“差不多”的情况。

最重要模式:自交叉路线

最需要掌握的是如何发现并避免自交叉路线。大多数非最优路径失败正是因为路径自身相交。当路线两段相交时,你就在浪费距离·解开交叉几乎总能缩短路径。

为何如此?想象四座城市构成一个大致正方形。若访问顺序形成“X”形,即从左上到右下、再从右上到左下,这两段就会相交。最优路线应沿周边行走:左上、右上、右下、左下。城市相同、无交叉,总距离更短。

当游戏失败并展示最优路线时,首先查看自交叉的位置。最优解一定已解开这些交叉。通常,只需交换顺序中两座城市的定位,就能彻底消除交叉并将距离降至最优。

每次失败后,先数一下路线中的交叉数,再查看最优路线。 你能看到多少个交点?最优路线已将所有交叉消除。接着找出哪一次城市交换能消除最严重的交叉。这是学习的关键时刻·进步源于对失败的诊断,而非胜利本身。

沿周边行走。 面对新地图,先在脑中勾勒外边界·即构成凸包的最外侧城市。最优路线通常会沿周边以顺时针或逆时针顺序访问这些外侧城市,再插入内部城市。先围绕边缘构建路线,再在空隙中插入内部城市以最小化额外距离。

系统化路径构建

不要随机点击城市并寄望运气。应逐步构建路线,做出最小化回溯的局部决策。

从起点出发,问自己:首站应访问哪座城市?通常是最近的一座,或能令你横扫地图而无需回溯的位置。点击它。

每到一座城市,重复相同问题:哪个未访问城市能最小化当前增量距离?这种贪心策略未必总得最优解,但能构建出一条可用的初始路径供后续优化。

首次尝试得到路线后,在脑中复盘。哪些地方距离显得浪费?是否存在横跨地图的长段,使得本应接近的两座城市在路径中相邻?交换顺序中的两座城能否消除交叉或缩短长跳?这些微小调整常能将良好路径优化为最优路径。

贪心起步,随后优化。 始终走向最近的未访问城市,快速点击并记录距离。随后沿路线 mentally 行走,找出一次交叉、一次回溯或一处低效。交换涉及的两座城市,重新点击路线并检查是否改善。重复直至匹配最优解或无可行改进。

贪心不等于最优。 最近邻策略看似自然,但常留下冗余距离。低关级或许宽容,但随着城市数增加,贪心路径会显著落后。应以贪心法为快速起点,然后优化·不要将其当作最终答案。

常见错误与避免方法

随机点击并寄望运气。 地图几何至关重要。彼此接近的城市应在路径中连续出现,簇状城市应作为一个整体访问。随机顺序几乎必然引入昂贵的远距离跳跃,而几何感知顺序可避免此类跳跃。

失败后只微调首次路线。 失败时不要只撤销一步就重试。应完整研究游戏展示的最优路线:它与你的路线根本差异在哪?遵循了何种你未采用的原则?这种“元视角”·比较整体策略而非单个城市·才是真正提升的关键。

一条过长的路段是线索,而非巧合。 若路线中有一段横跨地图的极长边,这几乎总意味着顺序不佳。最优路线中,任何单段都不应显著长于其他段;距离应感觉均衡。一条孤立的超长跳跃,通常意味着两座距离较远的城市在路径中相邻,而本不应如此。

点击几次后感觉被锁定。 善用 Undo 与 Clear。若五座城市后感觉不对,立即清除并尝试不同起点。迭代比强行修正错误思路更高效。

寻找可记忆的公式。 每张地图都独一无二。“始终顺时针”或“优先访问上方”等规则不适用于所有地图。最优策略取决于具体几何。应训练自己针对每张新地图重新观察,而非套用记忆规则。

点击前花10秒观察地图。 哪里有簇群?哪座城市最孤立?地图大致形状是分散还是紧凑?是否存在一座远离其他所有城市、需要昂贵绕行的城市?这些观察能引导你的前几次点击,往往在未提交任何距离前就引导你走向最优路线。

随难度提升

初期四至五座城市,可能的排列尚可肉眼判断。此时你甚至可在点击前直接看出答案·扫视地图,识别最自然的环路并执行即可。

六至七关时新增一座城市,可能路线数急剧上升。肉眼判断不再可靠。此时必须依赖策略性技能:依据几何推理、识别交叉、并比较策略,而非盲目猜测。

每隔几关增加一座城市。到十二至十五关时,你将管理七至八座城市。可能路线数以数十万计,无法逐一心算。你必须从结构上思考·利用模式、信赖空间直觉,并将每张地图视为待解的几何问题,而非待记的序列。

在大型地图上分治。 在脑中将城市划分为簇或区域。先在每区域内构建高效子环路,再以最小化区域间距离的方式连接各区域。解决小规模子问题再合并,是城市数超过六或七时的可靠方法。

练习流程

每周三次、每次约十分钟的专注练习足以带来快速进步。

第一关·几何观察。 进行三局不计时游戏。点击前花15秒描述地图形状:“城市呈椭圆形,偏左有一孤立点。”让形状引导你的路线。练习在投入距离前先读懂地图结构。

第二关·消除交叉。 进行三局游戏。每次失败后,用完整一分钟对比你的路线与最优路线。数清你路线中的每一个交叉。问:哪一次交换能消除最严重的交叉?这种有意识的分析正是构建长期直觉的关键。

第三关·速度与一致性。 进行五局游戏,争取连胜三局。到第三局时,你应感受到进步·路线构建更快,交叉识别更直观,距离也更接近最优。

进步标志。 当你能在第一局就获胜,即从地图几何直接预测最优路线并成功执行,而无需依赖复盘提示时,说明你已在进步。初级玩家频繁失利;中级玩家赢得多数对局但在城市数增多时仍会不足;高级玩家可在十关及以上稳定获胜。

Traveling SalesmanOpen game →
Loading…

建立心理模式日志。 每局结束后记录有效经验:“周边策略在此奏效”或“左上角的孤立城市应最后访问”。随着时间推移,这些观察会累积为空间直觉,适用于所有未来地图,即使从未见过。

结语

旅行商问题训练的能力远超游戏本身:无需公式即可推理空间排列与优化的能力。这是工程师规划配送路线、外科医生安排手术步骤、建筑师高效布局空间时所用的同一思维方式。

游戏随你一同成长。早期关卡教授基础·点击城市、识别交叉、检查距离。后期关卡要求更深层推理·在多重约束间权衡、把握全局、在可能性爆炸时信赖空间直觉。

从你所在之处开始。玩那些处于你能力边缘的关卡。花时间从每次失败中学习。最优路线始终在那里,等待被看见。你的任务,是训练自己更快地看到它。

MemPi
次のフライトでプレイ · オフラインで動作
PlayMemorize をホーム画面に追加
Safari で 共有 をタップし、「ホーム画面に追加」を選択してください。