当前位置: 网站首页>小程序开发>小程序制作

邢台400电话办理【邢台网站公司】邢台百度优化、邢台域名注册、邢台网店美工、邢台微信公众号托管

发表日期: 2021-04-13 09:13:06 浏览次数:123

邢台400电话办理【邢台网站公司】邢台百度优化、邢台域名注册、邢台网店美工、邢台微信公众号托管


邢台,简称“邢”,古称邢州、顺德府,是河北省地级市,河北省政府批复确定的京津冀城市群节点城市、河北省级历史文化名城、冀中南先进制造业基地和物流枢纽 [1]  。截至2020年,全市下辖4个区、12个县、代管2个县级市。 [2]  总面积12400平方千米,市区建成区面积214.84平方千米,常住人口739.52万人,城镇人口401.04万人,城镇化率54.23%。 [3-5] 

邢台地处中国华北地区、河北南部,境内京广、京九铁路,京广、京九高铁,京港澳、大广、太行山高速纵贯南北;邢和、邢黄铁路,邢衡、邢汾、邢临、青银高速横贯东西,与邢台国际内陆港、邢台机场构成了“东出西联、南承北接”的交通枢纽。 [6] 

邢台拥有3500余年建城史,距今五万至十万年前就有人类栖息繁衍,历史上曾四次建国、五次定都,有“五朝古都、十朝雄郡”之称,是华夏版图上建城历史排名第三的城市 [7]  ,华北历史上第一座城市,中国最早的古都之一,历经三千多年行政建制未曾中断、城址未曾迁移。邢台古城是黄河以北地区建城最早的“第一古城”,被誉为“燕赵第一城”。 [8] 

邢台悠久的历史涌现出郭守敬、李牧、宋璟、刘秉忠等先贤,走出了郭威、柴荣、孟知祥、孟昶等帝王,千古一帝秦始皇东巡途中驾崩于邢台沙丘 [9-10]  。 邢台也是唐朝皇室祖籍地(唐祖陵) [11-14]  ,发生过尧舜禅让、胡服骑射、巨鹿之战、黄巾起义等影响中国历史进程的事件,有破釜沉舟、鹿死谁手、民脂民膏、腹背受敌等近百条成语、典故源自邢台。

在数学表达式中使用大O表示法

严格地讲,大O表达式在数学上正确的使用方式只有出现在“是”字后这一种情况,比如“2n2O(n3)”。不过,在示例3.8以及本章余下的内容中,我们将直接把大O表达式当作加号以及其他算术运算符的操作数,比如表示为O(n)+O(n2)。应将这样使用的大O表达式解释成“作为大O的某个函数”。例如O(n)+O(n2)就表示“某个线性函数和某个二次函数的和”。此外,O(n)+T(n)应该解释为某个线性函数与某个特定函数T(n)的和。

n 能被2整除多少次?对每个奇数n来说,答案为0。所以对每个奇数n,都有PowersOfTwo函数花的时间为O(1)。不过,当n是2的乘方,也就是说当n对某个k而言是2k时,2能整除n的次数正好是k。当n=2k时,可以在等式两边同时取以2为底的对数,得到log2n=k。也就是说,m至多是n的对数,或者说m=O(logn)。4

4请注意,在大O表达式中说到对数时,是不需要指出底数的。原因在于,如果底数分别为ab,那么logan=(logbn)(logab)。因为logab是个常数,所以可以看到logan 和logbn 只有一个常数因子的差别。因此,函数logxn 对于任何不同底数x 来说都互为大O,所以根据传递律,可以在大O表达式中用任意的logbn 来代替logan,其中b是不同于a 的底数。

因此,可以说PowersOfTwo的运行时间是O(logn)。这一边界满足了我们对简单性的定义。不过,还有更精确的方法来统计PowersOfTwo运行时间的上界,这就是说,它是函数f (n)=m(n)+1的大O,其中m(n)是n 被2整除的次数。如图3-6所示,该函数一点都不简单。它的值在剧烈摆动,但从没有超过1+log2n

{%}

图 3-6 函数f (n)=m(n)+1,其中m(n)是n 被2整除的次数

因为PowersOfTwo的运行时间是O(f (n)),而logn又不是O(f (n)),所以可以说logn不是该程序运行时间的紧边界。另一方面,f (n)是紧边界,但它不简单。

