算法容错性
‘壹’ 评价算法优劣的指标包括算法的什么
1、时间复杂度
算法的时间复杂度是指执行算法所需要的计算工作量。一般来说,计算机算法是问题规模n 的函数f(n),算法的时间复杂度也因此记做。
2、空间复杂度
算法的空间复杂度是指算法需要消耗的内存空间。其计算和表示方法与时间复杂度类似,一般都用复杂度的渐近性来表示。同时间复杂度相比,空间复杂度的分析要简单得多。
3、正确性
算法的正确性是评价一个算法优劣的最重要的标准。
4、可读性
算法的可读性是指一个算法可供人们阅读的容易程度。
5、健壮性
健壮性是指一个算法对不合理数据输入的反应能力和处理能力,也称为容错性。
‘贰’ c语言中什么是算法有哪些描述算法的例子
1、有穷性(有限性)。任何一种提出的解题方法都是在有限的操作步骤内可以完成的。
如果在有限的操作步骤内完不成,得不到结果,这样的算法将无限的执行下去,永远不会停止。除非手动停止。例如操作系统就不具有有穷性,它可以一直运行。
2、一个算法应该具有以下七个重要的特征:
1)有穷性(finiteness)
算法的有穷性是指算法必须能在执行有限个步骤之后终止
2)确切性(definiteness)
算法的每一步骤必须有确切的定义;
3)输入项(input)
一个算法有0个或多个输入,以刻画运算对象的初始情况,所谓0个输入是指算法本身定出了初始条件;
4)输出项(output)
一个算法有一个或多个输出,以反映对输入数据加工后的结果.没有输出的算法是毫无意义的;
5)可行性(effectiveness)
算法中执行的任何计算步都是可以被分解为基本的可执行的操作步,即每个计算步都可以在有限时间内完成;
6)
高效性(high
efficiency)
执行速度快,占用资源少;
7)
健壮性(robustness)
健壮性又称鲁棒性,是指软件对于规范要求以外的输入情况的处理能力。所谓健壮的系统是指对于规范要求以外的输入能够判断出这个输入不符合规范要求,并能有合理的处理方式。
‘叁’ 算法的评价指标有哪些
时间复杂度和空间复杂度。
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)的空间复杂度了,因为每次递归都要存储返回信息。一个算法的优劣主要从算法的执行时间和所需要占用的存储空间两个方面衡量。
(3)算法容错性扩展阅读:
算法的方法:
1、递推法
递推是序列计算机中的一种常用算法。它是按照一定的规律来计算序列中的每个项,通常是通过计算机前面的一些项来得出序列中的指定项的值。其思想是把一个复杂的庞大的计算过程转化为简单过程的多次重复,该算法利用了计算机速度快和不知疲倦的机器特点。
2、递归法
程序调用自身的编程技巧称为递归(recursion)。一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。
一般来说,递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进;当边界条件满足时,递归返回。
注意:
(1) 递归就是在过程或函数里调用自身.
(2) 在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口。
‘肆’ 算法的评定
同一问题可用不同算法解决,而一个算法的质量优劣将影响到算法乃至程序的效率。算法分析的目的在于选择合适算法和改进算法。一个算法的评价主要从时间复杂度和空间复杂度来考虑。 算法的时间复杂度是指执行算法所需要的计算工作量。一般来说,计算机算法是问题规模n 的函数f(n),算法的时间复杂度也因此记做。
T(n)=Ο(f(n))
因此,问题的规模n 越大,算法执行的时间的增长率与f(n) 的增长率正相关,称作渐进时间复杂度(Asymptotic Time Complexity)。
健壮性是指一个算法对不合理数据输入的反应能力和处理能力,也称为容错性。
‘伍’ 评价算法优劣的标准是
同一问题可用不同算法解决,而一个算法的质量优劣将影响到算法乃至程序的效率。算法分析的目的在于选择合适算法和改进算法。一个算法的评价主要从时间复杂度和空间复杂度来考虑。
时间复杂度
算法的时间复杂度是指执行算法所需要的计算工作量。一般来说,计算机算法是问题规模n 的函数f(n),算法的时间复杂度也因此记做。
T(n)=Ο(f(n))
因此,问题的规模n 越大,算法执行的时间的增长率与f(n) 的增长率正相关,称作渐进时间复杂度
空间复杂度
算法的空间复杂度是指算法需要消耗的内存空间。其计算和表示方法与时间复杂度类似,一般都用复杂度的渐近性来表示。同时间复杂度相比,空间复杂度的分析要简单得多。
正确性
算法的正确性是评价一个算法优劣的最重要的标准。
可读性
算法的可读性是指一个算法可供人们阅读的容易程度。
健壮性
健壮性是指一个算法对不合理数据输入的反应能力和处理能力,也称为容错性。
(5)算法容错性扩展阅读
算法可大致分为基本算法、数据结构的算法、数论与代数算法、计算几何的算法、图论的算法、动态规划以及数值分析、加密算法、排序算法、检索算法、随机化算法、并行算法,厄米变形模型,随机森林算法。
算法可以宏泛的分为三类:
一,有限的,确定性算法 这类算法在有限的一段时间内终止。他们可能要花很长时间来执行指定的任务,但仍将在一定的时间内终止。这类算法得出的结果常取决于输入值。
二,有限的,非确定算法 这类算法在有限的时间内终止。然而,对于一个(或一些)给定的数值,算法的结果并不是唯一的或确定的。
三,无限的算法 是那些由于没有定义终止定义条件,或定义的条件无法由输入的数据满足而不终止运行的算法。通常,无限算法的产生是由于未能确定的定义终止条件。
参考资料:算法--网络
‘陆’ 什么是容错性
所谓容错是指在故障存在的情况下计算机系统不失效,仍然能够正常工作的特性。容错即是Fault Tolerance,确切地说是容故障(Fault),而并非容错误(Error)。例如在双机容错系统中,一台机器出现问题时,另一台机器可以取而代之,从而保证系统的正常运行。在早期计算机硬件不是特别可靠的情况下,这种情形比较常见。现在的硬件虽然较之从前稳定可靠得多,但是对于那些不允许出错的系统,硬件容错仍然是十分重要的途径。
计算机系统的容错性通常可以从系统的可靠性、可用性、可测性等几个方面来衡量。可靠性对于火箭发射之类关键性应用领域来说尤为重要。而对于通用计算机来说,一个重要的指标就是系统的可用性。可用性是指在一年的时间中确保系统不失效的时间比率。可测性在容错系统的设计过程中也是一个非常重要的指标,如果我们无法对某个系统进行测试,又如何能保证它不出问题呢?此外还有MTBF(故障间的平均时间),即当系统正常运行后能坚持多长时间不失效。MTTR(故障修理的平均时间),即指系统要清除故障所需的时间。MTTR的大小直接影响着系统的可用性,而MTBF则反映了系统的可靠性。
‘柒’ 冗余 和 容错 的区别
区别:容错主要依靠冗余设计来实现,它以增加资源的办法换取可靠性。由于资源的不同,冗余技术分为硬件冗余、软件冗余、时间冗余和信息冗余。
硬件冗余是通过硬件的重复使用来获得容错能力。
软件冗余的基本思想是用多个不同软件执行同一功能,利用软件设计差异来实现容错。
信息冗余是利用在数据中外加的一部分信息位来检测或纠正信息在运算或传输中的错误而达到容错。在通信和计算机系统中,常用的可靠性编码包括:奇偶校验码、循环冗余码CRC、汉明码等。
时间冗余是通过消耗时间资源来实现容错,其基本思想是重复运算以检测故障。按照重复运算是在指令级还是程序级分为指令复执程序复算。指令复执当指令执行的结果送到目的地址中,如果这时有错误恢复请求信号,则重新执行该指令。
程序复算常用程序滚回技术。例如将机器运行的某一时刻称作检查点,此时检查系统运行的状态是否正确,不论正确与否,都将这一状态存储起来,一旦发现运行故障,就返回到最近一次正确的检查点重新运行。
冗余设计可以是元器件级的冗余设计,也可以是部件级的、分系统级的、或系统级的冗余设计。冗余要消耗资源,应当在可靠性与资源消耗之间进行权衡和折衷。
容错系统工作过程包括自动侦测、自动切换、自动恢复。