首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >用X步找到一条从A点到B点的路径。(A* ish)

用X步找到一条从A点到B点的路径。(A* ish)
EN

Stack Overflow用户
提问于 2011-11-18 23:19:09
回答 3查看 640关注 0票数 4

我目前正在寻找一种可视化数据的方法,算法的一部分需要99%与A*路径查找相同的东西,但我不能完全理解它。我知道这将是一个相当简单的修改。(特定成本而不是最低成本)

基本上,我需要绘制一条从点A到点B的路径(2D网格,无对角线),步数为X。

例如,如果起始点和结束点紧挨着,而我需要的路径是3步,那么它就会有一个很小的循环。(移动:向上、向右、向下)。

这种算法有没有一个已知的名字,或者这种算法的使用是如此罕见,以至于不常见?

我目前正在考虑修改这个AS3 Librbay,因为它显然非常快,而且对我来说似乎很干净和简单:http://www.dauntless.be/astar/

任何建议/帮助都非常感谢...

约翰

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-11-18 23:31:18

我喜欢这个问题--它很有趣。

我不确定我该如何编码,但这些只是我脑海中的想法。

基本上,您在这里处理的是Manhattan distance,因为您没有使用对角线。因此,您需要知道可能的最短路径并从中派生。如果你的具体成本小于你的曼哈顿距离,那么这条路径是不可能的。如果相等,则理想路径是您可能的最短路径。

一旦你超越了这一点,事情就变得有点棘手,因为你有多种解决方案来解决你的问题。你也许可以用暴力破解一个答案,但我不知道是否有一种非天真的方法。(请注意,这些只是我脑海中的想法,所以……)

还要注意,对于某些情况,没有解决方案,因为您使用的是曼哈顿距离!例如,如果您有一个6x6栅格,起点在一个角,终点在另一个角,您可以在10个步骤中结束于终点,但不是11步(因为您必须返回到自己)。这是有规则的,我确定,但我必须推导出它。(__编辑:我意识到了这一点--这本身并不是一条规则,但你的具体成本不能落在最短路径距离和第二短路径距离之间。我认为,在曼哈顿网格中,第二短路径应该是n+2。)

所以基本上…我认为写这样的东西是可能的,但我不认为你可以在不检查很多可能性的情况下很容易地计算它。你可以通过规则来优化特定的情况,但是一旦你这样做了,我认为你就卡住了。

不过,还是试一试吧。这听起来很有趣!

第二次编辑:i just realized....your路径成本将始终增加两个(同样,由于曼哈顿距离)。这意味着,只要您知道最短距离,您就可以进一步优化;您的具体成本必须是2的倍数,再加上您的最短距离。在算法方面,你的具体成本= 2n +最短距离。

不过,在这一点之后,你将不得不暴力破解它。

希望这能有所帮助。

第三次编辑(希望是最后一次):我在这里可能有点书呆子气(我可能正在弄清楚别人在我之前已经弄明白了什么),但事情是这样的。如果你知道你的具体成本,你知道你的最短路径距离,你实际上可以取两者之间的差值并除以2来计算出在你的路径中需要多少循环。循环可以“堆叠”(我的意思是,您可以开始一个循环,并将其继续一段距离;这是“翻倍”),因此您可以通过只检查具有特定数量的循环的路径来进一步优化。但是,到目前为止,您已经找到了通往末端节点的可能路径(假设障碍物不会阻塞您找到的所有可能路径)。因此,只有为了避免任何障碍,暴力才是必要的。我希望这是有意义的。

票数 3
EN

Stack Overflow用户

发布于 2011-11-18 23:24:40

A*在设计上是无法做到这一点的。我会使用Dijkstra的算法,并通过所有可能的路径(从最短的路径开始),直到您找到符合您的标准的路径。我真的想不出更简单的方法,因为可以有任意数量的路径满足该条件(包括0)。

票数 0
EN

Stack Overflow用户

发布于 2011-11-19 00:17:37

