导航:首页 > 源码编译 > 用算法评论

用算法评论

发布时间:2022-09-18 04:54:22

Ⅰ 如何评价算法

评价算法的四个标准:

1.正确性

能正确地实现预定的功能,满足具体问题的需要。处理数据使用的算法是否得当,能不能得到预想的结果。

2.易读性

易于阅读、理解和交流,便于调试、修改和扩充。写出的算法,能不能让别人看明白,能不能让别人明白算法的逻辑? 如果通俗易懂,在系统调试和修改或者功能扩充的时候,使系统维护更为便捷。

3.健壮性

输入非法数据,算法也能适当地做出反应后进行处理,不会产生预料不到的运行结果。数据的形式多种多样,算法可能面临着接受各种各样的数据,当算法接收到不适合算法处理的数据,算法本身该如何处理呢?如果算法能够处理异常数据,处理能力越强,健壮性越好。

4.时空性

算法的时空性是该算法的时间性能和空间性能。主要是说算法在执行过程中的时间长短和空间占用多少问题。

算法处理数据过程中,不同的算法耗费的时间和内存空间是不同的。

(1)用算法评论扩展阅读:

算法是对特定问题求解步骤的一种描述,它是指令的有限序列,其中每一条指令表示一个或多个操作。此外,一个算法还具有下列5个重要的特性。

(1)、有穷性

一个算法必须总是(对任何合法的输入值)在执行有穷步之后结束,且每一步都可在有穷时间内完成。

(2)、确定性

算法中每一条指令必须有明确的含义,读者理解时不会产生二义性。即对于相同的输入只能得到相同的输出。

(3)、可行性

一个算法是可行的,即算法中描述的操作都是可以通过已经实现的基本运算执行有限次来实现的。

(4)、输入

一个算法有零个或多个的输入,这些输入取自于某个特定的对象的集合。

(5)、输出

一个算法有一个或多个的输出,这些输出是同输入有着某种特定关系的量。

Ⅱ 应该从哪些方面分析和评价算法的性能

分析评价算法性能的四个标准:

1.正确性

能正确地实现预定的功能,满足具体问题的需要。处理数据使用的算法是否得当,能不能得到预想的结果。

2.易读性

易于阅读、理解和交流,便于调试、修改和扩充。写出的算法,能不能让别人看明白,能不能让别人明白算法的逻辑?如果通俗易懂,在系统调试和修改或者功能扩充的时候,使系统维护更为便捷。

3.健壮性

输入非法数据,算法也能适当地做出反应后进行处理,不会产生预料不到的运行结果。数据的形式多种多样,算法可能面临着接受各种各样的数据,当算法接收到不适合算法处理的数据,算法本身该如何处理呢?如果算法能够处理异常数据,处理能力越强,健壮性越好。

4.时空性

算法的时空性是该算法的时间性能和空间性能。主要是说算法在执行过程中的时间长短和空间占用多少问题。

算法处理数据过程中,不同的算法耗费的时间和内存空间是不同的。

(2)用算法评论扩展阅读:

算法是对特定问题求解步骤的一种描述,它是指令的有限序列,其中每一条指令表示一个或多个操作。此外,一个算法还具有下列5个重要的特性。

(1)、有穷性

一个算法必须总是(对任何合法的输入值)在执行有穷步之后结束,且每一步都可在有穷时间内完成。

(2)、确定性

算法中每一条指令必须有明确的含义,读者理解时不会产生二义性。即对于相同的输入只能得到相同的输出。

(3)、可行性

一个算法是可行的,即算法中描述的操作都是可以通过已经实现的基本运算执行有限次来实现的。

(4)、输入

一个算法有零个或多个的输入,这些输入取自于某个特定的对象的集合。

(5)、输出

一个算法有一个或多个的输出,这些输出是同输入有着某种特定关系的量。

Ⅲ 评价算法的四个标准是什么

评价算法的四个标准:

1.正确性

能正确地实现预定的功能,满足具体问题的需要。处理数据使用的算法是否得当,能不能得到预想的结果。

2.易读性

易于阅读、理解和交流,便于调试、修改和扩充。写出的算法,能不能让别人看明白,能不能让别人明白算法的逻辑?如果通俗易懂,在系统调试和修改或者功能扩充的时候,使系统维护更为便捷。

3.健壮性

