接下来我们对 路径进行优化

椭圆属性,圆上的每个点到 a、b 两点的距离都是一样的,我们选择爬过障碍的最短路径,计算每个点到 起点和穿透点的距离之和 ,最大说明该障碍点 离两个点最远,也就是绕过障碍的最佳点。

其实就是算是爬过障碍的一个判定点,但不全是因为可能有 多个点是一样的,只要不是这种包围型的,好像都只有一个。但是没关系。我们取第一个就好了

注:这里  B点是穿透点或者终点,我觉得是一样的效果,不过实际处理是固定为终点不变,A点初始是起点,需要不断更新为最新的最远距离点,因为从起点到第一个最远距离点的最短路径已经可以计算出来了, 接下来我们就把这个点作为起点 走向终点,

# 下图只是做个简单示范

这里是 0    j   42     end   点,只要用A*算法去优化这些点之间的路劲就是最短路径了,上上面的图不算, 看着怪怪的,原来是画错了,椭圆上点到两固定点之间的距离之和  大于两固定点之间的距离,就是竖着扁扁的,小于就是横着扁扁的,

那么我们最后只产出        起点、  最远距离点1,最远距离点2.。。。。终点。再用A*寻路算法优化这几个点之间的距离,就是最短距离。

也就是说B*寻路算法 只需要产生这些点就算完成了任务,,,至于路劲啥的,不管。

那么我们在计算 攀爬障碍时,就计算一下每个点到起点或者上一个穿透点的距离之和就行了,但是我们不会去计算。

我们在计算 这个path时,是不是连着障碍的最外圈 也计算了,因为我们 从第一个障碍点开始计算了障碍物周围最外一圈 的障碍点  加入  openset >> closeSet (临时)。      外圈可走点加入了 path.

所以  我们可以通过  两种方式  计算最远点,,,一个是计算 closeSet,  另一个是计算path.

好了这下  连障碍都懒得爬了,直接找最远点就行了。

   #障碍内圈的是 起码大于2 格子组成,不过用线性规划就可以解决任意类型的障碍,实际应用是应该没有这种单格障碍。。。。。。。哈哈哈,不然只能外圈走,内圈两头都是死路

这里特别  需要注意的是,计算外圈可走点 path是可以 判定到了达穿透点或者死路,从而中断,变成两段路径(可用和不可用通过是否到达穿透点),最后我们从所有完整到达穿透点的有效路径中取出       路径最小中的最远点

对于内圈(障碍物最外圈)不可走。也是同样两条分支路走,而且还就是分别朝着两个方向的起点走(这里在前面的代码有体现),这里内圈不太好判定,沿着边缘障碍点走,如果前面的地图边界,那么我们就放弃该路径,从起点的另一个分支走,但是这个分支一直走(假设不在地图边缘,也就是说我们会一直走一圈 走到原点。再从所走路径中取最远点。)好像也行,但是考虑到没有判定点,不能确定最远点是不是在有效路径里面。

所以这里我们干脆加入一个穿透点的  前一个障碍点作为判定不就好了。这样内外圈就是一样的了

我们找到障碍内圈最远的距离点,它周围八个点中所以   ==0的可走点,算一下距离就可以了。

