首先,我不想要 A*、Dijkstra 之类的算法,因为这些算法会计算出最佳和最短的方法。我在 JPanel 中有两个点,我必须用一根由点阵列组成的电缆将它们连接起来。唯一允许的方向是向上、向下、向左和向右,并且电缆必须具有最少的方向变化次数。这是最重要的要求,当然算法不计算最短路径。我该怎么做?有没有类似的算法?
谢谢!
我认为您应该再次查看传统的最短路径算法。与边缘相关的权重与物理距离完全无关。
构建一个图,其中潜在的角为顶点,顶点之间的每个直线连接都有一条边,每条边的权重为一个。您想要的路径是通过该图的“最短”路径。
对于这个简单的问题,“算法”这个词是不是太花哨了?两者之间的最短路径A(X1,Y1) and B(X2,Y2)
通过C(X1,Y2) or D(X2,Y1)
任一方式,两种方式的距离相同,以防万一,X1 != X2 && Y1 != Y2
但如果两点之间的任一坐标相同,则它是一条没有中断的直线。路径的长度为abs(X2-X1)+abs(Y2-Y1)
。