输入非法数据,算法也能适当地做出反应后进行处理,不会产生预料不到的运行结果。数据的形式多种多样,算法可能面临着接受各种各样的数据,当算法接收到不适合算法处理的数据,算法本身该如何处理呢?如果算法能够处理异常数据,处理能力越强,健壮性越好。

4.时空性

算法的时空性是该算法的时间性能和空间性能。主要是说算法在执行过程中的时间长短和空间占用多少问题。

算法处理数据过程中,不同的算法耗费的时间和内存空间是不同的。

(3)用算法评论扩展阅读:

算法是对特定问题求解步骤的一种描述,它是指令的有限序列,其中每一条指令表示一个或多个操作。此外,一个算法还具有下列5个重要的特性。

(1)、有穷性

一个算法必须总是(对任何合法的输入值)在执行有穷步之后结束,且每一步都可在有穷时间内完成。

(2)、确定性

算法中每一条指令必须有明确的含义,读者理解时不会产生二义性。即对于相同的输入只能得到相同的输出。

(3)、可行性

一个算法是可行的,即算法中描述的操作都是可以通过已经实现的基本运算执行有限次来实现的。

(4)、输入

一个算法有零个或多个的输入,这些输入取自于某个特定的对象的集合。

(5)、输出

一个算法有一个或多个的输出,这些输出是同输入有着某种特定关系的量。

Ⅳ 如何评价算法

评价算法的四个标准:

1.正确性

能正确地实现预定的功能,满足具体问题的需要。处理数据使用的算法是否得当,能不能得到预想的结果。

2.易读性

易于阅读、理解和交流,便于调试、修改和扩充。写出的算法,能不能让别人看明白,能不能让别人明白算法的逻辑?如果通俗易懂,在系统调试和修改或者功能扩充的时候,使系统维护更为便捷。

3.健壮性

输入非法数据,算法也能适当地做出反应后进行处理,不会产生预料不到的运行结果。数据的形式多种多样,算法可能面临着接受各种各样的数据,当算法接收到不适合算法处理的数据,算法本身该如何处理呢?如果算法能够处理异常数据,处理能力越强,健壮性越好。

4.时空性

算法的时空性是该算法的时间性能和空间性能。主要是说算法在执行过程中的时间长短和空间占用多少问题。

算法处理数据过程中,不同的算法耗费的时间和内存空间是不同的。

(4)用算法评论扩展阅读:

算法是对特定问题求解步骤的一种描述,它是指令的有限序列,其中每一条指令表示一个或多个操作。此外,一个算法还具有下列5个重要的特性。

(1)、有穷性

一个算法必须总是(对任何合法的输入值)在执行有穷步之后结束,且每一步都可在有穷时间内完成。

(2)、确定性

算法中每一条指令必须有明确的含义,读者理解时不会产生二义性。即对于相同的输入只能得到相同的输出。

(3)、可行性

一个算法是可行的,即算法中描述的操作都是可以通过已经实现的基本运算执行有限次来实现的。

(4)、输入

一个算法有零个或多个的输入,这些输入取自于某个特定的对象的集合。

(5)、输出

一个算法有一个或多个的输出,这些输出是同输入有着某种特定关系的量。

Ⅳ 5. 简答题 算法的评价标准有哪些如何评价

评价算法的四个标准:

1.正确性

能正确地实现预定的功能,满足具体问题的需要。处理数据使用的算法是否得当,能不能得到预想的结果。

2.易读性

易于阅读、理解和交流,便于调试、修改和扩充。写出的算法,能不能让别人看明白,能不能让别人明白算法的逻辑?如果通俗易懂,在系统调试和修改或者功能扩充的时候,使系统维护更为便捷。

3.健壮性

输入非法数据,算法也能适当地做出反应后进行处理,不会产生预料不到的运行结果。数据的形式多种多样,算法可能面临着接受各种各样的数据,当算法接收到不适合算法处理的数据,算法本身该如何处理呢?如果算法能够处理异常数据,处理能力越强,健壮性越好。

4.时空性

算法的时空性是该算法的时间性能和空间性能。主要是说算法在执行过程中的时间长短和空间占用多少问题。

算法处理数据过程中,不同的算法耗费的时间和内存空间是不同的。

(5)用算法评论扩展阅读:

算法是对特定问题求解步骤的一种描述,它是指令的有限序列,其中每一条指令表示一个或多个操作。此外,一个算法还具有下列5个重要的特性。

