当前位置: 首页 > news >正文

游戏寻路之A*算法(GUI演示)

一、A*算法介绍

A*算法是一种路径搜索算法,用于在图形网络中找到最短路径。它结合了Dijkstra算法和启发式搜索的思想,通过综合利用已知的最短路径和估计的最短路径来优化搜索过程。在游戏自动寻路得到广泛应用。

二、A*算法的基本思想

  1. 在图形网络中选择一个起点和终点。
  2. 维护两个列表:开放列表和关闭列表。开放列表用于存储待考虑的节点,关闭列表用于存储已考虑过的节点。
  3. 将起点加入开放列表
  4. 开始循环
  5. 从开放列表中选择最佳节点current(总代价f最小)
  6. 如果找到目标,则搜索结束,输出结果
  7. 否则,将所有相邻节点加入到开放列表
  8. 假如某临近点,即没在开放列表,也不在关闭列表,则计算出g值和h值,并设父节点为当前节点,将该点放入开放列表
  9. 如果开放列表为空但没有找到终点,则表示无法到达终点,算法结束。

其中,价值函数f(n)=g(n)+h(n),如下图所示。在只知道当前点和目标点的路径情况下,无法精确计算h值,故h(n)是一种预估值。选择方案为曼哈顿距离、欧几里距离等,最常用的是使用曼哈顿距离。

三、代码演示 

3.1迷宫生成工具

直接使用代码生成迷宫(起点统一为左上角某点)

public class MazeGenerator {pri
http://www.lryc.cn/news/311097.html

相关文章:

  • 软件工程顶会——ICSE '24 论文清单、摘要
  • Vue点击复制到剪切板
  • 链路负载均衡之DNS透明代理
  • 2024大语言模型LLM基础|语义搜索Semantic_Search全解
  • vue中使用echarts实现人体动态图
  • 结构化思维助力Prompt创作:专业化技术讲解和实践案例
  • 【0272】postgres内核分配 MyBackendId 实现原理(MyBackendId、MyProc、shmInvalBuffer)(三)
  • AUKFUKF的MATLAB程序,含源码
  • STM32(13)串口
  • Element(Java后端入门篇)
  • qt5和gstreamer开发环境安装配置
  • 基于Python3的数据结构与算法 - 10 计数排序
  • 力扣206反转链表
  • 【python实战】--图片创作视频
  • 数据挖掘实战 —— 抖音用户浏览行为数据分析与挖掘(代码部分)
  • AWS EKS(AWS云里面的K8S)
  • Azkaban 大数据 任务调度
  • 从预训练到通用智能(AGI)的观察和思考
  • 四种垃圾回收算法
  • stm32f103zet6笔记1-led工程
  • OpenDDS的Qos策略
  • string基本操作(C++)
  • 【网站项目】123网上书城系统
  • LeetCode148.排序链表
  • qt学习:网络调试助手客户端+服务端
  • C语言拾遗
  • 大唐杯学习笔记:Day4
  • docker基线安全修复和容器逃逸修复
  • ZooKeeper概述
  • 【sgCollapseBtn】自定义组件:底部折叠/展开按钮