知情搜索(一)-启发法

启发法是一个提高复杂问题解决效率的实用策略,它引导程序沿着一条最可能的路径到达解,忽略最没有希望的路径,能避免去检查死角,只使用已搜集的数据。

启发式搜索方法的目的是看了到达目标状态情况下极大地减少节点的数目。

启发式搜索:

  • 决定接下来扩展的节点,而不是严格按照广度优先或深度优先的方式进行扩展
  • 在生成节点的过程中,决定哪个节点是后继节点,以及待生成的后继节点,而不是一次性生成所有可能的节点
  • 确定某些节点应该从搜索树中丢弃(或裁剪掉)

爬山法

爬山法背后概念是爬山过程中,你可能接近了顶部的目标节点,但是你无法从当前位置到达目标。它最简单的形式是一种贪婪算法,它使用一种测度(最大化这种测度或最小化这种测度)来指导它到达目标。

最陡爬山法

最陡爬山法是你能够接近某个目标状态,能够在给定的状态下做出决策,并且从多个可能的选项中做出最好的决定。

伪代码实现:

//steepest-ascent Hill climbing
Hillclimbing(Root_Node, goal)
{
    Create Queue Q;
    If(Root_Node = goal) return sucesses
    Push all the children of Root_Node in to Q
    while(Q_Is_Not_Empty)
    {
        Find the child which has minium distance to goal
    }//end of while
    Best_child = the child which has minium distance to goal
    If(Best_child is not a leaf)
        Hillclimbing(Best_child, goal)
    Else
        If(Best_child = goal) return Success
        retum failure;
    }//end of function
}

某些情况下,爬山法可能出现的问题:山麓问题高原问题山脊问题

山麓问题(局部最大值)

爬山者认为他可能到达山顶,但实际上他到达后看到的并不是山顶。就好比你要去一个公园,从地图和里程表上显示你已经到达了,实际你到达后发现公园的唯一入口在其他地方。

高原问题(相似的局部最大值)

假设有一些良好的相似的局部最大值,但是为了达到最大值必须移动另一个高原。好比有相似的两栋建筑物,你要到达指定的房间,当你越来越接近这房间时,你发现自己身处在错误的建筑物中。

山脊问题

虽然可能存在好的指示让我们接近目标,但在建筑物中它们处于错误的楼层。好比逛百货商店,发现自己要买的商品在其他的楼层。

解决措施

解决局部最大值的方法是回溯,回溯到更早的节点并尝试不同的方向。

当在相邻区域中许多点出现相似值时,可以通过多次应用相同的规则,尝试到达搜索空间的新区域。

山脊问题可以通过一次应用几个规则在几个方向上进行搜索,从而防止被困在某个位置。

 

最佳优先搜索

最佳优先搜索为了到达目标节点,它会做出探索哪个节点和探索多少节点的决定。

伪代码实现

//Best-First Search
BestFirstSearch(Root_Node, Goal)
{
    Create Queue Q;
    Inser Root_Node to Q;
    while(Q_Is_not_Empty)
    {
        G = remove from Q
        If(G = goal) return path from Root_Node to Q
        while(G has child nodes)
        {
            If(child is not inside Q)
                Insert child node to Q
            Else
                insert the child which has minimum value into the Q,delet all the other nodes.
            sort Q by value //smallest Node at the top 
        }
    }
    return failure
}

与爬山法相比,最佳优先搜索的优势在于可以通过回溯开放所有开放列表的节点,从错误、假线索、死胡同恢复。

 

集束搜索(Beam Search)

Beam Search(集束搜索):是一种启发式图搜索算法,在图的解空间比较大的情况下,为了减少搜索所占用的空间和时间,在每一步深度扩展的时候,剪掉一些质量比较差的结点,保留下一些质量较高的结点。

 

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Travis.X

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值