(1)、有穷性

一个算法必须总是(对任何合法的输入值)在执行有穷步之后结束,且每一步都可在有穷时间内完成。

(2)、确定性

算法中每一条指令必须有明确的含义,读者理解时不会产生二义性。即对于相同的输入只能得到相同的输出。

(3)、可行性

一个算法是可行的,即算法中描述的操作都是可以通过已经实现的基本运算执行有限次来实现的。

(4)、输入

一个算法有零个或多个的输入,这些输入取自于某个特定的对象的集合。

(5)、输出

一个算法有一个或多个的输出,这些输出是同输入有着某种特定关系的量。

Ⅵ 数据驱动!一次利用算法提升评论活跃的案例

哪个产品甘愿只做用户用完即走的工具?作为内容产品的产品经理,内容同质化带来的用户流失始终是困扰我们的问题,如何让用户留存并活跃,产生粘性呢?可以通过做社交来实现,通过内容的评论区向社区进行的转化,例如网易云音乐。优化评论区有很多办法,本文将从评论排序算法的角度,介绍一次评论排序优化的过程,并展望下后续的迭代思路。

本文行文思路如下:

探讨这个问题之前先要讲评论区对于一篇内容来说有什么作用。评论尤其是优质评论能够让用户产生共鸣,加深对内容的理解,或者激发用户讨论等等。灌水的评论也是组成评论的一部分,但其价值显然没有优质评论高,那怎样让优质的评论获得更多的曝光,解决优质的评论内容无法被用户看到,互动量少的问题。这就是做评论排序的一个重要意义。

现在主流的评论排序有3种,按点赞数量排序,按时间排序以及基于算法排序。

按点赞排序最能反映用户对评论内容的态度,也最直观易懂,而其问题是时间越长,评论数量越多,新的评论得到的曝光越差。按时间排序则能保证评论内容的流动性,即时性强,但这种排序方式又不能让优质的评论获得最大限度的曝光。基于各类算法排序则一定程度上将这两种的优点结合起来,既保证了优质评论能获得更多的曝光,又能让评论流动更新,在这次迭代时我们也选择了算法排序的方式。

Hacker News算法源于Y Combinator旗下的新闻频道Hacker News,用户可以在此讨论某个新闻或主题,同时用户可以对其进行投票。Hacker News算法则基于用户投票情况与时间等因素,对内容展示进行排序。这个算法的公式如下:

其中P代表的得票数,T代表内容发表至今的时间(单位为小时)。而(P-1),(T+2),1.8这些数值,设计这个算法的人对此的解释是:(P-1)是为了去掉提交者的投票,(T+2)是为了防止最新帖子分母过下导致最终得分无限大(有说法是选择2是因为从原始文章出现在其他网站,到转帖到Hacker News平均需要两小时),而1.8则是“重力引子”或者叫做“万有引力”参数,默认为1.8。

了解这个公式之后我们画个图

我们发现在其他条件相同时,时间越长,分值越低;投票越多,分值越高;重力引子越大,随时间衰减越快。深度了解之后我们发现其分子其实代表的是内容质量,分母控制跟随时间衰减。

(Q指内容质量分,G指重力引子)

了解这些之后我们可以开始动手干了。

扩展:相似类型的算法还有Reddit,Delicious,IMDB等。感兴趣的同学可以自行查阅。

前面我们提到了,Hacker News算法计算公式的分子本质上表现的是内容质量。那从哪些维度可以评估评论的内容质量或者影响评论的用户互动行为呢?可用的指标有点赞数,回复数,评论(回复)字数,发表用户是否KOL,回复增长速度等。在本次实践中我们提出猜想为点赞数,回复数,字数可以影响内容质量。基于我们的猜想我们在Hacker News算法的基础上进行调整,衍生出了5种计算方式,如下:

原始:Score=(P-1)/(T+2)^1.8

衍生1:Score= (P)/(T+2)^1.8:点赞数不进行减1

衍生2:Score= (P+R)/2*[(T+2)^1.8]:加入回复数的维度,回复数与点赞数各占1/2权重

衍生3:Score= (P+3R)/4*[(T+2)^1.8]:加入回复数的维度,回复数占3/4权重,点赞数占1/4权重

衍生4:Score= [P+R+N/AVERAGE(N)]/3*[(T+2)^1.8] :加入回复数与字数的维度,字数以文章平均字数为1单位,回复数,点赞数与字数各占1/3权重

