发表日期: 2021-04-10 16:21:57 浏览次数:127
沧州400电话办理【沧州网站公司】沧州百度优化、沧州域名注册、沧州网店美工、沧州微信公众号托管
沧州市,河北省地级市,地处河北省东南部、河北平原东部的黑龙港流域,位于北纬37°29′~38°57′,东经115°42′~117°50′之间。东部滨临渤海,北部与天津、廊坊接壤,西部及西南部与保定、衡水毗邻,南隔漳卫新河与山东省的滨州、德州相望。
沧州市因濒临渤海而得名,市中心北距天津市120千米、北京市240千米,西南距省会石家庄220千米。沧州市辖2个市辖区,4个县级市,10个县及沧州渤海新区、沧州经济开发区、沧州高新技术产业开发区,总面积1.4万平方公里。 [1-3]
2020年10月,入选河北省第一批新型智慧城市建设试点名单。
可以应用“大O”的定义证明对特定的函数T和f,T(n)就是O(f(n))。我们会通过选择特定的证物n0和c,接着证明T(n)≤cf(n),从而完成这一证明。证明过程必须假设n是非负整数,且不小于我们选择的n0。通常,证明过程涉及一些代数和不等式的变换。
假设有某个程序,其运行时间为T(0)=1,T(1)=4,T(2)=9,一般表示为T(n)=(n+1)2。我们就可以说T(n)是O(n2),或者说T(n)是二次幂的,因为可以选择证物n0=1和c=4。然后需要证明(n+1)2≤4n2,其中有n≥1。在证明过程中,我们将表达式(n+1)2展开为n2+2n+1。只要n≥1,我们就知道有n≤n2而且有1≤n2。因此
n2+2n+1≤n2+2n2+n2=4n2
此外,也可以选择证物n0=3和c=2,因为,正如大家可以验证的,对所有的n≥3,都有(n+1)2≤2n2。
不过,不能选择n0=0,因为若n0=0,那么对n=0,我们可以证明(0+1)2≤c 02,也就是有1小于等于c 乘以0。因为不管选择什么c,都有c×0=0,而1≤0是不成立的,所以如果我们选择n0=0就玩完了。不过没关系,因为要证明(n+1)2是O(n2),所以只要找出一组可行的证物n0和c 就行了。
大O证明的模版
请记住:所有的大O证明基本遵循相同的形式,只有代数变换是各异的。要证明T(n)就是O(f(n)),要做的只有下面两件事。
1. 说明证物n0和c。这些证物必须是特定的常数,比如n0=47和c=12.5。还有,n0必须是非负整数,而c 必须是正实数。
2. 通过适当的代数变换,证明对所选择的特定证物n0和c,如果n≥n0,则有T(n)≤cf(n)。
这可能看起来有些奇怪,虽然(n+1)2大于n2,但是我们还是说(n+1)2是O(n2)。其实,也可以说(n+1)2是任意分之n2的大O,例如O(n2/100)。要看看原因的话,选择证物n0=1和c=400。那么如果n≥1,由与示例3.2中一样的推导可知
(n+1)2≤400(n2/100)=4n2
这些现象背后的基本原则如下。
1. 常数因子不产生影响。对于任意正值常数d 和任意函数T(n),T(n)是O(dT(n)),不论d 是很大的数,还是很小的分数,只要d>0即可。要知道为什么,可以选择证物n0=0和c=1/d。3那么就有T(n)≤c(dT(n)),因为cd=1。类似地,若已知T(n)是O(f (n)),便也知道对任何的d>0,有T(n)是O(df (n)),即便d 很小。因为我们知道,对某个常数c1和所有的n≥n0,有T(n)≤c1f (n)。如果选择c=c1/d,那么就可以看到,对n≥n0,有T(n)≤c(df(n))。
3请注意,虽然要求选择常数而不是函数作为证物,但选择c=1/d 是没有错的,因为d 本身也是个常数。
2. 低阶项不产生影响。假设T(n)是形如
aknk+ak-1nk-1+…+a2n2+a1n+a0
的多项式,其中开头的系数ak为正数。然后我们可以扔掉除第一项(就是具有最高指数k的那项)之外的所有项,并利用规则(1),忽略常数ak,直接用1代替它。也就是说,我们可以得出T(n)就是O(nk)。为了证明这一点,设n0=1,并设c是各系数ai中所有正系数的和,其中0≤i≤k。如果系数aj 是0或负数,那么肯定有ajn j≤0。如果aj 为正,那么对所有的j< k,只要n≥1,都有ajn j≤aknk。因此T(n)不大于nk乘以所有正系数之和,或者说是T(n)≤cnk。
关于大O的谬论
对“大O”的定义是很诡异的,在该定义中,在检查完T(n)和f (n)后,我们要一次性选择证物n0和c,接着证明对所有的n≥n0,都有T(n)≤cf (n)。不能为每个n值重新选择c 和(或)n0。例如,大家可能偶尔会看到如下证明n2为O(n)的谬误“证明”。“选择n0=0,并为每个n 选择c=n。然后有n2≤cn。”这种论述是无效的,因为我们要求在不知道n 的情况下一次性选定c。
作为规则(1)(“常数因子不产生影响”)的例子,我们看到2n3是O(0.001n3)。令n0=0,而且c=2/0.001=2000。那么显然有,对所有的n≥0,2n3≤2000(0.001n3)=2n3。
作为规则(2)(“低阶项不产生影响”)的例子,考虑多项式T(n)=3n5+10n4-4n3+n+1。最高位的项是n5,我们就说T(n)是O(n5)。要验证该说法,令n0=1,c等于所有正系数的和。正系数的项包含指数为5、4、1和0的这些项,其系数分别为3、10、1和1。因此,令c=15。我们可以说,对n≥1,有
3n5+10n4-4n3+n+1≤3n5+10n5+n5+n5=15n5 (3.1)
我们可以通过对正系数项的匹配来验证不等式(3.1),也就是,3n5≤3n5,10n4≤10n5,n≤n5,以及1≤n5。而且,因为-4n3≤0(之前假设n为正数),所以可以忽略不等式(3.1)左边的负系数项。因此,不等式(3.1)的左边,也就是T(n),要小于等于不等式的右边,也就是15n5,或者说是cn5。由此可以得出T(n)是O(n5)的结论。
其实,低阶项可以删除的原则不仅适用于多项式,而且适用于任何表达式之和。也就是说,如果随着n趋近无穷大,h(n)/g(n)的比值趋近于0,则可以说h(n)比g(n)“增长得慢”,或者说h(n)的“增长率低于”g(n),这样就可以忽略h(n)。也就是说h(n)+g(n)是O(g(n))。
例如,设T(n)=2n+n3。众所周知,多项式(比如n3)要比指数式(比如2n)增长得慢。因为随着n的增大,n3/2n趋近于0,所以我们可以扔掉低阶项,并得出T(n)是O(2n)的结论。
要正式地证明2n+n3是O(2n),令n0=10,c=2。必须证明,对n≥10,有
2n+n3≤2×2n
如果从两边都减去2n,就会发现这是要证明对n≥10,有n3≤2n。
对n=10,我们有210=1024。而103=1000,因此对n=10,有n3≤2n。n每增加1,2n就会翻倍,而n3则是会乘以(n+1)3/n3这个量,而当n≥10时,这个量是小于2的。因此,随着n的增大,n3会逐步小于2n。我们可以得出结论:对n≥10,有n3≤2n,因此有2n+n3是O(2n)。
备案号: 苏ICP备11067224号
CopyRight © 2011 书生商友信息科技 All Right Reserved
24小时服务热线:400-111-6878 E-MAIL:1120768800@qq.com QQ:1120768800
网址: https://www.768800.com 网站建设:上往建站
关键词: 网站建设| 域名邮箱| 服务器空间| 网站推广| 上往建站| 网站制作| 网站设计| 域名注册| 网络营销| 网站维护|
企业邮箱| 虚拟主机| 网络建站| 网站服务| 网页设计| 网店美工设计| 网站定制| 企业建站| 网站设计制作| 网页制作公司|
400电话办理| 书生商友软件| 葬花网| 调温纤维| 海洋馆运营维护| 北京保安公司| 殡仪馆服务| 殡葬服务| 昌平殡葬| 朝阳殡葬|
欢迎您免费咨询,请填写以下信息,我们收到后会尽快与您联系
服务热线:400-111-6878