搜索算法实例应用

概述

搜索算法实际上是根据初始条件和扩展规则构造一棵“解答树”并寻找符合目标状态的节点的过程。
一个具体的问题抽象成一个图论的模型——树,即搜索算法的使用第一步在于搜索树的建立。
初始状态对应着根节点,目标状态对应着目标结点。完成搜索的过程就是找到一条从根结点到目标结点的路径,找出一个最优的解。

优化策略

(1)减少节点数,思想:尽可能减少生成的节点数
(2)定制回溯边界,思想:定制回溯边界条件,剪掉不可能得到最优解的子树

主要有盲目搜索,启发式搜索,博弈搜索

案例场景

在农夫过河问题中找到最优过河策略

解决:广度搜索,通过形式化状态空间,采用元组形式表达空间状态形式,通过施加限制条件,遍历所有可行方案,从中找出最优解决方案。
优化:可以采用双向广度搜索,由目标状态出发,逆向搜索。

在棋类游戏中,如何选择最优的下棋策略

解决:博弈搜索,深度,广度搜索。棋类对战游戏往往是博弈搜索。其中又以零和博弈为主。通过迭代搜索构建搜索树,得到结果。
优化:状态空间多,搜索树庞大,通过剪枝算法减去不必要的扩展节点,从而减少迭代深度和计算广度,同时,采用更好的评价函数,可以减少计算。

罗马尼亚度假问题

解决:深度,广度搜索,启发式搜索。每一个城市节点作为搜索树的一个状态节点,可以遍历整个搜索树得到结果,但时间空间复杂度太高。
优化:可以采用启发式搜索,用欧氏距离衡量状态节点的好坏,从而使每一步尽可能的得到最优的状态节点,以最快的速度收敛到目标。

八数码问题

解决:广度搜索,启发式搜索,csp算法。最经典的就是回溯算法,遍历构造整个搜索树,但时空开销大,可以进行一些细微改进。
优化:进行剪枝,将整个棋盘表示为一个矩阵,在每次放下皇后时,将棋盘上皇后可以攻击的位置进行标注,在每次放下皇后之后,检查剩余的行和列是否可以继续放下皇后,若存在某一行均处在皇后的攻击范围内,则退回下一步,搜索下一个位置,通过增加一个判定函数可以有效减少无效的搜索分支,预先判断棋盘的可摆放位置。提高算法的效率。

扫地机器人寻路

解决:深度有限搜索,扫地机器人属于人机交互类,真实世界具有状态空间,具体表现为脏与不脏,对应机器人的动作状态,向前后左右移动和进行清洁。可采用深度有限的搜索

求解方程极值

解决:群体智能搜索算法,粒子群,蚁群,遗传算法。通过将方程的每一个解表达为一个个体。由方程给出评估函数,通过迭代求出最优质最优解。

地图着色(csp问题)

解决:禁忌搜索,回溯搜索。此类问题具有许多约束条件,具体表现为地图块与块之间的颜色约束,问题有许多变量,对应有许多值域。可通过限制状态,或者状态矛盾后回溯解决。

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值