我对束搜索算法有一个问题。
假设n = 2
(我们将从每个节点扩展的节点数)。所以,在开始时,我们只有根节点,从它扩展出2个节点。现在,从这两个节点中,我们再扩展两个节点。因此,目前我们有4个叶节点。我们将继续这样做,直到找到答案。
束搜索是这样工作的吗?它只是扩展每个节点的n = 2
个节点,还是始终保持2个叶节点?
我曾经认为n = 2
意味着我们应该从每个节点最多有2个活跃节点,而不是整个树的两个节点。
回答:
在“标准” 束搜索 算法中,每一步,你当前“知道”的节点总数是有限的 – 而不是从每个节点你将要跟随的节点数。
具体来说,如果n = 2
,这意味着“束”的大小始终最多为2。因此,最初,你从一个节点开始,然后发现所有从它可达的节点,但丢弃所有节点,只保留两个,并以2个节点完成第一步。在第二步,你有两个节点,你将扩展这两个节点,并再次丢弃所有节点,只保留正好2个节点(总共,不是从每个节点!)。在接下来的步骤中,同样,你将在每一步后保持2个节点。
选择保留哪个节点通常是通过某种启发式函数来评估哪个节点最接近目标。
请注意,束搜索算法既不完整(即,如果存在解决方案,它可能找不到),也不最优(即,它可能找不到最佳解决方案)。最好的理解方式是,当n = 1
时,它基本上简化为最佳优先搜索。