设T是每个节点代表一个状态的树。根表示初始状态。从父项到子项的边指定可以在父项上执行的操作以更改状态(新状态将是子项)。每个边缘与增益相关联,即,我通过从父状态转换到子状态来获得某些东西。
此外,假设从根节点到叶节点的每条路径都具有长度Q.
我的目标是找到长度为Q的最有希望的路径,即保证最大增益的路径(其中路径增益被定义为附加到路径中边缘的增益的总和)。
显然,我想在不探索整棵树的情况下这样做,因为T可能非常大。
因此,我考虑应用A *。我知道A *可用于在图表中找到最短路径,但是:
最后,我想出了一套我想向你提出的问题:
编辑:给定树中的节点n,附加到从n传出的边的增益不能大于数量U(n)。而且,随着n的深度增加,U(n)变得越来越小。
答案 0 :(得分:4)
原因如下。假设您断言路径P
是最优的,并且没有检查边e
。在不失一般性的情况下,我可以将e
的增益设置为大于树中所有其他增益之和的值。然后,您的路径P
不最佳。
因此,在检查所有边缘增益之前做出的任何最优性断言都是错误的。
如果没有给出关于边缘增益的其他信息,在没有探索整个树的情况下找不到最佳路径。
例如,如果您有增益值的上限,则可以使用A *更有效地找到最佳路径,而不是检查每条边。
撰写此答案后对您对问题所做更改的回复位于以下评论中。请务必查看它们。
答案 1 :(得分:0)
要回答这个问题,A *通常不是探索树木的正确方法。它适用于加权图,而不是树。如果您正在探索树,则使用回溯。您可以使用启发式或修剪来使回溯更加智能化。