算法是在有限步骤内求解某一问题所使用的一组定义明确的规则。通俗点说,就是计算机解题的过程。在这个过程中,无论是形成解题思路还是编写程序,都是在实施某种算法。前者是推理实现的算法,后者是 *** 作实现的算法。
一个算法应该具有以下五个重要的特征:
1、有穷性: 一个算法必须保证执行有限步之后结束;
2、确切性: 算法的每一步骤必须有确切的定义;
3、输入:一个算法有0个或多个输入,以刻画运算对象的初始情况,所谓0个输入是指算法本身定除了初始条件;
4、输出:一个算法有一个或多个输出,以反映对输入数据加工后的结果。没有输出的算法是毫无意义的;
5、可行性: 算法原则上能够精确地运行,而且人们用笔和纸做有限次运算后即可完成。
算法的设计要求
1)正确性(Correctness)
有4个层次:
A.程序不含语法错误;
B.程序对几组输入数据能够得出满足规格要求的结果;
C.程序对精心选择的、典型的、苛刻的、带有刁难性的几组输入数据能够得出满足规格要求的结果;
D.程序对一切合法的输入数据都能产生满足规格要求的结果。
2)可读性(Readability)
算法的第一目的是为了阅读和交流;
可读性有助于对算法的理解;
可读性有助于对算法的调试和修改。
3)高效率与低存储量
处理速度快;存储容量小
时间和空间是矛盾的、实际问题的求解往往是求得时间和空间的统一、折中。
算法的描述 算法的描述方式(常用的)
算法描述 自然语言
流程图 特定的表示算法的图形符号
伪语言 包括程序设计语言的三大基本结构及自然语言的一种语言
类语言 类似高级语言的语言,例如,类PASCAL、类C语言。
算法的评价 算法评价的标准:时间复杂度和空间复杂度。
1)时间复杂度 指在计算机上运行该算法所花费的时间。用“O(数量级)”来表示,称为“阶”。
常见的时间复杂度有: O(1)常数阶;O(logn)对数阶;O(n)线性阶;O(n^2)平方阶
2)空间复杂度 指算法在计算机上运行所占用的存储空间。度量同时间复杂度。
时间复杂度举例
(a) X:=X+1 ; O(1)
(b) FOR I:=1 TO n DO
X:= X+1; O(n)
(c) FOR I:= 1 TO n DO
FOR J:= 1 TO n DO
X:= X+1; O(n^2)
“算法”一词最早来自公元 9世纪 波斯数学家比阿勒·霍瓦里松的一本影响深远的著作《代数对话录》。20世纪的 英国 数学家 图灵 提出了著名的图灵论点,并抽象出了一台机器,这台机器被我们称之为 图灵机 。图灵的思想对算法的发展起到了重要的作用。
算法是 计算机 处理信息的本质,因为 计算机程序 本质上是一个算法,告诉计算机确切的步骤来执行一个指定的任务,如计算职工的薪水或打印学生的成绩单。 一般地,当算法在处理信息时,数据会从输入设备读取,写入输出设备,可能保存起来以供以后使用。
这是算法的一个简单的例子。
我们有一串随机数列。我们的目的是找到这个数列中最大的数。如果将数列中的每一个数字看成是一颗豆子的大小 可以将下面的算法形象地称为“捡豆子”:
首先将第一颗豆子(数列中的第一个数字)放入口袋中。
从第二颗豆子开始检查,直到最后一颗豆子。如果正在检查的豆子比口袋中的还大,则将它捡起放入口袋中,同时丢掉原先的豆子。 最后口袋中的豆子就是所有的豆子中最大的一颗。
下面是一个形式算法,用近似于 编程语言 的 伪代码 表示
给定:一个数列“list",以及数列的长度"length(list)" largest = list[1] for counter = 2 to length(list): if list[counter] > largest: largest = list[counter] print largest
符号说明:
= 用于表示赋值。即:右边的值被赋予给左边的变量。
List[counter] 用于表示数列中的第 counter 项。例如:如果 counter 的值是5,那么 List[counter] 表示数列中的第5项。
<= 用于表示“小于或等于”。
算法的分类
(一)基本算法 :
1枚举
2搜索:
深度优先搜索
广度优先搜索
启发式搜索
遗传算法
(二)数据结构的算法
(三)数论与代数算法
(四)计算几何的算法:求凸包
(五)图论 算法:
1哈夫曼编码
2树的遍历
3最短路径 算法
4最小生成树 算法
5最小树形图
6网络流 算法
7匹配算法
(六)动态规划
(七)其他:
1数值分析
2加密算法
3排序 算法
4检索算法
5随机化算法证明构造任意一个具有n个结点v1,v2,…,vn的树,如果此时对任意i=1,2,…,n,有deg(vi)=di,本题结论成立,否则必存在deg(vi)dj,由于树是连通的,故结点vi,vj之间必有一条路vi,…,vk,vj,其中vj,是紧接着vk的结点,由于deg(vj)>dj=1,,故必存在vl≠vk,使得(v如果截图为A:C列,那么在B列添加一列辅助列,写入待查日期,然后设置C:D列为“时间”格式,在C2和D2单元格分别输入以下数组公式,按Ctrl+Shift+Enter组合键结束,然后向下填充公式
=MOD(MIN(IF(DAY(A$2:A$200)=B2,A$2:A$200)),1)
=MOD(MAX(IF(DAY(A$2:A$200)=B2,A$2:A$200)),1)假设G去掉v后有k个连通分量,对于任意一个连通分量,该分量与v点之见只有偶数个边连接(根据是每个节点的度均为偶数。否则去掉v后,分量中将有奇数个点具有奇数度,这与度数之和为偶数矛盾),故v与该分量之间至少有2条边连接。故2k<=d(v),仅当v与每个分量之间都只有两条边时取等号(例子很好举),得证。
简单图:无环、无多重边的图。
同构图:两个同阶图(点数为图的阶),若定点集合与边集合之间在保持关系性质条件下一一对应,则为同构。
公式不知道,但是思路个人认为是列举法。
一共5点3边,且为简单图故必有一点有两边(及此点次为2):
一是有一点次为3,故每点有2种可能,共10(但是若题意是将各点视为同样则为1种)。
二是有一点次为0切无次为3的点,则每点仅有1种可能,共5(但是若题意是将各点视为同样则为1种)。
三是有一点此为2,其余全是1,则每点仅有1种可能,共5(但是若题意是将各点视为同样则为1种)。
故答案为B
叶子节点数l=n- (n-1)/k
根据题意:
满k叉数设一共有x层第一层到第x-2层,每层k^(x-1)个节点,并且都是度为k的分支结点第x-1层,k^(x-1)个节点。
一部分是叶子,一部分不是第x层,全部都是叶子,分支节点的度数和,就是总节点数n。分支节点数m = (n-1)/k,叶子节点数l=n- (n-1)/k。
扩展资料:
从根结点开始,假设根结点为第1层,根结点的子节点为第2层,依此类推,如果某一个结点位于第L层,则其子节点位于第L+1层。
二叉树是n个有限元素的集合,该集合或者为空、或者由一个称为根的元素及两个不相交的、被分别称为左子树和右子树的二叉树组成,是有序树。当集合为空时,称该二叉树为空二叉树。在二叉树中,一个元素也称作一个结点。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)