精华内容
下载资源
问答
  • 对一个算法的评价不包括
    千次阅读
    2021-11-02 19:00:15

    算法评价的标准

    1 正确性

    2 可读性

    3 健壮性:运行稳定性、容错性、可靠性和环境适应性等

    4 时间复杂度

    5 空间复杂度

    算法的时间复杂性

    和算法执行时间相关的因素

    1. 问题中存储数据的数据结构
    2. 算法采用的数学模型
    3. 算法设计的策略
    4. 问题的规模
    5. 实现算法的程序设计语言
    6. 编译算法产生的机器代码的质量
    7. 计算机执行指令的速度

    时间复杂度

    算法的执行时间=∑原操作的执行次数 X原操作的执行时间

    算法的执行时间=∑频度

    一般情况下,算法的时间效率是问题规模n的函数。可记作T(n)=O(f(n))。其中,n表示问题的规模,计算法所处理的数据量。这里表示随着问题规模n的增长,算法执行时间的增长率和f(n)的增长率相同,称T(n)为算法的渐进时间复杂度(Asymptotic Time Complexity),简称时间复杂度。O是数学符号,表示数量级,读作阶。

    算法的执行时间为 3*n2+3n+1,则它的时间复杂度为T(n)=O(n2)

    算法的时间复杂度有以下几种数量级形式:

    O(1)常数级

    O(logn)对数级

    O(n)线性级

    O(nc)多项式级(c为常数)

    O(cn)指数级(c为常数)

    O(n!)阶乘级

    最坏时间复杂副

    最好时间复杂度

    平均时间复杂度

    算法的空间复杂性

    一个算法的存储量通常包括:

    1. 输入数据所占空间
    2. 算法本身所占空间
    3. 辅助变量所占空间

    其中,输入数据所占空间只取决于问题本身,与算法无关。算法本身所占空间与算法有关,但一般其大小是相对固定的。所以,研究算法的空间效率,只需要分析除输入和算法本身之外的辅助空间。若所需辅助空间相对输入数据量来说是常数,则称此算法为原地工作,否则它应当是问题规模的一个函数。

    算法的空间复杂度是指算法在执行过程中所占辅助存储空间的大小,用S(n)表示。与算法的时间复杂度相同。算法的空间复杂度也可表示为:S(n)=O(g(n)),表示随着问题规模n的增大,算法运行所需存储量的增长率与g(n)的增长率相同。

    program = data structure + algorithm (程序=数据结构+算法)

    更多相关内容
  • 对于21种主流的采样算法,使用UCI官方保险数据集,对不平衡数据集进行了python实验,基于AUC和F1进行了评分,所有结果进行了注释。
  • 评价算法

    2018-08-25 19:46:08
    有关各种评价类模型讲解,其中包括:层次分析模型,模糊综合评价模型,神经网络评价模型
  • 针对该问题,提出了在特定代价函数下的相机姿态估计算法性能评价方法,主要包括3性能评价参数:精度、效率和存在区域最优解成功率。其中,区域最优解不同于局部最优解,若给定区域为代价函数定义域,则区域最优解...
  • 如何评价一个算法的好坏

    万次阅读 2019-04-27 21:38:39
    个算法还需要足够健壮,即当输入的数据非法或合理时,也能适当的做出正确的反应或进行相应的处理 最后它还必须拥有高效率和低存储量要求。 也就是所谓的时间复杂度和空间复杂度 1.时间复杂度 定义:在计算机科学...

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

    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!)称为指数时间。

    展开全文
  • 算法评价与神经网络算法

    千次阅读 2021-12-06 14:03:16
    作为传统机器学习的一个分支,神经网络实现了更高层次的自动化。对于多种神经网络,我们期望了解并评价这些模型。 算法评价 算法效率 通常使用时间复杂度和空间复杂度,来计算运算时间的相对消耗及计算使用存储...

    前言

    随着大数据和信息传输技术的兴起、人们的数据处理工作指数型增长,传统的编程方法和数学模型不再适用于这样大数据量、高噪音的工作,神经网络的使用就变得愈加广泛。作为传统机器学习的一个分支,神经网络实现了更高层次的自动化。对于多种神经网络,我们期望了解并评价这些模型。

    算法评价

    算法效率

    通常使用时间复杂度和空间复杂度,来计算运算时间的相对消耗及计算使用存储空间的相对消耗。

    算法效果

    对于参数量较大的算法或一些黑箱性质的算法,通常算法效果也是算法评价的重要指标。通常使用在测试集上的损失来衡量神经网络的表现效果。

    基础神经网络算法介绍

    CNN[]

    全连接神经网络是最基础的神经网络,他实现了通过训练逼近多个输入对应多个输出的函数。卷积神经网络主要在卷积神经网络的基础上加上了卷积层。通过多对一的卷积层实现了将大数据量的矩阵转换成了较小数据量的矩阵。卷积层,可以起到提取提取大数据量特征的作用。由此,实现了图像处理中常用的卷积神经网络,可以实现图像的分类。

    RNN[]

    全连接神经网络还可以应用在反馈神经网络中。循环神经网络算一种反馈神经网络,他将全连接神经网络的输出以及新的输入,同时作为输出,通过反复将神经网络的输出作为输入,可以起到把握时序信息的作用。

    基本的单层循环往神经网络模型是将一个输入矩阵多次输入一个单层全连接神经网络,将得到的输出作为下一次的输入,这样反复进行,故而称为循环。

    倘若将前一次的输入得到的输出与下一次输入这两个举证进行融合,在作为这一次的输入如此循环,最终的输出的结果将包含之前所有输入的举证所包含的信息,也就是说这样可以使输出结果包含持续性的信息,我们将这个模型称为编码器。

    对于循环神经网络的训练,倘若我们希望神经网络的矩阵可以预测持续化的数据,我们需要将每一次的输出不但作为第二次的输入,还要与目的的输出进行比较,从而优化参数取值。

    GAN[]

    传统神经网络主要应用于分类和拟合,而用于生成的神经网络表现效果并不好,效果很模糊,直到len Goodfellow发明了GAN。相比CNN等多层感知神经网络,GAN使用生成器G与判别器D协同训练。

    GAN基本模型包含了两个域,两个映射函数和两个评价函数。随机域(z)的数据经过生成函数G(x)映射到判别域(x),判别函数D(x)用于判别判别域(x)中数据属于真实数据的概率。两个评价函数分别评价生成器G生成数据的可信程度、判别器区分出判别域中数据更可能是真实数据还是由生成器生成。

     

    上图是原GAN论文中的示意图从(a)到(d),平行线以上体现了生成器根据随机数据的生成结果越来越接近真实数据的过程。其中黑色实点表示真实数据在数据空间的分布曲线,绿色实线表示生成数据在数据空间的分布曲线。蓝色虚线为判别器判断数据空间中对应值为真实数据的概率。平行线中间展示了生成器将随机域的取样往判别域映射的过程。生成结果在不断往真实数据的空间分布靠近。

    在GAN的训练过程中,将D与G分开训练。通常训练k组D后训练一组G,为了确保判别器的准确程度。

    一些近年的技术

    除以上之外,近几年其他神经网络技术也取得了重大成就,诸如迁移学习、小样本学习及actor-critic[]神经网络等深度强化学习。这些神经网络的应用为我们这些年轻学者提出了更多要求。

    展开全文
  • 算法性能评价

    千次阅读 2019-09-23 08:05:25
    种数据结构的优劣是由实现其各种运算的算法具体体现的,数据结构的分析实质上就是实现运算算法的分析,除了要验证算法是否正确解决该问题之外,还需要对算法的效率作性能评价。在计算机程序设计中,算法分析是...

    一种数据结构的优劣是由实现其各种运算的算法具体体现的,对数据结构的分析实质上就是实现运算算法的分析,除了要验证算法是否正确解决该问题之外,还需要对算法的效率作性能评价。在计算机程序设计中,算法分析是十分重要的。

    算法分析是每个程序设计人员应该掌握的技术。评价算法性能的标准主要从算法执行时间与占用内存空间两方面考虑,即算法执行所需的时间和存储空间来判断一个算法的优劣。

    1.性能评价

    对问题规模与该算法在运行时所占用空间与所耗费时间给出一个数量关系的评价。

    数量关系评价体现在时间上,即算法经编程实现后在计算机中运行所耗费的时间。

    数量关系评价体现在空间上,即算法经编程实现后再计算机中运行所占用的存储量。

    2.问题规模

    算法性能与问题规模相关。问题规模是问题大小的本质表示,对不同的问题其表现形式不同,算法求解问题的输入量称为问题的规模,一般用整数表示。一个图论问题的规模则是图中的顶点数或边数,对矩阵而言是其阶数,对多项式运算而言是多项式项数,对集合运算而言是集合中的元素个数,可以说算法效率应是问题规模的函数。

    算法的时间性能分析

    1.算法耗费的时间

    一个算法的执行时间是指算法中所有语句执行时间的总和。每条语句的执行时间等于该条语句的执行次数乘以执行一次所需实际时间。

    由于语句的执行要由源程序经编译程序翻译成目标代码,目标代码经装配后再执行,语句执行一次实际所需的具体时间是与计算机的软、硬件环境(计算机速度、编译程序质量、输入数据量等)密切相关的,故难以精确估计。

    2.语句频度

    质量一个算法的效率应当抛弃具体计算机条件,仅仅考虑算法本身的效率高低。算法时间分析质量的标准并不是针对实际执行时间精确算法执行的时间,而是根据算法中语句的执行次数做出估计,从中得到算法执行时间的信息。

    语句频度是指该语句在一个算法中重复执行的次数。一个算法的时间耗费就是该算法中所有语句频度之和。

    例1.   求两个n阶方阵的乘积C=A*B。

    #define n 100      /*n可根据需求定义,这里假定为100*/

    void MatrixMulti(int a[n][n],int b [n][n],int c[n][n])

    {                                                                                             该算法每一语句的语句频度为

    (1)for(i=0;i<n;i++)                                                                   n+1

    (2)  for(j=0;j<n;j++)                                                                 n(n+1)

    (3)    {   c[i][j]=0;                                                                      n^2

    (4)        for(k=0;k<n;k++)                                                        n^2(n+1)

    (5)           c[i][j]=c[i][j]+a[i][k]*b[k][j];                                         n^3

                 }

    }

    【分析】语句(1)的循环控制变量i从0增加到n,测试条件i=n成立才会终止,故它的语句频度是n+1,但是它的循环体却只能执行n次。语句(2)作为语句(1)循环体内的语句应该执行n次,但语句(2)作为语句(1)循环体内的语句应该执行n次,但语句(2)本身要执行n+1次,所以语句(2)的频度是n(n+1).同理可得语句(3)、(4)和(5)的频度分别是n^2、n^2(n+1)和n^3.

    该算法中所有语句的频度之和(即算法的时间耗费)为

    f(n)=2n^3+3n^2+2n+1

    也就是说、该矩阵乘积算法的问题规模是矩阵的阶数n,时间耗费是矩阵阶数n的函数。

    3.算法的时间复杂度

    为便于比较解决同一问题的不同算法,通常以算法中基本操作重复执行的频度作为度量标准。基本操作是指算法中选取一种对所研究问题是基本运算的操作,用随着问题规模增加的函数来表征,以此作为时间量度。

    对于算法分析,关心的是算法中语句总的执行次数f(n)是问题规模n的函数,进而分析f(n)随n的变化情况并确定T(n)的数量级(Order of Magnitude)。这里用“O”来表示数量级,给出算法的时间复杂度概念。算法的时间复杂度T(n)是该算法的时间度量,记作

    T(n)=O(f(n))

    它表示随问题规模n的增大,算法的执行时间的增长率和f(n)的增长率相同,称作算法的渐进时间复杂度,简称时间复杂度。

    在例1中算法MatrixMulti中,当n充分大时,f(n)和n^3之比是一个不等于零的常数,即f(n)和n^3是同阶的,或者说f(n)和n^3的数量级相同,O(n^3)是算法MatrixMulti的渐进时间复杂度。

    数学符号“O”的严格数学定义为:

    若T(n)和f(n)是定义在正整数集合上的两个函数,则T(n)=O(f(n))表示存在正的常数C和n0,使得当n>=n0时都满足0<=T(n)<=Cf(n).

    4.渐进时间复杂度

    由于算法执行的实际机器时间难以精确统计,因此主要考虑用算法时间复杂度的数量级(即算法的渐进时间复杂度)来评价一个算法的时间性能。

    例如,由两个算法A1和A2求解同一问题,时间复杂度分别是T1(n)=100n^2,T2(n)=5n^3.

    ①当输入量n<20时,有T1(n)>T2(n),后者花费的时间较少。

    ②随着问题规模的增大,两个算法的时间开销之比5n^3/100n^2=n/20亦随着增大。即当问题规模较大时,算法A1比算法A2有效的多。

    它们的渐进时间复杂度O(n^2)和O(n^3)从宏观上评价了这两个算法在时间方面的质量。在算法分析时,往往对算法的时间复杂度渐进时间复杂度不予区分,而经常是讲渐进时间复杂度T(n)=O(f(n))简称为时间复杂度,其中的f(n)一般是算法中频度最大的语句频度。例1中的算法MatrixMulti的时间复杂度为T(n)=O(n^3),f(n)=n^3是该算法中语句(5)的频度。

    下面在举例说明如何求算法的时间复杂度。

    例1.4   常数阶实例

    temp=i;

    i=j;

    j=temp;

    以上三条单个语句的频度均为1,该程序段的执行时间是一个与问题规模n无关的常数。算法的时间复杂度为常数阶,记作T(n)=O(1)。如果算法执行的时间不随着问题规模n的增大而增长,即使算法中有上千条语句,其执行时间也不过是一个较大的常数。此类算法的时间复杂度是O(1)。

    例1.5  线性阶实例

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

    x=x+1;

    其时间复杂度为O(n),称为线性阶。

    例1.6  平方阶实例

    (1)x=0;y=0;

    (2)for(k=1;k<=n;k++)

    (3)x++;

    (4)for(i=1;i<=n;i++)

    (5)for(j=1;j<=n;j++)

    (6)y++;

    一般情况下,对步进循环语句只需考虑循环体中语句的执行次数,忽略该语句中步长加1、终值判断、控制转移等成分。因此,以上程序段中频度最大的是语句(6),其频度为f(n)=n^2,所以该程序段的时间复杂度为T(n)=O(n^2).

    当有若干个循环语句时,算法的时间复杂度是由嵌套层数最多的循环语句中最内层语句的频度f(n)决定的。

    例1.7给出源操作x=x+1;语句频度及程序的时间复杂度分析。

    (1)x=1;

    (2)for(i=1;i<=n;i++)

    (3)for(j=1;j<=i;j++)

    (4)x=x+1

    该程序段中频度最大的是语句(4),内循环的执行次数虽然与问题规模n没有直接关系,但是却与外层循环的变量取值有关,而最外层循环的次数直接与n有关,因此可以从内层循环向外层分析语句(4)的执行次数:当i=1时,j取值范围是1~1,原操作执行次数为1;当i=2时,j取值范围是1~2;当i=3时,j取值范围是1~3,执行次数为3,以此类推,故原操作x=x+1;执行的总次数为

    f(n)=(1+2+3+...+n)=n(n+1)/2=n^2/2+n/2

    则该程序段的时间复杂度为T(n)=O(n^2/2+n/2)=O(n^2).

    5.常用算法时间复杂度

    数据结构中常用的时间复杂度频率计数有以下7种:

    O(1)常数型,O(n)线性型,O(n^2)平方型,O(n^3)立方型,O(2^n)指数型,O(log2n)对数型(ps:以2为底n的对数),O(nlog2n)二维型(ps:同上)

    按时间复杂度由小到大递增排列如下所示。一般来说,前三种可实现,后三种虽理论上是可实现的,但实际上只有当n限制在很小的范围时才有意义,当n较大时实现困难。

                                                                           常用的时间复杂度频率表

    log2n                n                      nlog2n                     n^2                                 n^3                              2^n

    0                       1                         0                             1                                     1                                2

    1                       2                         2                             4                                     8                                4

    2                       4                         8                             16                                   64                              14

    3                       8                        24                            64                                  512                            256

    4                      16                       64                            256                                5096                         65536

    5                      32                      160                          1024                               32768                       2147483648

     

    6.最坏时间复杂度和平均时间复杂度

    算法的时间复杂度不仅仅依赖于问题的规模,还输入实例的初始状态有关。

    例1.8  在数值A[0..n-1]中查找给定值k的算法大致如下,分析其时间复杂度。

    (1)i=n-1;

    (2)while(i>=0&&(a[i]!=k))

    (3)i--;

    (4)return i;

    此算法中,语句(3)的频度不仅与问题规模n有关,还与A的各元素值及k的取值有关。

    ①最坏情况:若A中没有与k相等的元素,则语句(3)的频度f(n)=n。

    ②最好情况:若A的最后一个元素等于k,则语句(3)的频度f(n)是常数0.

    最坏情况下的时间复杂度称最坏时间复杂度。一般不特别说明,讨论的时间复杂度均是最坏情况下的时间复杂度。这样做的原因是:最坏情况下的时间复杂度是算法在任何输入实例上运行时间的上界,这就保证了算法的运行时间不会比这一上界更长。由此可知,上述算法的时间复杂度为T(n)=O(n)。

    平均时间复杂度是指所有可能的输入实例均以等概率出现的情况下,算法的期望运行时间。

    算法的空间性能分析

    一般情况下,一个程序在机器执行时,除了需要存储本身所用的指令、常数、变量和输入数据以外,还需要一些对数据进行操作的辅助存储空间。其中,对于输入数据所占用的具体存储量取决于问题本身,与算法无关,这样只需分析该算法在实现时所需要的辅助空间个数即可。

    1.算法耗费的空间

    一个算法的占用空间是指算法实际占用的辅助空间总和。

    由于实际占用空间与计算机的软件(编译系统)、硬件(字长等)环境密切相关,以整形为例,可能在一种系统中需要2字节,在另一个系统中需要4字节,实际占用空间的多少难以相互类比。算法空间分析度量的标准并不是计算实际占用空间,而是计算整个算法的辅助空间单元个数。

    2.算法的空间复杂度

    算法的空间复杂度S(n)定义为该算法所耗费的存储空间数量级,它是问题规模n的函数。记作

    S(n)=O(f(n))

    若算法执行时所需的辅助空间相对于输入数据量而言是一个常数,则称这个算法为原地工作。辅助空间为O(1)。

    例1.9  将一维数组a中的n个数据逆序存放到原数组中,给出实现该问题的两种算法。

    【算法1】

    for (i=0;<n;i++)

      b[i]=a[n-i-1];

    for(i=0;<n;i++)

      a[i]=b[i];

    【算法2】

    for(i=0;i<n/2;i++)

    {

      t=a[i];

      a[i]=a[n-i-1];

      a[n-i-1]=t;

      }

    算法1的空间复杂度为O(n),需要一个大小为n的辅助数组b。

    算法2的空间复杂度为O(1),仅需要一个变量t,与问题规模没有关系。

    算法的时间复杂度和空间复杂度合称为算法的复杂度。

    算法性能选择

    要想使一个算法即占用存储空间少,又运行时间短,而且其他性能也好,这是很难做到的。原因是上述要求有时相互抵触:要节约算法的执行时间往往要以牺牲更多的空间为代价,而为了节约空间可能要耗费更多的计算时间。因此,只要根据具体的情况进行取舍。

    ①若程序使用次数少,则力求算法简明易懂

    ②对于反复使用的程序,应尽可能选用快速的算法。

    ③若待解决的问题数据量较大,计算机存储空间较小,则相应算法主要考虑如何节省空间。

    展开全文
  • 绘制一个三维模型,并选择幅纹理图,根据图像分辨率模型表面进行等间距点采样,生成有序点云数据。通过点采样获取的数据进行处理并映射纹理,生成组理想的或者包含噪声的序列仿真图像。利用得到的序列图像聚焦...
  • 多目标进化算法评价

    2018-12-07 12:04:47
    多目标算法性能评价,基本上包括了所有的评价方法,有MATLAB和C++两版本。
  • 人工鱼群算法包括各种鱼群行为,用于决策 但是主程序和评价函数,因为根据具体应用不同所以,在这里给出
  • 对一个算法评价不包括如下 B 方面的内容 A 健壮性和可读性 B并行性 C 正确性 D 时空复杂度 2. 2. 在带有头结点的单链表 HL 中要向表头插入一个由指针 p 指向的 结点则执行 ( A ) A. p->next=HL->next; HL->next=p...
  • 作者 |荔枝boy来源 |磐创AI引用 | 基于图的聚类分析研究—张涛【导读】:本文介绍了常用的聚类算法及聚类算法评价指标。1. 典型聚类算法1.1 基于划分的方法代表:kmeans算...
  • 在matlab环境下,包括图像评价函数算法:Brenner、方差、梯度阈值、熵函数、能量梯度函数。(in Matlab environment, including image evaluation function algorithm : Brenner, variance, gradient threshold, ...
  • 包括灰度调制法融合(graymodulate)、对比度调制法融合(contrastmodulate)、正交多项式变换法(independencemulti)(及改进算法(independencemultiadd))融合和彩色融合(colorfusion)及融合图像的评价——熵...
  • 算法常用评价指标

    千次阅读 2019-11-26 10:49:27
    评价指标是针对将相同的数据,输入不同的算法模型,或者输入不同参数的同算法模型,而给出这个算法或者参数好坏的定量指标。 在模型评估过程中,往往需要使用多种不同的指标进行评估,在诸多的评价指标中,大...
  • 文件中包括多篇,全部都是用于高校综合素质评价算法相关,粗糙集层次分析法、改进型模糊数学综合评价、基于SOFM神经网络、基于改进的AHP法和变权综合法、基于灰熵方法
  • IHS图像融合算法、PCA图像融合、离散小波变换融合算法和高低频不同处理的小波变换算法以及5种评价指标,其中包含示例遥感影像和代码注释。
  • 算法评价指标有哪些 ?

    万次阅读 2021-07-29 07:34:02
    1、时间复杂度算法的时间复杂度是指执行算法所需要的计算工作量。一般来说,计算机算法是问题规模n 的函数f(n),...3、正确性算法的正确性是评价一个算法优劣的最重要的标准。4、可读性算法的可读性是指一个算法可...
  • matlabs神经网络-基于模糊神经网络的水质评价算法。基于T-S模糊神经网络的水质评价算法包含训练和测试数据mat文件 matlab代码
  • 评价算法的优劣标准有什么?

    千次阅读 2021-03-22 11:45:17
    想要去评价一个算法的优劣,我们可以借助时间维度,即时间复杂度就是用来估计算法运行时间的一个式子(单位)。时间的单位为时、分、秒。算法的单位就是O(1),O(n),O(nk)等,例如: 循环语句循环1次、2次、3次…...
  • 文章目录那么我们过去是怎么评价的?客观评价-基于指标客观评价-基于模型R&S®UPV音频分析仪小结那么我们现在用哪些评价方法呢?基于深度学习的方法:AutoMOS, QualityNe, NISQA, MOSNetMOSNet(`absolute....
  • 多目标优化算法的性能评价
  • 模糊神经网络的预测算法-嘉陵江水质评价(matlab实现),包含源代码和测试数据
  • 算法首先各维度的特征进行评估,根据每特征在同类最近邻和异类最近邻上的差异度调整其权重,基于特征权重引导遗传算法的搜索,以提升算法的搜索能力和获取特征的准确性;然后结合特征权重计算特征的适应度,以...
  • 首先遗传算法种优化算法,通过模拟基因的优胜劣汰,进行计算(具体的算法思路什么的就赘述了)。大致过程分为初始化编码、个体评价、选择,交叉,变异。 以目标式子 y = 10 * sin(5x) + 7 * cos(4x)为例,计算...
  • 聚类算法及其评价

    千次阅读 2018-05-29 00:28:21
    姓名:Jyx ...聚类往往单独存在,而是作为一个大的监督学习算法部分存在 聚类的原则。 类内散度最小,类间散度最大 聚类的用途 3.1 减少计算量。通过样本分类,以分类标签代替原始向量,大大...
  • 目标检测算法评价指标之mAP

    千次阅读 2021-12-04 16:19:38
    随着计算机技术的发展和计算机视觉原理的广泛应用,利用计算机图像处理技术目标进行实时跟踪研究越来越热门,目标进行动态实时跟踪...在目标检测问题中,给定一个图像,找到它所包含的物体,找到它们的位置并...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 114,492
精华内容 45,796
热门标签
关键字:

对一个算法的评价不包括