菜单

算法小记,算法笔记pdf

2020年1月25日 - 区块链财经

是不是很惊讶,协议和算法并不是一回事!而你是不是经常看到很多文章中把它们混用。在这篇文章中,我希望能对它们之间的区别做个清楚的阐释,并且向大家证明,弄清楚它们之间的区别将有助于我们对区块链的深入理解。协议是掌管一个系统如何运行的一系列规则。这些规则确立了不同部分的基本功能、他们如何相互作用、以及对于良好运行所必需的条件。协议的不同部分对时间顺序不敏感——首先制定哪个部分并不重要。协议也不会告诉系统该如何产生一个结果或输出,除了顺利执行之外,没有其他目标。协议就像一辆汽车的引擎。算法,是一组产生输出结果的指令。它可以是一段简单的脚本,也可以是一个复杂的程序。指令的顺序非常重要,而算法指定了该顺序。它会告诉系统该做什么才能达到预期结果。它可能不会提前知道结果是什么,但它知道它需要一个结果。算法就像一辆汽车的驾驶员,它发布的指令就是驾驶员为操作汽车而做的一系列行为。(比如在这张图中,桥是协议,自行车是协议,骑车的人是算法)协议是一组决定系统功能的规则,算法是一组告诉系统该做什么的指令。协议定义的是“是(is)”,算法是“做(dose)”。如果在厨房中,协议就是一系列的条件和指令,例如:刀切东西火加热橄榄油是美味的煎锅适合炒洋葱在做饭之前要洗手烧焦的食物很难吃算法则是这样的:第一步:切洋葱第二步:在平底锅里加热橄榄油第三步:把洋葱放到锅里,加一些盐,翻炒洋葱至半透明状

算法小记,算法笔记pdf

什么是计算机程序设计?

  简单的说,它就是告诉计算机要做什么。计算机可以做很多事情,但是不太擅长自主思考,程序员需要像给小孩子喂饭一样告诉它具体的细节,并且使计算机能够理解的语言——算法。

  算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题。不同的算法可能用不同的时间、空间或效率来完成同样的任务。一个算法的优劣可以用空间复杂度与时间复杂度来衡量。
  算法中的指令描述的是一个计算,当其运行时能从一个初始状态和(可能为空的)初始输入开始,经过一系列有限而清晰定义的状态,最终产生输出并停止于一个终态。一个状态到另一个状态的转移不一定是确定的。随机化算法在内的一些算法,包含了一些随机输入。
  形式化算法的概念部分源自尝试解决希尔伯特提出的判定问题,并在其后尝试定义有效计算性或者有效方法中成形。这些尝试包括库尔特·哥德尔、Jacques
Herbrand和斯蒂芬·科尔·克莱尼分别于1930年、1934年和1935年提出的递归函数,阿隆佐·邱奇于1936年提出的λ演算,1936年Emil
Leon Post的Formulation
1和艾伦·图灵1937年提出的图灵机。即使在当前,依然常有直觉想法难以定义为形式化算法的情况。

特征

  一个算法应该具有以下五个重要的特征:
  1、有穷性(Finiteness)
    算法的有穷性是指算法必须能在执行有限个步骤之后终止;
  2、确切性(Definiteness)
    算法的每一步骤必须有确切的定义;
  3、输入项(Input)
    一个算法有0个或多个输入,以刻画运算对象的初始情况,所谓0个输入是指算法本身定出了初始条件;
  4、输出项(Output)
    一个算法有一个或多个输出,以反映对输入数据加工后的结果。没有输出的算法是毫无意义的;
  5、可行性(Effectiveness)
    算法中执行的任何计算步骤都是可以被分解为基本的可执行的操作步,即每个计算步都可以在有限时间内完成(也称之为有效性)。

要素

  一,数据对象的运算和操作:计算机可以执行的基本操作是以指令的形式描述的。一个计算机系统能执行的所有指令的集合,成为该计算机系统的指令系统。一个计算机的基本运算和操作有如下四类:
    1,算术运算:加减乘除等运算
    2,逻辑运算:或、且、非等运算
    3,关系运算:大于、小于、等于、不等于等运算
    4,数据传输:输入、输出、赋值等运算[1]
  二,算法的控制结构:一个算法的功能结构不仅取决于所选用的操作,而且还与各操作之间的执行顺序有关。

分类

  算法可大致分为基本算法、数据结构的算法、数论与代数算法、计算几何的算法、图论的算法、动态规划以及数值分析、加密算法、排序算法、检索算法、随机化算法、并行算法,厄米变形模型,随机森林算法。
  算法可以宏泛的分为三类:
    一,有限的,确定性算法
这类算法在有限的一段时间内终止。他们可能要花很长时间来执行指定的任务,但仍将在一定的时间内终止。这类算法得出的结果常取决于输入值。
    二,有限的,非确定算法
这类算法在有限的时间内终止。然而,对于一个(或一些)给定的数值,算法的结果并不是唯一的或确定的。
    三,无限的算法
是那些由于没有定义终止定义条件,或定义的条件无法由输入的数据满足而不终止运行的算法。通常,无限算法的产生是由于未能确定的定义终止条件。


更多关于算法的介绍可以通过搜索相关资料查阅。


欧洲杯竞猜推荐 , 

 

什么是计算机程序设计?
简单的说,它就是告诉计算机要做什么。计算机可以做很多事情,但是不太擅长自主思考…

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图