- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在大O表示法中,我们总是说在大多数情况下我们应该忽略常数因子。也就是说,而不是写作,
3n^2-100n+6
我们几乎总是满意
n^2
因为该项是等式中增长最快的项。
但是我发现很多算法类(class)开始比较函数与许多术语
2n^2+120n+5 = n^2 的大 O
然后为这些长函数找到 c 和 n0,然后建议最终忽略低阶项。
我的问题是,通过尝试理解和分析这些带有许多术语的函数,我会得到什么?在这个月之前,我已经能够轻松理解 O(1)、O(n)、O(LOG(n))、O(N^3) 的含义。但是,如果我只依赖这个常用的函数,我是否会错过一些重要的概念?如果我跳过分析这些长函数,我会错过什么?
最佳答案
首先让我们描述一下 f(n) is in O(g(n))
的含义。 :
... we can say that f(n) is O(g(n)) if we can find a constant c such that f(n) is less than c·g(n) or all n larger than n0, i.e., for all n>n0.
在方程中:我们需要找到一组满足条件的常量(c, n0)
f(n) < c · g(n), for all n > n0, (+)
现在,结果是f(n) is in O(g(n))
有时以不同的形式呈现,例如如f(n) = O(g(n))
或f(n) ∈ O(g(n))
,但声明是一样的。因此,从你的问题来看,声明 2n^2+120n+5 = big O of n^2
只是:
f(n) = 2n^2 + 120n + 5
a result after some analysis: f(n) is in O(g(n)), where
g(n) = n^2
好吧,抛开这个问题,我们看看我们想要渐近分析的函数中的常数项,然后让我们从教育角度来看它,但是使用您的示例。
由于任何大 O 分析的结果都是函数的渐近行为,因此除了一些非常不寻常的情况外,常数项对此行为没有任何影响。然而,常数因子会影响如何选择常数对 (c, n0),用于表明对于某些函数 f(n) 和 g(n),f(n) 的复杂度为 O(g(n)),即,非唯一常数对 (c, n0) 用于表明 (+) 成立。我们可以说常数项不会影响我们的分析结果,但它会影响我们对此结果的推导。
让我们看看您的函数以及另一个相关函数
f(n) = 2n^2 + 120n + 5 (x)
h(n) = 2n^2 + 120n + 22500 (xx)
使用与 this thread 类似的方法,对于f(n)
,我们可以显示:
linear term:
120n < n^2 for n > 120 (verify: 120n = n^2 at n = 120) (i)
constant term:
5 < n^2 for e.g. n > 3 (verify: 3^2 = 9 > 5) (ii)
这意味着如果我们替换 120n
以及 5
在 (x) 中 n^2
我们可以得出以下不等式结果:
Given that n > 120, we have:
2n^2 + n^2 + n^2 = 4n^2 > {by (ii)} > 2n^2 + 120n + 5 = f(n) (iii)
从(iii)中,我们可以选择(c, n0) = (4, 120)
,并且 (iii) 然后表明这些常数满足 (+) f(n)
与 g(n) = n^2
,因此
result: f(n) is in O(n^2)
现在,对于 h(n)
,我们类似地有:
linear term (same as for f(n))
120n < n^2 for n > 120 (verify: 120n = n^2 at n = 120) (I)
constant term:
22500 < n^2 for e.g. n > 150 (verify: 150^2 = 22500) (II)
在本例中,我们替换 120n
以及 22500
在 (xx) n^2
,但我们需要对 n 进行更大的小于约束才能使它们成立,即 n > 150
。因此,我们有以下观点:
Given that n > 150, we have:
2n^2 + n^2 + n^2 = 4n^2 > {by (ii)} > 2n^2 + 120n + 5 = h(n) (III)
与 f(n)
相同,我们可以在这里选择(c, n0) = (4, 150)
,并且 (III) 然后表明这些常数满足 (+) h(n)
,与 g(n) = n^2
,因此
result: h(n) is in O(n^2)
因此,函数 f(n) 和 h(n) 的结果相同,但我们必须使用不同的常数 (c,n0) 来显示这些结果(即,推导有些不同)。最后请注意:
本次讨论的核心是:
n
值,您将能够将关系中的常数项描述为 constant < dominantTerm(n)
,在我们的示例中,我们查看与主导项 n^2
的关系。 关于big-o - 大 O 表示法中低阶项的作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34421620/
Byte byte1=10; Short short1=20; Integer integer=30; 在上面的代码中自动装箱成功在这里查看下面的代码,我正在明确地进行 casitng,因为它默认将
这里有几个相关的问题。 根据标题,如果我们将变量类型指定为 long 或 float、double,为什么它是一个要求?编译器不会在编译时评估变量的类型吗? Java 将所有整型文字视为 int -
我最近一直在使用一些 bash 脚本,并且一直在浏览手册页。根据我收集到的信息,$(( )) 是否表示 expr 而 [ ] 是否表示 test? 对于 $(( )): echo $(( 5 + 3
我有 UILabel,其中显示了 int 值,我希望如果值以千为单位,例如 1000,那么标签应该在 2000 年及以后显示 1k 和 2k。如何实现? 最佳答案 这个怎么样? int myNum =
我正在自学 verilog 并尝试编写失败模型。我在指定部分遇到了以下 ck->q 延迟弧的建模,但无法理解它到底是做什么的。 (posege CK => (Q : 1'b1))=(0, 0); 谁能
考虑这样一个句子: John Smith travelled to Washington. 在美好的一天,名称标记者会将“约翰·史密斯”识别为一个人,将“华盛顿”识别为一个地方。然而,如果没有其他证据
有没有办法通过某种元处理器或预处理器告诉 JavaScript 单词 AND 等于 && 而单词 OR 等于 ||和 <> 等同于 !===? 也许将 THEN 等同于 { 结束到 不要! 最佳答案
我正在处理一个非常大的图,它有 5 亿个节点,节点的平均度为 100。所以它是一种稀疏图。我还必须存储每条边的权重。我目前正在使用两个 vector ,如下所示 // V could be 100 m
我想使用 Python 表示一组整数范围,其中可以动态修改该集合并测试其是否包含在内。具体来说,我想将其应用于文件中的地址范围或行号。 我可以定义我关心的地址范围: 200 - 400 450 -
>>> x = -4 >>> print("{} {:b}".format(x, x)) -4 -100 >>> mask = 0xFFFFFFFF >>> print("{} {:b}".forma
虽然代码不多,但简单明了 复制代码 代码如下: preg_match('/^(?!string)/', 'aa') === true 这个用来验证一个字符串是否是非'string'开头的,
我正在尝试创建一些 SQLAlchemy 模型,并且正在努力解决如何将 timedelta 正确应用于特定列的问题。 timedelta(以天为单位指定)作为整数存储在单独的表 (Shifts) 中,
“Range: bytes=0-” header 是什么意思?是整个文件吗?我尝试发回 0 个字节但没有成功,当我发送整个文件时它可以正常工作,但我在流式上下文中不止一次收到此请求,它看起来不正确。
要创建时间序列的 SAX 表示,您首先需要计算数据的 PAA(分段聚合近似),然后将答案映射到符号表。但是,在计算 PAA 之前,您需要对数据进行标准化。 我正在对数据进行标准化,但我不知道之后如何计
假设我有一个 RESTful、超文本驱动的服务来模拟冰淇淋店。为了帮助更好地管理我的商店,我希望能够显示每日报告,列出所售每种冰淇淋的数量和美元值(value)。 这种报告功能似乎可以作为名为 Dai
我需要以 RDF 格式表示句子。 换句话说,“约翰喜欢可乐”将自动表示为: Subject : John Predicate : Likes Object : Coke 有谁知道我应该从哪里开始?是否
我即将编写一个解析器,将文本文件逐行读取到不同类型的结构中,并将这些结构提供给回调(观察者或访问者 - 尚不确定)。 文本文件包含 MT-940 数据 - SWIFT 银行对帐单。 这些行由一个指定类
我主要是一名 C++ 开发人员,但我经常编写 Python 脚本。我目前正在为游戏编写骰子模拟器,但我不确定在 Python 中解决我的问题的最佳方法。 一共有三种玩家技能,每个玩家一强、中一、弱一。
在过去的 5 个小时里,我一直在寻找答案。尽管我找到了很多答案,但它们并没有以任何方式提供帮助。 我基本上要寻找的是任何 32 位无符号整数的按位异或运算符的数学、算术唯一表示。 尽管这听起来很简单,
我需要将依赖项存储在 DAG 中。 (我们正在细粒度地规划新的学校类(class)) 我们正在使用 rails 3 注意事项 宽于深 很大 我估计每个节点有 5-10 个链接。随着系统的增长,这将增加
我是一名优秀的程序员,十分优秀!