拓扑排序

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

拓扑排序

摘要

拓扑排序是求解网络问题所需的主要算法。管理技术如计划评审技术和关键路径法都应用这一算法。通常,软件开发、施工过程、生产流程、程序流程等都可作为一个工程。一个工程可分成若干子工程,子工程常称为活动。活动的执行常常伴随着某些先决条件,一些活动必须先于另一活动被完成。利用有向图可以把这种领先关系清楚地表示出来。而有向图的存储可以用邻接表和逆邻接表做存储结构来实现。最后用拓扑排序表示出来就可以了。拓扑排序有两种,一种是无前趋的顶点优先算法,一种是无后继的顶点优先算法,后一种的排序也就是逆拓扑排序。

关键词:拓扑排序;逆拓扑排序;有向图;邻接表;逆邻接表

THE OPERATOR ORDERING PROBLEM IN QUANTUM

HAMITONIAN FOR SOME CONSTRAINT SYSTEMS

ABSTRACT

Topological sort is the main method to solve network problems. Management techniques such as PERT and critical path method is the application of this algorithm. Typically, software development, the construction process, production processes, procedures, processes, etc. can be used as a project. A project can be divided into several sub-projects, often referred to as sub-project activities. The implementation of activities often associated with certain preconditions, some of the activities must be completed before another activity. Use has lead to the relationship of this figure can be expressed clearly. While storage can be used to map the inverse adjacency list and adjacency table to do storage structures. Finally, topological sort that out on it. Topological sort, there are two, one is the predecessor of the vertex without first algorithm, a successor of the vertex is no priority algorithm, the latter sort is the inverse topological sort.

Key words:topological sort; inverse topological; have to figure; adjlink; inverse adjlink

目录

1需求分析 (1)

1.1设计内容 (1)

1.2设计要求 (1)

2概要设计 (1)

2.1邻接表 (1)

2.2逆邻接表 (2)

2.3有向图的拓扑排序........................................................................... (3)

2.4有向图的逆拓扑排序.............. ........ (4)

3详细设计 (4)

3.1 有向图拓扑排序和逆拓扑排序 (4)

3.1 .1 邻接表存储 (4)

3.1.2 逆邻接表存储 (9)

4 调试分析 (11)

4.1 回顾讨论和分析 (11)

4.2 算法复杂度的分析 (11)

4.3 经验和体会 (12)

5用户使用说明 (12)

6 测试数据和测试结果 (12)

参考文献 (15)

附录 (16)

1 需求分析

1.1设计内容

编写函数实现有向图的拓扑排序以及逆拓扑排序,要求有向图用邻接表和逆邻接表作为存储结构分别实现,并比较两者算法时间复杂度。

1.2 设计要求

1.将有向图分别用邻接表与逆邻接表存储

2.实现有向图的拓扑排序和逆拓扑排序

3.比较两种排序的时间复杂度

2 概要设计

图是一种非常有用的数据结构。因为图的结构复杂而使用广泛,所以其存储表示方法也是多种多样,对应于不用的应用问题有不用的表示方法。

2.1 邻接表

邻接表是图的一种链式存储结构。用邻接表法表示图需要保存一个顺序存储的结点表和n个链接存储的边表。结点表的每个表目对应于一个结点,每个表目包括两个字段:一个是结点的数据或指向结点数据的指针,另一个是指向此结点的边表的指针。图的每个结点都有一个边表,一个结点的边表的每个表目对应于与该结点相关联的一条边,每个表目包括两个字段:一个是与此边相关联的另一个结点的序号,另一个是指向边表的下一个表目的指针。

用邻接表法表示有向图,根据需要可以保存每个结点的出边表(即以该结点为始点的边的表),也可以保存每个结点的入边表(即以该结点为终点的边的表)。只保存入边表和出边表之一,则存储n个结点m条边的有向图需要n+m个单元。

在这种存储方法中,对于图中的每一个顶点分别建立一个线性链表。每个链表前

相关文档
最新文档