`
huiminchen
  • 浏览: 75787 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

A*算法简介

 
阅读更多
这把年纪,依然不清楚A*算法,有点可耻了
看了结构之法的博客,google相关内容,总结A*算法如下

问题可以简单描述为 找到从指定起点到指定终点的最短路径
一般的搜索如BFS、DFS、Dijkstra算法往往是一种盲目的四周方向的搜索,搜索空间大,效率低
而A*算法引入估价函数的概念

公式表示为: f(n)=g(n)+h(n),
其中f(n) 是从初始点经由节点n到目标点的估价函数,
    g(n) 是在状态空间中从初始节点到n节点的实际代价,
    h(n)是从n到目标节点最佳路径的估计代价。

在当前节点的候选节点中,选取估价函数值f(n)最小的节点

以上时A*算法的主要的内容


使得具有f(n)=g(n)+h(n)策略的启发式算法能成为A*算法的充分条件是:
1、搜索树上存在着从起始点到终了点的最优路径。
2、问题域是有限的。
3、所有结点的子结点的搜索代价值>0。
4、h(n)=<h*(n) (h*(n)为实际问题的代价值)

一般情况下,前三个条件容易满足,关键在于第4个,估计代价h(n)的设计
因为实际情况下,h*(n)并不知道,h(n)的好坏与A*算法的表现优劣关系很大。
h(n)与h*(n)越接近,算法的效果越好。

如何设计一个合理的f(n),是后续关注的重点。

以上是本人对A*算法的简单理解,不足之处,请指正。
分享到:
评论

相关推荐

    android 引入A*算法

    **一、A*算法简介** A*算法是一种在图或网格中寻找从起点到终点最优路径的算法。它结合了Dijkstra算法的最短路径保证和启发式搜索的效率。A*算法的核心在于评估每个节点的f(n)值,该值由g(n)(从起点到当前节点的...

    使用A*算法实现8数码问题的求解

    A* 算法简介 A* 算法是一种广泛应用于路径寻找和图遍历的算法。它在寻找最优路径方面非常高效,因为它结合了贪心最佳优先搜索和Dijkstra算法的优点。在8数码问题中,A* 算法能够快速找到将混乱的拼图恢复到目标...

    搜索最短路径的A*算法

    #### A*算法简介 A*算法由Peter Hart、Nils Nilsson和Bertram Raphael于1968年提出。它结合了Dijkstra算法和Greedy Best-First Search算法的优点,通过引入启发函数来指导搜索过程,能够在大多数情况下找到最优路径...

    A*算法vc++6.0代码

    ### A*算法简介 A*(A star)算法是一种启发式搜索算法,在路径规划问题中有着广泛的应用。它结合了最佳优先搜索和Dijkstra算法的优点,能够高效地找到从起点到终点的最短路径。A*算法的核心在于它使用了一个评价...

    A*算法的MATLAB仿真程序.rar

    对传统的A*算法进行matlab仿真实验,位做改进,只为给读者提供最原始简介的实验环境,避免因为过度的改进造成不必要的理解误区。该实验程序可自由定义栅格地图大小,自由定义障碍物的摆放位置与数量,同时也可以生成...

    OPENCL版A*算法

    OpenCL简介** OpenCL(Open Computing Language)是一种跨平台的并行编程框架,主要应用于GPU(图形处理器)和其他并行计算设备,如CPU、FPGA等。它允许开发者编写能够充分利用硬件并行性的程序,以提高计算效率。...

    八数码的光搜和A*算法

    1. 广搜和A*算法简介: - 广搜:是一种盲目搜索策略,它首先探索离初始状态最近的节点,然后逐步扩展到更远的节点。广搜通过使用队列数据结构实现,保证了找到的第一个解是最短路径。然而,对于复杂的问题,广搜...

    A*算法旅行商问题实验报告和代码

    **A* 算法简介** A* 算法是一种高效的路径搜索算法,它结合了最佳优先搜索(如Dijkstra算法)和启发式搜索。A* 算法通过评估节点的综合代价f(n),其中f(n) = g(n) + h(n),g(n)是从起点到当前节点的实际代价,而h(n)...

    人工智能 A*算法 八数码问题 C++ 报告+代码+详细注释

    一、A*算法简介 A*算法是一种启发式搜索算法,它结合了Dijkstra算法的最短路径特性与最佳优先搜索的效率。算法通过评估函数f(n) = g(n) + h(n)来指导搜索,其中g(n)是从初始状态到当前节点的实际代价,h(n)是从当前...

    A星算法介绍

    ### A星算法简介 A*(A星)算法是一种广泛应用于路径寻找和图遍历的算法,能够在图中寻找从起始节点到目标节点的最短路径。虽然A*算法对于初学者而言较为复杂,但一旦掌握其核心原理,就会发现其实质上是非常直观且...

    A*算法课程设计

    ### A*算法在八数码问题中的应用 #### 一、八数码问题简介 八数码问题是一种经典的搜索问题,在人工智能领域有着广泛的应用。该问题的基本形式是在一个3x3的棋盘上放置八个数字块(1-8),并留出一个空白格。目标...

    B*算法的C++实现代码

    **B*算法简介** B*(B-Star)算法是一种用于路径搜索和寻路问题的图遍历算法,尤其适用于在带有不确定性和动态变化环境的场景中。它是由Hart、Pohl和N Nilsson在1972年提出的,是对早期A*算法的一种改进。B*算法在A...

    【无人机路径规划】基于A算法求解无人机三维路径规划问题matlab源码.zip

    在这个压缩包中,包含的"【无人机路径规划】基于A算法求解无人机三维路径规划问题matlab源码.pdf"很可能是项目的详细说明或者源代码的解释,它将指导读者理解代码的工作原理,如何运行和修改代码以适应不同场景的...

    八数码问题A*算法

    ### 八数码问题A*算法解析 #### 一、八数码问题简介 八数码问题(也称为8拼图问题)是一种经典的搜索问题,在人工智能领域中常用来作为路径寻找算法的教学案例。该问题由一个3×3的棋盘组成,棋盘上放置了八个数字...

    A*自动寻路demo

    A*算法简介** A*算法是一种启发式搜索算法,它结合了Dijkstra算法的最优化路径寻找和贪婪最佳优先搜索的优点。A*算法不仅考虑了从起点到当前节点的实际代价,还引入了预测从当前节点到目标节点的预计代价(也称为...

    A星算法求解旅行商TSP问题

    #### 二、A星算法简介 A星算法是一种启发式搜索算法,结合了广度优先搜索和贪心算法的特点,用于寻找图中两点间最短路径。其核心思想是在搜索过程中利用启发式信息来指导搜索方向,提高搜索效率。 **算法描述**: ...

    A星算法详细介绍

    A星(A*)算法是一种在图形搜索中广泛使用的路径规划算法,它的主要目标是找到从起点到终点的最短路径。A*算法结合了Dijkstra算法的全局最优性和最佳优先搜索的效率,通过引入启发式函数来指导搜索,使得算法在实际...

    Astar算法matlab代码.zip

    **A*算法简介** A*(A-star)算法是一种在图形搜索中用于寻找从起点到终点最短路径的启发式搜索方法。它结合了Dijkstra算法的最优性和BFS(广度优先搜索)的效率,通过引入启发式函数来指导搜索,使搜索更加高效。...

Global site tag (gtag.js) - Google Analytics