给定n个点,每个点都有自己的范围,调整所有点以最大化相邻点的最小距离

在一维中取n个点:

每个点都可以在其上方箭头指示的特定范围内移动。这些范围是已知的。范围可以重叠。如何调整这些点以使相邻点的最小距离最大化?

我也可以接受近似值。

编辑:我并不是在寻找代码,而是在寻找一般策略。我真的不知道如何解决这个问题。

最初,我认为贪心算法可能会奏效。

  1. 设 p0 为起点,pn 为终点。让 dist(p0,p1) 代表 p0 和 p1 之间的距离。显然,p0 尽可能向左调整,pn 尽可能向右调整。

  2. 接下来,找到 dist(p0,pn)/n-1。这代表了每个点之间应该尽可能分散的最佳距离。将 p1 移动到该距离附近。

  3. 找到 dist(p1, pn)/n-2。将 p2 尽可能靠近这个距离。

  4. 重复其余的点。

这不起作用,因为稍后调整另一个指针可能会破坏之前的点。

以上是给定n个点,每个点都有自己的范围,调整所有点以最大化相邻点的最小距离的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>