运行时间中的对数

如果要考虑的算法需要处理积分(\ln{a}=\int^a_1\frac{1}{x}\text{d}x),大家可能会因为它们出现在算法的分析中而感到惊讶。计算机科学家们通常会把“logn”考虑为log2n,而不是lnn和lgn。请注意,log2n 就是将n 除以2直到得到1为止的次数,或者换句话说,是为了得到n,相乘的2的个数。大家可能很容易看出,n=2k其实和说log2n=k 是一样的,只要在两边同时取以2为底的对数即可。

PowersOfTwo函数会尽可能多次地用2整除n,而且当n 是2的乘方时,n 能被2整除的次数就是log2n。对数在对分治算法(就是在每个阶段将输入等分为两个部分,或者分为近似相等的两部分的算法,比如归并排序算法)的分析中会频繁地出现。如果我们一开始有大小为n的输入,那么将输入对半分,直到大小为1的阶段数是log2n。或者,如果n不是2的乘方,就是比log2n 大的最小整数。

3.5.5 求和规则

假设某个程序由两部分组成,一部分耗费的时间是O(n2),而另一部分消耗的时间为O(n3)。可以将这两个大O边界“相加”,从而得出整个程序的运行时间。在很多情况下(包括上述情况),通过应用如下求和规则,可以将大O表达式“相加”。

假设已知T1(n)是O(f1(n)),而且T2(n)是O(f2(n))。此外,假设f2的增长率不大于f1的增长率,也就是说,f2(n)是O(f1(n))。那么就可以得出“T1(n)+T2(n)是O(f1(n))n ”的结论。

要证明这一规则,我们知道存在常数c1c2c3n1n2n3,使得

1. 如果nn1,则T1(n)≤c1f1(n);

2. 如果nn2,则T2(n)≤c2f2(n);

3. 如果nn3,则f2(n)≤c3f1(n)。

n0n1n2n3中最大的那个,则当nn0时,(1)、(2)和(3)都成立。因此,对nn0,有

T1(n)+T2(n)≤c1f1(n)+c2f2(n)

如果使用(3)提供f2(n)的上边界,那么完全可以消去f2(n),并得出

T1(n)+T2(n)≤c1f1(n)+c2c3f1(n)

因此,如果定义cc1+c2c3,就证明了对于所有的nn0,有

T1(n)+T2(n)≤cf1(n)

这一命题刚好就是我们需要得出的结论——T1(n)+T2(n)是O(f1(n))。

示例 3.9

考虑一下图3-7中的程序段。该程序会使A成为n 阶单位矩阵。第(2)行至第(4)行在该n×n二维数组的每个单元中都放上0,接着第(5)行和第(6)行会在从A[0][0]A[n-1][n-1]的对角线线上的位置中放入1。结果就形成了具有对于任意n×n 矩阵M都有如下属性的单位矩阵A

           A × M = M × A = M(1)        scanf("%d",&n);(2)        for (i = 0; i < n; i++)(3)            for (j = 0; j < n; j++)(4)                A[i][j] = 0;(5)        for (i = 0; i < n; i++)(6)            A[i][i] = 1;复制代码

图 3-7 创建单位矩阵A的程序段

第(1)行会读取n,花的时间为O(1),也就是某个和n值无关的固定时间量。第(6)行中的赋值语句花的时间也是为O(1),第(5)行和第(6)行的循环要进行n次,在该循环上花的总时间就是O(n)。类似地,第(4)行中的赋值语句花的时间是O(1)。第(3)行和第(4)行的循环要进行n次,花费的总时间为O(n)。第(2)行至第(4)行的外层循环要执行n次,在每次迭代中花费的时间为O(n),所以总时间就是O(n2)。

因此,图3-7所示程序的运行时间就是O(1)+O(n2)+O(n),分别表示语句(1)、第(2)行至第(4)行的循环,以及第(5)行和第(6)行的循环。更正式地讲,如果以下几点同时成立:

T1(n)是第(1)行所花的时间;

T2(n)是第(2)行至第(4)行所花的时间;

T3(n)是第(5)行和第(6)行所花的时间。

那么可以得出如下结论。

T1(n)是O(1);

T2(n)是O(n2);

T3(n)是O(n)。

