Algorithm 这种对空间复杂性的描述准确吗?

Algorithm 这种对空间复杂性的描述准确吗?,algorithm,Algorithm,我正在写一份报告,一位作者写了以下关于空间复杂性的部分: 空间复杂度是指某物占用的空间量。有两种方法可以查看指令和数据。 在今天的计算机中,指令空间或需要多少代码是两个中不那么重要的。 当存储空间极其昂贵且每个字符都被计算在内时,它应用得最多。如今,TB大小的硬盘驱动器使这一点变得不那么重要,但短代码仍然更具可读性,而且通常更快。 第二个,也是更重要的一个,是数据空间。这是运行算法所需的内存。随着算法的处理,它需要内存存储。如果在过程的每次迭代中处理的数据太多,可能会使计算机崩溃。 在所有条件相

我正在写一份报告,一位作者写了以下关于空间复杂性的部分:

空间复杂度是指某物占用的空间量。有两种方法可以查看指令和数据。 在今天的计算机中,指令空间或需要多少代码是两个中不那么重要的。 当存储空间极其昂贵且每个字符都被计算在内时,它应用得最多。如今,TB大小的硬盘驱动器使这一点变得不那么重要,但短代码仍然更具可读性,而且通常更快。 第二个,也是更重要的一个,是数据空间。这是运行算法所需的内存。随着算法的处理,它需要内存存储。如果在过程的每次迭代中处理的数据太多,可能会使计算机崩溃。 在所有条件相同的情况下,只需要很少指令和数据空间的算法是最好的


在我看来,这实际上是不正确的,因为处理器的缓存仍然有限,指令的大小仍然很重要。事实上,今天的算法更可能耗尽处理器缓存而不是RAM。然而,我不确定我的想法是否正确,我想在与撰写本节并要求编辑的作者提出这一点之前,先讨论一些具体的观点

指令空间不是空间复杂性的一个因素;它不随输入的大小而增长。@user2357112:“复杂性”不要求与输入的大小有任何关系。这仅仅是因为我们通常对复杂性感兴趣,复杂性确实会随着输入的大小而增长;但这可能具有欺骗性。需要1天+2毫秒/GB输入的算法比需要2秒/GB输入直到输入达到数十TB的算法具有更大的时间复杂度。@ruakh我理解你的意思(在现实世界中,系数很重要),但你不能改变“时间复杂度”的定义。你假设的两种算法的时间复杂度都是O(N)。@robmayoff:对不起,你完全错了。(事实上,这是一种非常有趣的方式:您的注释由三个语句组成,每个语句都完全正确,但注释作为一个整体是完全错误的!)简言之:大O表示法是一种非常有用的方式来谈论复杂性,但它根本不是定义的一部分。2n的时间复杂度与3n的时间复杂度不一样,即使两者都是O(n)。堆栈溢出非常美妙,但正如您从rob mayoff上面完全错误的评论的所有投票中所看到的,程序员对术语“堆栈溢出”有着非常普遍的误解,甚至包括非常高的代表性堆栈溢出用户。你在这里得到的答案将相应地被扭曲。CS Stack Exchange站点上的人员更可能知道实际定义并相应地回答。