一些奇(mei)妙(yong)的搜索方式

dfs
bfs

迭代加深搜索:首先给DFS一个比较小的深度限制,然后逐渐增加深度限制,直到找到解或找遍所以分支为止。

启发式搜索:利用知识来引导搜索,达到减少搜索范围,降低问题复杂度的目的。(A)
定义一个评价函数f,对当前的搜索状态进行评估,找出一个最有希望的节点来扩展。
评价函数的格式:
f(n) = g(n) + h(n)
f(n):评价函数,s到t的距离的估计值
h(n):启发函数,对n到t距离的估计值
h*(n):n到t距离的真实值
g(n):s到n距离的真实值

伪代码:

while 队列非空
获取队中f函数最小的状态now
if now为目标状态
输出并退出
for now所有可以到达的状态nxt
计算f(now,nxt)
if f(now,nxt)<f(nxt)
f(nxt)=f(now,nxt)
if nxt不在队列中
nxt入队

eg.八数码问题
f(n)=g(n)+h(n) 定义h(n)为当前不在位的牌的数量
这里写图片描述
这里写图片描述
红字为遍历顺序。
A算法的缺点?第一次找到的答案不一定是最优的答案
还有A*,模拟退火神马乱七八糟的。

剪枝:可行性剪枝,最优性剪枝
eg.背包问题:
1、可行性:如果当前已经装超了,就不要再装了
2、最优性:如果把后面所有物品都放上也不能超过当前最优解的话,就不用再搜索了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值