首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

----实现

术语定义: 一个顶点出度为由该顶点指出总数 一个顶点入度为指向该顶点总数 一条第一个顶点称为它头,第二个顶点称为它尾 数据结构: 使用邻接表来表示,其中v->w表示为顶点...API: public class Digraph Digraph(int V)        创建一个含有V个顶点但不含有边 int V()        顶点数 int E()...        边数 void addEdge(int v,int w)        图中添加一条边v--w Iterable adj(int v)           由v指出边所连接所有顶点...Digraph reverse()        该反向 String toString()        对象字符串表示 实现: public class Digraph { private...public Iterable adj(int v){return adj[v];} //反转 public Digraph reverse() { Digraph

1.4K00
您找到你想要的搜索结果了吗?
是的
没有找到

邻接矩阵存储(详解)

邻接矩阵存储 【输入描述】   输入文件包含多组测试数据,每组测试数据描述了一个无权。...每组测试数据第一行为两个正整数n和m,1<=n<=100,1<=m<=500,分别表示了顶点数目和边数目,顶点数从1开始计起。...接下来m行,每行两个正整数,用空格隔开,分别表示一条边起点和终点。每条边出现一次且仅一次,图中不存在自身环和重边。输入文件最后一行为0 0,表示输入数据结束。...【输出描述】:   对输入文件每个,输出两行:第一行为n个正整数,表示每个顶点出度;第2行也为n个正整数表示每个顶点入度。...每两个正整数之间用一个空格隔开,每行最后一个正整数之后没有空格。

1.6K90

环和无环

本篇主要分享关于环和无环(DAG,估计做大数据同学到处都可以看到),所以相关概念我就不做详细介绍了。 ?...用图中各个节点代表着一个又一个任务,而其中方向代表任务执行顺序。而方向代表着这个在执行这个任务之前必须完成其他节点,例如上图中在5执行必须执行3和0 节点。...所以可以想到图中有检测非常重要,例如上面 要是5之前 3要执行,3之前4要执行,4之前5要执行,那么着三个限制条件永远事不可能被执行,要是一个优先级限制问题中存在有环,那么这个问题肯定是无解...检测理念是我们找到了一条边v-》w 要是w已经存在在栈中,就找到了一个环,因为栈中表示是一条w-》v路径,而v-》w正好补全了这个环。也就是存在有环。所以这个优先任务是问题。...这一篇讲清楚 阿里OceanBase解密 #大数据和云计算技术#: "四"社区介绍 大数据和云计算技术周报(第56期) 新数仓系列:Hbase周边生态梳理(1) 《大数据架构详解》第2次修订说明

1.3K50

存储结构

实际上,存储结构有些复杂,为了方便读者理解,也为了方便笔者写作,这部分篇幅会长一些,稍有些啰嗦,还望见谅。 一、邻接矩阵法 ---- 显然,是由顶点(vex)和边(arc)构成。...根据上面无分析,“0”和“1”分别代表是有边和没有边,所以可以看出各点之间关系。对于来说,虽然矩阵仍然以主对角线“0”为分界线,但可以看出,对角线两面并不是对称。...一般来讲,研究是入度和出度,在这幅图上,横向代表是入度,纵向代表是出度。所以,v1入度是1,出度是2。...由此可见,要判断或者无两点间有没有边,只需查看v[i][j]是否不为零即可(如果是网或无向网,边权值一般不为1,可能为无穷大,表示不存在边)。...(链表也可以,不过操作起来不是很方便) 其次,图中每个顶点vi所有邻接点构成一个线性表。由于邻接点个数不确定,所以用单链表来存储。无称为边表,称为顶点vi作为弧尾出边表。

98310

----环检测和拓扑排序

上一篇:深度优先和广度优先遍历 优先级限制下调度问题:给定一组需要完成任务,以及一组关于任务完成先后次序优先级限制。在满足限制条件前提下应该如何安排并完成所有任务?...拓扑排序:给定一幅,将所有顶点排序,使得所有的边均从排在前面的元素指向排在后面的元素(或者说明无法做到这一点)。...先来解决环检测问题: 采用深度优先遍历来解决这个问题:用一个栈表示“当前”正在遍历路径上顶点。...遍历顺序取决于数据结构性质以及是在递归调用之前还是之后保存。...使用深度优先搜索对无环进行拓扑排序需要时间和V+E成正比。 下一篇:强连通分量问题

3.3K10

判断是否

拓扑排序 拓扑排序是对无圈图顶点一种排序:如果存在一条vi到vj路径,则vj排在vi后面(因为只要满足这个特性就是拓扑序列,所以它不一定是唯一)。...虽然没有拓扑序列,但是我们可以利用拓扑排序算法来判断一个是否圈。 算法描述如下: 1. 将所有入度为0顶点放入队列; 2....否则,说明总     顶点入度不为0,没有放入队列中,即该有圈。...DFS 关于DFS介绍请戳我,通过稍微修改DFS,利用递归特点,也可以判断是否圈。...\n"); } return 0; }  上述利用DFS判断是否圈实际上是利用了深度优先生成树性质:无圈当且仅当其深度优先生成树没有回退边, 而上述算法中vis[graph

2.8K80

7.2 存储结构

01数组表示法 1、用两个数组分别存储数据元素(顶点)信息和数据元素之间关系(边或弧)信息。 2、以二维数组表示n个顶点时,需存放n个顶点信息和n平方个弧信息存储量。...3、对于,第i行元素之和为顶点vi出度OD(vi),第j列元素之和为顶点vi入度ID(vi)。 02 邻接表 1、邻接表(Adjacency List)是一种链式存储结构。...3、在表头结点中,除了没有链域(firstarc)指向链表中第一个结点之外,还设有存储顶点vi名或其他有关信息数据域(data) 03十字链表 1、十字链表是另一种链式存储结构,可以看成是将有邻接表和逆邻接表结合起来得到一种链表...04邻接多重表 1、邻接多重表是无另一种链式存储结构。 2、虽然邻接表是无一种很有效存储结构,在邻接表中容易求得顶点和边各种信息。...但是由于邻接表中每一条边两个结点,这给某些操作带来不便。 3、邻接多重表结构和十字链表类似。在邻接多重表中,每一条边用一个结点表示。

5912120

7.2 存储结构

01 数组表示法 1、用两个数组分别存储数据元素(顶点)信息和数据元素之间关系(边或弧)信息。 2、以二维数组表示n个顶点时,需存放n个顶点信息和n平方个弧信息存储量。...3、对于,第i行元素之和为顶点vi出度OD(vi),第j列元素之和为顶点vi入度ID(vi)。 02 邻接表 1、邻接表(Adjacency List)是一种链式存储结构。...3、在表头结点中,除了没有链域(firstarc)指向链表中第一个结点之外,还设有存储顶点vi名或其他有关信息数据域(data) 03 十字链表 1、十字链表是另一种链式存储结构,可以看成是将有邻接表和逆邻接表结合起来得到一种链表...04 邻接多重表 1、邻接多重表是无另一种链式存储结构。 2、虽然邻接表是无一种很有效存储结构,在邻接表中容易求得顶点和边各种信息。...但是由于邻接表中每一条边两个结点,这给某些操作带来不便。 3、邻接多重表结构和十字链表类似。在邻接多重表中,每一条边用一个结点表示。

3173029

7.5 无环

01无环 1、一个无环称做无环(directed acycline graph),简称DAG,DAG是一类较有树更一般特殊。...2、无环是描述含有公共子式表达式有效工具。 3、若利用无环,则可实现对相同子式共享,从而节省存储空间。 4、检查一个是否存在环要比无复杂。...对于无来说,若深度优先遍历过程中遇到回边,则必定存在环,而对于来说,这条回边可能是指向深度优先生成森林中另一棵生成树上顶点弧。...5、无环也是描述一项工程或系统进行过程有效工具。 6、几乎所有的工程都可分为若干个称做活动子工程,而这些子工程之间,通常受着一定条件约束。...7、拓扑排序:由某个集合上一个偏序得到该集合上一个全序。 8、路径长度最长路径叫做关键路径。 C语言 | 统计捐款人数及人均捐款数 更多案例可以go公众号:C语言入门到精通

1.4K2120

无环检测

RDD,全称为Resilient Distributed Datasets,中文翻译弹性分布式数据集,是一个容错、并行数据结构,可以让用户显式地将数据存储到磁盘和内存中,并能控制数据分区。...RDD之间依赖关系是靠无环(DAG)表达,下面看下有无环基本理论和算法。 02 — 无环(DAG) 在图论中,边没有方向称为无,如果边有方向称为。...在无基础上,任何顶点都无法经过若干条边回到该点,则这个就没有环路,称为无环(DAG),如下图所示,4->6->1->2是一个路径,4->6->5也是一条路径,并且图中不存在顶点经过若干条边后能回到该点...05 — 如何检测、无环? 那么,如何检测一个是否是DAG呢?...环检测,首先对照着无环检测来理解,在无图中,我们要检测一个图中间是否存在环,需要通过深度优先或广度优先方式,对访问过元素做标记。如果再次碰到前面访问过元素,则说明可能存在环。

2.5K70

7.5 无环

01 无环 1、一个无环称做无环(directed acycline graph),简称DAG,DAG是一类较有树更一般特殊。...2、无环是描述含有公共子式表达式有效工具。 3、若利用无环,则可实现对相同子式共享,从而节省存储空间。 4、检查一个是否存在环要比无复杂。...对于无来说,若深度优先遍历过程中遇到回边,则必定存在环,而对于来说,这条回边可能是指向深度优先生成森林中另一棵生成树上顶点弧。...5、无环也是描述一项工程或系统进行过程有效工具。 6、几乎所有的工程都可分为若干个称做活动子工程,而这些子工程之间,通常受着一定条件约束。...7、拓扑排序:由某个集合上一个偏序得到该集合上一个全序。 8、路径长度最长路径叫做关键路径。 如果您觉得本篇文章对您有作用,请转发给更多的人,点一下好看就是对小编最大支持!

1.2K3229

PHP数据结构-存储结构

顺序存储结构:邻接矩阵 什么是邻接矩阵 首先还是来看看如何用顺序结构存储。不管是栈、队列、树,我们都可以使用一个简单数组就可以实现这些数据结构顺序存储能力。...构造邻接矩阵 接下来,我们就通过代码来构造这样一个邻接矩阵存储结构。我们还是用无例子来实现。因为无是需要反向结点也赋值,所以它比多了一个步骤,其它基本上都是相似的。...其实还可以严谨一点根据 无完全完全 定义来让边不能超过最大限度。 接下来,我们就循环继续输入边信息,这里我需要输入格式是边 出结点 、入结点 、权值。...链式存储结构:邻接表 说完顺序存储结构,自然不能忽视另一种形式存储结构,那就是链式存储结构。其实对于来说,链式结构非常简单和清晰,因为我们只需要知道一个结点和那些结点有边就行了。...可以看出,在邻接表操作中,无也是一样多一步操作,如果只是建立有的话,可以不需要 p2 结点操作。特别需要注意就是,在这段代码中,我们使用是链表操作中 头插法 。

1.1K30

无回路拓扑排序

因公司业务需要,在表单中每个字段都会配置自动计算,但自动计算公式中会引用到其他字段中值。所以希望可以根据计算公式,优先计算引用公式。所以最终使用了无回路扩扑排序来实现。.../** * 无回路(Directed Acyclic Graph)拓扑排序 * 该DAG是通过邻接表实现。...ENode { int ivex; // 该边所指向顶点位置 ENode nextEdge; // 指向下一条弧指针 } /**...* 创建(用已提供矩阵) * * 参数说明: * vexs -- 顶点数组 * edges -- 边数组 */ public FieldListDG...* 拓扑排序 * * 返回值: * -1 -- 失败(由于内存不足等原因导致) * 0 -- 成功排序,并输入结果 * 1 -- 失败(该有

88320

无环拓扑排序

首先,介绍一下无环。 从字面上理解: 为 无环 举例, 二叉树是特殊无环。 如图(关键部分) ?...对于来说,深度优先遍历下,若从head出发到结束时出现一条从head下级节点mid开始指向head一条路径,则必定此环。 拓扑排序 首先,拓扑排序对象肯定是无环图中左右点。...其次,若存在路径从a指向b,则拓扑排序结果中a一定在b前面。 最后,拓扑排序排序规则(没有那么抽象),依次将入度为零点拿出去,并抹掉它出度线。 ? 图为例 经过第一次筛选得 A ?...第四次筛选 C,F(若无特殊要求,C,F顺序是随机)(这里我们按照字母表来) ?

1.1K20

PHP数据结构(十) ——无环与拓扑算法

PHP数据结构(十)——无环与拓扑算法 (原创内容,转载请注明来源,谢谢) 一、无环概念 无环又称为DAG。与其对应还有树、。如下图所示。...可以看出,拓扑排序是把一个结构排成线性,作为课程学习,就可以按这个排序后线性结构,逐个学习,而保证了每个学习内容前置条件都已经学习到。...4)检查图中是否还存在弧,如果还存在,说明该不是,拓扑排序失败。否则将顶点结果集输出,就是拓扑排序结果。 4、关键路径 1)AOV网 用顶点表示活动,用弧表示活动时间。...: PHP数据结构(九) ——定义、存储与两种方式遍历 PHP数据结构(八) ——赫夫曼树实现字符串编解码(实践2) PHP数据结构(八) ——赫夫曼树实现字符串编解码(实践1) PHP数据结构(八...) ——赫夫曼树实现字符串编解码(理论) PHP数据结构(七) ——串与实现KMP算法 PHP数据结构(六) ——树与二叉树之概念及存储结构 PHP数据结构(六) ——数组相乘、广义表 PHP数据结构

