- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前正在研究一种可视化数据的方法,该算法的一部分需要与 A* 路径查找 99% 相同的东西,但我无法完全理解它。我知道这将是一个相当简单的修改。 (特定成本而不是最低成本)
基本上我需要绘制一条从点 A 到点 B 的路径(二维网格,无对角线),步数为 X。
例如如果起点和终点彼此相邻并且我需要路径为 3 步,那么它会有一个小循环。 (移动:向上、向右、向下)。
这个算法是否有一个已知的名称,或者这种算法的使用是否非常罕见?
我目前正在查看这个 AS3 Librbay 进行修改,因为它显然非常快并且对我来说看起来干净简单: http://www.dauntless.be/astar/
非常感谢任何建议/帮助...
约翰
最佳答案
我喜欢这个问题 - 它很有趣。
我不确定我该如何编写代码,但这些只是我脑海中浮现的想法。
基本上,您正在处理 Manhattan distance在这里,因为您没有使用对角线。因此,您需要知道最短的可能路径并从那里得出。如果您的特定成本小于您的曼哈顿距离,则该路径是不可能的。如果相等,则理想路径就是最短的可能路径。
一旦你超出了这个范围,事情就会变得有点棘手,因为你有多种解决问题的方法。您也许可以暴力破解答案,但我不知道是否有一种非天真的方法可以做到这一点。 (不过请注意,这些只是我脑海中的想法,所以...)
另请注意,在某些情况下,不会有解决方案,因为您使用的是曼哈顿距离!例如,如果你有一个 6x6 的网格,起点在一个角,终点在对角,你可以在 10 步而不是 11 步结束到终点(因为你必须自己加倍)。这有一个规则,我敢肯定,但我必须得出它。 (再次,超出我的想象。)(编辑:我意识到这一点 - 这本身并不是真正的规则,但您的特定成本不能落在最短路径距离和第二个路径距离之间最短路径距离。在曼哈顿网格中,第二短路径应该是 n+2,我相信。)
所以基本上...我认为可以这样写,但我不认为不检查很多可能性就可以轻松计算它。您可以通过规则优化特定情况,但一旦您这样做了,我认为您就陷入困境了。
尽管如此,请尝试一下。听起来很有趣!
第二次编辑:我刚刚意识到....您的路径成本将始终增加两倍(同样,由于曼哈顿距离)。这意味着只要知道最短距离就可以多优化一点;您的具体费用必须是 2 的倍数加上您的最短距离。用算法术语来说,您的特定成本 = 2n + 最短距离。
不过,在这之后,您将不得不对其进行暴力破解。
希望这对您有所帮助。
第三次编辑(希望是最后一次):我在这里可能有点迂腐(而且我可能正在弄清楚其他人在我之前已经弄清楚了什么)但是这是交易。如果您知道您的特定成本,并且您知道您的最短路径距离,您实际上可以取两者之间的差值并除以二来计算出您的路径中需要多少个环路。循环可以“堆叠”(我的意思是,您可以开始一个循环,并继续一段距离;这是“加倍返回”),因此您可以通过仅检查路径来进一步优化具有特定数量的循环。然而,此时,您几乎已经找到了通往末端节点的可能路径(假设障碍物没有阻挡您找到的所有可能路径)。因此,只有在避免任何障碍时才需要暴力破解。我希望这是有道理的。
关于actionscript-3 - 在 X 步中找到从点 A 到 B 的路径。 (一个*左右),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8190351/
这个问题在这里已经有了答案: Different ways of loading a file as an InputStream (6 个答案) 关闭 8 年前。 在我的 gradle java
给定一个 User 类: class User end 我想使用 .class_eval 定义一个新常量.所以: User.class_eval { AVOCADO = 'fruit' } 如果我尝试
这可能听起来很奇怪,但我正在开发一个需要查找 div 内的元素或 div 本身的插件。 脚本根据用户选择查找元素,但内容(包括标记)是可变的。因此脚本将按如下方式查找元素: $('.block').f
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 7 年前。 Improve th
我需要在按我自己的函数排序的对的多集中查找并删除一个值。显然, .find 总是将迭代器返回到末尾,而不是返回到搜索到的值。有小费吗?这是函数: struct cmp { bool operato
求助!我将如何通过遍历查看字符并计算有效字符出现之前的下划线数量来查找和删除前导下划线。以及从字符串末尾向后迭代以查找任何尾随下划线。 我可以使用下面的方法来删除下划线,但是如何迭代才能找到下划线。
如果你在 $(xml) 中有下面的 xml,你会变得懒惰: $(xml).find("animal").find("dog").find("beagle").text() 在 jQuery 中是否有类
你如何找到4个文件的交集? 我用了grep -Fx -f 1.txt 2.txt 3.txt 4.txt ,但它似乎只适用于 2 个文件。同样comm -12 1.txt 2.txt无法扩展为 4 个
我已经完成了标记的姿势估计并获得了 rvec 和 tvec 值。我不知道如何找到它的中心,因为我需要绘制一个需要中心值的圆柱体。 我该怎么做? 最佳答案 标记的 tvec 是标记从原点的平移 (x,y
我有一个任务,我需要找到 2 个单链接(单对单)列表的交集。我还必须为 2 个双向链接(双重 vs 双重)列表执行此操作: 对于单链表,我使用 mergeSort() 对两个列表进行排序,然后逐项比较
我是 R 的新手,我有一个 100x100 的方阵。我想找到这个矩阵的最大特征值。我试过了 is.indefinite(x) 但是它写 is.indefinite(x) : argument x is
您好,我是 svg 和 JavaScript 的新手,当鼠标位于 svg 上方时,我试图使一些 svg 元素弹出(通过缩放),反之亦然,当鼠标离开 svg 元素时。 我已经能够通过使用转换使 svg
我正在尝试为 scala 项目编写一个类,但在多个地方使用 class、def、while 等关键字出现此错误。 它发生在这样的地方: var continue = true while (conti
我有两个 pandas 数据框,它们只取自一列并将日期列设置为索引,所以现在我有两个 Series。我需要找到这些系列的相关性。 这里有几行来自dfd: index change 2018-
我正在尝试调整我的 Vagrantfile,因此如果它丢失,它会自动在项目根目录中创建一个文件夹。创建文件夹没问题,但我无法找到创建该文件夹的位置。 我发现此信息可在 Vagrant::Environ
我正在尝试在 jquery 中找到 Test3 的位置,请有人引导我走上正确的道路。 我需要jquery来显示5 Test7 Test2 Test6 Test5 Test3 Test8 谢谢 最佳
大家早上好 我有一个像这样的图像列表: 使用 jQuery 如何查找 ul#preload 中包含特定字符串(例如“green”)的所有图像 src 类似... var new_src = j
我正在开发一个修改 Excel 文件的应用程序。 如何找到任意行中最后使用的单元格? 示例:行号 => 5 中最后使用的单元格 最佳答案 要找到一行中的最后一个单元格,您需要 Range 的 End
我刚刚陷入 react native ,需要一些帮助才能在找到 token 时导航到 protected 屏幕。我应该在哪里寻找应用程序加载时的 token ?如何在不多次调用导航的情况下导航用户一次
非常奇怪...此页面是 protected 内容还是我不知道的内容?我尝试单击下一页 anchor 。 参见this page first. 我试图用这个来抓取元素 var buttonNext =
我是一名优秀的程序员,十分优秀!