• 人工智能(三)上——通过搜索进行问题求解(有信息搜索策略)




    一、无信息与有信息搜索

    • 无信息搜索又名盲目搜索:

    •在搜索时,只有问题定义信息可用。

    •盲目搜索策略仅利用了问题定义中的信息。


    • 有信息搜索:

    • 在搜索时,当有策略可以确定一个非目标状态比另一种更好的搜索,称为有信息的搜索。



    二、最佳优先搜索

    •思想: 使用一个评估函数 f(n)给每个结点估计他们的希望值。 优先扩展最有希望的未扩展结点。

    •实现: fringe表中根据希望评估值从大到小排序

    •最佳优先搜索策略有:

    • 贪婪最佳优先搜索
    • A* 搜索



    (一)贪婪最佳优先搜索

    •评估函数: f(n) = h(n) (heuristic,启发函数) = 估计从结点n到目标的代价

     例如:hSLD(n) = 从结点 n 到 Bucharest的 直线距离

    •贪婪最佳优先搜索优先扩展看上去更接近目标的结点(启发式函数评估出来的)



    • 完备性? No – 可能陷于死循环当中

    • 比如, Iasi  Neamt  Iasi  Neamt 

    时间? O(bm), 但一个好的启发式函数能带来巨大改善

    • 空间? O(bm)

    • 最优性? No


    (二)A* 搜索

    • 思想: 避免扩展代价已经很高的结点。

    • 评估函数 f(n) = g(n) + h(n)• g(n) = 到达结点n已经发生的实际代价

    •  h(n) = 从结点n到目标的代价估计值
    • f(n) =评估函数,估计从初始结点出发,经过结点n,到目标的路径代价的估计


    1.可采纳的启发式函数

    • 如果启发式函数h(n)对于任意的结点n都满足 h(n) ≤ h*(n),这里 h*(n)是指从结点n到达目标的真正代价,则称h(n)是可采纳的。

    • 定理: 如果h(n)是可采纳的,则 A* 树搜索算法是具有最优性。


    • 完备性? Yes

    • 时间? 指数级

    • 空间? 将所有产生的结点存储在内存中

    • 最优性? Yes


    (三)A*的改进方法

    存储受限制的启发式搜索: 

    思想:迭代加深的A*算法,用一个f-cost代替有限制的深度优先中的d作为截断值,进行剪枝。


    递归最佳优先搜索(RBFS)

    • 尝试模拟标准的最佳优先搜索而只需线性空间。

    1. 记录当前节点的祖先可得到的最佳可替换路径的f值。

    2. 如果当前的f值超过了这个限制,则递归将转回到替换路径。

    3. 向上回溯改变f值到它的孩子的最佳f 值

    4. 重复扩展这个上个节点,因为仍有可能存在较优解。


    (简单)存储限制的A*

    • 当内存满了的时候删除最坏的节点




  • 相关阅读:
    ASP.NET MVC下的四种验证编程方式
    tp框架下,数据库和编辑器都是utf-8, 输出中文却还是乱码
    按拼音首字母排序
    PHP 文件导出(Excel, CSV,txt)
    RedisDesktopManager 可视化工具提示:无法加载键:Scan..
    window下redis如何查看版本号
    jQuery 防止相同的事件快速重复触发
    input中加入搜索图标
    JS搜索商品(跟外卖app店内搜索商品一样) ,keyup函数和click函数调用
    JS正则对象 RegExp(有变量的时候使用),用来匹配搜索关键字(标红)
  • 原文地址:https://www.cnblogs.com/bryce1010/p/9387140.html
Copyright © 2020-2023  润新知