如何在图表中找到最短路径,添加最少数量的新节点?

时间:2009-10-28 12:00:42

标签: algorithm graph shortest-path

我需要在添加了最少节点数的图中找到最短路径。起始节点和结束节点并不重要。如果在指定的n节点之间的图形中没有路径,我可以添加一些节点来完成最短的树,但我想添加尽可能少的新节点。

我可以用什么算法来解决这个问题?

3 个答案:

答案 0 :(得分:1)

从开始节点开始。

如果它是目标节点,那么就完成了。

检查每个连接的节点,如果它是目标节点。如果是,你就完成了

检查是否有任何连接的节点连接到目标节点。如果是真的,你就完成了。

否则添加连接到开始和结束节点的节点。完成。

答案 1 :(得分:0)

我建议你使用遗传算法。更多信息herehere。 GA快速解释它是一种算法,可以找到优化和搜索问题的精确或近似解。

您可以创建可能解决方案的初始数量。您可以使用适应度函数对它们进行评估,以找出哪些是最合适的。之后,您使用进化算法,这些算法使用受进化生物学启发的技术,如遗传,变异,选择和交叉。

经过几代人的努力,你会发现最合适的(读取最短的)解决方案。

答案 2 :(得分:0)

您希望最小化路径中的节点数(而不是通用算法中的权重总和)。

如果是这种情况,请为所有边分配相同的权重并找到最短路径(使用通用算法)。你将拥有你需要的东西。

如果没有路径,只需将该边缘添加到图表中即可。

沙子。

PS:如果为每条边赋值为1,则路径中的节点数将为weight-1(不包括源节点和目标节点)