对A星算法的理解

article/2025/10/2 20:17:02

1、A*算法的**搜索区域 **
传统A星算法是将地图简化成栅格,计算路径时是用每个栅格的中心点作为单位进行计算。
搜索区域分为两部分:开放列表和封闭列表
开放列表可以进行访问,封闭列表则不可以访问(包括不可走 (unwalkable) 的方格)
从起点开始将起点加入开放列表,则以起点为中心与其相邻的栅格则作为搜索区域,通过遍历所有相邻方格,选取移动成本和估价成本最低的栅格。当该中心点的所有栅格都搜索一遍之后,则把该中心点放到封闭列表,不在作为搜素区域进行访问。当选取到移动成本和估价成本最低的栅格则把该栅格加入到开放列表,作为下次搜索的中心点。依次类推。
计算出组成路径的方格的关键公式:F = G + H
G = 从起点 A 移动到指定方格的移动代价,沿着到达该方格而生成的路径。
H = 从指定的方格移动到终点 B 的估算成本。
在这里插入图片描述
2、算法的核心反复遍历 open list ,选择 F 值最小的方格

  1. 把起点加入 open list 。
    2.重复如下过程:
    a.遍历 open list ,查找 F 值最小的节点,把它作为当前要处理的节点。
    b. 把这个节点移到 close list 。
    c. 对当前方格的相邻方格
    ◆ 如果它是不可抵达的或者它在 close list 中,则忽略它。
    ◆ 遍历所有相邻方格选取F值最小的方格把它加入 open list ,并且把当前方格设置为下一步搜索的的父节点并记录该方格的 F , G 和 H 值。
    ◆ 如果相邻方格已经在 open list 中,则检查这条路径 是否更好,用 F 值作参考。
    d.停止,当你把终点加入到了 open list 中,此时路径已经找到了,或者查找终点失败,并且 open list 是空的,此时没有路径。
    3.保存路径。从终点开始,每个方格沿着父节点移动直至起点,这就是寻找的最佳路径。
    在这里插入图片描述在这里插入图片描述

http://chatgpt.dhexx.cn/article/inVVfgcW.shtml

相关文章

A星算法(Java实现)

一、适用场景 在一张地图中,绘制从起点移动到终点的最优路径,地图中会有障碍物,必须绕开障碍物。 二、算法思路 1. 回溯法得到路径 (如果有路径)采用“结点与结点的父节点”的关系从最终结点回溯到起点,得到路径。 2. 路径代…

A-Star(A*)算法

【由于专栏后几篇限制vip观看,我又把完整算法在公众号“武汉AI算法研习”进行了发布,可以查看全专栏文章。】 A-Star(A*)算法作为Dijkstra算法的扩展,在寻路和图的遍历过程中具有一定的高效性。 【适用范围】静态图搜索 【算法流程】A-Sta…

A星算法代码

A星算法代码python3实现 前言一、A*? A星1.一个搜索算法2.结果展示 二、使用环境1.python 3.x2.一些解释说明 一些话 前言 产生本文的缘由 学校计科课程要求的小作业, 在csdn上看了好多, 记录一下自己的学习 以下是本篇文章正文内容 一、A*? A星 1.一…

A星算法(基于matlab)

概述 基于上一篇文章提到的DFS算法和BFS算法 A星算法属于图这种数据结构的搜索算法,对比于树的遍历搜索,需要考虑到的问题是:同一个节点的重复访问,所以需要对于已经访问过的节点进行标记。 曼哈顿距离: 在几何度量空…

【A星算法】--第四篇(A星算法)

