【数据结构与算法基础】拓扑排序与AOV网络

本文介绍了数据结构中的拓扑排序和AOV网络概念,探讨了拓扑排序的实现、算法流程以及如何通过拓扑排序判断有向图是否存在环。内容包括有向无环图(DAG)的性质、入度和出度的概念,并提供了代码实现示例。
摘要由CSDN通过智能技术生成

前言

数据结构,一门数据处理的艺术,精巧的结构在一个又一个算法下发挥着他们无与伦比的高效和精密之美,在为信息技术打下坚实地基的同时,也令无数开发者和探索者为之着迷。

也因如此,它作为博主大二上学期最重要的必修课出现了。由于大家对于上学期C++系列博文的支持,我打算将这门课的笔记也写作系列博文,既用于整理、消化,也用于同各位交流、展示数据结构的美。

此系列文章,将会分成两条主线,一条“数据结构基础”,一条“数据结构拓展”。“数据结构基础”主要以记录课上内容为主,“拓展”则是以课上内容为基础的更加高深的数据结构或相关应用知识。

欢迎关注博主,一起交流、学习、进步,往期的文章将会放在文末。


在生活中,我们经常会遇到一类问题,这类问题总是包含着这样的元素

  • 有若干的任务需要完成
  • 要完成一项任务总要先完成一系列的前置任务
  • 有一个或多个任务没有任何前置任务

常见的,大学课程的修习就遵循这这样一种规则。一些科目的学习需要一些前置科目,例如数据结构就需要先学习程序设计和离散数学。

在培养计划中随手挑选出几门课程,他们就能够构成如下的结构
在这里插入图片描述

另外,在工程项目上,这样的结构也不在少数。一些工作需要依赖另一些前置工作的完成,也有些工作不需要任何前置工作就能启动。

我们用教材上的图作为例子:
在这里插入图片描述
(确实,教材上的图比自己画的好看…)

拓扑排序与AOV网络

上文中讨论的有向图结构,一个顶点表示一项活动或任务,有向边表示行动之间的前后关系。

这样的图,被我们称作AOV网络,英文全称是: A c t i v i t y   O n   V e r t e x   N e t w o r k Activity\ On\ Vertex\ Network Activity On Vertex Network

将问题抽象成为这种结构之后,自然而然的就会产生一种需求,那就是科目应该按照什么顺序学习,或者工程中的各项活动应该按照什么顺序进行,即获得一个顶点序列,使其中的每个顶点,其前驱结点都在序列前面出现过。

计算这个序列的过程,就是所谓的拓扑排序( T o p o l o g i c a l   s o r t i n g Topological\ sorting Topological sort

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值