算法的质量
❶ 从哪四个方面来评判算法质量
正确性、可读性、复杂性(高效和低存储)、可移植性(鲁棒性)
❷ 物体的质量是如何计算的
质量是物理物体的一种属性,也是衡量物体对加速度抵抗程度的指标。人们可以把一个物体的质量看作是组成该物体的物理“物质”的量。
例如,假设我们对一个金属立方体施加748牛的力,我们测量它的加速度为21m/s2。这个金属立方体的质量是多少?我们可以用力的大小除以加速度的大小来计算质量
m=F/a
m=(748N)/(21m/s2)≈35.62 kg
所以我们知道这个金属立方体的质量一定是35.62千克。
从重量严格地说,重量和质量是两个不同的东西。在英语中,“重量”和“质量”是同义词,但它们在物理科学中有不同的含义。质量是一个不变的属性,不会因位置而改变。重量是作用在一个大质量物体上的引力场强度的量度。由于引力场强度是不同的,也就是说,月球的引力场强度比地球弱,物体的重量在不同的环境中也会不同。
质量和重量之间的关系由W = mg给出,其中g是重力加速度的测量值。g的准确值随位置的不同而不同。在地球上,g的值约为9.81 m/s2,而在月球上,g约为1.6 m/s2。表达式W=mg以牛顿表示重量,而日常对重量的理解是以磅(磅)表示的,从牛顿到磅的换算率约为1 N=0.22磅。
例如,在g=9.81 m/s2的地球表面,一个50公斤的物体的重量是:
W=(50kg)(9.81m/s2)=490.5N
同样地,如果我们知道一个物体的重量,我们就可以反过来算出它的质量。假设一个物体在地球上重180磅,我们可以这样计算物体的质量:
180lbs(1N/0.22lbs)=818.18N
818.18N=m(9.81m/s2)
m=818.18N/(9.81m/s2)≈83.4 kg
所以一个180磅重的物体在地球上的质量大约是84.3千克。
❸ 算法的评定
同一问题可用不同算法解决,而一个算法的质量优劣将影响到算法乃至程序的效率。算法分析的目的在于选择合适算法和改进算法。一个算法的评价主要从时间复杂度和空间复杂度来考虑。 算法的时间复杂度是指执行算法所需要的计算工作量。一般来说,计算机算法是问题规模n 的函数f(n),算法的时间复杂度也因此记做。
T(n)=Ο(f(n))
因此,问题的规模n 越大,算法执行的时间的增长率与f(n) 的增长率正相关,称作渐进时间复杂度(Asymptotic Time Complexity)。
健壮性是指一个算法对不合理数据输入的反应能力和处理能力,也称为容错性。
❹ 评价算法的四个标准是什么
评价算法的四个标准:
1.正确性
能正确地实现预定的功能,满足具体问题的需要。处理数据使用的算法是否得当,能不能得到预想的结果。
2.易读性
易于阅读、理解和交流,便于调试、修改和扩充。写出的算法,能不能让别人看明白,能不能让别人明白算法的逻辑?如果通俗易懂,在系统调试和修改或者功能扩充的时候,使系统维护更为便捷。
3.健壮性
输入非法数据,算法也能适当地做出反应后进行处理,不会产生预料不到的运行结果。数据的形式多种多样,算法可能面临着接受各种各样的数据,当算法接收到不适合算法处理的数据,算法本身该如何处理呢?如果算法能够处理异常数据,处理能力越强,健壮性越好。
4.时空性
算法的时空性是该算法的时间性能和空间性能。主要是说算法在执行过程中的时间长短和空间占用多少问题。
算法处理数据过程中,不同的算法耗费的时间和内存空间是不同的。
(4)算法的质量扩展阅读:
算法是对特定问题求解步骤的一种描述,它是指令的有限序列,其中每一条指令表示一个或多个操作。此外,一个算法还具有下列5个重要的特性。
(1)、有穷性
一个算法必须总是(对任何合法的输入值)在执行有穷步之后结束,且每一步都可在有穷时间内完成。
(2)、确定性
算法中每一条指令必须有明确的含义,读者理解时不会产生二义性。即对于相同的输入只能得到相同的输出。
(3)、可行性
一个算法是可行的,即算法中描述的操作都是可以通过已经实现的基本运算执行有限次来实现的。
(4)、输入
一个算法有零个或多个的输入,这些输入取自于某个特定的对象的集合。
(5)、输出
一个算法有一个或多个的输出,这些输出是同输入有着某种特定关系的量。
❺ 评价算法优劣的标准是
同一问题可用不同算法解决,而一个算法的质量优劣将影响到算法乃至程序的效率。算法分析的目的在于选择合适算法和改进算法。一个算法的评价主要从时间复杂度和空间复杂度来考虑。
时间复杂度
算法的时间复杂度是指执行算法所需要的计算工作量。一般来说,计算机算法是问题规模n 的函数f(n),算法的时间复杂度也因此记做。
T(n)=Ο(f(n))
因此,问题的规模n 越大,算法执行的时间的增长率与f(n) 的增长率正相关,称作渐进时间复杂度
空间复杂度
算法的空间复杂度是指算法需要消耗的内存空间。其计算和表示方法与时间复杂度类似,一般都用复杂度的渐近性来表示。同时间复杂度相比,空间复杂度的分析要简单得多。
正确性
算法的正确性是评价一个算法优劣的最重要的标准。
可读性
算法的可读性是指一个算法可供人们阅读的容易程度。
健壮性
健壮性是指一个算法对不合理数据输入的反应能力和处理能力,也称为容错性。
(5)算法的质量扩展阅读
算法可大致分为基本算法、数据结构的算法、数论与代数算法、计算几何的算法、图论的算法、动态规划以及数值分析、加密算法、排序算法、检索算法、随机化算法、并行算法,厄米变形模型,随机森林算法。
算法可以宏泛的分为三类:
一,有限的,确定性算法 这类算法在有限的一段时间内终止。他们可能要花很长时间来执行指定的任务,但仍将在一定的时间内终止。这类算法得出的结果常取决于输入值。
二,有限的,非确定算法 这类算法在有限的时间内终止。然而,对于一个(或一些)给定的数值,算法的结果并不是唯一的或确定的。
三,无限的算法 是那些由于没有定义终止定义条件,或定义的条件无法由输入的数据满足而不终止运行的算法。通常,无限算法的产生是由于未能确定的定义终止条件。
参考资料:算法--网络
❻ 巧妇难为无米之炊,算力、算法和数据到底哪个更重要
虽然不能这么绝对的判断一定谁比谁重要,但在实际应用中很多时候的确是数据更加重要。有几方面的原因:
在很多问题中,算法的“好坏”在没有大量有效数据的支撑下是没有意义的。换句话说,很多算法得到的结果的质量完全取决于其和真实数据的拟合程度。如果没有足够的数据支撑、检验,设计算法几乎等于闭门造车。
很多算法会有一堆可调参数。这些参数的选择并没有什么标准可依,无非是扔给大量数据,看参数的变化会带来什么样的结果的变化。大量、有效的数据成为优化这类算法的唯一可行方法。
更极端的例子是,算法本身很简单,程序的完善全靠数据训练。比如神经网络。
对于很多成熟的算法,优化算法的增量改善通常远小于增大输入数据(这是个经济性的考虑)。
比如问题中举例的 Google。在它之前的搜索引擎已经把基于网页内容的索引算法做得很好了,要想有更大的改善需要换思路。PageRank 算法的采用大大增加了输入的数据量,而且链接数据本身对于网页排名相当关键(当然他们也做了大量算法的优化)。
相关介绍:
数据(data)是事实或观察的结果,是对客观事物的逻辑归纳,是用于表示客观事物的未经加工的的原始素材。
数据可以是连续的值,比如声音、图像,称为模拟数据,也可以是离散的,如符号、文字,称为数字数据。在计算机系统中,数据以二进制信息单元0、1的形式表示。
❼ 质量的计算公式
m(质量)=p(密度)V (体积)
m(质量)=G(重力)/g(9.8N/kg)
例一个长方形铅块长Α宽Β高Ρ,查表得密度ρ,则质量m=Α×Β×Ρ×ρ。
M指的是质量,单位为克(g);P为密度,单位克每立方米(g/cm³);V为体积,单位为立方米(cm³)
单位物质的量的物质所具有的质量称摩尔质量(molar mass),用符号M表示。当物质的量以mol为单位时,摩尔质量的单位为g/mol,在数上等于该物质的原子质量或分子质量。
对于某一化合物来说,它的摩尔质量是固定不变的。而物质的质量则随着物质的量不同而发生变化。
单位物质的量的物质所具有的质量,称为摩尔质量(molar mass),用符号M表示。(摩尔质量=式量,单位不同,数字相同)当物质的质量以克为单位时,在数值上等于该物质的相对原子质量或相对分子质量。
(7)算法的质量扩展阅读
来源
物质的量是物理量,表示含有一定数目粒子的集合体,符号为n。物质的量的单位为摩尔(mol)。科学上把含有阿伏伽德罗常数(约6.02×10²³)个粒子的集体作为一个单位,叫摩尔。1mol不同物质中所含的粒子数是相同的,但由于不同粒子的质量不同,1mol不同物质的质量也不同。
1971年第十四届国际计量大会关于摩尔的定义有如下两段规定:“摩尔是一系统的物质的量,该系统中所包含的基本单元数与0.012kg碳—12的原子数目相等。”
“在使用摩尔时应予以指明基本单元,它可以是原子、分子、离子、电子及其他粒子,或是这些粒子的特定组合。”上两段话应该看做是一个整体。0.012kg碳12所包含的碳原子数目就是阿伏伽德罗常数(NA),实验测得的近似数值为NA=6.021687126645×10²³。摩尔跟一般的单位不同,它有1个特点:
它计量的对象是微观基本单元,如离子,而不能用于计量物质。
1mol它以阿伏加德罗数为计量单位,是个批量,不是以个数来计量分子、原子等微粒的数量。也可以用于计量微观粒子的特定组合,
例如,用摩尔计量硫酸的物质的量,即1mol硫酸含有6.02×10²³个硫酸分子。摩尔是化学上应用最广的计量单位,如用于化学反应方程式的计算,溶液中的计算,溶液的配制及其稀释,有关化学平衡的计算,气体摩尔体积及热化学中都离不开这个基本单位。
摩尔质量是物质的质量除以物质的量,单位是克每摩尔,摩尔体积是物质的体积除以物质的量,单位是立方米每摩尔。过去常用的克原子量、克分子量、克分子体积应废除。
摩尔质量、摩尔体积是物质的量的导出量,应用时必须指明基本单元,对于同一物质规定的基本单元不同,摩尔质量、摩尔体积就不同。
虽然阿伏加德罗常数是一个很大的数值,但用摩尔作为物质的量的单位使用起来却非常方便,它就像一座桥梁将微观粒子同宏观物质联系在一起。
❽ 算法及其特性有哪些
1.算法的重要特性(1)有穷性:一个算法必须在执行有穷步骤之后正常结束,而不能形成无穷循环。
(2)确定性:算法中的每一条指令必须有确切的含义,不能产生多义性。
(2)可行性:算法中的每一条指令必须是切实可执行的,即原则上可以通过已经实现的基本运算执行有限次来实现。
(4)输入:一个算法应该有零个或多个输入。
(5)输出:一个算法应该有一个或多个输出,这些输出是同输入有特定关系的量。
2.算法描述的方法(1)框图描述:该方法使用流程图或N-S图来描述算法。
(2)自然语言描述:该方法采用自然语言,同时添加高级程序设计语言如while、for和if等基本控制语句来描述算法。这类描述方法自然、简洁,但缺乏严谨性和结构性。
(2)类语言描述:这是介于程序设计语言和自然语言之间算法描述形式,其特征是突出算法设计的主体部分而有意忽略某些过于严格的语法细节,如类C或C++的伪语言。这种算法不能直接在计算机上运行,但专业设计人员经常使用它来描述算法,它具有容易编写、阅读和格式统一的特点。
(4)程序设计语言描述:采用某种高级程序设计语言(如C或C++)来描述。这是可以在计算机上运行并获得结果的算法描述。
本课程将采用伪C语言进行算法描述。
2.算法与程序的关系算法的含义与程序十分相似,但二者是有区别的。算法和程序都是用来表达解决问题的逻辑步骤;算法是对解决问题方法的具体描述,程序是算法在计算机中的具体实现;一个程序不一定满足有穷性(死循环),而算法一定满足有穷性;程序中的指令必须是机器可执行的,而算法中的指令则无此限制;一个算法若用计算机语言来书写,则它就可以是一个程序。因此,程序是算法,但算法不一定是程序。4.算法设计要求在算法设计中,对同一个问题可以设计出不同的求解算法。如何评价这些算法的优劣,从而为算法设计和选择提供可靠的依据?通常可从以下四个方面评价算法的质量:
(1)正确性:算法应该能够正确地执行预先规定的功能,并达到所期望的性能要求。
(2)可读性:算法应该好读,以有利于读者对程序的理解,便于调试和修改。
(2)健壮性:算法应具有容错处理。当输入非法数据时,算法应对其作出反应,而不是产生莫名其妙的输出结果。
(4)效率与低存储量需求:效率指的是算法执行的时间。对于同一个问题,如果有多种算法可以求解,执行时间短的算法效率高。算法存储量指的是算法执行过程中所需要的最大存储空间。高效率和低存储量这两者与问题的规模有关。
❾ 数据结构中评价算法的两个重要指标是什么
数据结构中评价算法的两个重要指标是时间复杂度和空间复杂度。
同一问题可用不同算法解决,而一个算法的质量优劣将影响到算法乃至程序的效率。算法分析的目的在于选择合适算法和改进算法。一个算法的评价主要从时间复杂度和空间复杂度来考虑。
1、时间复杂度:
算法的时间复杂度是指执行算法所需要的计算工作量。一般来说,计算机算法是问题规模n 的函数f(n),算法的时间复杂度也因此记做。
2、空间复杂度:
算法的空间复杂度是指算法需要消耗的内存空间。其计算和表示方法与时间复杂度类似,一般都用复杂度的渐近性来表示。同时间复杂度相比,空间复杂度的分析要简单得多。
(9)算法的质量扩展阅读:
评估算法效率的方法:
1、事后统计方法
这种方法主要是通过设计好的测试程序和数据,利用计算机计时器对不同算法编制的程序的运行时间进行比较,从而确定算法效率的高低。
2、事前分析估算方法
在计算机程序编写前,依据统计方法对算法进行估算。经过总结,可以发现一个高级语言编写的程序在计算机上运行时所消耗的时间取决于下列因素:算法采用的策略、编译产生的代码质量、问题的输入规模、机器执行指令的速度。
参考资料来源:网络-算法
❿ 算法与程序的区别与联系
算法和程序的区别是:
(1) 两者定义不同。算法是对特定问题求解步骤的描述,它是有限序列指令。而程序是实现预期目的而进行操作的一系列语句和指令。
说通俗一些算法是解决一个问题的思路,程序,是解决这些问题所具体好写的代码。算法没有语言界限。他只是一个思路。为实现相同的一个算法,用不同语言编写的程序会不一样。
(2)两者的书写规定不同。程序必须用规定的程序设计语言来写,而算法很随意。算法是一系列解决问题的清晰指令,也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。算法常常含有重复的步骤和一些逻辑判断。
简单算法举例 例:求 1*2*3*4*5
步骤 1 :先求 1*2 ,得到结果 2 。
步骤 2 :将步骤 1 得到的乘积 2 再乘以 3 ,得到结果 6 。
步骤 3 :将步骤 2 得到的乘积 6 再乘以 4 ,得到结果 24 。
步骤 4 :将步骤 3 得到的乘积 24 再乘以 5 ,得到最后结果 120 。
算法与程序的联系 :
算法和程序都是指令的有限序列 ,但是程序是算法,而算法不一定是 程序。程序 = 数据结构 + 算法。算法的主要目的在于为人们提供阅读了解所执行的工作流程与步骤。数据结构与算法要通过程序的实现,才能由计算机系统来执行。可以这样理解,数据结构和算法形成了可执行的程序。
(10)算法的质量扩展阅读
算法的要素:
一、数据对象的运算和操作:计算机可以执行的基本操作是以指令的形式描述的。一个计算机系统能执行的所有指令的集合,成为该计算机系统的指令系统。一个计算机的基本运算和操作有如下四类:
1、算术运算:加减乘除等运算。
2、逻辑运算:或、且、非等运算。
3、关系运算:大于、小于、等于、不等于等运算。
4、数据传输:输入、输出、赋值等运算。
二、算法的控制结构:一个算法的功能结构不仅取决于所选用的操作,而且还与各操作之间的执行顺序有关。