衍生5:Score= [2P+5R+N/AVERAGE(N)]/8*[(T+2)^1.8] :加入回复数与字数的维度,字数以文章平均字数为1单位,回复数占5/8权重,点赞数占2/8权重,字数占1/8权重

(Score=排序分;P=点赞数;R=回复数;N=字数;AVERAGE(N)=当前文章评论字数平均值;T=评论发布距今天小时数)

确定了算法后,我们抽取了几篇线上的评论量相对较多的文章的评论内容,按上面的几种算法进行排序,观察对比每种算法排序的评论列表的特点,以及这几种算法能否让优质评论突出,让灌水评论沉底。我们以《武汉市中心医院:李医生去世》这篇文章为例,这篇文章约有5000条评论,将其所有评论按以上6种算法排序后如图所示。

列表开头:

列表结尾:

得出以下研究结果:

1.点赞和回复数较多的评论不太会受算法影响,受时间衰减影响也较小,能够一直排在最前的位置

2.仅计算点赞与回复数时,如遇无点赞与回复评论则仅以时间倒序进行排序,质量较高的评论会被沉底,需要加入字数维度进行调整

3.加入字数维度能够有效将质量较低(字数少,无意义,无点赞回复)的评论甩在队列最后

4.加入字数和回复数维度后较多较高质量评论(有一定的观点,字数较多,点赞和回复数中等)的排序会更靠前

5.有效字数需要进行限制,如遇灌水帖本身质量不高却能因字数较多排名靠前,而且字数无法完全证明该评论质量,需要削弱影响占比

根据上面的案例研究,我们需要加入有效字数的限制逻辑,本次案例中我按67个字进行了限制(受测产品在标准屏幕下一级评论收起状态最多展示字数67字)计算字数时小于67字按实际字数计算,大于等于67字时按67字计算。

为了控制开发成本,也为了增大各个分组的样本量。我们在以上算法中挑出2种,原始算法与衍生5。来观察不进行评论排序,Hacker News算法排序与衍生算法排序的评论数据情况,对比优劣。将所有用户根据用户ID通过模3运算分为3个实验组,分别展示不同的排序算法得出的评论列表。(如果用户量较少不建议将所有用户进行对比,分组容易产生特殊性)

同时由于节省计算资源:一段时间后的评论不再进行排序计算,按质量分最高值为4000(当前观察到的最大质量分)计算Score曲线如下:

算法的更新时效规则设置为:即约T>=80时分数趋近于0且随时间的衰减变弱并考虑资讯内容的时效性,则3天后不再计算衰减,以第72个小时的分数为其最终得分(T最大值为72)。由于随时间衰减为指数型变化,则T<=24时Score每10分钟更新一次,24<T<=48时Score每30分钟更新一次,48<T<=72时Score每60分钟更新一次。

整体方案确定好之后就可以准备开发上线了。

算法上线后,需要随时监测各个对照组的数据情况,并对有疑惑的数据进行抽样检查,了解具体的文章与评论区案例。

经过一段时间对比我们发现加入了回复,点赞和字数多个维度的衍生5算法用户互动更为活跃。至此我们确定了一个基础算法,在这之后继续通过不断调整算法的各项参数,例如重力因子,各指标影响占比等,进行对照试验,试图找出效果更优秀的计算方式。

以上就是一次完整的一次利用算法提升评论活跃的案例。最终在包括算法优化以及新增功能等一些产品迭代的帮助下,产品的评论量增长了一倍多。

提升评论活跃还有很多可以做的工作,例如进行评论的运营:由运营手动或自动的发布一些评论内容,或者对优质评论人工增加推荐权重;功能上支持发图片或者有趣的大表情等。包括算法上也可以提出一些新的假设并进行验证,或者加入自动调整参数的功能,随时根据内容情况调整算法参数与逻辑。评论区运营有一定效果后可以增加同时发送到社区(个人状态)的功能,为社区引流,提升社区氛围。以达到提升用户粘性,促进留存的目的。以上仅是个人的一些拙见,在此抛砖引玉。

除了本文介绍的内容,关于评论区还有一些其他的有趣的产品思路值得探究,例如盖楼式评论区,树状式评论区,直线分支式评论区等。以及刚刚提到的几种内容排序算法。感兴趣的同学可以查阅资料。

