A * vs最长路径的树木

时间:2013-06-13 16:51:32

标签: algorithm tree a-star

设T是每个节点代表一个状态的树。根表示初始状态。从父项到子项的边指定可以在父项上执行的操作以更改状态(新状态将是子项)。每个边缘与增益相关联,即,我通过从父状态转换到子状态来获得某些东西。

此外,假设从根节点到叶节点的每条路径都具有长度Q.

我的目标是找到长度为Q的最有希望的路径,即保证最大增益的路径(其中路径增益被定义为附加到路径中边缘的增益的总和)。

显然,我想在不探索整棵树的情况下这样做,因为T可能非常大。

因此,我考虑应用A *。我知道A *可用于在图表中找到最短路径,但是:

  • 我没有成本,我有收获
  • 我想找到最长的路径(实际上距离起始节点的距离不是最远的,但是如果总和的话,它的权重给出最高的值)
  • 我有一棵树而不是图表(没有周期!)

最后,我想出了一套我想向你提出的问题:

  1. A *是否适合此类问题?我会通过应用找到最佳解决方案吗?
  2. 由于A *要求在最短路径的情况下使用从当前节点到目标的成本估算(欠),我需要寻找从当前节点到当前节点的增益估计值。目标并将其用作启发式算法?
  3. 给定T中的节点n,我的想法是将启发式h(n)计算为n的子元素所获得的增益的总和,这可能不是那么紧密。你认为可以有更好的解决方案吗?
  4. 编辑:给定树中的节点n,附加到从n传出的边的增益不能大于数量U(n)。而且,随着n的深度增加,U(n)变得越来越小。

2 个答案:

答案 0 :(得分:4)

分析

原因如下。假设您断言路径P是最优的,并且没有检查边e。在不失一般性的情况下,我可以将e的增益设置为大于树中所有其他增益之和的值。然后,您的路径P 最佳。

因此,在检查所有边缘增益之前做出的任何最优性断言都是错误的。

结论

如果没有给出关于边缘增益的其他信息,在没有探索整个树的情况下找不到最佳路径

例如,如果您有增益值的上限,则可以使用A *更有效地找到最佳路径,而不是检查每条边。


撰写此答案后对您对问题所做更改的回复位于以下评论中。请务必查看它们。

答案 1 :(得分:0)

要回答这个问题,A *通常不是探索树木的正确方法。它适用于加权图,而不是树。如果您正在探索树,则使用回溯。您可以使用启发式或修剪来使回溯更加智能化。