精华内容
下载资源
问答
  • 算法五个重要特性

    万次阅读 2016-09-07 10:27:37
    一个算法有0个或多个输入,以刻画运算对象的初始情况,所谓0个输入是指算法本身定出了初始条件; 输出(Output) 一个算法一个或多个输出,以反映对输入数据加工后的结果。没有输出的算法是毫无意义的; 确定性...

    输入(Input)

    一个算法有0个或多个输入,以刻画运算对象的初始情况,所谓0个输入是指算法本身定出了初始条件;


    输出(Output)

    一个算法有一个或多个输出,以反映对输入数据加工后的结果。没有输出的算法是毫无意义的;


    确定性(Definiteness)

    算法中的每一条指令必须有确切的含义,不能产生多义性:


    可行性(Effectiveness)

    算法中的每一条指令必须是切实可执行的,即原则上可以通过已经实现的基本运算执行有限次来实现(也称之为有效性);


    有穷性(Finiteness)

    算法必须能在有限步后终止;


    展开全文
  • ①有穷性: 一个算法必须总是在执行有穷步之后结束,且每一步都可在有穷时间内完成。 ②确定性:算法中的每条指令必须有确切的含义,不会产生二义性,并且对于相同的输入只能得出相同的输出。 ③可行性:算法中的操作...

    算法的本质是解决问题的方法,是思想。

    在早期的时候,人们遇到新问题,必须要去解决它,经过“冥思苦想”,“反复探索尝试”,最后总结归纳。

    这才形成了今天我们学习的各种算法。

    如果无法领会到解决问题的思想,无法总结归纳,就会有:“学算法有什么用?”。

    不知道为什么学,自然会认为学了没意义,没有用处。

    ————————————————————————————

    算法的5个重要特性:

    ①有穷性: 一个算法必须总是在执行有穷步之后结束,且每一步都可在有穷时间内完成。
    ②确定性:算法中的每条指令必须有确切的含义,不会产生二义性,并且对于相同的输入只能得出相同的输出。
    ③可行性:算法中的操作都是可以通过已经实现的基本运算执行有限次数实现。
    ④输入: 一个算法有零个或多个输入,这些输入取自于某个特定的对象集合。

    ⑤输出:一个算法有一个或多个的输出,这些输出是同输入有着特定关系的量。

    算法总是要解决特定的问题,问题来源就是算法的输入,期望的结果就是算法的输出,没有输入输出的算法是无意义的。



    算法设计的5个要求:
    ①正确性:最基本要求,算法必须能解决某个问题的需求。
    ②可读性:算法的可读性有助于人的阅读与交流,容易调试和修改。
    ③健壮性:当输入的数据非法时,算法能适当做出反应或进行处理,而不会产生莫名其妙的输出结果。
    ④效率性:算法是为了解决大规模问题,因此需要运行效率足够快。
    ⑤存储性:算法在执行过程中,所需要的最大存储空间,应该尽可能的占用小。
    效率性与存储性都与问题规模有关,求100人的平均分与求1000人的平均分,同一个算法的所花费的执行时间与存储空间显然是不一样的。

    正确性,可读性,健壮性不仅仅是算法设计的要求,而是贯穿整个软件设计层次。

    单对于算法本身来说,我们最关注的层面是效率性。

    千万不能死板的认为,算法就是计算机程序。

    算法是一切解决问题的思想,语言描述,伪代码,流程图,各种符号或者控制表格同样是算法。


    展开全文
  • 一个算法必须有0个或多个输入。它们是算法开始运算前给予算法的量。这些输入取自于特定的对象的集合。它们可以使用输入语句由外部提供,也可以使用赋值语句在算法内给定。② 有输出。一个算法应有一个或多个输出,...

    算法的定义

    通常,定义算法为"为解决某一特定任务而规定的一个指令序列"

    算法的5个基本特性

    ① 有输入。一个算法必须有0个或多个输入。它们是算法开始运算前给予算法的量。这些输入取自于特定的对象的集合。它们可以使用输入语句由外部提供,也可以使用赋值语句在算法内给定。

    ② 有输出。一个算法应有一个或多个输出,输出的量是算法计算的结果。

    ③ 确定性。算法的每一步都应确切地、无歧义地定义。对于每一种情况,需要执行的动作都应严格地、清晰地规定。

    例1:

    void fa( )
    { 
    	int x=5,y=10; 
    	z=x+++y;//解释为:x+(++y)?(x++)+y?
    	printf("%d,%d,%d",x,y,z);
    }
    void fb( )
    { 
    	int x=5,y=10;
    	z=x+(++y); //x+++y解释为:x+(++y)
    	printf("%d,%d,%d",x,y,z);
    }
    void fc( )
    {
    	int x=5,y=10;
    	z=(x++)+y;	//x+++y解释为:(x++)+y
    	printf("%d,%d,%d",x,y,z);
    }

     有穷性。一个算法无论在什么情况下都应在执行有穷步后结束。

    例2:

    void fa(  )
    {
          int i=0,s=0;
          while(i<10) //死循环
              s++;        //不满足有穷性
          i++;
          printf(“s=%d,i=%d\n“,s,i);
    }
    void fb(  )
    {
          int i=0,s=0;
          while(i<10) //i<10执行多少次
          {
              s++;  //s++执行?次
              i++; // i++ 执行?次
          }
          printf(“s=%d,i=%d\n“,s,i); 
    }

     有效性。算法中每一条运算都必须是足够基本的。就是说,它们原则上都能精确地执行,甚至人们仅用笔和纸做有限次运算就能完成。

    例3:

    求和:S=1+2+3+...+∽   //不可以实现。

    算法设计的要求

    1)正确性

           a.无语法错误;

           b.对n组输入产生正确结果;

           c.对特殊输入产生正确结果;

           d.对所有输入产生正确结果。

    2)可读性:算法主要是为了人的阅读与交流

    3)健壮性

    4)高效与低存储量


    来源:我是码农,转载请保留出处和链接!

    本文链接:http://www.54manong.com/?id=16

    '); (window.slotbydup = window.slotbydup || []).push({ id: "u3646208", container: s }); })();
    '); (window.slotbydup = window.slotbydup || []).push({ id: "u3646147", container: s }); })();
    展开全文
  • 问题: 说明“阅读本套书的步骤” 其实不是一个真正的算法。因为在其算法特性中,它至少缺少3个! 我的回答:肯定有:有限性、确定性 正确答案: 它不满足有限性、确定性和可行性。可能没有输出 加入我们...

    算法的五个特性

    (1)有限性(有穷性)
    (2)确定性
    (3)输入
    (4)输出
    (5)可行性(有效性)


    练习题

    问题: 说明“阅读本套书的步骤” 其实不是一个真正的算法。因为在其算法的五个特性中,它至少缺少3个!

    我的回答:肯定有:有限性、确定性


    正确答案:
    它不满足有限性、确定性和可行性。可能没有输出

    Show that the "Procedure for Reading This Set of Books"which appears in the preface actually fails to be a genuine algorithm on three of our five counts!

    Knuth提供了一组指令必须具有的五个属性才能被视为算法:有限性,确定性,输入,输出和有效性。读这套书的算法显然在必须输入并产生输出的要求上失败了(尽管听起来更像是功能要求,而不是通用算法)。似乎失败的最终标准是确定性。要求完全明确地定义算法的所有步骤。序言中的程序包含许多模棱两可的表达方式,例如“您至少应略读……”和“在练习后满意为止……”。这些命令可能由不同的人以不同的方式解释,并且完全不能由机器来解释。


    加入我们共同进步

    群名称:程序员思维模型
    群 号:144079203

    展开全文
  • 算法的基本特性

    2019-11-28 02:58:44
    算法是为了解决某一些特定类型的问题而设计的一个实现过程,算法有以下特性: 有穷性:一个算法必须在执行有穷步之后结束,并且每一步都在有穷时间内完成,不能无限的执行下去;就行数据中的线段一样,有始有终 ...
  • 算法特性

    万次阅读 2017-09-28 09:35:13
    输出:在算法中至少有一个或者多个输出  3.有穷行:在执行有限的步骤之后,自动结束不会出现无限循环并且每一个步骤在可接受的时间内完成  4.确定性:算法的每一个步骤都具有确定的含义,不会出现二义性  5....
  • 文章目录数据结构-算法-时间复杂度算法特性算法的标准时间复杂度算法的控制结构算法执行时间T(n)转[O(n)时间复杂度]习题 算法特性 有穷:步骤有穷、时间有限 确定:语句无二义 可行:可运行可实现 输入:输入...
  • 算法的概念及其特性

    千次阅读 2020-09-07 14:25:43
    算法就是解决这问题的方法和步骤的描述。 所谓机械步骤,是指算法中有待执行的运算和操作,必须是相当基本的。 2.算法的组成要素 算法由操作、控制结构、数据机构3要素组成。 2.1操作 算术运算:加、减、乘、除。 ...
  • Paxos算法是莱斯利·兰伯特(英语:Leslie Lamport,LaTeX中的“La”)于1990年提出的种基于消息传递且具有高度容错特性的一致性算法。 问题和假设 分布式系统中的节点通信存在两种模型:共享内存(Shared ...
  •  之前实现的UCB算法只不过是一个最初的算法模型,现在我需要把该算法应用在商品推荐之上,因此,需要根据业务需求来修改次算法。修改过程中,有改动UCB算法的部分实现,因此,做了额外的测试来判断新的算法是否满足...
  • 总所周知,C++ STL中有个头文件,名为algorithm,即算法的意思。 The header<algorithm>defines a ...所以,要八八这头文件中C++11新增的几个算法,今天主要描述的几个算法不改变容器中元素的顺序。这里还要
  • HASH算法 概念:一般翻译做“散列”,就是把任意长度的输入通过散列函数变化成固定长度的输出,该输出就是散列值。 散列的空间通常远远小于输入的空间,不同的输入会散列城相同的输出(散列冲突)。 优秀hash特点: ...
  • LLE算法一个例子

    千次阅读 2015-06-12 04:30:40
    可能是一个奇异矩阵,此时必须正则化 ,如下所示: 其中r是正则化参数,I是一个kxk的单位矩阵。   LLE算法的最后一步是将所有的样本点映射到低维空间中。映射条件满足如下所示: 其中, 为损失函...
  • SIFT算法详解

    万次阅读 多人点赞 2012-04-28 21:40:36
    尺度不变特征变换匹配算法详解 Scale Invariant Feature Transform(SIFT) Just For Fun zdd zddmail@gmail.com 对于初学者,从David G.Lowe的论文到实现,有许多鸿沟,本文帮你跨越。 1、SIFT综述 尺度不变...
  • 算法算法分析

    2013-07-23 09:49:07
     一个算法必须满足以下个重要特性: 1.有穷性  2.确定性 3.可行性 4.有输入  5.有输出 二:设计算法的原则   1.正确性 2.可读性 3、健壮性 4.高效率与低存储量需求 三:算法的时间...
  • 常用查找算法——python3实现

    万次阅读 多人点赞 2019-05-28 19:24:22
    文章目录1、顺序查找1.1 简介1.2 基本思路1.3 优缺点1.4 源代码1.5 效果2、二分查找2.1 简介2.2 复杂度分析2.3 源代码2.4 效果3、分块查找3.1 ...分析4.4 源代码4.5 效果5、哈希查找5.1 简介5.2 算法思想5.3 算法流程...
  • 算法 - 算法算法分析

    千次阅读 2020-03-31 20:01:06
    文章目录算法1,算法的定义2,算法的描述3,算法与程序4,算法特性5算法的设计要求二,渐进表示法(Asymptotic notation)Big-O(Upper bound of f(n))Omega(Lower bound of f(n))Theta (tight bound...
  • 算法的定义

    千次阅读 2019-01-22 17:55:20
    文章目录算法的定义:二、基本特性:三、算法设计的要求:四、算法效率的度量方法:算法的时间复杂度六、算法的空间复杂度 算法的定义: 算法是解决特定问题求解决步骤的描述,再计算机中表现为指令的...
  • 一个实用的试题库组卷策略和算法

    千次阅读 2011-06-04 09:16:00
    随着计算机信息技术在教育教学中应用的深入,建立课程教学考试的试题库系统的需求多了起来。...笔者阅读这些文献时发现,许多算法存在一定的缺陷、并不太实用,而某些智能组卷算法如遗传算法
  • 压缩感知理论+一个经典的算法

    万次阅读 多人点赞 2015-12-23 20:43:26
     压缩感知理论指出, 只要信号是可压缩的或在某个变换域是稀疏的, 那么就可以用一个与变换基不相关的观测矩阵将变换所得高维信号投影到一个低维空间上, 然后通过求解一个优化问题就可以从这些少量的投影中以高...
  • 大常用算法:分支限界法

    万次阅读 2018-03-14 13:16:24
    回溯法的求解目标是找出T中满足约束条件的所有解,而分支限界法的求解目标则是找出满足约束条件的一个解,或是在满足约束条件的解中找出使某一目标函数值达到极大或极小的解,即在某种意义下的最优解。 (1)分支...
  • 大常用算法

    万次阅读 多人点赞 2018-10-05 07:13:50
    大常用算法   分治算法   一、基本概念  在计算机科学中,分治法是一种很重要的算法。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题...
  • 第一章一共四小节,只有第四节单独作为一个博客发表,不仅仅是这一节在我心中地位比较重要,这一节在考研,期末考试和以后的码农生涯都会有重要作用。我不能说我这一节总结的有多好,但我还是希望能拿出来与大家分享...
  • 元启发式算法:蝙蝠算法BA

    千次阅读 多人点赞 2019-06-18 14:51:27
    算法 1. 定义 2. 步骤 3. 特点 二、蝙蝠 1.描述 2.先进技能-声纳 1) 回声定位-Acoustics of Echolocation 2) 行为参数化分析 3. 技能属性 三、 蝙蝠算法 1.算法模型建立之规则理想化简化 2....
  • 算法

    千次阅读 2013-12-12 16:51:34
    种计算在位置名为A和B的两数字a 和b的最大公约数 (g.c.d.) 的算法(欧几里得的算法)的流程图。  该算法通过在两循环中连续减进行的:如果测试B≥A产生的是"是"(或真)(更准确地说位置B的数字b是大于或等于...
  • 一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题—-“分”2.将最后子问题可以简单的直接求解—-“治”3.将所有子问题的解合并起来就是原问题打得解—-“合”这三点是分治算法的...
  • 算法算法的评价

    千次阅读 2018-04-16 22:02:52
    》》算法的基本概念:  算法是对特定问题求解步骤的一种描述,它是指令的有限序列,...此外,一个算法还具有下列5个重要的  特性。  (1)、有穷性  一个算法必须总是(对任何合法的输入值)在执行有穷步之后结束,
  • 算法与复杂度

    2018-08-27 11:29:32
    输入性:一个算法必须具有零个或多个输入量 输出型:一个算法应有一个或多个输出量,输出量是算法计算的结果 确定性:算法中每一条指令应含义明确、无歧义,即对每一种情况、需要执行的动作都应严格地、清晰地规定...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 203,535
精华内容 81,414
关键字:

一个算法必须满足的5个特性