A* 用于寻找最短路径并避开障碍物

2024-01-04

我必须获得二维两点之间的(最短)/(最佳)距离。我必须避免可能连接在一起的线条形状。关于如何表示我可以行驶的节点有什么建议吗?我曾想过制作一个网格,但这听起来不太准确或优雅。如果一条线的任何点位于正方形内(该节点是正方形的中心),我会认为该节点不可行走。

一个例子是从 A 点到 B 点。

网格是解决这个问题的推荐方法吗?提前非常感谢!


我认为这本质上是拉斯曼斯的答案,更加算法化:

图的节点是障碍物顶点。每个内部顶点实际上代表两个节点:凹侧和凸侧。

  1. 使用欧氏启发式距离将起始节点推入优先级队列。
  2. 从优先级队列中弹出顶部节点。
  3. 进行从节点到目标的线相交测试(可能使用光线追踪数据结构技术来加速)。如果失败了,
  4. 考虑从当前节点到每个其他顶点的射线。如果当前节点与所考虑的顶点之间不存在交集,并且该顶点从当前节点的角度来看是凸的,则将该顶点添加到优先级队列中,使用当前节点中的累积距离加上距当前节点的距离进行排序节点到顶点加上启发式距离。
  5. 返回2。

如果障碍物中存在诸如“T”字形交叉点之类的东西,您必须做额外的预处理工作,并且我不会惊讶地发现它在许多情况下会破裂。通过仅考虑位于当前节点和目标之间的连接组件的顶点,您也许能够使事情变得更快。

所以在你的例子中,在第一次尝试之后A,B,你会推A,8, A,5, A,1, A,11, and A,2。首先要考虑的节点是A,8, A,1, and A,5,但他们出不去,而且他们能到达的节点已经被推到了累积距离较短的队列上。A,2 and A,11将被考虑,事情将从那里开始。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

