A*(A star)搜索算法

news2025/1/11 16:47:39

A*搜索算法是一种启发式算法,利用现有的信息进行搜索的一种方法。
首先,定义横纵相邻方格之间的距离为10,对角相邻方格的距离为14(本文设定可以向8个方向前进,也可以根据需求设置为4个,比如只能横纵相邻方格间移动或者只能对角相邻方格间移动),以下用节点称呼方格。

定义每个节点除了位置坐标之外有两个属性

1、F值 = G + H,其中:

G = 从起点A移动到该节点的移动成本;

H = 从该节点到终点B的估算成本,仅计算横向和纵向移动,并且忽略障碍物。

2、父亲指针:指向从起点到该节点的路径中该节点的上一个节点。

我们假设某人要从 A 点移动到 B 点,但是这两点之间被一堵墙隔开。如下图,绿色是 A ,红色是 B ,中间蓝色是墙。
在这里插入图片描述

开始搜索:

第一步:计算起点A的F值,然后把起点A添加到open list(表示可以搜索的位置,可以使用最小堆实现)中;

第二步:从open list中找到F值最小的节点,记为T,遍历节点T的8个相邻节点,对于每一个相邻方格进行以下处理:

​ 1、 判断该相邻节点是否为障碍物或者在close list中,如果是则进行5,否则进行2;

​ 2、 检查该相邻节点时候已经在open list中,如果在则进行3,否则进行4;

​ 3、 计算该相邻节点的G值,检查这条路径是否更短,如果不是则进行5,否则进行4;

​ 4、 计算该相邻节点的F值,将其的父亲指针指向节点T,然后加入open list,进行5;

​ 5、 结束该相邻节点的处理。

把节点T从open list中删除并加入到close list中,如下图,绿色边框表示open list,浅蓝色边框表示close list。

在这里插入图片描述

第三步:如果当前open list为空,则路径不存在,否则重复第二步,直到终点也加入open list,此时最优路径就是从终点的父亲节点进行回溯到起点。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2112539.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

简单的spring batch学习

前言 公司批量任务是数据库执行的,想修改成java执行批量任务,所以简单了解了下springbatch批量任务框架,此处是其学习笔记,具体学习视频地址为bilibili springbatch,以下为其学习笔记内容以及源码信息 一、课程目标 …

sobel_dir 方向图和sobel的一些想法

怎么使用呢! 1,通过方向图可以提取 直线 或水平线region区域,提出来的dirregion区域 2,通过sobel的幅度度,分割出变化剧烈的区域 fuduregion 3,两个region相交,可以准确定位幅度范围内方向的…

ngrok | 内网穿透,支持 HTTPS、国内访问、静态域名

前言 当我们需要把本地开发的应用展示给外部用户时,常常会因为无法直接访问而陷入困境。 就为了展示一下,买服务、域名,搭环境,费钱又费事。 那有没有办法,让客户直接访问自己本机开发的应用呢? 这种需…

Qt信号和槽【2】

文章目录 1. 带参数的信号槽2. 信号和槽存在的意义3. 信号和槽断开连接4. lambda表达式定义槽函数 1. 带参数的信号槽 Qt的信号和槽也支持带参数。 当信号带有参数的时候,槽的参数必须和信号的参数一致,此时发射信号的时候,就可以给信号函数…

Material xxx SDF Material doesn‘t have _Stencil property

Unity 中导入第三方package后出现警告:Material xxx SDF Material doesnt have _Stencil property,原因是导入的库使用了TextMesh Pro组件,这时组件里的文本无法正常显示; 解决方法是导入两个包:TMP Essential Resour…

VScode 的简单使用

目录 1. VScode 的使用 1.1 常用插件 1.2 常用快捷键 1. VScode 的使用 1.1 常用插件 1.2 常用快捷键 也可以“ CTRLD ”;使用“CTRL滚轮”即可; ctrl /-,是用来展开/收起代码的; 比如:js 的多行注释是 shiftalt…

python的sqlalchemy使用@contextmanager来定义上下文管理器

Python通过函数名调用函数的几种场景 华为或超聚变服务器安装linux 你知道":“和”//"在python里面代表什么吗?这篇《python运算符》介绍,你肯定不想错过 SQLAlchemy通过contextmanager简化回滚操作 如何理解python的sqlalchemy这种orm框架&am…

某城user_dun,js逆向分析

声明: 该文章为学习使用,严禁用于商业用途和非法用途,违者后果自负,由此产生的一切后果均与作者无关。 本文章未经许可禁止转载,禁止任何修改后二次传播,擅自使用本文讲解的技术而导致的任何意外,作者均不负责,若有侵权,请联系作者立即删除! 前言 这次会简单的讲解…

