节点访问限制的最短路径

时间:2016-06-21 20:09:47

标签: r graph-algorithm igraph shortest-path digraphs

我对经典的“最短路径”问题有一个变体,我不知道如何处理它。我的图形拓扑结构是这样的:

有一个来源和一个接收器。

其他节点由字母和下标整数指定(例如,A1,B1,C1,A2,B2,C2,...... A30,B30,C30)。每个可能的字母/整数组合有一个节点。

从源到A1,B1,C1中的每一个都有一个零成本定向边。每个节点都有一个零成本定向边缘,其中最大整数到接收器(例如,当整数达到30时,从A30到'最终目的节点'有一个零成本定向边缘,并且与B30和C30相同的边缘。

从每个节点开始,每个节点都有一个有向的加权边,其余每个字母都有一个更大的整数。

例如,可能存在从A1到B3以及从A1到C10的有向加权边缘;但是你不会看到从A1到B3和B5的边缘,因为目的地都是'B'边缘。 没有边缘从带有字母的一个节点移动到带有字母的另一个节点(例如,没有B3到B10),没有边缘从具有更高整数的节点移动到具有更低整数的节点(例如,没有B30)到C10)。

我知道我可以使用Djikstra算法找到从起点到目的地的单一最短路径,但我的目标有所不同。我想:

1)找到从源到接收器的单个最短路径,它只访问一次“字母”一次。只要我访问所有字母,任何整数组都会起作用。例如。访问源和接收器之间的节点集A1,B22和C27是可以接受的;参观A10,A15,B22不是。 2)找到两个路径,组合起来,每次只访问一次。如果'字母集'是ABCDEF,一条路线可以访问ABD和另一条CEF;但我们不能有一个路线访问ABCD而另一个访问DEF,因为D会重叠。我们的目标是确定两条路径,找到最小的长路线 - 我不关心这个极小极大的总时间。 3)与#2相同但有3条路径,4条路径等等。

我假设我可以制作一个非常复杂的整数程序,但不知道是否有最短路径算法可以解决这个问题。如果它是在R包中现成的,则可获得奖励。

拉​​尔夫

0 个答案:

没有答案