小编Nat*_*han的帖子

从给定的n点选择最远的k点

我有一个维度为dn个点的S ,我可以根据需要计算所有成对距离.我需要在这个集合中选择k个点,以便它们成对距离的总和是最大的.在其他稍微更多的数学词中,我想要S中的p1,...,pk使得sum(i,j <k)dist(pi,pj)是最大的.

我知道这个问题是关系到这一个(这基本上是我的一样,但对于k = 2),也许到这一个(使用而不是"最近""最远的").

我对此并不太确定,但也许所有可能的解决方案都有其在凸包中的所有点?

任何合理的近似/启发式都可以.

虚拟奖励点#1用于解决方案,该解决方案适用于给出四个点中的分数的任何函数(其中一个可以是平方距离之和的平方根).

如果解决方案很容易在python + numpy/scipy中实现,那么虚拟奖励点#2.

python algorithm geometry numpy

12
推荐指数
2
解决办法
3342
查看次数

在Julia中切片和广播多维数组:meshgrid示例

我最近开始通过编写自组织映射的简单实现来学习Julia.我希望用户指定地图的大小和尺寸,这意味着我不能真正使用for循环来处理地图数组,因为我事先并不知道我需要多少层循环.所以我绝对需要广播和切片功能,这些功能适用于任意维度的数组.

现在,我需要构建一个地图索引数组.说我的地图是由大小的数组定义mapsize = (5, 10, 15),我需要构建一个数组indices大小的(3, 5, 10, 15)地方indices[:, a, b, c]应返回[a, b, c].

我来自Python/NumPy背景,其中解决方案已由特定的"函数"给出,mgrid:

indices = numpy.mgrid[:5, :10, :15]
print indices.shape # gives (3, 5, 10, 15)
print indices[:, 1, 2, 3] gives [1, 2, 3]
Run Code Online (Sandbox Code Playgroud)

我没想到朱莉娅在一开始就有这样的功能,所以我转向广播.在NumPy中,广播基于一系列规则,我发现这些规则非常清晰和合乎逻辑.只要每个维度中的大小匹配或其中一个为1,您就可以在同一个表达式中使用不同维度的数组:

(5, 10, 15)   broadcasts to  (5, 10, 15) 
   (10,  1)

(5,  1, 15)   also broadcasts to (5, 10, 15) 
(1, 10,  1)
Run Code Online (Sandbox Code Playgroud)

为此,您还可以使用numpy.newaxis或None轻松地向阵列添加新维度:

array = numpy.zeros((5, 15))
array[:,None,:] has shape (5, 1, …
Run Code Online (Sandbox Code Playgroud)

slice multidimensional-array julia

6
推荐指数
2
解决办法
1677
查看次数