A* 算法、PathFinding问题中的 allow diagonal 和 don't cross corners,以及 .map文件格式(续)
前文:
A* 算法、PathFinding问题中的 allow diagonal 和 don't cross corners,以及 .map文件格式
上篇讲了些关于地图文件 .map 的介绍,本文主要讲下PathFindding中的allow diagonal 和 don't cross corners。
在PathFinding问题中每个点都是一个坐标点,在地图中大致形式如下:
但是在实际地图显示中是不会以点的显示来形式的,地图上每一个坐标点都是用一个小方块来进行表示的,一个完整的地图(带有坐标点的形式)如下:
也就是说每个坐标点是(x, y)的形式,但是在图形显示的时候是使用一个方块的形式,在实际计算的时候我们依然使用坐标点(x, y)的形式,方块只是用于可视化形式,一个坐标点和其具体的显示形式如下:
关于 allow diagonal :
顾名思义,这个选项代表是否可以用对角线的形式连接坐标点,下面给出一个不使用对角线连接的一个路径图示意:
可以看到坐标点之间的连接都是横向和纵向的,没有对角线方向的。
如果使用对角线连接的方式,示意图如下:
重点在于下面的这个对角结构:
假设坐标点之间的间距为1,那么方块的长宽也为1,如果不允许对角线连接的情况下坐标点之间的连接长度只能为1,但是如果允许对角线连接那么相邻坐标点之间的连接距离可以为1也可以为\(\sqrt{2}\)
关于don't cross corners :
在论文:https://webdocs.cs.ualberta.ca/~nathanst/papers/benchmarks.pdf
中可以知道,在允许对角线连接的情况下( allow diagonal ),如果don't cross corners对角线两侧的坐标均不能被占用(不能有障碍物,必须是可穿越的)
下面这个对角线是可以穿越的(allow diagonal 并且 don't cross corners):
但是,如果对角线两侧有障碍物则不能对角线连接,如:
(下面三种形式在allow diagonal 并且 don't cross corners情况下是违法的,是不允许存在的)
(1)
(2)
(3)(这种情况不论是否 allow diagonal 也不论是否 don't cross corners 均是违法的)
也就是说在don't cross corners情况下,即使allow diagonal,那么在上面的三种情况不能进行对角线连接。
在don't cross corners情况下,如果allow diagonal,那么上面的三种情况只能像下面这样处理:
为了更形象的说明在don't cross corners情况下,allow diagonal是不能在相邻坐标点的连接对角线两侧有不可穿越点的,给出下面的App应用的演示:
App地址:https://qiao.github.io/PathFinding.js/visual/
例子:(允许cross corners)
重点在:
上面的情况,如果 allow diagonal 并且 don't cross corners,则有:
A* 算法、PathFinding问题中的 allow diagonal 和 don't cross corners,以及 .map文件格式(续)的更多相关文章
- 任意半径局部直方图类算法在PC中快速实现的框架。
在图像处理中,局部算法一般来说,在很大程度上会获得比全局算法更为好的效果,因为他考虑到了图像领域像素的信息,而很多局部算法可以借助于直方图获得加速.同时,一些常规的算法,比如中值滤波.最大值滤波.最小 ...
- 06 - 从Algorithm 算法派生类中删除ExecuteInformation() 和ExecuteData() VTK 6.0 迁移
在先前的vtk中,如vtkPointSetAlgorithm 等算法派生类中定义了虚方法:ExecuteInformation() 和 ExecuteData().这些方法的定义是为了平稳的从VTK4 ...
- 1145: 零起点学算法52——数组中删数II
1145: 零起点学算法52--数组中删数II Time Limit: 1 Sec Memory Limit: 64 MB 64bit IO Format: %lldSubmitted: 293 ...
- KMP算法 --- 在文本中寻找目标字符串
KMP算法 --- 在文本中寻找目标字符串 很多时候,为了在大文本中寻找到自己需要的内容,往往需要搜索关键字.这其中就牵涉到字符串匹配的算法,通过接受文本和关键词参数来返回关键词在文本出现的位置.一般 ...
- 剑指Offer——算法复杂度中的O(logN)底数是多少
剑指Offer--算法复杂度中的O(logN)底数是多少 前言 无论是计算机算法概论.还是数据结构书中,关于算法的时间复杂度很多都用包含O(logN)这样的描述,但是却没有明确说logN的底数究竟是多 ...
- AES加解密算法在Android中的应用及Android4.2以上版本调用问题
from://http://blog.csdn.net/xinzheng_wang/article/details/9159969 AES加解密算法在Android中的应用及Android4.2以上 ...
- tarjan算法-解决有向图中求强连通分量的利器
小引 看到这个名词-tarjan,大家首先想到的肯定是又是一个以外国人名字命名的算法.说实话真的是很佩服那些算法大牛们,佩服得简直是五体投地啊.今天就遇到一道与求解有向图中强连通分量的问题,我的思路就 ...
- 利用“海底捞算法”在MongoDB中优雅地存储一棵树
目前常见的树形结构数据库存储方案有以下四种,但是在处理无限深度.海量数据的树结构时,都存在一些问题: 1)Adjacency List(邻接表):每个节点仅记录父节点主键.优点是简单,缺点是访问子树需 ...
- 图像处理之优化---任意半径局部直方图类算法在PC中快速实现的框架
在图像处理中,局部算法一般来说,在很大程度上会获得比全局算法更为好的效果,因为他考虑到了图像领域像素的信息,而很多局部算法可以借助于直方图获得加速.同时,一些常规的算法,比如中值滤波.最大值滤波.最小 ...
- 正整数构成的线性表存放在单链表中,编写算法将表中的所有的奇数删除。(C语言)
/* 正整数构成的线性表存放在单链表中,编写算法将表中的所有的奇数删除 */ #include <stdio.h> #include <stdlib.h> typedef st ...
随机推荐
- Nodejs中间件 中间件分类和自定义中间件
中间件 中间件理解 中间件可以理解为业务流程的中间处理环节.如生活中吃一般炒青菜,大约分为如下几步骤 express中当一个请求到达的服务器之后,可以在给客户响应之前连续调用多个中间件,来对本次请求和 ...
- mysql 常用脚本语法
mysql 常用脚本语法 创建表: CREATE TABLE test_db1.test_table1 ( id INT auto_increment NOT NULL, my_name varcha ...
- perfers-color-scheme 使用简单介绍
perfers-color-scheme 简介 prefers-color-scheme 媒体查询属性用于检测用户操作系统是否使用深色模式. 属性值 dark 表示用户操作系统使用深色模式 light ...
- Vue 打包相关
Vue 打包相关 vue-cli-service build# 用法:vue-cli-service build [options] [entry|pattern] 选项: --mode 指定环境模式 ...
- Oracle 数据库 命令行安装
Oracle 数据库 命令行安装 1. 准备工作 关闭 防火墙,关闭 SElinux 2. 安装相关依赖包 yum -y install binutils compat-libcap1 compat- ...
- HDU2062题解 01背包而已
RT,我就不解释了,题目连接http://acm.hdu.edu.cn/showproblem.php?pid=2602. 初学01背包的人可以做做 #include<iostream> ...
- ARM 命名规则和ARM 版本
结论:我们所接触到提到的命名规则,应该分成两类. 基于ARM Architecture版本的"指令集架构"命名规则:例如armv6, armv7, armv7s, arm64 等系 ...
- 背包DP——多重背包
多重背包也是 0-1 背包的一个变式.与 0-1 背包的区别在于每种物品有 k 个,而非一个. 朴素 直接把相同的每个物品视作各个单独的物品,没有关联,仅条件相同: 转换后直接用01背包的状态转移方程 ...
- 张高兴的 MicroPython 入门指南:(一)环境配置、Blink、部署
目录 什么是 MicroPython 环境配置 硬件部分 软件部分 Hello World! Blink Pico 的引脚 常见电子元件 面包板 跳线 开关 发光二极管 电阻 使你的 Pico 闪烁 ...
- k8s网络原理之flannel
首先当你创建一个k8s集群后一般会存在三种IP分别是,Pod IP,Node IP,Cluster IP 其中一个Cluster IP之下包含多个Node IP,而一个Node IP之下又包含多个Po ...