Math 当迭代一组数字时,时间是否会以恒定的指数速率增加

Math 当迭代一组数字时,时间是否会以恒定的指数速率增加,math,time,cpu,Math,Time,Cpu,大家好,stackoverflow的朋友们,这是一个概念性的问题,可能属于math.stackexchange.com,但是因为这与CPU的处理速度有关,所以我把它放在这里 无论如何,我的问题很简单。我必须计算一系列数字中3个数字的立方体之和。这听起来让我很困惑,所以让我举个例子 我有一个数字范围(0,100),以及每个数字立方体的列表。我必须计算这个集合中3个数字的每一个组合。例如,0+0+0,1+0+0。。。98^3 + 99^3 + 100^3. 这可能有道理,我不确定我是否解释得足够好

大家好,stackoverflow的朋友们,这是一个概念性的问题,可能属于math.stackexchange.com,但是因为这与CPU的处理速度有关,所以我把它放在这里

无论如何,我的问题很简单。我必须计算一系列数字中3个数字的立方体之和。这听起来让我很困惑,所以让我举个例子

我有一个数字范围(0,100),以及每个数字立方体的列表。我必须计算这个集合中3个数字的每一个组合。例如,0+0+0,1+0+0。。。98^3 + 99^3 + 100^3. 这可能有道理,我不确定我是否解释得足够好

因此,不管怎样,在所有的集合都被计算出来并对照一个数字列表进行检查,以查看总和是否与其中任何一个匹配之后,程序将继续下一个集合(100200)。这个集合需要计算100-200+0-200+0-200之间的所有内容。Than(200300)将需要做200-300+0-300+0-300等等

所以,我的问题是,根据给CPU添加的数字,所花费的时间是否会因为大小而增加?而且,每个集合所需的时间是以可预测的速度呈指数增长,还是呈指数增长,尽管不是常数。

这取决于“以此类推”的持续时间。只要你们的最大数,立方,适合你们的最长整数类型,不。它总是只需要一条指令来添加,所以它是常数时间


现在,如果你假设一台任意精度的机器,比如说用十进制符号把这些数字写在图灵机器的磁带上,那么加法需要更长的时间。在这种情况下,考虑需要多长时间?换句话说,想想十进制符号字符串的长度如何增长以表示数字n。它需要的时间至少与长度成正比。

正如我所理解的问题,第一组大约有100*100*100个组合(让我们忽略加法是可交换的)。下一组是100*200*200,第三组是100*300*300。看起来有一个O(n^2)过程在进行。所以,如果你想计算两倍的集合,它将花费你四倍的时间。如果你想计算三倍的时间,需要九倍的时间。这不是指数(如2^n),但通常称为二次。

两个数字相加的时间与数字的大小成对数关系,或与数字的大小(长度)成线性关系


对于32位计算机,最多2^32的数字加起来需要1个单位的时间,最多2^64的数字加起来需要2个单位的时间,以此类推。

因此,如果一组数字的长度接近80位,那么加3所需的时间与加3所需的CPU时间相同吗?你没有真正回答我的另一个问题,如果每一组新的数字所花费的时间会以恒定的指数速度增加。请注意,检查“一组数字的总和是否与其中任何一个匹配”并不是一个自由操作。根据用于存储此集合的数据结构,此检查的运行时间范围可能为O(1)到O(n)(其中n是存储的不同和的数量)。