A* 用于寻找最短路径并避开障碍物 的相关文章

  • 协作投票算法的用户分布

    我的应用程序 实际上是一个游戏 的用户回答问题即可获得积分 问题由其他用户提供 由于数量有限 我无法亲自检查所有内容 因此我决定将过滤过程众包给用户 玩家 规则很简单 每个用户都会看到一个问题来评价好 坏 不确定 当问题被评为 差 5 次时
  • 按字母/字典顺序排列的两个字符串的平均值

    假设您采用字符串 a 和 z 并按字母顺序列出它们之间的所有字符串 a b c x y z 取这个列表的中点 你就会找到 m 所以这有点像取这两个字符串的平均值 您可以将其扩展到具有多个字符的字符串 例如 aa 和 zz 之间的中点将位于列
  • Tarjan 算法的非递归版本

    我有以下 Tarjan 算法的 递归 实现来查找图中的强连接组件 并且工作正常 public class StronglyConnectedComponents public static List
  • 四舍五入到最接近的 2 的幂

    是否有一个单行表达式 可能是布尔值 来获取最接近的2 n给定整数的数字 示例 5 6 7 必须是 8 四舍五入到下一个更高的二的幂 参见一些小技巧 http graphics stanford edu 7Eseander bithacks
  • 查找邻接表中所有连接的节点

    我有一个 DAG 的邻接列表 我需要从所有节点中找到所有连接的节点 例如 对于下面的 DAG 1 gt 3 gt 4 2 gt 4 3 gt 2 4 gt 5 5 gt NULL 我需要这个 1 gt 2 3 4 5 2 gt 4 5 3
  • 将平面表解析为树的最有效/优雅的方法是什么?

    假设您有一个存储有序树层次结构的平面表 Id Name ParentId Order 1 Node 1 0 10 2 Node 1 1 1 10 3 Node 2 0 20 4 Node 1 1 1 2 10 5 Node 2 1 3 10
  • 具有曼哈顿距离启发式的 A* 算法

    我一直在用 C 语言开发一个 15 个谜题求解器 我的代码使用的大量内存给我带来了一些问题 我不会发布我的代码 因为它太长了 我已经实现了我正在使用的大部分库 它可能会给您带来困惑 让我们从基础开始 我现在正在使用的东西是 全部用C实现 斐
  • 递归分层父子

    我有一个来自数据库的项目集合 该数据库具有parentid值或空 这是我的班级设计 public class Item public int id get set public string Name get set public int
  • JavaScript 中多个数组的笛卡尔积

    如何在 JavaScript 中实现多个数组的笛卡尔积 举个例子 cartesian 1 2 10 20 100 200 300 应该返回 1 10 100 1 10 200 1 10 300 2 10 100 2 10 200 2020
  • 哪种算法可以解决我的婚礼餐桌问题?

    我的婚礼有 x 位客人 有 y 张桌子 有 z 个座位 客人A可以与客人B同桌 客人C不能与客人D同桌 给定所有客人之间所有连接的数据集 是否有已知的算法可以解决此类问题 我确信这种问题有一个抽象的父问题 称为 问题 x 或其他问题 或者它
  • 根据 cron 规范计算下一个计划时间

    在给定当前时间和 cron 规范的情况下 计算事件下一次运行时间的有效方法是什么 我正在寻找 每分钟循环检查是否符合规范 以外的东西 规格示例可能是 每月1日 15日15 01 每小时整点的 10 20 30 40 50 分钟 Python
  • 高效找到圆和网格的交点

    找到由圆心和半径定义的圆与任意网格的交点的好方法是什么 An illustration of the points I am trying to find 到目前为止我想到的可能的解决方案 找到位于中心 半径之间的所有线 对于每条线计算交点
  • 我想知道像tineye.com这样的反向图像搜索服务是如何工作的......?

    像 TinEye 这样的反向图像搜索引擎如何工作 我的意思是进行图像搜索需要哪些参数 不知道 TinEye 是否使用这个 但是SURF http en wikipedia org wiki SURF是用于此目的的常用算法 在这里您可以看到一
  • 如何规划庭院灯最有效的路线

    我正在尝试挂一些庭院灯 基于另一个问题 https cs stackexchange com questions 80134 christmas light route efficiency我问 我意识到我需要一种算法来解决路由检查问题 h
  • 如何找到权重为 1、0、-1 且成本精确为 0 的多维路径

    我得到了一个有向图 其中有 n 个节点和边 向量的权重 每个向量的长度为 m 为数字 1 0 1 我想找到从一个节点到另一个节点 我们可以多次访问节点 的任何路径 或者说这样的路径不存在 使其权重之和等于仅由零组成的向量 我正在考虑暴力回溯
  • 高效编写航空公司路由算法

    Given 航班数据库 出发城市 到达城市 出发时间 到达时间 问题 如果出发时间不重要 那么在两个城市之间列出服务的最有效算法是什么 考虑到我们想要最小化中途停留时间 但仍高于标称最小值 即 20 分钟 并最小化中途停留次数 如果有直达航
  • 排序数组最快的搜索方法是什么?

    正在回答另一个问题 https stackoverflow com questions 4752028 whats wrong with this interpolation search implementation 4752042 47
  • 连接有序数组的最佳方法是什么?

    我有几个整数数组 每个数组中的元素都是有序的 数组没有重复项 我需要将所有数组合并为一个数组 以便生成的数组仅包含每个数组中存在的元素 例如 我有数组 1 2 3 4 5 2 3 5 1 2 4 5 结果必须是 2 5 实现最佳性能的最佳方
  • 在 C/C++ 中绘制填充椭圆的简单算法

    在SO上 找到了以下绘制实心圆的简单算法 for int y radius y lt radius y for int x radius x lt radius x if x x y y lt radius radius setpixel
  • MapReduce 只是另一个编程原理的概括吗?

    我正在研究并行编程 并且正在研究映射缩减和其他分布式算法 最好只学习mapreduce 还是有更通用的算法可以更好地为我服务 这取决于您打算使用算法的目的 映射减少 http labs google com papers mapreduce