首先,你需要明白这不是一个微不足道的问题,因此你不会在这里找到完美的答案,但你会找到一些好的想法。

这个问题固有的第一件事是,由于你不能通过对角线移动,一些成本价值将不可能实现。我假设网格有无法穿越的障碍块,如果不是这样,A*不是一个好的起点。

你的问题需要更多的澄清,但我将提供我发现的两种可能性的答案:

没有重复出现的点的路径

修改A*算法以保持运行,直到找到成本直接等于或高于所需成本的路径。只是使用它作为路径,因为没有其他方法来实现另一条路径。

具有重复出现的点的路径

用基本的A*找到最短路径,然后如果它小于期望的成本,则通过来回移动(通过往回移动将成本增加+2 )或通过将简单的步骤转换为循环(每次循环将成本增加+2 )来增加成本。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8190351

复制
相关文章
2022-03-26:给定一个无向图,从任何一个点x出发,比如有一条路径: x -> a -> b -> c -> y
从任何一个点x出发,比如有一条路径: x -> a -> b -> c -> y,
福大大架构师每日一题
2022/04/13
2340
2022-03-26:给定一个无向图,从任何一个点x出发,比如有一条路径: x -> a -> b -> c -> y
2022-03-26:给定一个无向图, 从任何一个点x出发,比如有一条路径: x -> a -> b -> c -> y, 这条路径上有5个点并且5个点都不一样
从任何一个点x出发,比如有一条路径: x -> a -> b -> c -> y,
福大大架构师每日一题
2022/03/26
2280
LeetCode 1059. 从始点到终点的所有路径(回溯)
给定有向图的边 edges,以及该图的始点 source 和目标终点 destination,确定从始点 source 出发的所有路径是否最终结束于目标终点 destination,即:
Michael阿明
2021/02/19
1.2K0
计算从曲线的起点到param指定的点的曲线段的长度
主要使用两个接口 派生类中此函数的实现应返回, 并将endParam设置为曲线端点的参数。
用户3519280
2023/07/31
1940
从锚点到关键点,最新的目标检测方法发展到哪了
作者:Xiongwei Wu, Doyen Sahoo, Steven C.H. Hoi
机器之心
2019/08/20
1.1K0
从两个tcpdump包找到同一条请求
a、在客户端数据包中找到rest的请求,下面找到对应的sequence number
杜志强
2022/04/20
8470
从两个tcpdump包找到同一条请求
在图中,从某顶点到另一顶点长度为n的路径有多少条?(矩阵乘法的应用)
                  0  1  0  1                       2  1  2  1
