【问题标题】:Finding the nearest array set寻找最近的数组集
【发布时间】:2018-11-18 01:52:32
【问题描述】:

我想知道我可以使用什么算法来找到下面的数组集中最接近 [0,0,0]。我正在考虑通过添加每个集合的值来为每个集合打分,但问题是数组索引 1 [0,2,1] 的总和为 3 等于数组索引3。下面的答案应该是索引3,或者你有更好的建议吗?提前致谢。

$sets = [
    [4,5,6], // 0
    [0,2,1], // 1
    [1,3,0], // 2
    [1,1,1], // 3
    [0,1,3], // 4
    [5,4,3], // 5
]

【问题讨论】:

  • 这里如何定义nearest?基于什么标准/公式?
  • 给出了 1,1,1 最接近 0,0,0,所以我要找的是说 1,1,1 最接近 0,0 的公式,0.

标签: php arrays algorithm logic


【解决方案1】:

嗯,你基本上描述的是在 3D 空间中找到一个点到原点的距离,其公式是:

基于此,点[1, 1, 1]确实比[0, 2, 1]更接近原点:

在 PHP 中,您可以按如下方式计算距离:

$sets = [[4,5,6], [0,2,1], [1,3,0], [1,1,1], [0,1,3], [5,4,3]];

$distances = array_map(function ($i) {
    return sqrt($i[0]**2 + $i[1]**2 + $i[2]**2);
}, $sets);

print_r($distances);

然后找到最近的点就变得微不足道了。

【讨论】:

  • 谢谢你!你认为我还需要阅读关于 3 空间的其他主题吗?
  • 取决于你想做什么,我猜...我喜欢this book
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-07-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-09
  • 2011-03-01
相关资源
最近更新 更多