Windows下Python和PyCharm的应用(三)__Numpy与矩阵

1、背景介绍 矩阵运算是Python语言的基石。 而支持矩阵运算的基础语言包就是Numpy。 参考链接: Python中Numpy的使用_numpy在python中的用法-CSDN博客 这篇博客介绍的numpy比我的这篇博客介绍的更加的详细。本博客只是根据本人 的实际应用,对最关键的…

scRNA-data中的R值

愿武艺晴小朋友一定得每天都开心 当我们测序拿得到各个样本中基因的表达值&#xff0c;就可以用基因表达值来表征样本间的相关性 代码如下&#xff1a; #样本间相似性&#xff1a;R值 相关性 捕获到的基因在两个样本间表达趋势一致性 exp_RNA <- AverageExpression(fasti…

[SDK]-组合框 和 列表框控件

前言 各位师傅大家好&#xff0c;我是qmx_07&#xff0c;今天给大家讲解组合框和列表框控件的相关知识 组合框 组合框由一个列表和一个选择字段,该列表显示用户可以选择的选项 创建组合框&#xff1a; CreateWindow(L"Combobox",//窗口类名L"",//标题C…

使用Python控制Excel应用:打开与关闭工作簿的技术性探讨

目录 引言 一、安装必要的库 1. xlwings 2. openpyxl 二、使用xlwings打开和关闭Excel工作簿 2.1 启动和退出Excel 2.2 打开和关闭工作簿 2.3 创建新工作簿 三、使用openpyxl打开和关闭Excel工作簿 3.1 打开工作簿 3.2 保存和关闭工作簿 四、案例分析 4.1 读取Exc…

linux下的虚拟化

1.下载并且安装 下载客户机和工具 完成之后打开客户机&#xff0c;并且进行安装&#xff1b;安装之后会出现配置软件的界面&#xff0c;我们按照自己的需求进行相关配置即可 这个界面会有我们需要的各种相关设置 在设置自己的超级用户密码以及自己账户及密码之后就完成了虚拟机…

家庭教育系列—投资理财

文章目录 1. 背景介绍2. 趋势容量核心模式3. 一进二模式3. 龙头博弈3.1 空间板博弈3.2 大长腿博弈3.3 反核博弈3.4 龙头反抽博弈 1. 背景介绍 要符合当前市场、顺势而为 打板也好、超短也罢&#xff0c;只是基于市场的形势战略性的选择的一个战术。不管是打板、半路、低吸&…

CAD恢复原始菜单栏

CAD2024菜单栏为ribbon功能区&#xff0c;若想恢复之前菜单栏格式&#xff0c;可采用以下方式&#xff1b;

【机器学习-监督学习】决策树

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈Python机器学习 ⌋ ⌋ ⌋ 机器学习是一门人工智能的分支学科&#xff0c;通过算法和模型让计算机从数据中学习&#xff0c;进行模型训练和优化&#xff0c;做出预测、分类和决策支持。Python成为机器学习的首选语言&#xff0c;…

Spring Boot 多数据源配置(JPA)

目录 前言 前置环境 pom yml Entity Dao Config Controller 演示 前言 一般一个系统至少有一个数据源&#xff0c;用来持久化业务数据以及查询。单个数据源的系统很常见&#xff0c;在 Spring Boot 框架下配置也很简单。在约定大于配置这个思想下&#xff0c;只需要在…

网络视频流解码显示后花屏问题的分析

问题描述 rtp打包的ps视频流发送到客户端后显示花屏。 数据分析过程 1、用tcpdump抓包 tcpdump -i eth0 -vnn -w rtp.pcap 2、用wireshark提取rtp的payload 保存为record.h264文件 3、用vlc播放器播放 显示花屏 4、提取关键帧 用xxd命令将h264文件转为txt文件 xxd -p…

[Xpath] Xpath基础知识

1.Xpath(XML Path Language)介绍 Xpath用于在HTML文档中通过元素(HTML标签)和属性(HTML标签的属性)进行数据定位 Xpath的优势&#xff1a;灵活且稳定 HTML树状结构 HTML的结构是树形结构&#xff0c;HTML是根节点&#xff0c;所有的其他元素节点都是从根节点发出的&#xff0…

Adobe After Effects的插件--------CC Particle World

CC Particle World是一个粒子效果器,用于在三维空间中生成和模拟各种粒子系统,包括火焰、雨、雪、爆炸、烟雾等等。它会自动随时间变化发射粒子。 本文部分参照 https://www.163.com/dy/article/IEJVDN760536FE6V.html 使用条件 使用该插件的图层需是2D图层。 我们新建一个…