knowledgeints的个人博客分享 http://blog.sciencenet.cn/u/knowledgeints

博文

算法press(更新)

已有 1308 次阅读 2020-9-13 14:04 |系统分类:论文交流

  1. 算法的概念   

        算法提高计算机程序的能力。程序没有算法的思维只是应用,算法是程序的专业化。什么是算法? 算法是选择程序数据处理的功能,将多个功能衔接组成整体结构。程序数据处理的功能是一个原子功能,要么都做要么都不做。不可中断,增减。   

      程序数据处理的功能与CPU功能读写取数不同,与数据结构原子操作不同,例如队列的出队,入队。程序数据处理是计算机经典算法的数据处理,只有特定的几个,并不是很多。 (1)在一个输入数据结构中读取一个索引结构元素子序列,并且存放到中间数据结构中。(2)在中间数据结构中输出一个全序子序列。(3)根据结果的性质在数据结构的约束范围中选择一个元素,如果有多个方向,此性质将决定选择哪一个元素。(4)在数据结构中使用辅助数组建立元素的组织方法,实现一行一列(或其他边界要求)元素的定位。(5)精确建立一个元素和一组元素的逻辑关系,用存储下标公式或其他方式表示。(6)一个元素的精确数据处理范围,实现数据元素的定位(7)实现一个元素和一组元素的计算关系。(8) 建立特殊要求的输出数据的存储结构(9)建立数据整体的组织技术,有数据分组,数据子集合,树形子序列,已经组织元素和未组织元素。(10)算法的驱动元素的选择(11)建立操作(排序的比较)的路径或驱动元素的数据处理范围,或其他操作的数据处理范围(12)使用比较或者其他操作方法,建立与驱动元素有相同计算性质的一个连续元素子序列,或者合并两个子序列。(13)元素位置的更新,交换元素或者移动一组连续元素。 

还有图算法的数据处理功能。    

        经典算法的程序数据处理的功能有大约20个。它们分别从遍历算法,Sparce matrix计算算法,排序和图算法中发现。因为它们的原子性,可命名为原子功能。我们将经典算法分为四类:遍历算法(找到每一个元素),科学计算算法(对找到的元素进行计算),排序(对集合中的元素根据数值或性质排序)与路径选择程序(在图中选择一个路径。建立路径的元素集合,每次选择一个元素)。每一类基本程序有唯一的原子功能集合,并且有原子功能组成的程序功能结构。复杂程序使用四类基本程序的原子功能,实现程序的功能目的。二叉排序树与2,b bias 树增加删除节点,动态树的路径操作都可组合选择的原子功能实现,组合方法的循环与复合(顺序)分别是文法的闭包和连接,选择是文法候选式的或。在克莱因代数中分别对应*,+,|。路径选择程序包括LR项目集算法,路径选择程序包括关键路径,网络最大流算法等。二叉排序树算法是遍历算法和排序算法的组合。

         原子功能的发现根据数据结构中数据元素间的逻辑关系,包括连续元素的功能子序列或全序性质子序列的连续关系,与结构间的关系。数据组织技术中,元素的功能子序列建立数据结构的索引结构。例如二叉排序树,斜堆,二项队列和bias树。全序性质子序列是一个元素的某一个性质的后继子序列或者非后继的逻辑关系对应元素子序列。这两类子序列构成一个原子逻辑结构,是一个程序数据处理功能的输入数据或者输出数据。原子逻辑结构间的关系称为结构间的关系。在陶尔扬的在摊还分析中,结构难寻找,原子逻辑结构可定义势函数。数据组织是数据结构(树,矩阵)中元素的逻辑关系,或算法建立的数组中元素的逻辑关系。计算机程序的基础是建立和发现数据结构中的线性性。数组是线性表但是有非线性性质,例如KMP算法的模式的相同前缀。图的线性性是路径。例如,发现图的两点间的最短路径。在网络最大流算法中,将图的非线性性使用路径分组线性化,每一个路径用一个动态树表示,叶节点是图的顶点,中间节点表示路径。

         数据组织技术索引输入数据结构中的所有数据,根据索引结构和数据间的逻辑关系实现算法,或者并行组织数据,包括数组序和树形序。或者将程序执行过程用树形数据结构表示,即经典算法的程序执行过程可用数据结构表示,例如快速排序的程序执行过程是二叉排序树。     

     因此,算法设计有程序功能结构和数据组织两种技术。分治法是树形数据组织,动态规划是数据分组,最佳策略(贪心法)是子集合。这两种算法用动态规划发现算法规则,最佳策略只是应用规则,而不需要考虑所有数据分组。数据分组有索引结构,分组间有逻辑关系(KMP算法),或分组间有清晰的边界(最大子向量和,格路问题)。回溯法不常用,分支枝限界法是有排序的回溯法。因此,算法设计不再是松散的数学题类型,或者选择定理。 

        高德纳的算法是有限过程,而且包涵数据结构上的经典算法。高德纳清晰算法的每一步,并且希望用数学表示算法。陶尔扬的摊还分析应用在操作系统或数据库的资源型数据,或网络数据例如电话网,交通运输网,最小生成树。每一个操作设置credits,摊还分析所有操作的平均credits,根据操作与平均credits是否在同一个等级,选择数据结构使所有操作的算法复杂度相同。例如一个操作是O(1),一个操作是O(n),若更换一个数据结构则,所有操作的算法复杂度是O(lgn)。算法的循环不变式也是一个重要方法。 

2.原子功能         

 我们用摊还分析的势函数,数据间的逻辑关系,生物化学分子式和结构式分析原子功能的性质和相互关系。有三个问题: 

      1.为什么20个原子功能可表示复杂程序的程序功能结构。

      2. 摊还分析的势函数表示元素或子序列的势差,原子功能是否表示动能。

     3. 数据组织技术的索引结构和并行序型是否有一致性。

 首先,遍历程序的三个原子功能,(1)建立数据结构二叉树,图的索引结构。将二叉树或每一棵右子树的最左路径pl,保存到Stack S中。pl是二叉树根结点r或每一棵右子树根结点sp的左子传递关系全序序列。pl的元素数量|pl|记为credits,cl=|pl|。pl中有右子树的节点命名为索引结点,pl能索引所有相邻的右子树。

 (2)Stack S中的栈顶元素序列ts是树或右子树最左子在输出序列中的直接后继序列。栈顶元素lf1是树或右子树最左子,ts的credits ct=|ts|<=cl(if lf1  is the leftmost node)。若lf1是二叉树根结点r的左子树的最右子,credits ct=2。二叉树根结点r的credits rc初始值是二叉树最左子pl序列的cl。因此,inorderTraversal算法

势函数  ct<=|ts|   if lf1 is the leftmost node,

              2<=ct<rc    if  lf1 is the rightmost node of a left subtree

ts出栈后,rc=rc-ct。

ts子序列的结束条件是最后一个结点rg是索引结点,第一个有未展开右子树的索引结点。若ct<rc,rg和根结点间有势差,可能存在索引结点,应遍历它的右子树。

(3)根据结果的性质在数据结构的约束范围中选择一个元素,如果有多个方向,此性质将决定选择哪一个元素。



https://wap.sciencenet.cn/blog-3449003-1250373.html


收藏 IP: 183.198.2.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-4-29 05:11

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部