本篇主要介绍A星算法的过程: * 把起始节点加进openList * while openList 不为空 { * 当前节点 openList 中成本最低的节点 * if(当前节点 目标节点){ * 路径完成 …

A星算法详解(个人认为最详细,最通俗易懂的一个版本)

A* 寻路算法 原文地址: http://www.gamedev.net/reference/articles/article2003.asp 概述 虽然掌握了 A* 算法的人认为它容易,但是对于初学者来说, A* 算法还是很复杂的。 搜索区域(The Search Area) 我们假设某人要从 A 点移动到 B 点&…

A星算法理解

A星算法理解 1.选择A星算法的原因 为了进行路径规划算法是不可回避的:启发式搜索算法是比较常规的一类算法就是在状态空间中的搜索对每一个搜索的位置进行评估,得到最好的位置,再从这个位置进行搜索直到目标。这样可以省略大量无谓的搜索路…

A星(A*, A Star)算法详解

MulinB按:经典的智能寻路算法,一个老外写的很透彻很清晰,很容易让人理解神秘的A*算法。以下是一个中文翻译版。 A*寻路初探 GameDev.net 作者: Patrick Lester 译者:Panic 2005年3月18日 译者序:很久以前就…

A星算法

A星算法 1.简述 A星算法就是试图在地图中找到一条最短路径,但不保证一定存在。 任务 小猫去找青蛙玩(好TM弱智啊~)条件 黑色方块无法通行,每走一个格子小猫消耗的体力都为1。 2.如果说你是小猫,你会怎么走&#xf…

A星算法说明

A*算法说明 文章目录 前言原理说明如何构造 h ( n ) h(n) h(n)一、欧氏距离二、曼哈顿距离三、其他 关于 g ( n ) g(n) g(n)路况设置如何实现 完整的流程搜索过程图示允许斜走,使用优先队列禁止斜走,使用优先队列允许斜走,使用普通队列禁止斜…

A星算法优化(一)启发函数

基于Python语言对A星算法进行优化:(视频中会拿python与matlab作对比) 源码地址:https://github.com/Grizi-ju/ros_program/blob/main/path_planning/Astar.py B站详解视频:https://www.bilibili.com/video/BV1FL4y1M7PM?spm_id_from333.999…

猴子都能看懂的A星算法原理

文章目录 A星算法基本原理什么是寻路算法算法的思路 算法实现脚本1————cconst.cs脚本2————AStar.cs Unity演示演示样例一演示样例二演示样例三演示样例四 俗话说,好记性不如烂笔头,对于有了解过寻路算法的同学,对于A星算法应该不陌生…

A星寻路算法详解(C++实现 完整代码+图片演示 )

文章目录 三种寻路算法 A星寻路算法A星寻路算法思想A星寻路准备A星寻路过程(图例)A星寻路代码(完整) 三种寻路算法 深度寻路算法:不一定能找到最佳路径,但是寻路快速,只能走直线。广度寻路算法…

A星(A*、A Star)路径规划算法详解(附MATLAB代码)

首先看看运行效果,分别有三种模式,代码运行前需要通过鼠标点击设置起点和终点。 第一种模式直接输出最短路径 第二种模式输出最短路径的生成过程 第三种模式输出最短路径的生成过程和详细探索的过程 代码获取 gitee链接:https://gitee.c…

什么是脏读?不可重复读?幻读?如何解决?

什么是脏读?不可重复读?幻读?如何解决? 朋友最近面试美团,被面试官问到数据库的幻读问题,自己正好最近复习到这,做个笔记整理一下数据库的三大特征以及隔离级别。 一.先来回顾一下什么是事务&…

MySQL理论:脏读、不可重复读、幻读

🏆今日学习目标: 🍀MySQL理论:脏读、不可重复读、幻读 ✅创作者:林在闪闪发光 ⏰预计时间:30分钟 🎉个人主页:林在闪闪发光的个人主页 🍁林在闪闪发光的个人社区&#xf…

数据库事务隔离级别(脏读、幻读、不可重复读)

一、脏读、幻读和不可重复读 一、脏读、不可重复读、幻读 1、脏读:脏读就是指当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交到数据库中,这时,另外一个事务也访问这个数据,然后使用了…

快速理解脏读,不可重复读,幻读

介绍 要聊事务,不可避免的要提到数据库事务的四大特性:ACID atomicconsistenceisolationdurability 先放一个表格,看看4个隔离级别会出现的各种问题,网上的解释一大堆。看完后还是一脸懵逼,感觉懂了,又好…

MySQL之脏写、脏读、不可重复读、幻读

脏写和脏读都是在多个事务同时修改或读取同一行数据的情况下产生的问题。比如现在有事务1和事务2同时对一行数据进行修改,事务1将值改成1,而事务2将值改成了2,这时的值应该是2,但是就在这时,事务1发生了回滚&#xff0…

数据库必备知识:脏读和幻读的定义及应对策略

随着数据库应用的广泛使用,数据库并发性和一致性的问题成为了引起重视的问题之一。其中,脏读(Dirty Read)和幻读(Phantom Read)是常见的并发访问问题,本文将对脏读、幻读进行详细介绍&#xff0…