我的python程序中需要一个四维矩阵,其尺寸类似于10000x20000x4000x10。因为我试图在python中使用普通数组实现它,我发现由于我受限制的可用系统资源而无法做到这一点。管理这种大数据结构的最佳方法是什么?是使用数据库的唯一方法吗?
编辑:因为这取决于我的目标,我将很快描述我在做什么。我试图将1维背包问题扩展到4维。有2个矩阵保持和解决方案,必须访问。当我尝试解决路由器的资源分配问题时,这两个矩阵看起来像这样:
keep = [[[[0 for x in xrange(CORE.cap + 1)*1000]for x in xrange(RAM.cap + 1)*1000]for x in xrange(NIC.cap + 1)*1000]for x in xrange(len(JOBS) + 1)]
solution = [[[[0 for x in xrange(CORE.cap + 1)*1000]for x in xrange(RAM.cap + 1)*1000]for x in xrange(NIC.cap + 1)*1000]for x in xrange(len(JOBS) + 1)]
这些矩阵中有很多0,我每次都必须访问矩阵的每一行。
答案 0 :(得分:1)
对于1D背包,您只需要在内存中保留矩阵的最后两行。其余的可以使用行程编码存储到磁盘,因为大多数行将包含与前一行相同的值。也许,对于4D背包你可以在内存中做类似的事情(比如只保留一架飞机?)并将其余部分存储到磁盘上。
或者,您可以使用分支定界算法进行背包或使用近似算法,您可以在其中创建较小的物品和背包。