如何解决类似于最短路径的图论问题?

时间:2019-01-29 21:12:56

标签: algorithm graph

我正在研究格式相似但难度不同的几个问题。对于多项式(最好相对较快,但不一定),甚至其中任何一个的强力解决方案,都将有所帮助。

所有问题的想法是,您有一个加权的无向图,并且代理一开始就控制图的某些节点。如果代理已经控制两个相邻节点,则它们可以控制该节点。代理正在尝试最小化控制特定数量节点所需的时间。问题在某些细节上有所不同。

(1)您可以按顺序控制节点(即,不能同时接管多个节点)。控制一个节点所花费的时间定义为用于控制该节点的两个节点中的边的最小值。目标是控制图中的每个节点。

(2)再次,您按顺序获得了节点,目标是控制图中的每个节点。控制一个节点所花费的时间被定义为用于控制该节点的两个节点中的最大值。

(3)(1)或(2),但目的是控制一定数量的节点,而不必控制所有节点。

(4)(3),但是您可以同时控制多个节点。基本上,说节点2和4在5的时间被用来接管节点3。在5的时间里,节点2和4不能用于接管不是节点3的节点。但是,节点5和6例如可能同时接管节点1。

(5)(4),但具有未加权图。

我从问题(4)开始。我逐步使问题从(4)到(3)到(2)到(1)变得更容易,希望我可以据此构造(4)的解决方案。最后,我已经解决了(1),但是不知道如何解决其他任何问题。我对(1)的解决方案是这样的:在具有我们控制的两个相邻节点的所有候选节点中,只需选择一个耗时最短的节点即可。这类似于Dijkstra的最短路径算法。但是,这种解决方案不应解决其他任何问题。我相信也许动态编程解决方案可能会起作用,但是我不知道如何制定一个解决方案。对于这四个问题,我也都没有找到强力解决方案。某些问题也可能不是多项式可解决的,我很想知道为什么会这样。

问题的想法是我自己的,我正在解决自己的娱乐问题。但是如果能在其他地方找到它,我不会感到惊讶。

2 个答案:

答案 0 :(得分:3)

这不是问题的答案。这证明了贪婪方法无法解决问题1。

假设我们有一个包含7个节点的图。我们首先控制AB。从ABBCCD的成本都是1EF都以成本A连接到BD10G以成本A连接到BCD100

您描述的贪婪策略将分别以成本E连接到F10,然后以成本D连接到10,然后是{{1 }},费用为C,然后1,费用为G,总费用为100

最好的策略是先以成本131连接到G,然后以成本100连接CD,然后以1连接E,费用为F,总费用为10

这个例子表明,贪婪并不总是会产生正确的答案。

答案 1 :(得分:3)

我还无法提出减少的方法,但是这些问题具有NP硬网络设计和最大覆盖范围的问题,因此,如果变体(3)到(5)是易处理的。

我的实际建议是应用Biased Random-Key Genetic Algorithm框架。链接的幻灯片组涵盖了通用部分(一个个体是从节点到数字的映射;在每个步骤中,我们对个体进行排名,按原样保留前x%的“精英”个体,通过与一个随机的精英个体交叉产生y%的后代随机的非精英个体,偏向选择精英染色体,并用随机个体填充其余人口)。非通用部分是将个人转化为解决方案。我建议的出发点是每次选择探索编号最少的合格节点。