首页 > 解决方案 > 移动列表中的点,使条目至少“dist”分开

问题描述

我有一个参考浮动列表,例如,

x_ref = [-0.1, 1.0, 1.2, 3.5, 7.5, 12.0]

我想找到一个x满足两件事的清单:

我做了一些东西,但它很臃肿而且可能有问题。也许这里有一个简单的方法。有什么提示吗?

标签: pythonalgorithm

解决方案


首先,您需要识别列表中每个严重拥塞的区域,即最大的子序列 (i, j),使得

(x[j] - x[i]) / 2.0 < j-i

编辑 Nico 的评论是正确的:我不允许在一端有效地打开间隔。我认为调整差距识别会成功......

(x[j] - x[i]) / 2.0 < j-i-1

编辑结束

在您给定的示例中,只有一个这样的位置,值 -0.1 到 3.5,相差 3.6,其中需要扩展 6.0。最小价差将由p + 2.0 * k闭区间 [0, (ji)] 中 k的数字组成

您现在有了错误的表达式:

sum for k = 0, (j-i)
    (x[k] - (p + 2k))^2

所有的x[k]值都是已知的,并且所有的2k值都是已知的。展开表达式,求解p并最小化 - 取导数并将其设置为 0。结果p值为您提供 的新值x[i],其他值随之而来。


推荐阅读