程序的性质有,线性性,数学性 ,并发性与并行性。
根据实数理论与集合论,全序序列一定有上确界。
a)图或者无序输入数据序列是非线性序列,找到上确界应该用排序的方法。
b)二叉树或矩阵有良好数据存储结构,应根据索引结构或逻辑关系发现上确界。
1.程序的线性性
程序的线性性是程序数据决定的。线性表包括数组,栈,队列。能扩展到二维数组。栈和队列是动态数据结构。线性表的有序性是存储的数据决定。
树是复合线性表,图则不是线性表。
程序范畴的线性与数学的线性不同。数学的线性是变量的次数(幂)为1,在线性方程组中,所有未知量的次数是一次。若将线性方程称为一种线性关系,则数学对象之间的关系是用一次形式表示。例如,在解析几何中,直线的方程是二元一次方程,平面的方程是三元一次方程。 线性在数学中描述一种成比例、方向一致且遵循叠加原理的关系或结构。
程序的线性性首先是数据结构的线性性。数据结构有线性表,树和图。
线性表是一对一的关系,只有一个首元素与一个尾元素,其他元素与首元素,尾元素的关系相同。路径压缩就是根据这个原理实现。线性表的线性是元素只有一个前驱和后继。因此与有序表不同,有序表是元素按数量序从大到小或从小到大排列。因此程序的线性与序列的有序(全序)不同。
线性表
a0,a1,a2,a3,...,an-1
存储在数组或链表中。a0,an-1分别是首元素和尾元素,{ai|0<i<n-1}只有一个前驱和后继。一个有序表是线性有序的。
树是一对多关系。二叉树是多个小线性表复合组织,组成一个索引结构,从每一个索引结点引出一个右子树。二叉树的元素只有一个直接上级结点 (父结点),两个直接下级结点,左子结点和右子结点。二叉树的特征不仅所有子树不相交,因此用来表示不相交集合,或者每一个元素只在一个路径中。若堆是完全二叉树实现,每一趟排序堆首元素只在一个路径中调整,因此算法复杂度是完全二叉树 的高度。而且二叉树是一个索引结构,组织所有右子树。每一个右子树的最左子序列组成这个右子树的索引结构,这个索引结构中的所有索引结点连接一个右子树,因此组成这个二叉树的整体索引结构。
图是多对多关系,若想编出计算机程序,就应该发现图中的线性部分。图的线性部分有 ,
a)所以结点按拓扑排序方法组成的序列,
b)结点的邻接表,
c)图的最短路径。
然后,程序处理数据的操作是线性的。计算机系统结构决定程序的操作是线性的。
最后,程序的线性是中间过程的线性。
2.程序的数学性
程序的数学性质是计算机程序的起源决定的。计算机程序起源于二战期间美国的曼哈顿工程,几乎所有物理学精英都参加了。

1205

被折叠的 条评论
为什么被折叠?



