获得最短的角度路径
我需要在两个角度之间获得最短的方向.就像Ang1是5,Ang2是355,我希望它返回我需要从Ang1中减去ANG2. . 我有一些代码,可以告诉我最短的距离,但不是最短的方向. function getShortAngle(a1, a2) { let angle = (Math.abs(a1 - a2))%360; if(angle > 180) angle = 360 - angle; return angle; }; console.log(getShortAngle(360, 720)); 或小基础: Sub GetShortestpath angle = Math.Remainder((Math.abs(a1 - a2)),360) if angle > 180 Then angle = 360 - angle EndIf Return = angle E
0 2024-02-20
编程技术问答社区
安卓,谷歌地图,折线,最短路径
我已经在堆栈溢出上读了一些主题,但没有找到解决我问题的确切解决方案. 我将尝试解释我的问题.例如,假设我有一个网格9x9.坐标由连接处表示. 是否有一种方法,或者有人已经实施了一个过程,该过程从坐标A(x,y)绘制一条线到坐标为B(V,w),其中该行代表最短路径. 在我的问题中,我使用的是Google地图,我想在坐标之间绘制一个多线. 这与我的问题相似,但是就我而言,我想使用坐标,而不是"权重" java-找到最短的路径在距离加权地图中的2分之间 :) 解决方案 如果您使用的是Google Map,则可以使用Google Directions API.我希望这些链接对您有帮助. google-maps-android-api
8 2024-02-09
编程技术问答社区
使用php的最短路径
我在PHP中有一系列坐标: Array ( [0] => Array ( [0] => 39.1057579 [1] => 26.5451331 ) [1] => Array ( [0] => 39.1057579 [1] => 26.5451331 [2] => 39.1055889 [3] => 26.5452403 ) [2] => Array ( [0] => 39.1057579 [1] => 26.5451331 [2] => 39.1055889 ) ) 我将找到一个启动latlng并结束latlng作为输入的函数,并将坐标数组作为最短路径返回. 解决方案 正如马克·贝克(Mark Ba​​ker)指出的那样,您需要使用Dijkstra的算
2 2024-01-23
编程技术问答社区
用有向图实现最短路径算法的最佳方法
假设我有一个带有边缘的加权无向图,并且想找到最短的路径以及我可以遵循的所有可能的路径,从起点到端点,距离距离,这是实现此目的的最佳方法?广度深度搜索和K路径算法似乎提供了合理的解决方案,尽管我不确定哪种是最好的 解决方案 对不起,无法将其发布为注释... 如果您需要所有可能的路径,则不能比"树"遍历(例如BFS或DFS)做得更好.请注意,您需要考虑从一开始就可以达到的每个节点("树"比原始图大得多 - 如果您的图中有循环,则甚至是无限的,但假设您假设您不喜欢t). 要获得最小的路径,您可以在列表中查找它;或者最好是,您可以使用类似Dijkstra的订单进行树遍历,因此最短的路径将是第一个出现的路径.
4 2024-01-23
编程技术问答社区
通过坐标的最短距离
我在x-y平面中获得了一组点= {(x1,y1),(x2,y2),.....(xn,yn)} 我得到了两个点A(Xa,Ya)和B(XB,YB),并要求找到覆盖最短路径的点集. 没有给出点之间的连接.如果我假设与其他每个点的连接.它需要很长时间来计算加权图的这些值.有人可以告诉我我应该做什么.这个问题在图表算法之下是什么主题?!(有没有特定的算法)我已经陷入困境了几天.注意:需要浏览这些要点.无法跳过点.无需旅行集合中的每个点.只是将您带到B点和这样做的距离的点应该是最小的.例如:{(1,3),(1,4),(1,1),(5,2),(5,3),(1,4),(2,2),(1,2) ,(1,3)} 并假设A =(1,1)和B =(1,4)然后路径= {(1,1),(1,2),(1,3),(1,4)} 注意:路径不必是直线.也可以是曲折的. 解决方案 可能对"越过点跳跃"的更正式定义对于解决这个问题至关重要.您可能会从计算边缘不违反不跳跃规则的距离开始.接下来,使用Dijkst
6 2024-01-23
编程技术问答社区
Dijkstra(或其他最短路径算法),末端节点可以是起始节点
传统的* Dijkstra的实施并不能很好地处理这种情况.我想我提出了一些可以起作用的解决方案,但是它们并不是特别优雅**.这是标准解决方案的已知问题吗? 这是假设非平凡的解决方案,即a-> b-> c-> a之类的路径,而不仅仅是a-> a. *当我说传统时,我的意思是将每个节点标记为访问. **存储每个节点已访问的次数,并基于终止条件的条件是否是末端节点是启动节点. 解决方案 将A分为两个节点,称为开始和目标. 对于任何边缘A-> x添加边缘启动 - > x 对于任何边缘y-> a添加边缘y->目标 使所有其他边缘保持不变. 然后使用普通dijkstra解决从启动到目标的路径
4 2024-01-23
编程技术问答社区
使用Dijkstra's找到一个加权的有向图中的最低权重循环。
嗨,我在这个问题上挣扎.这是以下内容: 设计一种算法以找到最低的重量循环(即图中的所有周期,一个边缘权重总和最小的周期),在加权的,有向的图G =(v,e)中.简要证明运行时和空间的复杂性是合理的.假设所有边缘都是非负的.它应该在O(| V || e | log | V |)时间内运行. 提示:使用Dijkstra算法的多个调用. 我已经看到了使用Floyd-Warshall的解决方案,但我想知道使用Dijkstra的解决方案以及在给出的时间约束中如何做到这一点. 我有几点混乱: 首先,我们甚至如何知道图中有多少个周期 检查这些? 另外,为什么| e || v | log | v |?通过我的理解,你应该穿越 因此,通过所有顶点使其| V | log | V |. 这是我的个人学习,因此,如果有人可以使用榜样,那将对我有很大帮助!我并不是真的在寻找伪代码 - 只是一种通用算法,可以了解如何使用从一个节点到所有节点的最短路径如何帮助我们解决此问题. 谢谢!
0 2024-01-23
编程技术问答社区
通过最大流量约束找到非加权图中最短的S路径
我的问题是我想在图中找到顶点s和t之间的最短(最可能的路径),但是我也有一个流程约束,因为问题状态: - 您有许多蚂蚁(或其他)/多个房间/以及它们之间的许多链接,我一次从S到我的图表一次将我的蚂蚁发送到一个转弯,以达到t ,但是所有房间都可以一次只包含一个蚂蚁,除了S和T和蚂蚁在几个转弯时可能不会被困在一个房间里. 所以我有一个流程图,所有边缘的容量为一个(尊重每个房间中的蚂蚁不超过一个). 在这里,我最终遇到了一个最大流量和最短路径之间的问题,因为两个路径之间的一些捷径可能存在,有时如果我只有一个或一点蚂蚁,那就更好了只是一条路径(走捷径),然后将我的蚂蚁发送到一个文件中,但是在一定数量的蚂蚁上,最好走两条路径,而不是使用捷径,而是将我的蚂蚁二乘两个,一个在每个路径中,这样,我最终会尽力将所有蚂蚁从s传递到t. 到目前为止,我找到了一些最短路径的好算法,但是他们总是给我错误的答案,因为他们可以找到阻塞的流动,这意味着要走一条最短的路,而不是两条,这本来可以更好
0 2024-01-23
编程技术问答社区
用A*算法找到几条最短路径
我正在制作一个使用*算法来查找路线的路由应用程序. 我不仅要提供一条路线,还要提供一些替代路线.例如,路由仅比最佳路线长一点. 由于A*(以及许多其他)仅找到一条路线,我该如何搜索这些替代方案?我应该使用其他算法吗? 解决方案 您可能想研究 k最短路径问题,问题是找到两个节点之间的k最短路径的问题. Wikipedia页面上描述的算法是 要找到最短的路径,可以使用最短路径算法. 作为Dijkstra的算法或Bellman Ford算法,并将其扩展到 找到多个路径.最短路径路由算法是 最短路径问题的概括.该算法不仅 找到最短的路径,但也以k为k的路径以增加的顺序 成本. k是最短的途径.问题可能是 仅限于无环的最短路径(无环k 最短路径)或循环. 一些关键论文和概念: 找到最短的路径 Eppstein,1997 a 问题的描述 Yen's算法:"该算法假定Dijkstra algorithm用于找到Dijkstra algorithm两个节点之间的最短路径,
2 2024-01-23
编程技术问答社区
使用现有的Fibonacci Heap Java实现和Dijkstra的最短路径Java实现
使用Java编程语言,我正在尝试在图形上实现最有效的最短路径算法,该算法具有正优势成本.据我所知,这将是Dijkstra的算法,其中斐波那契堆是优先的队列.我借用了基思·施瓦茨(Keith Schwarz)的以下斐波那契堆实施,如链接中所述. http://keithschwarz.com/interesting/interesting/code/code/code/code/?dir=fibonaccci-heap 在我的代码中,我还修改了此问题中提出的Dijkstra算法实现, java> java:使用fibonacci hep/a> 这是我根据我的实施而更新的Dijkstra public static void SPFibonacciHeap() { { FibonacciHeap myHeap = new FibonacciHeap(); //adding all nodes to t
4 2024-01-23
编程技术问答社区
如何制定最短路径问题的LP?
我试图了解最短路径问题的LP配方如何有效.但是,我很难理解约束.为什么此配方可以工作? http://ie.bilkent.edu.tr/~ie400/lecture8. pdf 我很难理解约束在第15和17页上的工作方式.我有了主要的想法,我知道X如何以及为什么要采用一些价值,但我不明白整个系统在数学方面的工作方式.有人可以解释吗?在考试中,我应该能够创建和修改此类约束,但我距离这很远. 解决方案 这些幻灯片(第15和17页)不太清楚的是,该线以" S.T."开头.实际上是指每个顶点i 的一个约束,即n个单独的约束(如果有n个顶点).通常,这将通过在约束旁边编写诸如``∀iϵV''之类的内容来传达. 在任何情况下,这条线都说,对于每个顶点I,从任何其他顶点输入的流量总数都必须等于留下的流量的总流量 - 除非顶点是源,在这种情况下,总计离开的流量必须在1或水槽之前更大,在这种情况下,输入的总流量必须在1之前更大.但是,通过查看一些示例,您应该能够看到任何最短路径
6 2024-01-23
编程技术问答社区
最短路径,最小转折算法
有一个带有障碍物的方格 .在该网格上,有两个Person的成员.他们面对一定的方向(向上,右,左或向下).每个人都有一定的能量.使人转弯或使他们移动会消耗能量(转弯消耗1个能量单位,移动消耗5个能量单位). 我的目标是使它们尽可能地靠近彼此(表示为曼哈顿距离),消耗最少的能量.请记住,网格上有障碍. 我该怎么做? 解决方案 我将使用广度优先的搜索并计算最小能量值来到达每个正方形.当玩家见面或不再剩下能量时,它将终止. 其他解决方案 我将做假设并稍后删除. 假设网格小于1000x1000,并且您不能用完能量. 假设他们无法彼此接触: 对于Person1,Person2,找到各自的可触及点R1,R2. (例如,首先使用广度) 按x值排序R1和R2. 现在通过R1和R2找到最接近的点. 提示:我们对两个数组进行了排序,因此我们知道何时在其X坐标方面接近.我们在X坐标上不必超过当前发现的最小值的X坐标. . 假设他们可以彼此接触:使用Pe
2 2024-01-23
编程技术问答社区
使用Dijkstra算法的最大利润
Dijkstra算法是解决最短路径问题的最快算法之一.在我的情况下,网络由节点组成,其中边缘的重量是我获得的利润.我想知道我是否可以逆转Dijkstra的算法来解决这个问题,但是我意识到,如果我们以封闭的循环运行该怎么办(因为成本将越来越多地增加,它将永远持续下去).我知道如何将其作为整数编程问题解决,以便我可以验证算法的正确性(不幸的是).这是我一直使用的Dijkstra的伪代码.什么是正确的修改? ln=∞ for all n∈N∖{s}, ls=0 N′={s}, N′′=∅ repeat n=argminn′∈N′ln′ N′=N′∖{n}, N′′=N′′∪{n} for all (n,m)∈A with m∈N∖N′′ do if lm>ln+cn,m then lm=ln+cn,m N′=N′∪{m} end if end for until (N′=∅ or t∈N
4 2024-01-23
编程技术问答社区
最短路径算法:从一个点到相邻点的距离是统一的
我正在尝试开发一种算法,其中我有一个位置类.在每个班级中,我创建了其相邻位置的列表.我想知道,如何从一个位置到另一个位置的最短路径.我正在尝试寻找不同的算法,但似乎他们没有回答我的问题. 例如,我有一个A,我想去点B, A - - C - - H - - J | F- - K- -B 我对此的想法是,如果B在A的相邻位置列表中,那是最短的路径.如果不是这样,它应该搜索A的相邻位置的相邻位置.但是我不知道如何在代码中实现它,或者它是否是好算法.我也想显示A -C -F -K -B作为最短路径的路线.我还在J2ME上开发了这一点,因此我可以使用可以使用的Java功能. 如果有人能帮助我,那将不胜感激.谢谢 解决方案 您在正确的轨道上.您所描述的是 optimpal ]和完整因此,这可能是正确的选择. bfs在图形上工作.在此处,您的图是G = (V,E),因此V = {all locations} [节点/顶点/位置]和E = {(u,
6 2024-01-23
编程技术问答社区
如何找到最短的彩色路径?
给定的g =(v,e),这是每个边缘的三种颜色之一{绿色,红色,蓝色}. 如果他有三种颜色,我们将路径称为"彩色路径". Input: graph G(V,E),weight function w:E->Q+ , colored edges and vertices s . output: algorithm that finds for every vertices v, a shortest path from s that is Colored path 我的解决方案是浏览图,并计算每个顶点的颜色数量.创建名为G1,G2,G3 的图表的3个副本 对于每个v,c(v)= 2(c是从s到此路径的颜色数)将v1连接到第二个图(g2)中的v2,带有边缘重量=0. 对于每个边缘c(v)= 3从v2(从g2)连接到v3(到g3),重量= 0. 将Dijkstra从S到T3(在G3中). 我的解决方案对吗? 解决方案
2 2024-01-23
编程技术问答社区
在图中寻找最短路径,该路径必须访问某些边,而其他边则不必须访问。
i有一个无方向的图形,带有约1000个节点和2000个边缘,一个启动节点和一个末端节点.我必须从开始节点到末端节点穿过所有强制性边缘(约10),而不是穿过所有顶点或节点的必要条件.是否可以轻松解决此问题,例如现有的遍历算法的一些小变化?我该怎么做? 感谢您的帮助.:) 这个问题不同于编辑:强制性边缘可以按任何顺序穿越. 解决方案 要从相关问题开始,请说您有一个图形 g =(v,e),10个特定边缘必须在给定的顺序中穿越 e'= 1,...,e 10 >∈ e ,以及一个开始和结束节点 s,v∈ V .您需要在给定的顺序中使用 e'找到从 s到v 的最短距离. 您可以通过制作10份图表来做到这一点.从单个副本开始(即同构t g =(v,e)),除了 e 1 从第一个副本移至第二份.在第二份副本中(再次构成t g =(v,e)),删除 e 1 ,并具有 e 2 从第二份副本移至第三份副本.等等.在结果图中,运行任何算法从第一个副本中从 s 中获得的 e
0 2024-01-23
编程技术问答社区
Dijkstra算法不产生最短路径?
我正在使用Dijkstra的算法解决最短的路径问题.我遇到麻烦了,因为该算法应该提供最短的路径,但是在运行算法后,我手工获得了短路.这只是该算法的副产品吗? 我要生成的路径来自A-> Z 这是我从应用算法中获得的路径,在我访问的每个顶点处最短的距离跳跃: 2 4 2 2 1 2 1 1 8 = 23 a -> d -> g -> k -> r -> n -> q -> p -> t -> z 这让我感到困惑,因为如果我走这条路: 4 2 2 2 2 2 2 = 16 a -> c -> f -> i -> m -> p -> s -> z 我得到的距离比算法产生的距离小5个. 我在某个地方失误了吗? 解决方案 看起来您误解了Dijkstra的算法的工作原理.您始终需要考虑从开始的总距离(节点$ a $),而不是在每个节点处的重量最小的
2 2024-01-23
编程技术问答社区
加权图的BFS算法-寻找最短距离
我已经看过很多帖子(即 post1 ,)主题但没有帖子提供算法来备份各自的查询.因此,我不确定接受这些帖子的答案. 在这里,我提出了一个基于BFS的最短路径(单源)算法,该算法适用于非阴性加权图.任何人都可以帮助我理解为什么BFS(鉴于以下基于BFS的算法)不用于此类问题(涉及加权图)! 算法: SingleSourceShortestPath (G, w, s): //G is graph, w is weight function, s is source vertex //assume each vertex has 'col' (color), 'd' (distance), and 'p' (predecessor) properties Initialize all vertext's color to WHITE, distance to INFINITY (or a large number l
4 2024-01-23
编程技术问答社区
实现双向A*最短路径算法
我正在实现对称双向a*最短路径算法,如我的问题是,双向算法似乎扫描了几乎是单向a*在测试图上搜索中扫描的边缘数的两倍. 示例:使用A*(左)和双向A*(右)在道路网络上查询S-T查询.向前和向后搜索扫描的节点分别为红色和绿色.启发式功能只是欧几里得距离t或s的距离.在两个图中,计算的路径(蓝色)都是正确的. 我可能错误地理解了算法逻辑.这是我对单向a*改编为双向的方式(来自参考) 在向前搜索和向后搜索之间进行交替.将变量mu作为S-T路径长度的当前最佳估计值. 在向前搜索中,如果w在边缘(v,w)中已通过向后搜索扫描,请不要更新W的标签. 每次进行前向搜索扫描(v,w),并且如果w已通过反向搜索扫描,则更新mu如果dist(s,v) + len(v,w)+dist(w,t)= mu (在向后搜索中适用类似规则) 我很感激是否有人可以指出我
20 2024-01-23
编程技术问答社区
单源最短路径,每条边都有距离和权重
假设有一个无向图,每个连接任何两个节点的边缘都有两个权重(即距离和成本).我想了解最短的道路,但也要确保我不会超出一定的费用. 我尝试实现djikstra的,如果我超过成本,直到我穿越整个图表,就可以简单地回溯(由于缺乏更好的术语).但是,我正在寻找比这更快的解决方案.我还试图使用在边缘的距离和成本下创建重量的函数,但我认为这不会返回最佳解决方案. 有什么想法吗? 解决方案 我们可以从原始图中使用E边的图形转换您的图形,而V vertices (E,V)则将每个节点(E, V') (E, V') v'xy in V' in V'是行驶的最小距离从启动到节点x,成本y. 因此,从开始节点0开始,假设我们以距离A和成本B的节点1旅行,现在,我们有距离矩阵: dist[0][0] = 0, and dist[1][b] = a; 因此,这个问题成为正常的最短路径问题. 其他解决方案 以加权平均成本和距离为参数. 说平均,p=w*cost+(1-
0 2024-01-23
编程技术问答社区