20得票6回答
当额外允许的空间为O(1)时,这意味着什么?

如果一个编程问题给定了上述条件,而我使用递归解决它,那么我是否违反了约束条件?这可能是因为递归也使用堆栈?这样说对吗?

16得票1回答
为什么 pow(x,y) 的时间复杂度为 O(1),而 x**y 的时间复杂度为 O(n)?

pow(x,y) 的时间复杂度为O(1) 而 x ** y 的时间复杂度为O(n),为什么呢? 请参考这里来自agf的评论。

15得票3回答
是否存在一个有用的Haskell HashMap/HashTable/Dictionary库?

我希望您能够提供一个不依赖于单子的、具有常数访问时间复杂度 O(1) 的关联数组查询。请考虑以下假设类型: data HT k v = ??? 我想要构建一个不可变的数据结构: fromList :: Foldable t, Hashable k => t (k,v) ->...

15得票3回答
算法复杂度的大O符号与收敛相关。

我想知道是否有可能使用大O符号来表示依赖于收敛的算法的时间复杂度。 在我看到的大多数算法分析中,我们根据输入大小评估函数的增长速度。 对于具有一些收敛条件的算法(其中我们重复某个操作,直到某个定义的误差度量低于阈值或误差度量的变化速率低于某个阈值),我们如何衡量时间复杂度?要收敛并退出该循...

15得票2回答
计算 f x = (x,x) 所做的工作

假设我有这个函数:(Haskell 语法)f x = (x,x) 这个函数执行的工作量(计算量)是多少? 一开始我认为它显然是常数,但如果 x 的类型不是有限的,也就是说,x 可以占用任意数量的内存,那么我们还必须考虑复制 x 所需的工作量,对吗? 这让我相信函数执行的工作实际上与输入的大...

15得票3回答
O(m+n)和O(mn)有什么区别?(提问标题)

我试图通过不同的方法找到算法的复杂度。在数学上,我发现了一种O(m+n)和另一种O(mn)的方法。然而,我无法理解或说出它们的含义。不是像我看到它们就会有“啊哈!原来是这样”的感觉!有人能够使用他们自己的例子或任何其他工具来解释一下吗?

14得票7回答
访问元素 - 真的是O(1)吗?

据说,O(1)操作的一个示例是访问数组中的元素。根据一种来源,可以以下列方式定义O(1): [Big-O of 1]表示算法的执行时间不取决于输入的大小。其执行时间是恒定的。 然而,如果想要访问数组中的一个元素,操作的效率难道不取决于数组中元素的数量吗?例如 int[] arr = ...

13得票3回答
有没有同时实现按键删除和获取值的方法?

我正在编写一款性能关键的程序(不是很学术),并且我正在寻找尽可能优化的方法(并不像证明“这是”瓶颈)。 我有一个自定义的字典结构(.NET Dictionary<,>的包装器),并且在某个阶段我需要不断地删除项目(按Key值)。我需要已删除项的Value。目前我需要执行以下操作:...

13得票4回答
如果 f(n)=O(g(n)),那么 f(n)∗log2(f(n)^c)=O(g(n)∗log2(g(n))) 不应该取决于 C 的值吗?

如果 f(n)=O(g(n)),那么应该不应该依赖于常数C呢?f(n)∗log2(f(n)^c)=O(g(n)∗log2(g(n))) 这里C是一个正常数。根据我的理解,如果C很大,那么该语句将变为假,如果c很小,则为真。因此,结果取决于c。 我正在上算法课,这是我被问到的问题之一。根据我...

13得票4回答
程序的时间复杂度使用递归方程。

我想通过递归方程计算程序的时间复杂度。 这就是。。。 int f(int x) { if(x<1) return 1; else return f(x-1)+g(x); } int g(int x) { if(x<2) return 1; else return f(x-...