图的应用:拓扑排序

  • 思维导图:
  • 拓扑排序的定义:
  • 拓扑排序的算法思想:
  • 拓扑排序的代码实现:
  • 拓扑排序的特点:
  • 逆拓扑排序:
  • 用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);
}

数据结构之图的应用:拓扑排序相关推荐

  1. 数据结构——AOV图与算法——拓扑排序

    AOV图:以有向图中的顶点来表示活动,以有向边来表示活动之间的先后次序关系. 拓扑排序:对一个有向无环图(AOV)进行活动先后的排序方法 拓扑排序思路: 1.统计所有节点的入度 2.把所有入度为0的节 ...

  2. aov建立Java模拟,数据结构之---C语言实现拓扑排序AOV图

    //有向图的拓扑排序 //杨鑫 #include #include #include #define MAX_NAME 3 #define MAX_VERTEX_NUM 20 typedef int ...

  3. 图——深度优先遍历(DFS)实现有向无环图的逆拓扑排序

    对图的深度遍历与对树的深度遍历思想类似,采用的是递归函数的办法. 如果是非连通图,则DFS遍历所有顶点即可. //Graph 图 //vertex 顶点,用一个int型变量表示//返回有向图G中顶点v ...

  4. 图论--拓扑排序--判断一个图能否被拓扑排序

    拓扑排序的实现条件,以及结合应用场景,我们都能得到拓扑排序适用于DAG图(Directed Acyclic Graph简称DAG)有向无环图, 根据关系我们能得到一个线性序列,实现的方式是DFS,具体 ...

  5. java 有向无环图 树_拓扑排序-有向无环图(DAG, Directed Acyclic Graph)

    条件: 1.每个顶点出现且只出现一次. 2.若存在一条从顶点 A 到顶点 B 的路径,那么在序列中顶点 A 出现在顶点 B 的前面. 有向无环图(DAG)才有拓扑排序,非DAG图没有拓扑排序一说. 一 ...

  6. 有向无环图的所有拓扑排序

    有向无环图的所有拓扑排序 对有向无环图DAG的拓扑排序是顶点的线性排序,从而使每一有向边[u,v][u,v][u,v],顶点u进来的顺序v在.如果图不是 DAG,则无法对图进行拓扑排序. 给定一个 D ...

  7. 图综合练习--拓扑排序_03 数据结构与算法 - 排序

    1. 冒泡排序 Bubble Sort 基本思想 给定一个数组,这些元素将通过相互之间的比较,按照大小顺序一个个地像气泡一样浮出水面 实现 每一轮,从头部开始,每两个元素比较大小进行交换,直到这一轮中 ...

  8. 【数据结构-图】4.拓扑排序和关键路径(注解+原理)

    一.拓扑排序 1.1 基本知识 有向无环图:一个有向图中不存在环,简称DAG图 AOV网:用DAG图表示一个工程,其顶点表示活动,用有向边 <Vi,Vj><V_i, V_j>& ...

  9. 图综合练习--拓扑排序_拓扑排序

    一个场景 在大学里,每当到了期末的时候,你一定会头疼于选课给你带来的困扰.其中一项就是先修课的问题,每次你高高兴兴地选了自己心仪的选修课时,却发现自己不满足先修课的要求,只好默默地退掉.到底怎样安排我 ...

  10. 图的应用 | 拓扑排序

    拓扑序不唯一 一个图存在拓扑序  等价于 该图为有向无环图 1.有向图的拓扑排序实现: 辅助数据结构: 记录入度的数组 indegree[]: 初始化:创建的时候同步初始化: 队列zero:记录当前入 ...

最新文章

  1. 独家 | UCI机器学习数据库的Python API介绍
  2. SAP RETAIL 使用事务代码WB03去显示一个后台配置的工厂
  3. LeetCode-剑指 Offer 52. 两个链表的第一个公共节点
  4. redis watch使用场景_redis不得不会的事务玩法
  5. php console postman,postman内置脚本说明
  6. DataFrame 重新设置索引: reindex 和 reset_index 的区别
  7. libgdx之瓦片地图(TiledMap)
  8. Java 定时任务表达式
  9. 包含了6种不同格式的10种不同的Code 39条形码字体样式的工具包Code 39 Font Advantage Package
  10. 文件排版(文本文件读写)
  11. C# 模拟PrintScreen 和 Alt+PrintScreen截取屏幕图片
  12. 维特比算法在隐马尔可夫模型中的应用
  13. git 常见问题汇总(更新中)
  14. mysql 军规_在互联网大厂必须遵守的MySql开发军规
  15. 中缀转后缀表达式并计算
  16. 达梦数据库 find_in_set 函数适配
  17. linux free命令详解
  18. 【小知识】java中的this.name=name是什么意思啊??this 有什么用啊,再哪出现?
  19. SAP各模块字段与表的对应关系
  20. 2016April Python学习笔记(pandasecharts)

热门文章

  1. 2020年什么编程语言最受欢迎,待遇最高?
  2. 5分钟 0元搭建个人独立博客网站(一)
  3. 520送你一份WebStorm的主题包,附带使用图文教程
  4. ss流量查询 php,Linux_Linux怎么使用ss命令查看系统的socket状态,  Linux系统中,ss命令可用于 - phpStudy...
  5. mpvue微信小程序动画_mpvue小程序以及微信直播踩坑总结
  6. virsh命令 查看虚拟机镜像_kvm虚拟机操作相关命令及虚拟机和镜像密码修改
  7. 无监督学习 | 层次聚类 之凝聚聚类原理及Sklearn实现
  8. 机器学习 | 距离计算
  9. 高颜值免费在线绘图工具新增WGCNA和差异分析
  10. 生信宝典,生物信息学习资源