一致启发式的证明意味着条件可容许

问题描述

我试图证明一致的启发式意味着可接受的条件

我读过的证据之一here

  1. 让h(n)成为节点n的启发式值,并让c(n,n + 1)成为从节点n到节点n + 1的成本。

  2. 我们假设h(ng)= 0; ng是目标节点。

  3. 非正式地,我们希望从目标节点回溯,这表明如果我们从h(ng)= 0的可允许节点开始,则根据一致性规则,其父节点将是可允许的,并且模式继续。 / p>

  4. 考虑某个节点n并假设在n处的启发式值是可接受的。

  5. 我们希望其父节点(例如n-1)也可以被一致性定义所接受。

  6. 通过一致性,我们得到了:

    h(n-1)-h(n)

  7. c(n-1,n)是从n-1到n的实际路径成本。

  8. 因为我们知道h(n)是可容许的,所以我们知道h(n)必须小于或等于从n到ng的路径成本。

  9. 因此,h(n-1)

  10. 由于h(n)小于或等于从(n到ng)的路径成本,所以h(n-1)

我的问题是:在第7步中: c(n-1,n)是从n-1到n的实际路径成本,他们如何确定c(n-1,n )是实际路径吗?因为从这个假设出发,它们是指实际路径中成本最低的路径?

在同一参考文献中,他们还提供了正式证据:

  1. 假设我们有一些一致的启发式h。还要假设h(ng)= 0,其中ng是目标节点。

  2. 通过一致性定义,图中所有节点n的h(n)

  3. 我们想证明对于所有n,h(n)

  4. 基本情况:我们开始将ng-1视为ng表示目标状态的任何路径的节点:

    h(ng-1)

  5. 由于ng是最佳目标状态,因此假设h(ng)= h *(ng)

  6. 因此,我们可以将以上内容重写为:

    h(ng-1)

  7. 并给出了

    c(ng-1,ng)+ h *(ng)= h *(ng-1) 我们可以看到 h(ng-1)

  8. 归纳假设:假设对于某个任意节点(位于距目标路径上),ng-k大于h(ng-k)

  9. 归纳步骤:看看是否总是这种情况,我们考虑ng-k-1th:

h(ng-k-1)<=c(ng-k-1,ng-k)+h(ng-k)
  1. 从基本情况来看,我们知道:
h(ng-k-1)<=c(ng-k-1,ng-k)+h(ng-k)<= c(ng-k-1,ng-k)+h*(ng-k)
h(ng-k-1)<=c(ng-k-1,ng-k)+h*(ng-k)
  1. 我们再次知道:
h(ng-k-1,ng-k)+h*(ng-k)=h*(ng-k-1) 
so we can see :
h(ng-k-1)<=h*(ng-k-1) 

对于第8步和第12步,同样是一个问题,为什么要考虑:c(该节点,下一个节点)+ h *(下一个节点)= h *(该节点)?

解决方法

我能够证明:

c(ng-1,ng)+ h *(ng)= h *(ng-1)我们可以说h(ng-1)

如果c(ng-1,ng)不是从ng-1到目标的最佳路径,那么我们假设从ng-1到ng'-1到g的另一路径是最佳路径,因此:

ng-1-> ng'-1-> g是最佳路径

因为h是一致的:

h(ng'-1)

h(ng-1)

h(ng-1)

对于节点数量更多的任何最佳路径也是正确的

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...