Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Recursion 从文章中理解深度优先分枝定界(DFBB)启发式_Recursion_Search_Depth First Search_Heuristics - Fatal编程技术网

Recursion 从文章中理解深度优先分枝定界(DFBB)启发式

Recursion 从文章中理解深度优先分枝定界(DFBB)启发式,recursion,search,depth-first-search,heuristics,Recursion,Search,Depth First Search,Heuristics,我读过一篇文章,其中他们使用深度优先分支,一定会找到星际争霸2中人工智能代理的最佳构建顺序,但对其中的某些部分理解有困难 这是他们的伪代码: 我理解其中的大部分,但理解启发法有困难。他们试图在文章中解释如下: 我们的深度优先分枝定界算法允许我们基于对目标剩余路径长度的启发式评估来修剪节点。算法1的第13行显示,如果子节点的长度加上启发式评估小于上限,我们可以修剪子节点。如果我们的启发式是可接受的,这就保证了我们的计算解是最优的。我们使用以下允许的下限试探法来删减搜索: LandmarkLow

我读过一篇文章,其中他们使用深度优先分支,一定会找到星际争霸2中人工智能代理的最佳构建顺序,但对其中的某些部分理解有困难

这是他们的伪代码:

我理解其中的大部分,但理解启发法有困难。他们试图在文章中解释如下:

我们的深度优先分枝定界算法允许我们基于对目标剩余路径长度的启发式评估来修剪节点。算法1的第13行显示,如果子节点的长度加上启发式评估小于上限,我们可以修剪子节点。如果我们的启发式是可接受的,这就保证了我们的计算解是最优的。我们使用以下允许的下限试探法来删减搜索:

  • LandmarkLowerBound(S,G)-星际争霸的技术树对动作施加了许多先决条件。这些行为在搜索文献中被称为里程碑。考虑到非并发里程碑动作的顺序,我们将尚未创建的动作的个别持续时间相加,以形成搜索的允许下限
  • ResourceGoalBound(S,G)-将目标中各单元的总资源消耗成本相加,可以得出优化构建目标所需资源的下限。执行快速搜索以确定仅生成这些资源的最大完工时间是一种可行的启发式方法
然后,我们可以将这三种启发式中的最大值作为我们的启发式值h。作为搜索上限的启发式方法是平凡计划(S,G)-给定一个状态和一个目标,我们只需从目标中随机采取法律行动,并在可能的情况下发布。这保证了我们的目标得以实现,但并没有优化时间。然后,在我们的搜索中将此计划的长度用作上限

我不明白他们是怎么说LandmarkLowerBound和ResourceGoalBound会起作用的。有人能用更简单的术语解释一下这些是如何工作的吗?为什么他们需要上下限启发法?例如,我认为启发式只是一个值,该值是从该状态对目标的估计。那么,如何才能有一个上限和下限的启发式?还有,为什么需要第11行?我看没有必要