本文在编写过程中较为仓促,难免疏漏烦请指出,虚心接受(求轻喷我还是个孩子)。同时为避免一些问题,省略了一些不重要的步骤,部分参数非真实值,请谅解。

2020年4月17日

我是刘轩宇,从业2年半,前内容网站用户端产品经理,深水二次元,随时欢迎大家与我交流,包括但不限于产品,动漫,游戏。Wechat:GraythornVi

Ⅶ 算法的评价指标有哪些

时间复杂度和空间复杂度。

1、时间复杂度

算法的时间复杂度是指执行算法所需要的计算工作量。一般来说,计算机算法是问题规模n 的函数f(n),算法的时间复杂度也因此记做。

T(n)=Ο(f(n))

因此,问题的规模n 越大,算法执行的时间的增长率与f(n) 的增长率正相关,称作渐进时间复杂度(Asymptotic Time Complexity)。

2、空间复杂度

算法的空间复杂度是指算法需要消耗的内存空间。其计算和表示方法与时间复杂度类似,一般都用复杂度的渐近性来表示。同时间复杂度相比,空间复杂度的分析要简单得多。

空间复杂度记做S(n)=O(f(n))。比如直接插入排序的时间复杂度是O(n^2),空间复杂度是O(1) 。而一般的递归算法就要有O(n)的空间复杂度了,因为每次递归都要存储返回信息。一个算法的优劣主要从算法的执行时间和所需要占用的存储空间两个方面衡量。

(7)用算法评论扩展阅读:

算法的方法:

1、递推法

递推是序列计算机中的一种常用算法。它是按照一定的规律来计算序列中的每个项,通常是通过计算机前面的一些项来得出序列中的指定项的值。其思想是把一个复杂的庞大的计算过程转化为简单过程的多次重复,该算法利用了计算机速度快和不知疲倦的机器特点。

2、递归法

程序调用自身的编程技巧称为递归(recursion)。一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。

一般来说,递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进;当边界条件满足时,递归返回。

注意:

(1) 递归就是在过程或函数里调用自身.

(2) 在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口。

Ⅷ 如何评价一个算法的好坏

首先,这个算法必须是正确的
其次,好的算法应该是友好的,便于人们理解和交流,并且是机器可执行的。
这个算法还需要足够健壮,即当输入的数据非法或不合理时,也能适当的做出正确的反应或进行相应的处理
最后它还必须拥有高效率和低存储量要求。
也就是所谓的时间复杂度和空间复杂度

1.时间复杂度

定义:在计算机科学中,算法的时间复杂度是一个函数,他定量描述了该算法的运行时间.一个算法执行所耗费的时间,从理论上讲,只有你把你的程序放机器上跑起来,才能知道.然而我们有一套时间复杂度的分析方式.一个算法所花费的时间与其中语句的执行次数成正比例.算法中的基本操作的执行次数,为算法的时间复杂度.

2.时间复杂度为什么不使用时间来衡量而使用基本语句的运行次数来衡量?

算法的执行时间依赖于具体的软硬件环境,所以,不能用执行时间的长短来衡量算法的时间复杂度,而要通过基本语句执行次数的数量级来衡量。

3.时间复杂度的O渐进表示法(Big O notation)

是用于描述函数渐进行为的数学符号.

大O阶方法推导:
计算基本语句的执行次数的数量级;
只需计算基本语句执行次数的数量级,这就意味着只要保证基本语句执行次数的函数中的最高次幂正确即可,可以忽略所有低次幂和最高次幂的系数。这样能够简化算法分析,并且使注意力集中在最重要的一点上:增长率。
如果算法中包含嵌套的循环,则基本语句通常是最内层的循环体,如果算法中包含并列的循环,则将并列循环的时间复杂度相加。例如:

for (i=1; i<=n; i++)
x++;
for (i=1; i<=n; i++)
for (j=1; j<=n; j++)
x++;

第一个for循环的时间复杂度为Ο(n),第二个for循环的时间复杂度为Ο(n2),则整个算法的时间复杂度为Ο(n+n2)=Ο(n2)。

4.时间复杂度的:最优、平均、最差情况,为什么时间复杂度看的是最差情况?

最差情况下的复杂度是所有可能的输入数据所消耗的最大资源,如果最差情况下的复杂度符合我们的要求,我们就可以保证所有的情况下都不会有问题。

