2

由于某种原因,我的 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,我每次都必须访问矩阵的每一行。

4

1 回答 1

1

对于一维背包,您只需要在内存中保留矩阵的最后两行。其余的可以使用游程编码存储到磁盘,因为大多数行将包含与前一行相同的值。可能,对于 4D 背包,您可以在内存中做类似的事情(比如只保留一架飞机?)并将其余的存储到磁盘中。

或者,您可以对背包使用分支定界算法或使用近似算法,在该算法中创建较小的物品和背包。

于 2013-08-01T09:05:38.357 回答