【问题标题】:Calculate the distance of the shortest path around outside of 3D box [closed]计算3D框外最短路径的距离[关闭]
【发布时间】:2025-12-15 03:40:01
【问题描述】:

我需要一些帮助来解决我被分配的作业背后的数学问题。问题是计算从蚂蚁到糖果的距离。糖果总是在盒子的顶部,蚂蚁可以在任何地方,除了侧面。蚂蚁可以在顶部和侧面爬行,但不能飞。它们以连续 6 个数字的形式为您提供蚂蚁和糖果的坐标。前 3 个是蚂蚁的,接下来的 3 个是糖果的。我遇到的问题是第三个样本输入(0 0 0 5 4 3.0)。他们如何得到 8.60 个单位作为答案?当向上距离为 3 且到角点的距离为 6.40 时,总数应为 9.40。我的猜测是他们在上升时偷工减料,但我不知道如何制定一个公式来找到这样的最短长度。感谢您的帮助:D 如果您需要更多信息,请询问。

x,z,y 格式的框是 (5,4,3)。

Sample Input:                       
3 1 3 3 3 3            
2.25 0 2 2.5 2 3          
0 0 0 5 4 3.0   
0 4 3 5 0.0 3        
5 0 3 5 4.00 3           

Sample Output:               
Shortest distance = 2.00 units            
Shortest distance = 3.01 units        
Shortest distance = 8.60 units             
Shortest distance = 6.40 units            
Shortest distance = 4.00 units

【问题讨论】:

  • 很抱歉我没有提到,但这是编程任务的一部分,我只需要数学方面的帮助,所以我想去 math.stachexchange.com 会更无罪但我想既然这是一个程序,可以在这里发布。

标签: java distance cube shortest


【解决方案1】:

首先,正如 gap_j 所指出的那样,这很明显是在错误的领域。也就是说,答案在于微积分——您必须将导数设置为零并确定最小值。根据您提供的尺寸和一两个推断,该框在 x 轴上为 5 个单位,在 y 轴上为 4 个单位,在 z 轴上为 3 个单位。这意味着,正如您所注意到的,首先沿 z 轴上行的最短距离为 9.40 个单位:

p(z) = z + sqrt(x2 + y2)

还有其他两种选择,首先是直接沿轴移动; x 优先和 y 优先:

p(x) = x + sqrt(y2 + z2)

p(y) = y + sqrt(x2 + z2)

这些路径的值分别为 10(精确)和 9.83。

为了实现问题中给出的p = 8.6,沿x轴必须有一些距离a,这样:

p(a) = sqrt((x - a)2 + z2) + sqrt(y2 + a2)

沿 y 轴还有一些距离 b,这样:

p(b) = sqrt((y - b)2 + z2) + sqrt(x2 + b2)

并且值p(a)p(b) 必须小于直接沿轴移动。 p(a) 有无数这样的值。

由于这可能是微积分课的家庭作业问题,因此我将把求导数留给您,但公式已提供。只有一个变量,所以这应该不是特别困难。当然,这些可以概括,计算结果并确定较短的路径是一项相当简单的任务。

【讨论】:

  • 抱歉 -- 我的浏览器打开时间过长;我开始回复时它是开放的。
  • 我向 mods 道歉——你的问题已被关闭为题外话。不过,如果时间允许,我仍然会在 cmets 中回复。两个p(a)p(b) 公式基于从角落开始的蚂蚁(如在第三个示例中)。如果我们对直接沿轴(在边缘上)的路径不感兴趣,我们将开始穿过表面(x-z 平面或 y-z 平面)。绘制一个 3-D 框,并标记轴。沿 x 轴某处放置一个点 a,沿 y 轴某处放置一个点 b。在哪里都无所谓。此点表示框顶部边缘的目的地。
  • 公式表示整个路径的两个组成部分:沿 [x-z 或 y-z] 平面的部分(侧面)和沿 x-y 平面的部分(顶部)。第一项是侧路径,第二项是顶部路径。如果您只是参加 Cal 前的课程,并且希望您弄清楚如何编写代码,那么您的讲师就是混蛋。这类问题需要初级程序员通常不具备的抽象级别,虽然求导相当容易,但实际上解决这个问题很麻烦。
  • 假设你说的是实话,here 是对问题的 Wolfram|Alpha 分析。您需要关注“全局最小值”。要将这一点推广到任何合法的起始位置对,您必须修改两个 p(a)p(b) 公式以接受变量输入(并让 Wolfram|Alpha 解决它)——但我有回家,所以我把它留给你。我可能会在周末回来查看,但没有承诺。