搜索技巧——奇偶剪纸
一、
关于奇偶剪枝
1、
首先举个例子,有如下4*4的迷宫,'.'为可走路段,'X'为障碍不可通过
S...
....
....
...D
从S到D的最短距离为两点横坐标差的绝对值+两点纵坐标差的绝对值 = abs(Sx - Dx) + abs(Sy - Dy) = 6,这个应该是显而易见的。
遇到有障碍的时候呢
S.XX
X.XX
...X
...D
你会发现不管你怎么绕路,最后从S到达D的距离都是最短距离 + 一个偶数,这个是可以证明的
而我们知道:
奇数 + 偶数 = 奇数
偶数 + 偶数 = 偶数
因此不管有多少障碍,不管绕多少路,只要能到达目的地,走过的距离必然是跟最短距离的奇偶性是一致的。
所以如果我们知道从S到D的最短距离为奇数,那么当且仅当给定的步数T为奇数时,才有可能走到
如果给定的T的奇偶性与最短距离的奇偶性不一致,那么我们就可以直接判定这条路线永远不可达了
2、引图举例
(1)、
现假设起点为(sx,sy),终点为(ex,ey),给定 t 步恰好走到终点,
s |
||||
| |
||||
| |
||||
| |
||||
+ |
— |
— |
— |
e |
如图所示(“|”竖走,“—”横走,“+”转弯),易证 abs(ex-sx)+abs(ey-sy) 为此问题类中任意情况下,起点到终点的最短步数,记做step,此处step1=8;
s |
— |
— |
— |
|
— |
— |
+ |
||
| |
+ |
|||
| |
||||
+ |
— |
— |
— |
e |
如图,为一般情况下非最短路径的任意走法举例,step2=14;
step2-step1=6,偏移路径为6,偶数(易证);
结论
推广之,若 t- [abs(ex-sx)+abs(ey-sy)] 结果为非偶数(奇数),则无法在 t 步恰好到达;返回,false;
反之亦反。
(2)、
还是以这个为例子吧,现在我把矩阵填满 0 和 1 [1]
0 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
0 | 1 | 0 |
1 |
0 | 1 | 0 | 1 |
0 |
1 |
0 |
1 |
0 |
我们现假设从 0 开始走,则不难证明,
从任意 0 走到任意 1 始终是奇数步;
从任意 0 走到任意 0 始终是偶数步;
引用描述里的“例子”, s 到 e 的最短步数为 t (当然你也可以理解成此时到终点刚好剩余 t 步等等)。
则,我们从 s 到 e 的步数之和(或者说总距离)总可以表示成 sum= t + extra ( extra>=0 ),其中 extra 表示额外的步数。
如:
s |
— |
— |
— |
|
— |
— |
+ |
||
| |
+ |
|||
| |
||||
+ |
— |
— |
— |
e |
此时 t=8,sum=14,所以我们容易得到 extra=6。也就是说按照这个走法,需要在最短的步数上再走额外的 6 步(先不用太在意这些偏移是在什么地方产生的)。
又如:
s |
— |
— |
— |
|
— |
— |
+ |
||
| |
+ |
|||
| |
+ | — | e | |
+ |
— |
— |
此时,t=7,sum=15,所以我们也容易得到 extra=8。
(3)、
根据理科生的天性,由这两个一般性的例子,我们很容易嗅察到 extra 都为偶数。先带着疑惑,
再来看我给的 0 、1 矩阵。
0 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
0 | 1 | 0 |
1 |
0 | 1 | 0 | 1 |
0 |
1 |
0 |
1 |
0 |
设左上角坐标为(1,1),右下角坐标为(5,5).
那么我们给的例1,
起点 s 的坐标为(1,1),此点为“0”;
终点 e 为(5,5),此点为“0”。
所以 t=8,为偶数。
现在我们再倒过来看,从终点(也就是 e )出发,把最短步数 t=8 耗费掉,不妨这样走,
s |
+ | |||
+ |
— | |||
| | ||||
+ | — | |||
— |
— |
e |
如图所示从 e (5,5)耗费 8 步走到了(1,5)点。
因为是从 0 走偶数步,所以走到的坐标也一定是 0 ,就像这里的(1,5)点是 0 一样。
这是一个递归的过程,首先如果从0开始,目的地也是0,那么其中的最短距离 t 必然是个偶数,可其中有可能有障碍物或需要绕弯的情况,那么我们就现将最短距离 t 用于绕弯,从开始的0,走t步不管怎么走都只能到0,而这个0到终点0的最短路径t也必然是偶数,一直递归下去,直到你绕够了到达终点,这中间你额外的步数都是偶数。
注意到,(1,5)点和起点 s (1,1)都是 0,也就是说,这个 extra 必然是偶数!
再看例2,同样从终点 e 开始耗费 t=7 步,
则所到的点一定是 0 (不管它在哪里),再从这个点回到起点 s ,所用的 extra 也必然是个偶数!
所以无论如何,sum= t + extra ( extra>=0 ) 中的 extra 都是一个偶数
那么我们就可以用公式 t-[abs(ex-sx)+abs(ey-sy)] 计算出extra是否为偶数来判断当前点能否恰好在这么多步到达终点了。
以上来自百度百科
搜索技巧——奇偶剪纸相关推荐
- 最值得一看的几条简单的谷歌 Google 搜索技巧!
可能你和我一样,几乎每天都必须与搜索引擎打交道,不过很多时候,你辛辛苦苦搜了半天也没找到合适的资料,然而"高手们"上来一眨眼功夫就能命中目标了.这并不是别人运气好,而是搜索引擎其实 ...
- Google和Baidu常用的搜索技巧--转
原文链接:http://mp.weixin.qq.com/s?__biz=MjM5NTY0MTY1OQ==&mid=2654509772&idx=1&sn=754454e374 ...
- 实用的 GitHub 仓库搜索技巧
前言 我们经常在 GitHub 上学习开源项目,但是 GitHub 众多的仓库总是会让我们眼花缭乱,不能在较短的时间里找到自己想要的项目. 这里分享一下我刚学到的 GitHub 仓库搜索技巧,在记录所 ...
- 百度超级搜索技巧集锦
1."开始连接"."正在连接"搜索免费电影 网络上有很多热心人提供免费电影的下载地址.为了表明真实可靠,把下载过程也同时附上.现在最流行的下载工具是flashg ...
- github搜索技巧:快速搜到你想要的!
前言 不得不说 GitHub 简直就是程序猿的福地,聚集了众多大神在上面分享,在这里可以发现无限的优良资源,不管是初学者还是正在进阶中的青铜王者,都可以在上面找到适合自己的好东西,用好 GitHub ...
- 案例 github_github 项目搜索技巧-让你更高效精准地搜索项目
作者:Suwanbin www.cnblogs.com/suwanbin/p/12113751.html github 搜索技巧 参考自 B站 up 主 CodeSheep 的视频[如何高效地在网上找 ...
- 成为高效程序员的几大搜索技巧
对于缺乏编程知识的人来说,完全有可能编写一个网页或小程序.如果在用Google搜索相关示例时幸运的话,可以搜到现成的代码.即使是经验丰富的程序员,通常也会为了节省时间和精力而在网上搜索解决方案. 如果 ...
- 如何使用搜索技巧来成为一名高效的程序员
没有人是完全独立的孤岛,每个人都是整体的一部分.-- 约翰·多恩 对于缺乏编程知识的人来说,完全有可能编写一个网页或小程序.如果在用Google搜索相关示例时幸运的话,可以搜到现成的代码.即使是经验丰 ...
- github搜索技巧_和逛知乎、刷微博一样高效使用 GitHub
自打毕业之后,可以说每天打开 Github 或Email 看有没有 watch 项目的消息或者自己项目的 issue,然后在Explore 看看社区内项目的走势,紧接着开始写代码搬砖的工作,偶尔也会关 ...
最新文章
- python统计特定类型文件数量_分享一些常见的Python编程面试题及答案
- html footer 布局,详解CSS经典布局之Sticky footer布局
- winform中捕获程序未处理的所有异常
- java开头流程_【java读书笔记】——java开篇宏观把控 + HelloWorld
- Understanding JVM Internals---不得不转载呀
- 一文贯通python文件读取 1
- javaWEB总结(9):自定义HttpServlet
- centos安装最新版的docker-ce(二进制安装)
- Xml序列化、反序列化帮助类
- html标记语言 --超链接
- !!终于把【库存管理的大致功能完成了!】
- python 三色球问题
- ASP.NET mvcConf Videos Available
- 四叉树lod结合灯塔AOI
- TCP 协议面试灵魂 12 问(二)
- 2023陆军工程大学计算机考研信息汇总
- 如何低成本化实时网络摄像头监控直播?
- Android动画之Tween Animation
- ICE之——IceGrid负载均衡部署
- .NET Core解决MVC视图中的中文被html编码的问题
热门文章
- node.js学习笔记Day3
- 化繁为简,我用”知晓推送”开发微信小程序订阅消息
- Bootstrap3基础 table-striped 表格实现隔行换色(浅灰色与白色交替)
- 运用计算机计算电力系统潮流,潮流电力系统论文,关于电力系统潮流计算现状展望相关参考文献资料-免费论文范文...
- 搜狗如何打特殊符号 - 搜狗特殊符号的打法!!
- 这几个群,程序员可千万不要进!
- 四和能聚分析做直播带货的商家通常发布什么类型的短视频
- 计算机U盘那种好,u盘什么主控好,u盘主控比较
- mysql购买服务_云数据库MySQL购买须知
- 易岸公考:国考公务员高频常识