我正在寻找一个问题的名称和一个algortihm的解决方案。
我有一个连接节点图(A..Z),其中每个节点都连接到每个其他节点。我想绘制通过这些节点访问给定节点子集(A,D,K,W)的最短路径。该路径可以包括不在子集中的节点,即A-> C-> W-> D-> K是可接受的。节点之间的旅行成本是非负的,但不一定是线性的。因此,来自A-> B-> C的路径段可以比A-> C更短“
我认为这是旅行营业员的变种。
答案 0 :(得分:2)
我不知道此问题是否有特殊名称,但很容易将其缩小为所选节点的原始旅行商问题。
让所有节点的集合为V
和所选节点W
。我将首先折叠不在W
中的节点来获取多图(如图,但在同一对节点之间可以有多个边)。这里的每条边可以是V\W
中的简单边或一系列边和节点。为了将它减少到常规图形,我们只需要为每对节点选择最短的边缘,因为任何其他节点显然都不是答案的一部分。现在我们必须解决缩小图形的结果旅行商问题,然后在原始图形中重建相应的路径 - 我们在原始图形中写下了实际路径,每个边缘在简化图形中对应。