因此我们需要T1(n)+T2(n)+T3(n)的上界,从而得出整个程序的运行时间。

因为常数1显然是O(n2),所以可以应用求和规则得出T1(n)+T2(n)是O(n2)。因为nO(n2),就可以对(T1(n)+T2(n))和T3(n)应用求和规则,从而得出T1(n)+T2(n)+T3(n)是O(n2)。也就是说,图3-7所示的整个程序段的运行时间是O(n2)。通俗地讲,就是整个程序几乎将所有的运行时间都花在了第(2)行至第(4)行的循环上,正如我们从以下事实中很容易就能想到的:对于很大的n,矩阵的面积n2要比由n个单元组成的对角线大得多。

示例3.9应用了“低阶项不产生影响”这条规则,因为我们舍弃了1和n这两项比n2次数更低的多项式。不过,求和规则不仅仅能让我们舍弃低阶项。如果有任意多个相同的大O常数项,比如有一列10个赋值语句,每个赋值语句所花的时间都是O(1),那么就可以将这10个O(1)“加起来”,得到O(1)。不那么严格地讲就是,10个常数的和还是个常数。要知道原因,请注意1是O(1),所以10个O(1)中任何一个都可以“被加到”其他任意一个O(1)上,从而得出O(1)这个结果。我们可以不断合并项,直到只剩下O(1)为止。

不过,必须要小心,不要把某个像O(1)这样的“常数”项,与这些随输入大小变化的项弄混了。例如,我们有可能错误地认为,每进行一次图3-7中第(5)行和第(6)行所示的循环,花的时间为O(1),而该循环总共循环了n次,所以第(5)行和第(6)行的总运行时间就是O(1)+O(1)+O(1)+…+(nO(1)),而求和规则告诉我们两个O(1)的和也是O(1),这样,根据归纳法就可以得出结论:任意多个O(1)的和都是O(1)。但是,在这个程序中,n不是常数,它会因输入大小而异。因此,我们没法通过多次应用求和规则推断出nO(1)具有任何特殊的值。当然,如果真要考虑这个问题,那么我们知道nc 的和(其中c 是某个常数)是cn,该函数的大O 形式是O(n),而这就是第(5)行和第(6)行真正的运行时间。

3.5.6 不相称函数

任意两个函数f (n)和g(n)可由大O相比较。也就是说,要么f (n)是O(g(n)),要么g(n)是O(f (n))。或者二者互为对方的大O,因为我们看到过,2n2n2+3n这两个函数就是这种互为大O的关系。这种情况是很不错的。不过不巧的是,也有一些不相称的函数对,它们之间不存在任何大O关系。

示例 3.10

考虑如下函数

也就是,f(1)=1,f(2)=4,f(3)=3,f(4)=16,f(5)=5,等等。类似地,假设有函数

那么f(n)不可能是O(g(n)),因为那些偶数n。因为如我们在3.4节中看到的,n2绝对不是O(n)。类似地,g(n)也不可能是O(f(n)),因为那些奇数n,当n为奇数时,g的值比f 的值增长得更快。

c51c866ffa1ab3457f2021e8bbdbcc1.jpg


邢台400电话办理邢台网站公司邢台百度优化、邢台域名注册、邢台网店美工、邢台微信公众号托管

400-111-6878
服务热线
顶部

备案号: 苏ICP备11067224号

CopyRight © 2011 书生商友信息科技 All Right Reserved

24小时服务热线:400-111-6878   E-MAIL:1120768800@qq.com   QQ:1120768800

  网址: http://www.768800.com  网站建设上往建站

关键词: 网站建设| 域名邮箱| 服务器空间| 网站推广| 上往建站| 网站制作| 网站设计| 域名注册| 网络营销| 网站维护|

企业邮箱| 虚拟主机| 网络建站| 网站服务| 网页设计| 网店美工设计| 网站定制| 企业建站| 网站设计制作| 网页制作公司|

400电话办理| 书生商友软件| 葬花网| 调温纤维| 海洋馆运营维护| 北京保安公司| 殡仪馆服务| 殡葬服务| 苏州殡葬一条龙| 朝阳殡葬| 苏州殡葬服务|

预约专家

欢迎您免费咨询,请填写以下信息,我们收到后会尽快与您联系

  

服务热线:400-111-6878