Algorithm 区域内用圆修改的背包

Algorithm 区域内用圆修改的背包,algorithm,knapsack-problem,Algorithm,Knapsack Problem,我在大学里有一个项目,我认为这个问题应该用背包算法来解决 我们有二次面积大小: n x n. 大小来自命令行。 在输入文件中,我们将实数存储在行中。每个数字都是我们要在我们的区域中设置的圆的直径(称为“d”)。在任何情况下,n的大小都大于直径。该文件包含很多数字,因此我们有很多案例可供选择 我们需要创建方法“pack()”,并在方法内部实现代码,该代码将从文件中获取任何圆,然后将它们放在区域内,这样区域将被尽可能多的圆占据(我们需要用圆占据n-area的最大可能值)。这意味着我们正在寻找那

我在大学里有一个项目,我认为这个问题应该用背包算法来解决

我们有二次面积大小:

 n x n. 
大小来自命令行。 在输入文件中,我们将实数存储在行中。每个数字都是我们要在我们的区域中设置的圆的直径(称为“d”)。在任何情况下,n的大小都大于直径。该文件包含很多数字,因此我们有很多案例可供选择

我们需要创建方法“pack()”,并在方法内部实现代码,该代码将从文件中获取任何圆,然后将它们放在区域内,这样区域将被尽可能多的圆占据(我们需要用圆占据n-area的最大可能值)。这意味着我们正在寻找那些将取代我们区域最大部分的数据(圆圈)

我在考虑那个问题,但没有找到任何解决办法。从我的角度来看,我需要修改背包算法,但不知道如何修改。在我的选择中,最重要的部分将是选择alogrithm


你们能告诉我正确的算法吗?任何提示都将非常感谢,因为我在这个问题上浪费了时间。

为什么你认为这是一个背包问题。首先,教授说这将是解决问题的合适算法。2.Seconly我看不到任何更好的相关信息:你的意思是“我们需要找到n^2-面积的最大可能值”吗?我不知道这到底是如何转化为背包问题的,但这里有几个建议:(1)尽管优化包装正方形仍然是一个困难的问题,但这似乎比包装圆形更容易,所以我建议先把圆圈的边界框打包,看看你能走多远。(2) 寻找减少搜索空间的对称性。在这里,可以水平和/或垂直翻转任何解决方案,以获得相同大小的另一个解决方案。这意味着你只需要考虑最大循环在左上角的解决方案。