先来做个小思想实验:假设龙哥是一个轮式巡检机器人,被丢进一个堆满货架、匣子、障碍物的仓库里,老板下达的任务是——去检查货架上的 8 个重点区域,然后回到充电桩。看似简单,但问题来了:先查哪个后查哪个?从 A 区域到 B 区域,是穿过左边空隙还是右边通道?到了某个区域后,是直接走去下一个,还是先绕个圈调整姿态再走?这些选择叠在一起,组合出无数条可能的巡线。更可怕的是,如果允许“绕圈”,那理论上机器人可以在任意两个区域之间无限绕圈,路线数量直接爆炸成无限多。传统办法要么老老实实把所有组合拆开暴力搜,要么用启发式碰运气。而这篇论文给出的答案是:把“无限条路”的问题装进一个统一的搜索框架里,30 秒内全部解完,还附带一个“最优性保证书”。这篇论文由 Jingtao Tang 和 Hang Ma 共同完成,核心是把经典图论中的 Steiner 旅行商问题(Steiner Traveling Salesman Problem,即只要求访问指定的目标子集、其他节点仅作中转)搬到“凸集图”上,然后设计了一套统一的分支定界搜索算法,同时解决访问顺序、是否绕路、以及连续轨迹的最优化问题。
问题背景与挑战:从GCS到Steiner-TSP
很多读者可能不熟悉“凸集图”(Graphs of Convex Sets,简称 GCS)这个概念。简而言之,它是一张特殊的地图:每一个节点都挂着一个凸的几何区域(比如机器人关节空间里的一个无碰撞区域),每条边则代表两个区域之间允许的连续过渡。机器人在每个区域里可以取无数个具体位姿,而“从一个区域动到另一个区域”不再是简单的线段连接,而是要找一条满足物理约束的连续轨迹。这种图把离散的路线选择(走哪个节点)和连续的轨迹优化(在区域内怎么走)强行绑在了一起。经典的旅行商问题(Traveling Salesman Problem,TSP)要求访问图上所有节点并回到起点。而本篇论文研究的是它的“指定子集版”变体——Steiner-TSP:只有一部分节点是必须访问的“目标”,其余节点只是可用可不用的“中转站”。这与现实中机器人巡检场景高度契合:你关心的是货架上的几个检查点,而不是整个空间里的每个角落。凸集图上的Steiner旅行商问题,寻找从根节点r(红色)出发、访问所有目标凸集(黄色)并返回的最小代价闭合轨迹。黑色虚线为有向GCS边(实际走过的边为实线)。橙色解(a)可以不重复访问任何顶点;蓝色解(b)则是利用了顶点重复访问、达到了全局最优,圆圈数字标识了底层的GCS边。这个模型允许在访问过程中重复经过某个节点。可别小看这个“允许”,图1给出了一个很微妙的例子:橙色解不绕路也能走通,但蓝色解专门绕了个圈、代价反而更小。这说明“不重复访问”这种在古典组合优化里常用的约束,在连续轨迹规划里不仅是不必要的,甚至可能直接丢掉最优解。而一旦允许重复访问,有限图也能产生无限多条走走停停的回路——这就是本论文要啃的第一块硬骨头:如何在无限解空间里做搜索。严格地说,论文要优化的目标函数是这样的:一条由k个顶点组成的轨迹,其总代价是每一步的顶点代价与边代价之和。公式1:轨迹总代价定义。其中x_i 为第i个顶点对应的连续变量(表示机器人位姿),c_v 为该顶点代价(如表征停留耗时),c_(v_i,v_i+1) 为相邻两个顶点之间边的转移代价。整个问题的约束包括:首尾都在根节点r、轨迹形成闭环、必须覆盖全部目标集合V_t、并且每个连续步都要满足图上的边关系。这样一套“离散顺序+连续轨迹”联合优化的问题,即便固定一条路径,剩余的子问题也是凸优化;但路径本身就组合爆炸,整体是NP难的。更麻烦的是,候选解不再能预先限定为无环walk(一串允许重复经过顶点的顶点序列)。因为无环候选集可能根本不存在可行解,即使在存在的情况下,其最优解也可能比带绕圈的差(图1就展示了这种情形)。
[1] Jingtao Tang, Hang Ma. Unified Branch-and-Bound Search for the Steiner Traveling Salesman Problem on Graphs of Convex Sets. arXiv:2608.21319, 2026.[2] 项目主页(含可视化与视频):https://sites.google.com/view/steiner-tsp-gcs[3] 论文中引用的GCS、GHOST等文献详见原文参考文献列表。