如何在区域 A 中放置 k 个点,以使任意两点之间的距离最大化?

How do I place k points in an area A, such that the distance between any two points is maximized?

我现在正在规划一个花园,因此,假设我有 6 个西红柿,我想在一个尺寸为 lw 的花园里种植。我所在地区的西红柿受到枯萎病的影响,因此最大化西红柿植物之间的距离对于最大化我的总产量非常重要。

我一直认为明显的解决方案是这样的:

T---------T--------T
.                  .
.                  .
.                  .
.                  .
.                  .
T---------T--------T

T代表西红柿的位置。然后我认为解决方案可能与 Steiner 树有关,正如 singingbanana 的这段视频所示:https://youtu.be/dAyDi1aa40E

该解决方案可能如下所示:

T------------------T
.                  .
.                  .
.      T      T    .
.                  .
.                  .
T------------------T

但也许该解决方案也正在最小化距离。我不太确定,但我猜这是我可以用于此用例的已知解决方案的问题!

这个问题叫做 "circle packing",它的最佳算法是一个开放性问题。即使是矩形是正方形的情况的最佳算法仍然是开放的。 (虽然事实上我们已经证明了将 1-30 个圆圈打包成正方形的最佳解决方案。但不是 31 个。)

请参阅 https://math.stackexchange.com/questions/701/how-many-circles-of-a-given-radius-can-be-packed-into-a-given-rectangular-box 了解对此的一些讨论。

多圈大面积的最佳总体排列是蜂窝状的六边形堆积。在你的图表中放下顶部中间的圆圈,并提高底部的角圆圈。您会发现,对于许多矩形,您现在可以适应更大的圆圈。

对于 6 个圆圈的特殊情况,我会简单地提供一个不同包装的列表来尝试,尝试每一个,看看这样可以包装多大。事实上,我建议只尝试两个。第一个是我上面描述的六角填料。第二种是拍摄您的图像并将底角向左滑动,将顶部角向右滑动。