- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
在根据代码摘录识别复杂性或最坏情况时,我了解什么是大 O 表示法。
在类里面,我被教导说,当谈到复杂性和大 O 表示法时,我们忽略低于 M
的小参数 n
和常数因子 C
。
这是在类里面给我的:
In Big-Oh notation. Let f be a function from N to the positive reals. (Think of f(n) as the running time for an argument of size n. It could be worst case or it could be average case.) Let g be another such function. We say that f ∈ O(g) when there is some natural number M and constant factor C, such that for all n > M, we have f(n) <= C × g(n). In logical symbols: ∃M. ∃C. ∀n > M. f(n) <= C × g(n)
我可以知道这句话是什么意思吗,特别是:
Let f be a function from N to the positive reals.
Let g be another such function.
We say that f ∈ O(g) when there is some natural number M and constant factor C, such that for all n > M, we have f(n) <= C × g(n). In logical symbols: ∃M. ∃C. ∀n > M. f(n) <= C × g(n)
最佳答案
总结:C 乘以 g 最终支配 f。
1 和 2。
Let f be a function from N to the positive reals. (Think of f(n) as the running time for an argument of size n. It could be worst case or it could be average case.) Let g be another such function.
OK:f 和 g 是从自然数 (N) 到正实数的函数。为什么来自自然数?我们假设参数的大小是我们可以精确指定的。自然数是我们可以精确指定的东西。实数不是。为什么是正实数?我们假设运行时间不一定是我们可以精确指定的。
但这里重要的实际上不是说了什么,而是没说了什么。没有人说 f 是单调递增的,或者 g 是多项式,或者其他什么。我们只知道 f 和 g 是函数。这几乎就是它的全部。是的,它们从自然数映射到正实数,但就限制而言,这是一个相当小的限制。所以这里的重点是:有很多很多函数 f 和 g 可供选择。唯一有点重要的限制是实数比自然数多得多。
3.
We say that f ∈ O(g) when there is some natural number M and constant factor C, such that for all n > M, we have f(n) <= C × g(n). In logical symbols: ∃M. ∃C. ∀n > M. f(n) <= C × g(n)
M 和 C 是常量。我们选择 M 和 C,我们就完成了。这里的重点是至少有一个 M和至少有一个C满足句子。不是:任何 M 也不是任何 C。声明是存在至少一个这样的M 和C。
另一方面,n 不是常数。我们可以选择 n 为任何数,只要它大于 M。声明说对于 any 选择 n(大于 M),至少可以找到 C 的一个值,所以如果你将 g(n) 乘以 C,这个乘积将大于 f(n)。 什么 n 并不重要,只要它大于 M。
当我们假设解除了其中一个限制时,我们考虑常数 M 和 C 的原因就变得很清楚了。假设语句没有提到 M:
We say that f ∈ O'(g) when there is some constant factor C, such that for all n, we have f(n) <= C × g(n). In logical symbols: ∃C. ∀n f(n) <= C × g(n)
现在说的是:考虑 f 的所有可能输出和 g 的所有可能输出的空间。如果我们将 g 的输出空间“扩张”一个常量 C,则它们中的每一个都将大于 f 中的任何一个点。现在这是比我们指定 M 时更强的陈述。如果 f(0) = 10 且 g(0) = 0 会怎样?现在,可以没有 C 使Cg(0) > Cf(0)
。因此,M“切断”了这些坏边。
这个页面有很好的解释和视觉效果,还有:https://xlinux.nist.gov/dads/HTML/bigOnotation.html
关于algorithm - Big O Notation - 自然数 M 和常数因子 C 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54831827/
我们使用 Ө-notation 来写插入排序的最坏情况运行时间。但是我无法将 Ө-notation 的属性与插入排序联系起来,为什么 Ө-notation 适用于插入排序。对于所有 n>=n0,插入排
我最近有幸学习了一点 Idris,我发现非常方便的一件事是 ! -notation ,这让我缩短了 do block 中的一元代码,例如 a' = 7.10)我们可以写 someFunction a
我试图理解 Big Theta 符号并遇到了一个例子: 我知道我们必须为这个符号找到两个常量 c1 和 c2,使得 c1*g(n)<= f(n) <= c2*g(n)。我的问题是他们如何找到这两个常量
我希望它的计算结果为 3,但得到了一个错误: Idris> :let x = Just 2 Idris> 1 + !x (input):1:3-4:When checking an applicati
这个问题已经有答案了: Accessing nested JavaScript objects and arrays by string path (45 个回答) 已关闭 5 年前。 我有一个像这样
Dev Bootcamp 的作业前练习之一是 RPN 计算器。我成功了,但想要重构反馈。非常感谢任何有助于使此代码更清晰的帮助。 class RPNCalculator def evaluate(
素描documentation据说点号和大括号符号可以相互混合。它甚至是一个 example可用: [[context.document currentPage] deselectAllLayers]
如何将这些 CocoaScript“大括号表示法”转换为 JavaScript“点表示法”语法? [fileManager createDirectoryAtPath: tmpFolder withI
只是想知道,例如在维基百科页面 Dijkstra's algorithm O(|E| + |V|log|V|) 中绝对值条的含义是什么 最佳答案 竖线表示 cardinality (或大小)一组。在
我正在处理一个使用系统匈牙利符号的遗留 COM C++ 项目。因为它是对遗留代码的维护,所以约定是以它编写的原始样式进行编码 - 我们的新代码不是这样编码的。所以我对改变这个标准或讨论我们过去的罪不感
我想在 Haskell 中按顺序组合两个 monad Action ,丢弃第二个产生的任何值,并将参数传递给这两个 Action 。目前我正在使用这样的do-block: ask = do res
如何将负数从中缀转换为后缀? 假设我有一个表达式 a = - b - (-c-d) 在我读到的某些地方,您可以将负数归为一类,例如 a = (-b) - (-c-d) 但在这里,如果我这样做,我会在后
我想知道是否有办法使用 2 个堆栈一次性解决中缀表达式?堆栈可以一个用于运算符,另一个用于操作数... shunt-yard算法求解的标准方法是将中缀表达式转换为后缀表达式(反向波兰)然后求解。我不想
我的任务是将一些 Python 代码转换为 Java。我遇到了一些我不熟悉的符号,似乎找不到任何信息。我猜这是因为我缺少关键字。 为了简单起见,我对代码进行了清理并硬编码了一些基本值。 index_t
我想知道是否有一种方法可以使用 2 个堆栈一次解决中缀表达式?堆栈可以是一个用于运算符,另一个用于操作数... shunt-yard算法求解的标准方法是将中缀表达式转换为后缀(逆向抛光),然后求解。我
do 表示法允许我们在没有过多嵌套的情况下表达 monadic 代码,因此 main = getLine >>= \ a -> getLine >>= \ b -> put
我正在学习 Haskell。 我正在尝试查找列表中的元素 as列表元素的总和 bs ,将元素作为元组返回: findSum2 :: [Int] -> [Int] -> [(Int,Int,Int)]
这个问题在这里已经有了答案: How to pass Scala array into Scala vararg method? (3 个回答) What does `:_*` (colon unde
我经常在教程中看到 m_ 前缀用于变量 (m_World,m_Sprites,...) 、示例等主要与游戏开发相关的代码。 为什么人们要给变量添加前缀m_? 最佳答案 这是定义作为成员变量的变量的典型
这个问题在这里已经有了答案: What is a non-capturing group in regular expressions? (17 个回答) 5年前关闭。 对于我的一门课,我必须描述以下
我是一名优秀的程序员,十分优秀!