【发布时间】:2022-01-13 08:19:36
【问题描述】:
我有 n 个 c 维向量,它们形成一个形状为 (n, c) 的矩阵 A,我怎样才能执行快速排序,以使欧几里得距离低的向量尽可能接近,并且向量距离越远越好吗? 例如,我有
A = [[0, 3], [0, 0], [0, 1]],
解决办法可以是
A_sorted = [[0, 3], [0, 1], [0, 0]].
说明:因为原A的总加权距离和为3x1+1x1+2x2 = 7,而A_sorted有2x1+1x1+3x2 = 8。
在数学上,目标是最大化总加权距离和。
对于一维情况,这可以通过 Numpy 或 PyTorch 中的 sort() 等一些 API 来实现,我主要关心的是当 c ≥ 2 时是否存在时间复杂度为 O(nlog(n)) 的快速实现?
经过长时间的斗争,我失败了。你能帮我一个忙吗?
【问题讨论】:
-
首先想到的可能是解决旅行商问题。
-
另外,如果向量形成一个圆圈,你期望什么输出?
-
任何满足最佳情况的排列都可以是我想要的。当这些点形成一个圆圈时,我认为可以有很多解决方案,其中任何一个都可以返回给我。另外,我很困惑,如果存在一个快速的 PyTorch 实现来处理一批实例,每个实例由 N 个 C 维点组成,即输入数据的形状为 (B, C, N)? @Stef
-
您是否尝试应用我链接的类似问题的答案?
标签: python algorithm numpy math pytorch