搜索中的剪枝技术

剪枝法是针对于数据结构中的搜索进行一些简化,从而节省了一些不必要的遍历时间。

剪枝方法一:奇偶剪枝法

 

 可以把迷宫(map)形象的简化为如下所示:
 
0 1 0 1 0 1
1 0 1 0 1 0
0 1 0 1 0 1
1 0 1 0 1 0
0 1 0 1 0 1
注释如下:
 
从为0的格子任意走一步必走向为1的格子;从为1的格子任意走一步必走向为0的格子;
即:
从0-->1或1-->0,所走的步数必为奇数步;从1-->1或0-->0,所走的步数必为偶数步;
结论为:
 
从0-->1或1-->0,且要求所用的时间为偶数,或者从0-->0或1-->1,且要求所用的时间为奇数,
可直接判断不可到达。
 
现在假设所在位置 (x,y)  与目标位置 (dx,dy) 。

如果abs(x-y)+abs(dx-dy)为偶数,则说明abs(x-y) 和abs(dx-dy)的奇偶性相同,需要走偶数步。

如果abs(x-y)+abs(dx-dy)为奇数,那么说明abs(x-y) 和abs(dx-dy) 的奇偶性不同,需要走奇数步。

理解为abs(x-dx)+abs(y-dy) 的奇偶性就确定了所需要的步数的奇偶性!

而(t-sec) 表示剩下还需要走的步数,由于题目要求要在t 时恰好到达,那么(t-sec) 与abs(x-y)+abs(dx-dy) 的奇偶性必须相同。

因此temp= t-sec-abs(x-dx)-abs(y-dy) 必然为偶数!

 

剪枝方法二:

整个迷宫可走的路的步数之和应该大于所给的时间(规定每走一步花一秒)

思考一下,如果该迷宫可走的路的步数之和小于或等于所给的时间会发生什么事;即不可能恰好花掉所给的时间走到终点

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值