algorithm - 如何计算两个移动物体之间的最短距离

标签 algorithm graph-algorithm

问题很简单,一个物体以 v1 的速度从东西移动。另一个来自南北,速度为 v2 .

我只需要算法(公式)来计算它们之间的最短距离,这样我就可以为其编写程序。

我确实在它们和它们路径的交汇点之间有距离,它们是 d1 和 d2。

最佳答案

假设您要求二维空间,在 t=0 处,让起点为 (d1,0) 和 (0,d2)坐标轴。我们可以这样假设,因为一个物体总是水平移动(东西方向,沿 X 轴),而另一个物体总是垂直移动(南北方向,沿 Y 轴)。现在,经过一段时间 t,它们的位置将是 (d1-t*v1)(0,d2-t*v2) 。 (速度-距离-时间关系)。

现在,此时它们之间的距离 t 将为,

D = d^2 = (d1-t*v1)^2 + (d2-t*v2)^2

因此,区分双方 t

dD/dt = 2(-v1)(d1-t*v1) + 2(-v2)(d2-t*v2)   ....(1)

要使 D 最小,dD/dt = 0 并且二阶微分必须为正。现在,二阶微分:

d2D/dt2 = 2*v1^2 + 2*v2^2 which is positive for all real v1/v2. So, if `dD/dt = 0`, distance will be minimum.


因此,等式 (1) = 0,我们得到

t = (d1v1 + d2v2)/(v1^2 + v2^2)

因此,在 t = --above value-- 处获取 sqrt(D),这就是您的答案。

PS:在 math stackexchange 上问这些类型的问题。

关于algorithm - 如何计算两个移动物体之间的最短距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32218356/

相关文章:

algorithm - 双向 Dijkstras 和 A* 算法

arrays - 在不存储整个数组的情况下单次查找第 K 个最大的数字

algorithm - 相邻位计数

javascript - 如何在 JavaScript 中制作最快的自下而上的树转换器?我应该自己管理内存吗?

java - JUNG 中的 TreeMap (用于最短路径算法)

algorithm - 寻找最大重量的子图

python - 使用所有可能的组合创建字符串

java - 将集合映射到所有组合的列表中

algorithm - 最快的近似计数算法

algorithm - 将 TSP 减少到哈密顿电路