数据结构之图的应用:拓扑排序
图的应用:拓扑排序
- 思维导图:
- 拓扑排序的定义:
- 拓扑排序的算法思想:
- 拓扑排序的代码实现:
- 拓扑排序的特点:
- 逆拓扑排序:
- 用DFS算法实现逆拓扑排序:
思维导图:
拓扑排序的定义:
拓扑排序的算法思想:
ps: 拓扑排序不一定唯一
拓扑排序的代码实现:
bool ToplogicalSort(Graph G){InitStack(s); //当出现多个入队为0的顶点时入栈保存 for(int i=0;i<G>vexnum;i++)if(indegree[i] == 0) //保存所有顶点当前的入度 push(S,i);int count = 0; //当前访问的顶点的个数 while(!isEmpty(s)){ //不为空 Pop(s,i);print[count++] = i; //保存拓扑序列大的数组 for(p = G.Vertices[i].firstarc;p;p = nextarc){ //遍历边表 v = p->adjvex;if(!(--indegree[v])) //删除一个顶点后让其相邻顶点入度减一,若减一之后为0,则入栈 Push(s,v);}} if(count < G>vexnum) //是否访问了全部节点 return false;elsereturn true;
}
//时间复杂度:O(|V|+|E|)
拓扑排序的特点:
逆拓扑排序:
PS:
用邻接矩阵优于邻接表
用DFS算法实现逆拓扑排序:
bool visited[MAX_TRUE_SIZE];
void DFSTraverse(Graph G){for(int i=0;i<G.vexnum;++i)visited[i] = false;for(int i=0;i<G.vexnum;++i)if(!visited[i])DFS(G,i);
}void DFS(Graph G,int v){visit(v);visited[v] = true;for(w = FirstNeighbor(G,v);w>=0;w=NextNeighbor(G,v,w))if(!visited[w])DFS(G,w);print(v);
}
数据结构之图的应用:拓扑排序相关推荐
- 数据结构——AOV图与算法——拓扑排序
AOV图:以有向图中的顶点来表示活动,以有向边来表示活动之间的先后次序关系. 拓扑排序:对一个有向无环图(AOV)进行活动先后的排序方法 拓扑排序思路: 1.统计所有节点的入度 2.把所有入度为0的节 ...
- aov建立Java模拟,数据结构之---C语言实现拓扑排序AOV图
//有向图的拓扑排序 //杨鑫 #include #include #include #define MAX_NAME 3 #define MAX_VERTEX_NUM 20 typedef int ...
- 图——深度优先遍历(DFS)实现有向无环图的逆拓扑排序
对图的深度遍历与对树的深度遍历思想类似,采用的是递归函数的办法. 如果是非连通图,则DFS遍历所有顶点即可. //Graph 图 //vertex 顶点,用一个int型变量表示//返回有向图G中顶点v ...
- 图论--拓扑排序--判断一个图能否被拓扑排序
拓扑排序的实现条件,以及结合应用场景,我们都能得到拓扑排序适用于DAG图(Directed Acyclic Graph简称DAG)有向无环图, 根据关系我们能得到一个线性序列,实现的方式是DFS,具体 ...
- java 有向无环图 树_拓扑排序-有向无环图(DAG, Directed Acyclic Graph)
条件: 1.每个顶点出现且只出现一次. 2.若存在一条从顶点 A 到顶点 B 的路径,那么在序列中顶点 A 出现在顶点 B 的前面. 有向无环图(DAG)才有拓扑排序,非DAG图没有拓扑排序一说. 一 ...
- 有向无环图的所有拓扑排序
有向无环图的所有拓扑排序 对有向无环图DAG的拓扑排序是顶点的线性排序,从而使每一有向边[u,v][u,v][u,v],顶点u进来的顺序v在.如果图不是 DAG,则无法对图进行拓扑排序. 给定一个 D ...
- 图综合练习--拓扑排序_03 数据结构与算法 - 排序
1. 冒泡排序 Bubble Sort 基本思想 给定一个数组,这些元素将通过相互之间的比较,按照大小顺序一个个地像气泡一样浮出水面 实现 每一轮,从头部开始,每两个元素比较大小进行交换,直到这一轮中 ...
- 【数据结构-图】4.拓扑排序和关键路径(注解+原理)
一.拓扑排序 1.1 基本知识 有向无环图:一个有向图中不存在环,简称DAG图 AOV网:用DAG图表示一个工程,其顶点表示活动,用有向边 <Vi,Vj><V_i, V_j>& ...
- 图综合练习--拓扑排序_拓扑排序
一个场景 在大学里,每当到了期末的时候,你一定会头疼于选课给你带来的困扰.其中一项就是先修课的问题,每次你高高兴兴地选了自己心仪的选修课时,却发现自己不满足先修课的要求,只好默默地退掉.到底怎样安排我 ...
- 图的应用 | 拓扑排序
拓扑序不唯一 一个图存在拓扑序 等价于 该图为有向无环图 1.有向图的拓扑排序实现: 辅助数据结构: 记录入度的数组 indegree[]: 初始化:创建的时候同步初始化: 队列zero:记录当前入 ...
最新文章
- 独家 | UCI机器学习数据库的Python API介绍
- SAP RETAIL 使用事务代码WB03去显示一个后台配置的工厂
- LeetCode-剑指 Offer 52. 两个链表的第一个公共节点
- redis watch使用场景_redis不得不会的事务玩法
- php console postman,postman内置脚本说明
- DataFrame 重新设置索引: reindex 和 reset_index 的区别
- libgdx之瓦片地图(TiledMap)
- Java 定时任务表达式
- 包含了6种不同格式的10种不同的Code 39条形码字体样式的工具包Code 39 Font Advantage Package
- 文件排版(文本文件读写)
- C# 模拟PrintScreen 和 Alt+PrintScreen截取屏幕图片
- 维特比算法在隐马尔可夫模型中的应用
- git 常见问题汇总(更新中)
- mysql 军规_在互联网大厂必须遵守的MySql开发军规
- 中缀转后缀表达式并计算
- 达梦数据库 find_in_set 函数适配
- linux free命令详解
- 【小知识】java中的this.name=name是什么意思啊??this 有什么用啊,再哪出现?
- SAP各模块字段与表的对应关系
- 2016April Python学习笔记(pandasecharts)
热门文章
- 2020年什么编程语言最受欢迎,待遇最高?
- 5分钟 0元搭建个人独立博客网站(一)
- 520送你一份WebStorm的主题包,附带使用图文教程
- ss流量查询 php,Linux_Linux怎么使用ss命令查看系统的socket状态, Linux系统中,ss命令可用于 - phpStudy...
- mpvue微信小程序动画_mpvue小程序以及微信直播踩坑总结
- virsh命令 查看虚拟机镜像_kvm虚拟机操作相关命令及虚拟机和镜像密码修改
- 无监督学习 | 层次聚类 之凝聚聚类原理及Sklearn实现
- 机器学习 | 距离计算
- 高颜值免费在线绘图工具新增WGCNA和差异分析
- 生信宝典,生物信息学习资源