拓扑序列(拓扑排序)

您所在的位置:网站首页 T2frfse序列什么意思 拓扑序列(拓扑排序)

拓扑序列(拓扑排序)

2024-07-17 02:18:01| 来源: 网络整理| 查看: 265

文章目录 摘要什么是拓扑序列拓扑序的求法

摘要

本文主要介绍拓扑序列,和求解拓扑序列的方法。

什么是拓扑序列

拓扑序列是对于有向图而言的,有向图的拓扑序是其顶点的线性排序,使得对于从顶点 u u u 到顶点 v v v的每个有向边 u v uv uv, u u u 在序列中都在 v v v之前。

例如对于下图: 在这里插入图片描述 对于上图, 存在4条边:(1,3)(1,2)(2,4)(2,3) 该图的拓扑序必须要满足以下两点:

每个顶点只出现一次。对于图中的任何一条边,起点必须在终点之前。 拓扑序的求法

首先,不是所有的有向图都是有拓扑序的,只有有向无环图才有拓扑序,所以有向无环图又被称为拓扑图。

拓扑序是按照点的先后顺序排列的,也就是说入度为0的点一定是排在前面的,我们直接对一个图BFS一遍,BFS过程中更新每个点的入度,如果一个点的入度为0,那么就将其加入拓扑序,并且删除其与后继结点的所有边。

在读入边的时候,直接计算点的入度。

代码:

import java.io.*; import java.util.*; public class Main{ static BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); static BufferedWriter out = new BufferedWriter(new OutputStreamWriter(System.out)); static final int N = 100010; static int n, m, idx = 1; static int e[] = new int[N]; static int ne[] = new int[N]; static int h[] = new int[N]; static int d[] = new int[N]; static Queue q = new LinkedList(); static Queue ans = new LinkedList(); public static int Int(String s){return Integer.parseInt(s);} public static void add(int a, int b){ e[idx] = b; ne[idx] = h[a]; h[a] = idx++; } public static Boolean bfs(){ while(!q.isEmpty()){ int x = q.peek(); q.poll(); for(int i = h[x]; i != 0; i = ne[i]){ // 遍历所有后继结点 if(--d[e[i]] == 0){// 删除当前点与后继结点的边,如果删除后 //其后继结点的入度变为0,就入队 q.add(e[i]); ans.add(e[i]); } } } if(ans.size() == n) return true; else return false; } public static void main(String[] args) throws IOException{ String[] s = in.readLine().split(" "); n = Int(s[0]); m = Int(s[1]); for(int i = 0; i if(d[i] == 0){ // 找到入度为0的点 q.add(i); ans.add(i); flag = 1; } } if(flag == 0) out.write("-1\n"); else { if(bfs()){ // 输出拓扑序 while(!ans.isEmpty()){ out.write(ans.poll()+" "); } } else{ // 不存在拓扑序 out.write("-1\n"); } } out.flush(); } }


【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