随机推荐

  • 如何使用另一个 python 脚本文件中的参数执行 python 脚本文件

    我的问题是我想使用另一个 python 文件中的参数执行一个 python 文件以获取返回的值 不知道我有没有解释清楚 example 从外壳我执行这个 getCameras py path to the scene 这会返回给我一个相机列
  • Celery 不注册任务

    你好 我刚刚开始将 Celery 与 Django 一起使用 我有一项需要定期执行的任务 在管理界面中 我可以在名为 任务 已注册 的下拉列表中看到我的任务 但是当 Celery Beat 尝试执行它时 会抛出 NotRegistered
  • 用 C# 编写“原始”HTTP 客户端

    我正在尝试用 C 编写一个 原始 HTTP 客户端 你可能会问为什么 我的目标是在 J2ME 中实现 HTTP 客户端 只能执行 GET 和有限的 POST 但首先我需要更好地理解 HTTP 协议 因此进行 C 尝试 我的第一次尝试失败了
  • 选择数据库后进行身份验证

    我的 MongoDB 服务器中有 3 个数据库 我正在使用 pymongo 用 Python3 编写一些脚本 我想使用最新的版本和做法 一旦我打开客户端并选择数据库 pymongo MongoClient mydatabase authen
  • 具有标题和项模板列的 Windows 8 XAML ListView 应具有相同的动态宽度

    我正在使用带有 Itemtemplate 和 Headertemplate 的 Listview 两个模板都包含 6 列 如果我为模板设置固定的列宽 一切都可以 如图一所示 但我想将项目的宽度设置为 自动 但后来我得到图 2 这要怎么处理呢
  • 创建组件实例并传递给另一个组件渲染为 [object HTMLelement]

    从我的组件 例如 Component 中 我尝试实例化一个 Angular 组件 例如 CustomComponent 设置一些属性 然后将其发送到表格 例如 CustomTable 进行渲染 但我不断收到 object HTMLEleme
  • Minio:使用 docker-compose 添加公共存储桶

    下面是我的 docker compose 中的一个服务 minio image minio minio edge environment MINIO ACCESS KEY minio123 MINIO SECRET KEY minio123
  • SQLite 中的“如果、那么、否则”

    在不使用自定义函数的情况下 SQLite 是否可以执行以下操作 我有两个表 它们通过通用 ID 号链接 在第二个表中 有两个变量 我想要做的是能够返回一个结果列表 其中包括 行 id 如果这两个变量的所有实例 可能有两个以上 均为 NULL
  • 如何中止 Python 脚本的执行? [复制]

    这个问题在这里已经有答案了 我有一个简单的 Python 脚本 如果满足条件 我想停止执行该脚本 例如 done True if done quit stop exit else do other stuff 本质上 我正在寻找与函数体中的
  • Google Books API 403 访问未配置

    我正在尝试联系 Google Books API 并执行书名搜索 这仅需要公共 API 密钥 不需要 OAUTH2 我得到的只是以下错误 error errors domain usageLimits reason accessNotCon
  • 替换 Android 中 Uri.Builder 中的查询参数?

    我传递一个 Uri Builder 对象作为子类的机制 以便在执行之前将任何必要的参数填充到 Uri 中Android 问题是 基类添加的参数之一使用builder appendQueryParameter q searchPhrase 需
  • 编辑注册表中的环境变量

    我想从注册表中读取所有环境变量 并在 Visual Studio 2010 Express 中使用 C 为其设置一个新值 因此我读取了本地机器的子项 SYSTEM CurrentControlSet Control Session Mana
  • 为通用递归程序生成递归树的程序

    通常 在解决递归或动态编程问题时 我发现自己会绘制递归树来帮助简化问题 然而 对于一些复杂的问题 我可以找到解决方案 但不知道如何绘制树 到目前为止我所尝试的是打印出调用函数及其参数 这在一些示例中证明是有用的 然而 我在这个答案中看到了m
  • C++11:为什么 std::condition_variable 使用 std::unique_lock?

    我对角色有点困惑std unique lock当与std condition variable 据我了解文档 http en cppreference com w cpp thread unique lock std unique lock
  • 固定标题网格视图 ASP.NET

    我浏览了很多固定标题网格视图的示例 并使用 div 和 java 脚本尝试了一些选项 我没有从示例中工作 这里有什么我想念的吗 CSS gridViewHeader background color Navy color blue font
  • 在 Xcode 中构建 iOS 应用程序时出错:Sandbox: rsync.samba (13105) Deny(1) file-write-create,Flutter 无法写入文件

    在 Xcode 上构建 iOS 应用程序时 我遇到了这 2 个错误 我尝试在 Visual Studio 代码上构建 iOS 但也遇到了相同的错误 操作系统 macOS 14 0 beta 处理器M1 Pro 降级操作系统可以解决这个问题吗
  • 动态转换不适用于非多态基类?

    这里第二个演员给出了一个错误说 cast cc 35 35 error cannot dynamic cast base of type class CBase to type class CDerived source type is n
  • 复选框增加和减少问题

    现在我遇到一个问题 如果第一个复选框编号增加 然后单击第二个复选框 那么第一个复选框值将显示 1 它应该是因为我增加了 4 或 5 但通过选中另一个复选框 它将自动显示 1 我的 Js 代码 在此代码中 我单击复选框 然后增加数字 但我也希
  • 应用程序代码中的 try-catch 块无法捕获的异常

    MSDN 指出StackOverflowException 无法被 try catch 块捕获 http msdn microsoft com en en library system stackoverflowexception aspx
  • A* 用于寻找最短路径并避开障碍物

    我必须获得二维两点之间的 最短 最佳 距离 我必须避免可能连接在一起的线条形状 关于如何表示我可以行驶的节点有什么建议吗 我曾想过制作一个网格 但这听起来不太准确或优雅 如果一条线的任何点位于正方形内 该节点是正方形的中心 我会认为该节点不