在实际应用中,很多算法都体现了深度优先搜索的思想。图3-2 有向图的邻接表表示2.拓扑排序深度优先搜索的另一个经典应用是对有向无环图进行拓扑排序。这两次深度优先搜索一次运行在图G上,一次运行在转置图GT上。算法计算的结果是深度优先森林,每一个强连通分量对应一棵深度优先树。......
2023-10-26
在图领域,广度优先搜索常被用于求解图的最短路径问题中。最短路径问题是图论问题的核心问题之一,许多更深层次的算法问题都是以最短路径问题为基础的。同时,最短路径问题在实际中也有很多的应用,有些问题虽然从表面上看与最短路径问题没有什么联系,但是深入分析就会发现它们也可以用最短路径的思想来解决。
最短路径算法可以分为两类。单源最短路径是其中常用的一类,它可以计算出某一个特定节点到图中剩余节点的长度。还有一类常用的算法是全源最短路径算法,它与前者的区别是可以计算出图中两两节点之间的长度,在实际中也有很多的应用。
1.Dijkstra算法
有很多算法都可以计算一个图的单源最短路径,但各自的适用范围是不一样的。其中,Dijkstra算法适用的是权值都是非负的有向图。Dijkstra算法的思想是:首先定义一个节点的集合S,这个集合所包含的是最短路径已经计算完成的节点。然后从图中剩余的点中再寻找符合条件的节点并加入S中。最后一步对与新加入S节点的相连节点进行松弛操作。
Dijkstra算法的过程描述如下:
(1)对图进行初始化;
(2)选择最短路径dist(s,w),并将w加入S中;
(3)在第二步中得到w,对于u∈V-S,对所有从节点u发出的边(u,v)进行松弛操作;重复进行第二步和第三步的操作,直到计算出所有节点到源节点的长度。
其伪代码描述如下:(www.chuimin.cn)
在上述伪代码描述中,运用下面的INITIALIZE-SINGLE-SOURCE(G,s)算法对最短路径估计和前驱节点进行初始化:
其中,松弛操作relax(u,v,w)的过程为:将从节点s到节点u之间的最短路径距离加上节点u与v之间的边权重,并与当前的s到v的最短路径估计进行比较,如果前者更小,则对v.d和v.π进行更新。松弛操作的伪代码如下:
2.Floyd算法
Floyd算法是一个经典的全源最短路径算法,适用于不包括负环的图,可以应用于计算所有城市之间的交通道路距离问题。Floyd算法依赖于下面的观察,假定图G的所有节点为V={1,2,…,n},考虑其中的一个子集{1,2,…,k},这里k是某个小于n的整数。假设任意两个节点对之间经过的中间节点都来自这个集合,并且设p为其中权重最小的路径。Floyd算法利用了上述两个假设之间的关系,该关系依赖于节点k是否是路径p上的一个中间节点。
因此,我们首先可以定义dij(k)为任意两个节点之间一条最短路径的权重,这两个节点之间的中间节点都来自之前定义的子集。k=0则表示这两个节点是直接相连的,没有中间节点。这样的路径最多只有一条边,因此,dij(0)=ωij。根据上面的讨论,递归定义dij(k)如下:
因为对于任何路径来说,所有的中间节点都属于集合{1,2,…,n},矩阵D(n)=(dij(n))给出的就是最后的答案。
其伪代码描述如下:
有关形式化构件装配的图算法生成的文章
在实际应用中,很多算法都体现了深度优先搜索的思想。图3-2 有向图的邻接表表示2.拓扑排序深度优先搜索的另一个经典应用是对有向无环图进行拓扑排序。这两次深度优先搜索一次运行在图G上,一次运行在转置图GT上。算法计算的结果是深度优先森林,每一个强连通分量对应一棵深度优先树。......
2023-10-26
生成式程序设计包括两个开发周期——领域工程和应用工程。应用工程与领域工程不同,开发人员是根据用户的需求开发特定的系统,没有对领域的对象进行抽象。领域工程和应用工程并不存在先后顺序,而是两个并行的过程。生成式程序设计目标集中于特定领域,因此必须要对“领域”这个概念先有一个理解。在领域模型的基础上,设计、开发和组装可复用资源。下面详细地介绍领域工程中的三个不同阶段——领域分析、领域设计以及领域实现。......
2023-10-26
由于本书的研究是PAR方法的一个重要组成部分,故在此,将对PAR方法做较为详细的阐述。图1-1 PAR方法开发过程略图PAR方法是一种基于分划和递推的部分形式化算法程序设计方法,支持算法程序开发的全过程。它包括四个组成部分:算法程序设计方法、基于递推关系的算法设计语言Radl、抽象程序设计语言Apla及一系列转换系统。由PAR方法的理论及上述对算法的推导,我们可以看出,PAR方法在克服软件危机方面将大有作为。......
2023-10-26
20世纪80年代以来,形式化软件开发方法的研究及应用为解决上述问题找到了一条有效的途径,使用形式化方法开发软件可以提高软件的可读性、可靠性和可维护性以及软件的开发效率,并为实现软件开发的自动化奠定基础。软件开发的形式化方法是以一般形式化方法为基础的。尤其适宜高安全性系统的开发,这也是形式化方法目前最主要的应用领域。另外,某些形式化方法缺乏描述软件结构的强有力机制,对大型软件的开发不太理想。......
2023-10-26
装配时用定位焊和定位板固定零件时,其强度和刚度的要求是:从装配到焊接的运送过程中定位焊缝不能断开或超过规定的变形,并且有利于减小焊接变形。装配工作中的定位焊,应严格遵守技术文件规定,装配精度应保证技术条件的要求。装配中的点固焊,其长度为20~30mm,间距为300~500mm,焊脚高应为设计高度的一半,且大于4mm。......
2023-07-02
元搜索引擎由三部分组成,即检索请求提交机制、检索接口代理机制、检索结果显示机制,如图6-6所示。图6-6元搜索引擎的基本结构图①“请求提交”负责实现用户“个性化”的检索设置要求,包括调用哪些搜索引擎、检索时间限制、结果数量限制等。元搜索引擎实际上是一种网络查询接口工具,它的工作原理相对简单。用户向元搜索引擎发出检索请求,它将该请求整理为相应的检索指令发往多个单搜索引擎。......
2023-11-01
在焊接结构生产中,装配-焊接就是通过采用定位器、定位焊或压夹装置将需要连接的零件,按照图样要求连成部件或整体结构,然后再进行焊接的过程。随着焊接结构不断向高度机械化和自动化方向发展,对装配的质量要求越来越高。为了使整个结构焊接后达到质量标准,在制定装配工艺时,必须注明结构的特殊技术要求和公差尺寸,并在生产中严格遵守公差标准。定位焊时不得在非焊接部位随意引弧,重要结构件上不得随意焊接临时构件。......
2023-06-15
相关推荐