我需要在添加了最少节点数的图中找到最短路径。起始节点和结束节点并不重要。如果在指定的n节点之间的图形中没有路径,我可以添加一些节点来完成最短的树,但我想添加尽可能少的新节点。
我可以用什么算法来解决这个问题?
答案 0 :(得分:1)
从开始节点开始。
如果它是目标节点,那么就完成了。
检查每个连接的节点,如果它是目标节点。如果是,你就完成了
检查是否有任何连接的节点连接到目标节点。如果是真的,你就完成了。
否则添加连接到开始和结束节点的节点。完成。
答案 1 :(得分:0)
我建议你使用遗传算法。更多信息here和here。 GA快速解释它是一种算法,可以找到优化和搜索问题的精确或近似解。
您可以创建可能解决方案的初始数量。您可以使用适应度函数对它们进行评估,以找出哪些是最合适的。之后,您使用进化算法,这些算法使用受进化生物学启发的技术,如遗传,变异,选择和交叉。
经过几代人的努力,你会发现最合适的(读取最短的)解决方案。
答案 2 :(得分:0)
您希望最小化路径中的节点数(而不是通用算法中的权重总和)。
如果是这种情况,请为所有边分配相同的权重并找到最短路径(使用通用算法)。你将拥有你需要的东西。
如果没有路径,只需将该边缘添加到图表中即可。
沙子。
PS:如果为每条边赋值为1,则路径中的节点数将为weight-1(不包括源节点和目标节点)