寻路算法

时间:2017-03-21 11:22:33

标签: graph path-finding

给定有向图,起点,终点和时间限制。 在每个顶点处,都有一个“值”,表示该位置的吸引力。从顶点到另一个顶点的旅行费用也很高。

我需要的是找到一个在时间限制内并具有最大“值”的路径。

1 个答案:

答案 0 :(得分:0)

要部分回答这个问题,请注意所考虑的问题是NP - 很难,因为它包含Knapsack问题作为使用以下缩减的子问题。

鉴于由利润n和权重p_1,...,p_n定义的w_1,...,w_n项目和目标容量C给出的背包问题实例,请按如下方式定义图表。 / p>

左侧有一个源节点s和一个终端节点t。对于i项,定义两个节点yes_ino_i,这对应于选择而不是选择相应的项目。 yes - 节点的吸引力为p_ino - 节点的吸引力为零。

可以将节点对想象为在源和终端之间的列中排列。每个节点都有前两列的两个入边(除了第一个列,它连接到源)。当且仅当它们是w_i - 节点的边缘时,这些边缘的权重为yes,如果它们是no - 节点的边缘,则为零。最后一列连接到终端。

st的每条路径都必须按列顺序决定是否选择相应列的项目;同样,任何项目选择都对应于从st的路径。通过定义边缘权重,路径的总权重等于项目选择的总权重,而所选yes - 节点的总权重等于所选项目的总权重

总的来说,我们获得了Knapsack实例的可行解和所描述的路径问题的构造实例的双射。总的来说,这意味着问题中的问题是NP - 很难,因为它包含背包问题(已知为NP - 硬)作为子问题。

或者,通过将完整图表中所有位置的吸引力设置为1,可以看出NP - 硬度;这个问题的特殊情况是Hamiltonian Path问题的决策版本,已知为NP - 完整。