2.2K110

启动优化 - 无环

重要概念 无环(Directed Acyclic Graph, DAG)是一种,字面意思理解就是图中没有环。常常被用来表示事件之间驱动依赖关系,管理任务之间调度。...若存在一条从顶点 A 到顶点 B 路径,那么在序列中顶点 A 出现在顶点 B 前面 由于有这个特点,因此常常用无环数据结构用来解决依赖关系。...否则,存在环 实例讲解 下图所示无环,采用入度表方法获取拓扑排序过程。...O(n+e) DFS 算法 从上面的入度表法,我们可以知道,要得到无环拓扑排序,我们关键点要找到入度为 0 顶点。...小结 无环拓扑排序其实并不难,难度中等。通常,我们一般使用 BFS 算法来解决,DFS 算法比较少用。

1.4K10

----可达性问题

单点可达性:回答“是否存在一条从起点s到给定节点v路径?”等类似问题。 多点可达性:回答“是否存在一条从集合中任意顶点到给定节点v路径?”等类似问题。...无图中需要线性时间预处理能达到常数时间查询操作。但在有图中,该问题目前还达不到这样效率。...G传递闭包是由相同一组顶点组成另一幅,在传递闭包中存在一条从v指向w边当且仅当G中w是从v可达。...我们很容易想到通过计算传递闭包来解决顶点对可达性问题,但一般来说,一幅传递闭包中所含边比原图中多得多,与其明确计算一幅传递闭包,不如使用深度优先搜索来实现。...用远小于平方级别的空间支持常数级别的查询一般解决方案仍是一个有待解决研究问题。 下一篇:深度优先遍历和广度优先遍历

2.4K00
领券