某些算法经常遇到最差情况。比如一个查找算法,经常需要查找一个不存在的值。
也许你觉得平均情况下的复杂度更吸引你,可是平均情况也有几点问题。第一,难计算,多数算法的最差情况下的复杂度要比平均情况下的容易计算的多,第二,有很多算法的平均情况和最差情况的复杂度是一样的. 第三,什么才是真正的平均情况?如果你假设所有可能的输入数据出现的概率是一样的话,也是不合理的。其实多数情况是不一样的。而且输入数据的分布函数很可能是你没法知道。
考虑最好情况的复杂度更是没有意义。

5.如何求解:二分查找、递归求阶乘、递归斐波那契的时间复杂度?

二分查找:通过折纸查找求解时间复杂度为O(logN);
递归求阶乘:数基本操作递归N次得到时间复杂度为O(N);
递归斐波那契:分析得出基本操作递归了2N次,时间复杂度为O(2N);

6.什么是空间复杂度?

空间复杂度是对一个算法在运行过程中临时占用存储空间大小的度量.空间复杂度不是程序占用了多少bytes的空间,因为这个也没太大意义,所以空间复杂度算的是变量的个数.空间复杂度计算规则基本跟时间复杂度类似,也使用大O渐进法表示.

7.如何求空间复杂度? 普通函数&递归函数

一个算法的空间复杂度只考虑在运行过程中为局部变量分配的存储空间的大小,它包括为参数表中形参变量分配的存储空间和为在函数体中定义的局部变量分配的存储空间两个部分。若一个算法为 递归算法,其空间复杂度为递归所使用的堆栈空间的大小,它等于一次调用所分配的临时存储空间的大小乘以被调用的次数(即为递归调用的次数加1,这个1表示开始进行的一次非递归调用)。算法的空间复杂度一般也以数量级的形式给出。如当一个算法的空间复杂度为一个常量,即不随被处理数据量n的大小而改变时,可表示为O(1);当一个算法的空间复杂度与以2为底的n的对数成正比时,可表示为O(log2n);当一个算法的空间复杂度与n成线性比例关系时,可表示为O(n).若形参为数组,则只需要为它分配一个存储由实参传送来的一个地址指针的空间,即一个机器字长空间;若形参为引用方式,则也只需要为其分配存储一个地址的空间,用它来存储对应实参变量的地址,以便由系统自动引用实参变量。
8. 分析递归斐波那契数列的:时间、空间复杂度,并对其进行优化,伪递归优化->循环优化

long long Fib(int N) {
if (N < 3)
return 1;
return Fib(N - 1) + Fib(N - 2);
}

普通递归实现的斐波那契数列:
时间复杂度:O(2^n)

计算并根据O渐进表示法得出时间复杂度.

空间复杂度:O(N);递归深度乘以(每一次递归的空间占用{有辅助空间或常量})

伪递归优化:

long long fib (long long first, longlong second, int N) {
if(N <3)
return 1;
if(N == 3)
return first + second;
return fib(second, first+second,N-1);
}

时间复杂度:
O(N);
递归深度乘以每次递归的循环次数
空间复杂度:
O(1)或O(N)
关键看编译器是否优化,优化则为O(1)否则O(N);

循环优化:

long long Fib(int N) {
long long first = 1;
long long second = 1;
long long ret = 0;
for (int i = 3; i <= N ; ++i) {
ret = first + second;
first = second;
second = ret;
}
return second;
}

时间复杂度:O(N);

空间复杂度:O(1);

9.常见时间复杂度

常见的算法时间复杂度由小到大依次为: Ο(1)<Ο(log2n)<Ο(n)<Ο(nlog2n)<Ο(n2)<Ο(n3)<…<Ο(2n)<Ο(n!) Ο(1)表示基本语句的执行次数是一个常数,一般来说,只要算法中不存在循环语句,其时间复杂度就是Ο(1)。Ο(log2n)、Ο(n)、Ο(nlog2n)、Ο(n2)和Ο(n3)称为多项式时间,而Ο(2n)和Ο(n!)称为指数时间。

Ⅸ 一个算法的评价主要从哪些方面来考虑

一个算法的评价主要从以下几个方面来考虑:

1、时间复杂度

算法的时间复杂度是指执行算法所需要的计算工作量。一般来说,计算机算法是问题规模n 的函数f(n),算法的时间复杂度也因此记做。

T(n)=Ο(f(n))

