2算法的评判标致和评判方法

如何去评判一个算法的高效性、可行性并是正确的?

1.评价标准

算法评价(评估,评测)称为算法分析。

可以从以下几个方面:

1)算法的正确性

2)算法的有效性

3)操作界面

4)键壮性

5)易读性和易维护性

 

正确性:

能满足具体问题的需求,且对所有的合法的输入数据都正确。

一个正确的算法应当对所有合法的输入数据都能“计算”出正确的结果。

比如,只有对任意n个数据都能完成排序工作的算法才是一个正确的排序算法

 

评判算法的高效性可以从两个方面:

1. 算法的时间复杂性(time complexity)

       算法对时间的需求

同一问题,算法执行时间越短,效率越高

2. 算法的空间复杂性(space complexity)

       算法对空间的需求(存储空间)

同一问题,算法使用空间越少,效率越高

示例一:

设T(n)=n2+4n,有f(n)=n2,则:

            n2 + 4n = O(n2)

证明:

   因为存在c=2,n0=4,使对于一切n>n0,恒有

            n2 +4n≤2 n2

注意: f(n)越小,越接近T(n)

 

示例二:

又例:算法A的时间耗用函数 

                 T1(n)=20n2+100n

           算法B的时间耗用函数

                 T2(n)=0.5n2-3n+18

于是  T1(n)=O(n2)

      T2(n)=O(n2)

 

注意:因为还存在其他因素的影响,T1(n)=O(n2),只算出20n^2,,而100n,相对于20^2太小,所以O(t)只需保留最大即可。

 

 

平均情况和最坏情况

(1)为什么要区分两种情况

有些算法因分支等因素,对不同的输入数据(即使输入数据量都是n)耗用时间会有所不同,而且往往相差很大

为使评价更客观,更有说服力,通常需要分几种情况讨论算法的时间性能

在算法理论分析上,最常见的是分别计算出最坏情况下和平均情况下算法的时间复杂性(也称最坏性态和平均性态)

 

最坏情况:

具有相同输入数据量的不同输入数据

算法时间用量的最大值

 用TW(n)表示

 

平均情况:

对于所有相同输入数据量的各种不同数据,

算法耗用时间的“平均值”

用TE(n)表示

 

比如:二分查找算法:

1.所要找的数值,在最后一个才找到,比较了log2n次。这是最坏情况。

2.所要找的数值,在第一个就找到,比较了1次。这是理想情况。

评判算法不可能就根据2、3次试验,要看看平均情况。以及效率问题、实用性等。

posted @ 2018-01-09 17:46  gd_沐辰  阅读(473)  评论(0编辑  收藏  举报