问答

algorithm – 将航点添加到A *图搜索

 来源    2019-04-08    0  

我有能力使用A *计算起点和终点之间的最佳路线.现在,我通过在我的点的所有排列中对A对应用A *来在起点和终点之间包括航点.

例:

我想从第1点到第4点.另外,我想通过第2点和第3点.

我计算(1,2,3,4)的排列:

1 2 3 4
1 2 4 3
1 3 2 4
1 3 4 2
1 4 2 3
1 4 3 2
2 1 3 4
2 1 4 3
2 3 1 4
2 3 4 1
2 4 1 3
2 4 3 1
3 1 2 4
3 1 4 2
3 2 1 4
3 2 4 1
3 4 1 2
3 4 2 1
4 1 2 3
4 1 3 2
4 2 1 3
4 2 3 1
4 3 1 2
4 3 2 1

然后,对于每个排列,我计算从第一个到第二个的A *路线,然后将其附加到从第二个到第三个的路线,然后是第三个到第四个.

当我为每个排列计算出这个时,我按距离对路线进行排序并返回最短的路径.

显然,这有效,但涉及大量的计算,当我有6个航点时完全崩溃(8个项目的排列是40320 :-))

有一个更好的方法吗?

首先,您应该存储所有中间计算.一旦你计算了从1到2的路线,你就不应该再次重新计算它,只需在表格中查找.
其次,如果您的图表是无向的,则从2到1的路径与从1到2的路径具有完全相同的距离,因此您也不应重新计算它.

最后,无论如何,您将拥有一个与您需要传递的点数呈指数关系的算法.这与旅行商问题非常相似,如果包含所有可用积分,这就是这个问题.问题是NP完全的,即它具有复杂性,指向航路点的数量.

因此,如果你必须通过许多要点,那么指数崩溃是不可避免的.

javascript – 将航点添加到Google Distance Matrix以确定里程数
问答我使用谷歌的地图距离矩阵创建了一个simple jsfiddle here来确定2点之间的里程数.这很好,但后来我有兴趣确定超过2点之间的里程数.但是我对此并不是很了解,因为我认为我没有正确实现它.有 ...
algorithm – 如何最小化添加次数?
问答Multiply two numbers without using * operator, and with minimum number of additions 例如:如果输入为5 * 8,则可 ...
algorithm – 如何在删除/添加/更新元素后连续检查数组是否已排序
问答假设给出了n个整数的列表(该列表不需要已经排序).如何在删除,更新或插入值后检查列表是否已排序(不增加或不减少)? 我能想到解决这个问题的唯一方法是保持数字的链表与删除[O(n)],插入[O(n)]和 ...
algorithm – 二进制搜索树(BST)中的数字,添加到某个值
问答给定一个BST,是否有可能找到两个加起来给定值的数字,在O(n)时间和额外的内存很少.通过少量额外内存,暗示您无法将整个BST复制到阵列中.::如果你有子指针和父指针,这可以在O(n)时间和O(1)附 ...
algorithm – 构造无限排序列表而不添加重复项
问答我对Haskell相对较新,但我试图通过阅读和尝试解决Project Euler上的问题来学习.我目前正在尝试实现一个函数,它接受一个无限的整数列表,并返回所述列表中元素的成对和的有序列表.我真的在寻 ...
algorithm – 向图的所有边添加权重 – 生成树和最短路径的变化
问答(a) Let T be a minimum spanning tree of a weighted graph G. Construct a new graph G by adding a weig ...
algorithm – 将O添加到不同的例程时
问答假设我有一个例程,扫描n个项目的整个列表3次,根据大小进行排序,然后bsearches排序列表n次.扫描是O(n)时间,我将调用O(n log(n)),n次bsearch是O(n log(n)).如果 ...
通过Android Intent在Google地图中添加多个航点
问答作为我的应用中的导航的一部分,我将我的应用程序与lats和longs一起重定向到谷歌地图.我已成功传递源和目标,并直接在Google地图中打开它. Uri gmmIntentUri = Uri.par ...
algorithm – 连续添加char以获取字典中最长的单词
问答给出一个单词词典和一个初始字符.通过在单词中连续添加一个字符,找到字典中最长的单词.在任何给定的实例中,该单词应该是字典中的有效单词. 例如:a – > at – >猫 – >购物车 ...
algorithm – 设置为平均O(1)用于添加/删除和最差max / min O(log n)
问答我可以有一个平均添加/删除操作为O(1)的集合(这对于基于哈希表的集合来说是典型的),最差的最大/最小值小于O(n),可能是O(log n)(典型的树 – 基础集)? 更新似乎在最简单的情况下,我可以 ...
algorithm – 给定操作集的最佳数据结构 – 添加,检索最小/最大和检索特定对象
问答我正在寻找支持以下操作的最佳(时间和空间)最佳数据结构: >将人员(姓名,年龄)添加到人员的全局数据存储中 >获取最小和最大年龄的人 >根据名称搜索人的年龄 这是我能想到的: > ...
algorithm – 如何添加Big O和Big omega
问答如果算法具有两个子算法,则当子算法A1对给定输入最佳情况时,对于子算法A2来说是最坏的情况.我怎样才能找到整体算法的复杂性? 我只是说Ω(N)O(N)=? 我知道算法是否按顺序执行顺序,所有复杂度都是 ...
algorithm – 添加最少量的字符以构成回文
问答问题是: Given any string, add the least amount of characters possible to make it a palindrome in linear ...
algorithm – 添加到由链表表示的数字 – 边缘情况
问答我正在阅读算法,以添加由Gayle Laakmann在第107页的书籍Crack The Coding Interview中的链表所代表的两个数字.如果您没有该书的问题,算法和代码如下: 题 You ...
algorithm – 乘以和添加不同的渐近符号
问答有谁知道如何进行这样的计算 例: O(n ^ 2)THETA(n)OMEGA(n ^ 3)=? 要么 O(n ^ 2)* THETA(n)* OMEGA(n ^ 3)=? 一般来说,如何添加和乘法不同 ...
algorithm – 如何在OCR扫描的代码中添加冗余
问答这更像是一个算法问题 – 我不是很数学,所以正在寻找一个动作解决方案--如果这是关于SO的主题让我知道,我会删除这个问题. 我创建了一个开源良好的混搭,可以在困难的背景下进行光学字符识别:https: ...
algorithm – 添加新元素并删除最旧元素后,从列表中获取最大元素
问答我有一个带有最大元素的整数列表,我需要跟踪列表中的最大元素: [3, 1, 2] (3 is the max) 每个时间段,我得到一个新的随机元素,将其添加到列表的末尾,并在恒定时间内删除列表的第一个 ...
algorithm – 通过添加标准基础上的向量构建满秩矩阵
问答我有一个nxn奇异矩阵.我想将k行(必须从标准基础e1,e2,-,en)添加到此矩阵,使得新(n k)xn矩阵是完整列等级.添加的行数k必须最小,并且只要k最小,它们可以按任何顺序添加(不仅仅是e1, ...
algorithm – 需要一种更快速有效的方法将元素添加到python中的列表中
问答我正在尝试创建一个庞大的数字列表. a ='1 1 1 2 2 0 0 1 1 1 1 9 9 0 0′(超过一千万). 我试过这些方法: >%timeit l = list(map(int,a ...