0

我有一个 11x84 数组,我将用 0 和 1 填充。我想制作 0 和 1 矩阵的所有可能组合并将它们保存到 sql 中(实际上我想在树内移动)。结果将是巨大的(2^924),程序生成数组[11,84]并在进行一种可能的组合后应将其保存到数据库中,以便稍后我可以逐个读取它们,并对它们进行另一次计算.

我正在使用c#MsSql 2008

我想知道我应该为 sql 数据库使用什么样的数据以及我的表设置应该如何?

我是否将每个数组保存为字符串?这将是一个 924 字符的字符串。(11x84=924)。字符串是一种有效的方法吗?

或者有没有更好的解决方案将数组作为数组放入数据库?我使用字节流还是其他类型?

4

2 回答 2

8

因此,如果您有一个 924 字符的字符串,并计划在其中创建所有可能的 1 和 0 值,那么您将拥有 2^924 BYTES 的数据来保存,这相当于互联网大小的 10^254 倍今天。

但我相信你也想知道这需要多长时间。

假设您希望尽快完成这项工作,我们将使用迄今为止世界上最快的超级计算机天河二号,它每秒执行 33,860 万亿次计算。假设生成一个 SINGLE 数字只需要 1 次计算(顺便说一下,这是一个巨大的低估),我们正在查看 appx 10^261 秒,或 appx 10^251 千年。

越来越接近!

因此,假设(粗略令人难以置信)我们宣布一个 eon 为 5 亿年,我们正在研究 appx。10^245 亿。如果我们假设弦理论的循环宇宙(http://discovermagazine.com/2008/apr/25-3-theories-that-might-blow-up-the-big-bang#.UcCgovnqneo),将会发生每万亿年左右(所以每 2000 亿),我们发现 appx. 当您完成数据计算时,将发生 10^242 次宇宙再现。

“可是我不想等那么久!”

好吧,我有好消息。使用这些数字(这就是我的数学变得模糊的地方),我们有 10^242 次宇宙再现。每次娱乐有 appx 365 days * 500 million years * 2000 eons,因此完成此操作总共需要 3.65 * 10^256 天。因此,当我们取 时(3.65 * 10^256) mod 365,我们发现完成任务需要 0 天,假设您之前开始了 10^242 次宇宙的再创造。

希望你会——带来一些比萨饼,因为你会——已经饿了(在我们这个量子世界中谈论时态是如此困难)。

作者注:这假定一个 char 数组。如果使用位数组,则可以使用 2^921 的基数(每个“字符”而不是 8 位)计算所有计算,从而缩短计算时间。

于 2013-06-18T18:19:11.460 回答
1

Well, to store this kind of data, I think most compact form would be a BitArray, see here for a ref: http://msdn.microsoft.com/en-us/library/system.collections.bitarray.aspx

Buuuut, if your calculation is right (and I think it is), then you would end up with 1,4181298336770849826794266683101e+278 possibilities.

Each one using at least 924 bit (~ 116 byte) sums up to about: 1,4961466213803019672087747815019e+268 TB (TerraByte), which not all harddrives on earth together may store! Sorry about that....

于 2013-06-18T17:56:47.343 回答