长方体表面上两点之间的最短路径

时间:2018-12-21 17:17:47

标签: algorithm geometry

我找不到“蜘蛛与飞行问题”(其表面上长方体上两点之间的最短路径)的通用解决方案。每个人都解决一个特定的情况,但是当两点可以在任何地方时会怎样呢?

我的想法是创建一种算法,该算法考虑长方体的各种网络,在2D上计算最短路径,然后返回最小值,但是我不知道该算法生成这些网格的方式(我猜对所有组合进行硬编码都不是最好的方法方式)。

2 个答案:

答案 0 :(得分:1)

按如下所示将多维数据集结构放平到2d ...

  1. 从包含两个点之一的面开始。如果这还包含其他要点,则可以在此停下来,解决方案不重要
  2. 只有4张相邻的面孔。如果其中任何一个包含另一个点,则您可以将该面放置在第一个点附近,并绘制直线,请参见下文。
  3. 如果您到达这里,则这些点位于相对的面上。您需要尝试将最后一个面与4个相邻面中的每个面相邻放置,并从4个替代面中选择最短的一个。

纠正指向第2点的问题,该问题导致了通用解决方案,取代了上述方法。该方法需要考虑身体中心在哪里。吉姆·普罗普(Jim Propp)的surface distance conjecture是,对于一个中心对称的凸紧凑体,只有通过中心相对的那对线对才能实现两点之间的最大表面距离。我的推测是最短的距离是两点构成的平面与身体中心相交的位置。因此,您只需要使用3d几何图形找到该平面与面相交的位置即可。

此解决方案更为通用,也可以满足点在同一面上和相反面上的情况。

这种方法的唯一问题是两点之间的线穿过身体的中心...

答案 1 :(得分:0)

我认为这是一个很好的问题,答案根本不明显。在平稳的领域中,这是一个非常困难的问题。球体(这是立方体的平滑类似物)上的测地线(最短路径)很容易找到。很难找到双轴椭圆体(旋转的椭圆体;一个横截面是一个圆)上的测地线。在19世纪上半叶,在三轴椭球体(普通长方体的光滑类似物)上找到测地线是一个充满挑战的悬而未决的问题。 See the Wikipedia page

另一方面,长方体上的测地线由直线段制成,因此简单得多。但是问题仍然存在一些困难。

如果搜索“ net”一词,您也许可以找到有关该主题的一些文献。通常将多面体沿某些边缘切开以使其变平的方法称为“网”。我能够迅速找到一个声称(没有证据)声称幼崽(oid)只有11个不同网的站点。但是我同意您的观点,对所有变体进行硬编码并不是最好的方法。

对我来说,使用网的方法对所有多面体都适用还不是很明显。我想我看到一个适用于长方体的论点,但是对于一般的多面体,甚至凸多面体,尚不清楚它们是否必须有一个网。 See the Wikipedia page.我认为,对长方体问题的令人满意的解决方案应该在多面体上更普遍,而在我看来,网络思想似乎不够普遍。

我认为可行的是一种动态编程解决方案,在该解决方案中,您可以查看路径在起点和终点之间可以穿过的不同边缘。边缘具有层次结构(在起始面上的那些;在起始面上包含顶点的那些;在与起始面相邻的面上的那些;等等)。对于这些边缘中的每个边缘上的每个点,您都可以找到到起点的最小距离,最终达到从终点到起点的最小距离。

对此进行考虑的另一种方法是使用类似于反射原理的东西,除了反射以外,我们使用空间旋转,使多面体绕其边缘之一旋转,从而使与该边缘相邻的另一面与该面共面。起始脸。然后,我们不必担心我们是否拥有良好的网络。您只需选取一系列边线,以便最终将点最终旋转到初始面的平面上。边的顺序是有限的,因为任何循环都不是最小路径的一部分。我会考虑如何更好地传达这个想法。