① 举例说明何谓算法,特点是什么评价一个算法的优劣,主要从哪些因素分析
评价算法优劣的四个分析因素:
1.正确性
能正确地实现预定的功能,满足具体问题的需要。处理数据使用的算法是否得当,能不能得到预想的结果。
2.易读性
易于阅读、理解和交流,便于调试、修改和扩充。写出的算法,能不能让别人看明白,能不能让别人明白算法的逻辑?如果通俗易懂,在系统调试和修改或者功能扩充的时候,使系统维护更为便捷。
3.健壮性
输入非法数据,算法也能适当地做出反应后进行处理,不会产生预料不到的运行结果。数据的形式多种多样,算法可能面临着接受各种各样的数据,当算法接收到不适合算法处理的数据,算法本身该如何处理呢?如果算法能够处理异常数据,处理能力越强,健壮性越好。
4.时空性
算法的时空性是该算法的时间性能和空间性能。主要是说算法在执行过程中的时间长短和空间占用多少问题。
算法处理数据过程中,不同的算法耗费的时间和内存空间是不同的。
(1)影响算法执行效果的因素扩展阅读:
算法是对特定问题求解步骤的一种描述,它是指令的有限序列,其中每一条指令表示一个或多个操作。此外,一个算法还具有下列5个重要的特性。
(1)、有穷性
一个算法必须总是(对任何合法的输入值)在执行有穷步之后结束,且每一步都可在有穷时间内完成。
(2)、确定性
算法中每一条指令必须有明确的含义,读者理解时不会产生二义性。即对于相同的输入只能得到相同的输出。
(3)、可行性
一个算法是可行的,即算法中描述的操作都是可以通过已经实现的基本运算执行有限次来实现的。
(4)、输入
一个算法有零个或多个的输入,这些输入取自于某个特定的对象的集合。
(5)、输出
一个算法有一个或多个的输出,这些输出是同输入有着某种特定关系的量。
② 影响算法设计的因素不包括
不包括计算环境。
影响预测算法性能的因素主要有三个:问题的复杂度、模型的复杂度、可用的训练数据量。
一个复杂问题同时拥有大量训练数据,一个复杂模型可以得到比较精确的结果。
一个复杂问题没有足够多的数据,一个线性模型可能就是最好的结果。
一个简单问题,一个线性模型就可以解决。
方法:
在回归阶段,当获得最简单情况的解后,逐级返回,依次得到稍复杂问题的解,例如得到fib(1)和fib(0)后,返回得到fib(2)的结果,……,在得到了fib(n-1)和fib(n-2)的结果后,返回得到fib(n)的结果。
在编写递归函数时要注意,函数中的局部变量和参数知识局限于当前调用层,当递推进入“简单问题”层时,原来层次上的参数和局部变量便被隐蔽起来。在一系列“简单问题”层,它们各有自己的参数和局部变量。
由于递归引起一系列的函数调用,并且可能会有一系列的重复计算,递归算法的执行效率相对较低。当某个递归算法能较方便地转换成递推算法时,通常按递推算法编写程序。例如上例计算斐波那契数列的第n项的函数fib(n)应采用递推算法,即从斐波那契数列的前两项出发,逐次由前两项计算出下一项,直至计算出要求的第n项。
③ 影响算法执行时间的因素主要有哪些
影响算法执行时间的因素包括:
1、算法本身选用的策略;
2、问题的规模;
3、书写程序的语言;
4、编译产生的机器代码质量;
5、机器执行指令的速度等。
为便于比较算法本身的优劣,应排除其它影响算法效率的因素。从算法中选取一种对于所研究的问题来说是基本操作的原操作,以该基本操作重复执行的次数作为算法的时间量。
(3)影响算法执行效果的因素扩展阅读:
缩短算法时间的方法:
1、选择合理的存储结构。
数据的存储结构,分为顺序存储结构和链式存储结构。顺序存储结构的特点是借助元素在存储器中的相对位置来表示数据元素之间的逻辑关系;链式存储结构则神竖握是借助指示元素存储地址纤搭的指针表示数据元素之间的逻辑关系。
2、使用直接初始化。游庆
与直接初始化对应的是复制初始化。
3、减少除法运算的使用。
无论是整数还是浮点数运算,除法都是一件运算速度很慢的指令,在计算机中实现除法是比较复杂的。所以要减少除法运算的次数。
④ 评价算法的因素有哪些
1.时间复杂度
算法的时间复杂度是指执行算法所需要的时间。一般来说,计算机算法是问题规模n 的函数f(n),算法的时间复杂度也因此记做。
T(n)=Ο(f(n))
因此,问题的规模n 越大,算法执行的时间的增长率与f(n) 的增长率正相关,称作渐进时间复杂度
2.空间复杂度
算法的空间复杂度是指算法需要消耗的内存空间。其计算和表示方法与时间复杂度类似,一般都用复杂度的渐近性来表示。同时间复杂度相比,空间复杂度的分析要简单得多。
3.正确性
算法的正确性是评价一个算法优劣的最重要的标准。
4.可读性
算法的可读性是指一个算法可供人们阅读的容易程度。
5.健壮性
健壮性是指一个算法对不合理数据输入的反应能力和处理能力,也成为容错性。
⑤ 为什么遗传算法优化后反而效果变差了
遗传算法优化时,可能会遇到过早收敛的问题,也就是算法在早期阶段就裤棚开始陷入局部最优解,导致后续的求解过程无法得到更好的结果。过早收敛的主要原因可能有以下几种:
1. 种群规模太小:在遗传算法中,种群规模的大小会影响算法的收敛速度和质量。如果种群规模太小,算法容易陷入局部最优解。
2. 选择算子不合适:选择算子是遗传算法中比较重要的部分,它直接决定了种群中父代和子代的选择情况。若选择算子的设计不当,可能会导胡中则致早期阶段种群快速收敛到一个较小的范围内。
3. 变异率太小:变异是遗传算法中使种群具有多样性和避免早期收敛的重要方法之一。如果变异率太小,种群中的培薯多样性就会越来越小,趋向于收敛到一个较小的范围内。
4. 初始种群设计不合理:如果初始种群的设计不合理,可能会导致算法在早期阶段陷入局部最优解而无法跳出。
综上所述,如果遗传算法优化后效果变差,可能存在算法参数不适合或设计不当的问题,需要重新调整及优化算法参数或方法,避免过早收敛等问题,以进一步优化遗传算法的效果。