高效算法,B*寻路算法,python版,思维优化(3),python实现B*寻路算法相关推荐

  1. mooc数据结构与算法python版期末测验_中国大学数据结构与算法Python版答案_MOOC慕课章节期末答案...

    中国大学数据结构与算法Python版答案_MOOC慕课章节期末答案 更多相关问题 java.lang 包的 Character 类的 isJavaIdentifierStart 方法的功能是用来判断某 ...

  2. spark编程基础python版 pdf_Spark编程基础Python版-第5章-Spark-SQL.pdf

    <Spark编程基础(Python版)> 教材官网:/post/spark-python/ 温馨提示:编辑幻灯片母版,可以修改每页PPT的厦大校徽和底部文字 第5章Spark SQL (P ...

  3. 漫画算法python版下载_用 Python 下载漫画

    ReLIFE 1. 开篇 前一阵子看了 Relife 这部七月番动画,短短 13 集很快就看完,深深无法自拔,然后去查了下,发现原来是改编自漫画的,于是立马去找漫画的资源,但是搜来搜去都没有找到资源下 ...

  4. 人工蜂群算法的最小搜索模型_【优化求解】人工蜂群ABC算法

    一.人工蜂群算法的介绍 人工蜂群算法(Artificial Bee Colony, ABC)是由Karaboga于2005年提出的一种新颖的基于群智能的全局优化算法,其直观背景来源于蜂群的采蜜行为,蜜 ...

  5. python版小说分割转换器 | #python

    前段时间写了个简单的[url=http://greatghoul.iteye.com/blog/610134]TXT2HTML小说转换器HTA版[/url],现在拿python再实现一遍,自动按章节分 ...

  6. 中文分词算法python代码_中文分词算法之最大正向匹配算法(Python版)

    最大匹配算法是自然语言处理中的中文匹配算法中最基础的算法,分为正向和逆向,原理都是一样的. 正向最大匹配算法,故名思意,从左向右扫描寻找词的最大匹配. 首先我们可以规定一个词的最大长度,每次扫描的时候 ...

  7. python栈应用_栈应用之 后缀表达式计算 (python 版)

    栈应用之 后缀表达式计算 (python 版) 后缀表达式特别适合计算机处理 1.  中缀表达式.前缀表达式.后缀表达式区别 中缀表达式:(3 - 5) * (6 + 17 * 4) / 3 17 * ...

  8. python ocr高精度识别_OCR识别-python版(一)

    需求:识别图片中的文字信息 环境:windows系统 开发语言:python 使用工具类:1.pyocr 2.PIL 3.tesseract-ocr 步骤: 1.pyocr 网络通直接使用命令: pi ...

  9. python计算gpa,Python版GPA计算器

    最近在网申投简历时遇到一个需要计算GPA的问题,想起自己在上学时写的Excel公式版GPA计算器略显low,而且操作也比较复杂,于是一时兴起,写了个Python版的,在此分享给大家! 准备工作: 用户 ...

  10. Python版名片管理系统源代码

    Python版名片管理系统,功能: 新增名片(记录用户的姓名,电话,QQ,邮箱): 显示所有名片: 查询名片: 查询成功后可以修改,删除名片 运行截图: cards_main.py :程序的入口,完整 ...

最新文章

  1. mybaits七:select查询返回list集合
  2. java文件递归_java递归处理文件夹和文件
  3. Tkinter的OptionMenu组件
  4. Javascript覆盖率(jstd)报表解析Maven插件
  5. 03-1.JavaScript基础语法略写/模版字符串
  6. JavaWeb学习----Cookie实现记住密码的功能
  7. 谷歌云试图抢占SAP软件云市场;企业上云迎来“黄金时代”;IBM和SAP帮助金融机构加快采用云技术……...
  8. python多线程扫描_Python多线程扫描端口代码示例
  9. 计算机网络基础-目录
  10. 通过在Global.asax文件中配置Application来统计的方法
  11. [单反六]查看快门数
  12. UI自动化学习过程get的知识点
  13. qq群文件安全检测未通过最完美解决办法
  14. 栈中的peek()、pop()和push()、Add()方法
  15. Java 日志框架详解
  16. arduino学习:本人编写的单个传感器控制电机运转的代码
  17. windows7、ubuntu双系统安装
  18. 视频营销3-视频设备清单
  19. 秦始皇焚书坑儒只因曾被算命先生忽悠?
  20. 金三银四春招特供|高质量面试攻略

热门文章

  1. 蓝牙耳机接听电话声音小怎么办?通话品质好的蓝牙耳机
  2. Adams2020软件安装教程
  3. 基于QT c++开发的音乐播放器
  4. iOS如何实时查看App运行日志
  5. 【订单服务】库存解锁和关单
  6. Android仿微信底部菜单栏+今日头条顶部导航栏
  7. 华为手表开发:WATCH 3 Pro(10)获取心率
  8. 数组转集合的方法(注意事项)
  9. struts2初步使用及详解
  10. R和Rstudio中包的安装、加载和查看等操作