砖业洋__
2023/05/06
2840
在图中,从某顶点到另一顶点长度为n的路径有多少条?(矩阵乘法的应用)
从锚点到关键点,最新的目标检测方法发展到哪了
目标检测是计算机视觉领域中的一个基础视觉识别问题,在近几十年得到了广泛研究。视觉目标检测即在给定图像中找出属于特定目标类别的对象及其准确位置,并为每个对象实例分配对应的类别标签。
算法工程师之路
2019/08/20
9240
从锚点到关键点,最新的目标检测方法发展到哪了
从锚点到关键点,最新的目标检测方法发展到哪了
目标检测是计算机视觉领域中的一个基础视觉识别问题,在近几十年得到了广泛研究。视觉目标检测即在给定图像中找出属于特定目标类别的对象及其准确位置,并为每个对象实例分配对应的类别标签。
小白学视觉
2022/04/06
8420
从锚点到关键点,最新的目标检测方法发展到哪了
从 s 点到 t 点的最短路(简单模板)(迪杰斯特拉)
迪杰斯特拉简单版 #include <bits/stdc++.h> using namespace std; int m,n; const int inf = 0x3f3f3f3f; int dis[1005]; int gra[405][405]; int vis[1005]; void dj(int s, int t) { memset(vis,0,sizeof(vis)); int minn, v; for(int i = 0; i < n; i ++) d
Lokinli
2023/03/09
1960
使用VBA找到程序的安装路径
电脑安装程序,一般默认都会在桌面生成快捷方式,但是程序快捷方式太多会造成桌面凌乱。
xyj
2021/04/07
1.9K0
eclipse:找到项目所在路径
单击选中项目后,右键打开工具栏,选择Properties(最下面) 打开Properties后
桑鱼
2020/03/17
1K0
LeetCode 1779. 找到最近的有相同 X 或 Y 坐标的点
给你两个整数 x 和 y ,表示你在一个笛卡尔坐标系下的 (x, y) 处。 同时,在同一个坐标系下给你一个数组 points ,其中 points[i] = [ai, bi] 表示在 (ai, bi) 处有一个点。 当一个点与你所在的位置有相同的 x 坐标 或者 相同的 y 坐标时,我们称这个点是 有效的 。
Michael阿明
2021/09/06
1K0
Redis 点到线,先到面的知识点
简单来说redis就是一个使用c语言开发的数据库,不过与传统的数据库不同的是,Redis的数据是存在内存中的,也就是说它是内存数据库,所以读写速度非常快。
BUG弄潮儿
2021/04/12
3070
Python爬虫 | 一条高效的学习路径
数据是创造和决策的原材料,高质量的数据都价值不菲。而利用爬虫,我们可以获取大量的价值数据,经分析可以发挥巨大的价值,比如:
conanma
2021/11/01
7490
一点微小的改动,让你从B树理解到B+树
首先和大家道个歉,昨天晚上由于我的失误,发文忘了改标题,引发了一些疑惑。昨天文章的标题应该是“快速求解方程的根——二分法与牛顿迭代法”,我在收录的专题目录当中已经修改,但历史记录无法修改,带来的不便深表歉意。
TechFlow-承志
2020/03/19
5390
关于最短路径算法的理解
“最短路径算法:Dijkstra算法,Bellman-Ford算法,Floyd算法和SPFA算法等。​从某顶点出发,沿图的边到达另一顶点所经过的路径中,各边上权值之和最小的一条路径叫做最短路径。”
全栈程序员站长
2022/09/02
1.2K0
清北NOIP训练营集训笔记——图论(提高组精英班)
本文摘自清北学堂内部图论笔记,作者为潘恺璠,来自柳铁一中曾参加过清北训练营提高组精英班,笔记非常详细,特分享给大家!更多信息学资源关注微信订阅号noipnoi。
用户5325900
2019/06/05
7960
一步一步深入理解Dijkstra算法
先简单介绍一下最短路径: 最短路径是啥?就是一个带边值的图中从某一个顶点到另外一个顶点的最短路径。 官方定义:对于内网图而言,最短路径是指两顶点之间经过的边上权值之和最小的路径。 并且我们称路径上的第一个顶点为源点,最后一个顶点为终点。 由于非内网图没有边上的权值,所谓的最短路径其实是指两顶点之间经过的边数最少的路径。 我们时常会面临着对路径选择的决策问题,例如在中国的一些一线城市如北京、上海、广州、深圳等,一般从A点到到达B点都要通过几次地铁、公交的换乘才可以到达。 有些朋友想用最短对的时间,有些朋
Angel_Kitty
2018/04/09
1.6K0
一步一步深入理解Dijkstra算法
芯片“自”造:智能音箱从支点到拼图的进阶史
2019年第四季度,根据Strategy Analytics、Canalys等市场调研机构公布的智能音箱市场数据,小度以1900万年度出货量位居行业第一且增速最快,其中在带屏音箱领域领先幅度较大,天猫精灵、小米位列二三。
用户2908108
2020/04/24
4470
芯片“自”造:智能音箱从支点到拼图的进阶史

相似问题

用n个圈数从A点到B点寻找路径

12

我如何画一条从A点到B点的线

10

在公交网络中找到从A点到B点的最近路径的算法?

10

iPhone从A点到B点的距离

14

从A点到B点的图像转换

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文