算法将点放入具有最大最小距离的正方形
Posted
技术标签:
【中文标题】算法将点放入具有最大最小距离的正方形【英文标题】:Algorithm putting point into square with maximal minimum distance 【发布时间】:2011-02-12 23:55:00 【问题描述】:我被困在这个问题上:有一个正方形。将 n 个点放入这个正方形中,使最小距离(不一定是平均距离)尽可能高。
我正在寻找一种算法,它能够在给定数量的情况下生成所有点的坐标。
n=4;5;6 的示例结果:
请不要提及基于计算能力的东西,例如尝试很多组合,然后挑出正确的组合和类似的想法。
【问题讨论】:
这和“正方形的圆圈”一样吗? en.wikipedia.org/wiki/Packing_problem#Circles_in_square 请让OP声明它是否是家庭作业。 @zaf 我认为这与正方形中的圆圈无关,圆圈接触,这里的点排斥,即使您假设这些点是圆圈的中心,圆圈也会重叠。 :) @zaf:我刚刚检查了 3;6;7 的前几个解决方案,但我认为它是相同的(或者至少做得很好)。您能否将其发布为答案,以便我标记它?谢谢。 | @ravi:这显然不是功课,因为解决起来并不那么明显。自从我看到所有解决方案后,我就一直在想它——我想要一个证明它们实际上没有错。 来自 wiki 条目:“将 n 个单位圆打包成可能的最小正方形。这与单位正方形中的散布点密切相关,目的是找到点之间的最大最小间隔 dn[ 1]。为了在这两个问题的公式之间进行转换,单位圆的正方形边将为 L=2+2/dn" 所以是的,这两个问题是等价的。 【参考方案1】:这是circles in square 打包问题。
Hallard T. Croft、Kenneth J. Falconer 和 Richard K. Guy 在Unsolved problems in geometry 中将其作为问题 D1 进行了讨论,第 108 页。
第 109 和 110 页包含参考列表。
【讨论】:
真的很好!现在,如何生成坐标。 你们想要带有参考列表的下一页吗? @zaf,如果有关于这个主题的更多信息,你能给我们这本书的标题和作者吗? (或者可能还有其他谜题?) 我同意距离相同,但这不是问题的解决方案。这里的点可以位于正方形的边缘,但在正方形的圆圈中,除非 r="0",否则中心不能位于边缘。 @Ravi 作者写道“这两个问题是等价的”。您必须不同意他们的观点,否则您不会对我的回答投反对票。【参考方案2】:你可以做一个N body simulation 点互相排斥,也许用 1/r^2 力。点的移动显然会受到正方形的限制。从大约在正方形中心的所有点开始。
【讨论】:
是的,你“可以”。但这会有什么好处吗? (你能给出什么保证?你能说它在某个最优因素之内吗?)(请参阅 OP 的相关评论:“请不要提及基于计算能力的东西,例如尝试大量组合然后挑剔正确的和类似的想法。”) 我可以看到 N 体模拟有助于快速近似。 “最大最小距离”相当于 1/r^infinity 势。如果有人想以这种方式创建近似值——这让我觉得这是一种很好的启发式方法——应该从 1/r^2 开始,然后在接近解决方案时转向更高的幂。【参考方案3】:Mikulas,我找到了一个页面,里面有很多可能是最佳或目前最知名的解决方案的图片示例。这不是我的,所以使用它需要您自担风险。
见
http://www.ime.usp.br/~egbirgin/packing/packing_by_nlp/numerical.php?table=csq-mina&title=Packing%20of%20unitary-radius%20circles%20in%20a%20square
来源:
http://www.ime.usp.br/~egbirgin/packing/packing_by_nlp/
【讨论】:
+1。我怀疑这些实际上是最优的(在数值上),原因有两个:他们在描述他们的算法时使用了“解决”这个词,并且不同的 n 有不同的试验次数,这表明他们可能很早就达到了最优。 (可以肯定的是,最好查看源并查看它们是否仅在对偶间隙变为 0 时才停止,或者什么。) @ShreevatsaR:乐观主义是另一个需要证明的话题。 ;] 有时候,足够好就是足够好。 是的,我知道,我只是说这些不仅足够好,而且实际上似乎也是最佳的。 一些较高的 n 看起来并不令人信服。 (50+) 有趣的是,我还没有看到在正方形的 2 个连续角中至少有 2 个点的解决方案。当然,你还有n-2
点可以放置。以上是关于算法将点放入具有最大最小距离的正方形的主要内容,如果未能解决你的问题,请参考以下文章
洛谷 P2216 [HAOI2007]理想的正方形 || 二维RMQ的单调队列