因此,问题的规模n 越大,算法执行的时间的增长率与f(n) 的增长率正相关,称作渐进时间复杂度(Asymptotic Time Complexity)。

2、空间复杂度

算法的空间复杂度是指算法需要消耗的内存空间。其计算和表示方法与时间复杂度类似,一般都用复杂度的渐近性来表示。同时间复杂度相比,空间复杂度的分析要简单得多。

3、正确性

算法的正确性是评价一个算法优劣的最重要的标准。

4、可读性

算法的可读性是指一个算法可供人们阅读的容易程度。

5、健壮性

健壮性是指一个算法对不合理数据输入的反应能力和处理能力,也称为容错性。

(9)用算法评论扩展阅读:

算法可大致分为基本算法、数据结构的算法、数论与代数算法、计算几何的算法、图论的算法、动态规划以及数值分析、加密算法、排序算法、检索算法、随机化算法、并行算法,厄米变形模型,随机森林算法。

算法可以宏泛的分为三类:

一、有限的,确定性算法 这类算法在有限的一段时间内终止。他们可能要花很长时间来执行指定的任务,但仍将在一定的时间内终止。这类算法得出的结果常取决于输入值。

二、有限的,非确定算法 这类算法在有限的时间内终止。然而,对于一个(或一些)给定的数值,算法的结果并不是唯一的或确定的。

三、无限的算法 是那些由于没有定义终止定义条件,或定义的条件无法由输入的数据满足而不终止运行的算法。通常,无限算法的产生是由于未能确定的定义终止条件。

Ⅹ 举例说明何谓算法,特点是什么评价一个算法的优劣,主要从哪些因素分析

评价算法优劣的四个分析因素:

1.正确性

能正确地实现预定的功能,满足具体问题的需要。处理数据使用的算法是否得当,能不能得到预想的结果。

2.易读性

易于阅读、理解和交流,便于调试、修改和扩充。写出的算法,能不能让别人看明白,能不能让别人明白算法的逻辑?如果通俗易懂,在系统调试和修改或者功能扩充的时候,使系统维护更为便捷。

3.健壮性

输入非法数据,算法也能适当地做出反应后进行处理,不会产生预料不到的运行结果。数据的形式多种多样,算法可能面临着接受各种各样的数据,当算法接收到不适合算法处理的数据,算法本身该如何处理呢?如果算法能够处理异常数据,处理能力越强,健壮性越好。

4.时空性

算法的时空性是该算法的时间性能和空间性能。主要是说算法在执行过程中的时间长短和空间占用多少问题。

算法处理数据过程中,不同的算法耗费的时间和内存空间是不同的。

(10)用算法评论扩展阅读:

算法是对特定问题求解步骤的一种描述,它是指令的有限序列,其中每一条指令表示一个或多个操作。此外,一个算法还具有下列5个重要的特性。

(1)、有穷性

一个算法必须总是(对任何合法的输入值)在执行有穷步之后结束,且每一步都可在有穷时间内完成。

(2)、确定性

算法中每一条指令必须有明确的含义,读者理解时不会产生二义性。即对于相同的输入只能得到相同的输出。

(3)、可行性

一个算法是可行的,即算法中描述的操作都是可以通过已经实现的基本运算执行有限次来实现的。

(4)、输入

一个算法有零个或多个的输入,这些输入取自于某个特定的对象的集合。

(5)、输出

一个算法有一个或多个的输出,这些输出是同输入有着某种特定关系的量。

阅读全文

与用算法评论相关的资料

热点内容
数控车床编程加工视频 浏览:245
程序员在公司受到委屈 浏览:783
玩和平精英显示连接不到服务器怎么办 浏览:705
安卓如何一步安装软件 浏览:493
云服开我的世界服务器标配 浏览:170
打印机的分配算法 浏览:634
新加坡服务器怎么进 浏览:620
上海女程序员上班被偷 浏览:377
如何添加后台app 浏览:350
中国移动机顶盒时钟服务器地址 浏览:943
如何开发app流程 浏览:427
哈尔滨编程培训课程 浏览:722
编程语言执行速度排行 浏览:174
启辰原厂导航如何装app 浏览:840
jsp项目优秀源码 浏览:757
如何查看电脑web服务器端口号 浏览:901
小区物业管理系统编程源码 浏览:96
王城战争为什么无法获取服务器列表 浏览:805
剑桥商务英语pdf 浏览:480
服务器如何不休眠 浏览:800