Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无界背包算法的内存优化_Java_Dynamic Programming_Knapsack Problem - Fatal编程技术网

Java 无界背包算法的内存优化

Java 无界背包算法的内存优化,java,dynamic-programming,knapsack-problem,Java,Dynamic Programming,Knapsack Problem,在使用动态规划()的经典无界背包算法解中,我们分配一个背包大小的整数数组来存储最大值 如果我有一个10亿大小的背包,如何优化DP解决方案以确保我可以容纳int[]背包阵列?因为Java为1B大小的背包占用的内存=10^9*4Bytes=3.7GB。而不是试图用内存中的所有数据解决这个问题,您必须制定一个使用辅助内存的解决方案,例如访问文件或可能设置数据库。相关:这不是优化DP解决方案的问题,而是找到一个完全不同的解决方案的问题。在Java堆中分配GB内存并非不可能。这里的问题是,Java中最大的

在使用动态规划()的经典无界背包算法解中,我们分配一个背包大小的整数数组来存储最大值


如果我有一个10亿大小的背包,如何优化DP解决方案以确保我可以容纳
int[]背包
阵列?因为Java为1B大小的背包占用的内存=
10^9*4Bytes=3.7GB

而不是试图用内存中的所有数据解决这个问题,您必须制定一个使用辅助内存的解决方案,例如访问文件或可能设置数据库。

相关:这不是优化DP解决方案的问题,而是找到一个完全不同的解决方案的问题。在Java堆中分配GB内存并非不可能。这里的问题是,Java中最大的单个阵列限制为2GB。因此,请在web上使用各种BigArray帮助程序类,或者使用数组数组或其他集合类。@JochenBedersdorfer您确定2GB的限制吗?因为我做了新的int[1000000000],这对我来说适用于8g堆。1000000000甚至不是1GB:)限制在Java语言规范中,第10.4章:“数组必须由int值索引”;抱歉,糟糕的英语:索引由MAX_整数(减去一些数字)限制