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

如何在O(n + m)中的有向图中找到母顶点?

在O(n + m)的时间复杂度内找到有向图中的母顶点,可以通过深度优先搜索(DFS)算法来实现。

首先,我们需要了解一下有向图的概念。有向图是由一组顶点和一组有向边组成的图形结构,其中每条边都有一个方向。顶点表示图中的节点,有向边表示节点之间的关系。

要找到有向图中的母顶点,可以使用深度优先搜索算法。具体步骤如下:

  1. 创建一个布尔数组visited,用于标记顶点是否被访问过。
  2. 从图中的任意一个顶点开始,进行深度优先搜索。
  3. 在深度优先搜索的过程中,对于每个未访问过的顶点,递归地进行深度优先搜索。
  4. 在递归的过程中,如果遇到已经访问过的顶点,则将其标记为已访问,并继续递归搜索。
  5. 最后,返回第一个被标记为已访问的顶点,即为有向图中的母顶点。

这个算法的时间复杂度为O(n + m),其中n表示顶点的数量,m表示边的数量。

以下是一个示例代码:

代码语言:python
代码运行次数:0
复制
def findMotherVertex(graph):
    n = len(graph)
    visited = [False] * n
    mother_vertex = 0

    def dfs(v):
        visited[v] = True
        for neighbor in graph[v]:
            if not visited[neighbor]:
                dfs(neighbor)

    for i in range(n):
        if not visited[i]:
            dfs(i)
            mother_vertex = i

    return mother_vertex

在这个代码中,graph表示有向图的邻接表表示法,其中graph[i]表示顶点i的邻居顶点列表。

这个算法可以应用于许多场景,例如社交网络分析、网络路由等。对于腾讯云相关产品,可以使用腾讯云的云服务器(CVM)来搭建图计算集群,使用腾讯云的弹性MapReduce(EMR)来进行大规模图计算等。

请注意,本回答中没有提及亚马逊AWS、Azure、阿里云、华为云、天翼云、GoDaddy、Namecheap、Google等流行的云计算品牌商,如需了解相关产品和服务,请参考腾讯云官方网站或咨询腾讯云客服。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

普林斯顿算法讲义(三)

在有图中路径是一个顶点序列,其中每个顶点到其后继顶点一条()边,且没有重复边。 一个路径是简单,如果它没有重复顶点。...给定一个布尔公式,其合取范式中有 M 个子句和 N 个文字,每个子句恰好有两个文字,找到一个满足赋值(如果存在)。 解决方案草图: 用 2N顶点(每个文字及其否定一个)形成蕴含有图。...否则,从最小生成树删除边会留下两个连通分量。添加一个顶点在每个连通分量最小权重边。 给定边权图 G 最小生成树和一个新边 e,描述如何在与 V 成正比时间内找到新图最小生成树。...给定一个包含 N 个不同长度十进制整数数组,描述如何在 O(N + K) 时间内对它们进行排序,其中 K 是所有 N 个整数总位数。 美国国旗排序。...M = 表达式长度,N = 输入长度。正则表达式匹配算法可以在 O(M)时间内创建 NFA,并在 O(MN)时间内模拟输入。 库实现。 Validate.java。

12010

邻接矩超详解(CC++)

(2)邻接矩阵 在有图中,若从节点vi  到节点vj  有边,则邻接矩阵 M  [i ][j ]=1,否则 M  [i ][j ]=0。...在该有图中,从节点a 到节点b 有边,节点a 、b 在一维数组存储位置分别为0、1,因此 M  [0][1]=1。...图中边是边,从节点a 到节点b 有边,从节点b 到节点a 不一定有边,因此邻接矩阵不一定是对称邻接矩阵特点如下 (1)邻接矩阵不一定是对称。...在无图中,邻接矩阵第i 行元素之和就是节点i 度;在有图中,第i 行元素之和就是节点i 出度,第i 列元素之和就是节点i 入度。时间复杂度为O (n )。 (2)缺点如下。...访问所有节点邻接点,时间复杂度为O (n 2 )。 • 空间复杂度高,为O (n 2 )。

56620

小程序近邻检索:基于B+树HNSW外存实现

在小程序,我们许多近邻检索场景:例如,在海量小程序里为用户推荐潜在意图小程序;在同样海量小程序内容页面,快速找到同一主题资讯、视频、知识、商品等各类内容......图介绍 图基本定义和性质 1、图由顶点集合V和边集合E构成,我们通常记作G=(V, E)。 2、一条记为eab边表示顶点a和顶点b连接,边既可以是也可以是无。...3、顶点邻居N是一个表示跟该顶点直连顶点集合。 4、顶点度表示在邻居N集合顶点数量,对于图需要将N划分为出度和入度。 5、两个顶点距离定义为最短连接路径数量dist(i,j)。...参数q 1、 当q = 1(一个远程链接)时,预期搜索成本受O(log2N)限制。 2、 当q = k(有恒定数目的远程链接时),预期搜索成本受O(logN)/k限制。...k-NNG定义 简单来讲,就是在有图G上,图中每个节点只与距离它最近k个节点建立连接,距离度量可以是余弦,欧几里得距离等。

1.6K10

为实习准备数据结构(11)-- 图论算法 集锦

---- 图相关定义 定义一:图、无图、权重、活用图 图是由顶点有穷非空集合和顶点之间边集合组成, 通常表示为: G(V,E), 其中,G表示一个图,V是图G顶点集合,E是图G集合...目前讨论都是简单图。在无图中,如果任意两个顶点之间都存在边,则称该图为无完全图。含有n顶点完全图n*(n-1)/2条边。...在有图中,如果任意两个顶点之间都存在方向互为相反两条弧,则称该图为完全图。含有n顶点完全图n* (n-1) 条边。...在无图G,如果从顶点v到顶点v’有路径,则称v和v’是连通。 如果对于图中任意两个顶点vi、vj ∈E, vi,和vj都是连通,则称G是连通图。 无图中极大连通子图称为连通分量。...G->arc[i][j]; /* 因为是无图,矩阵对称 */ } } 从代码也可以得到,n顶点和e 条边无向网图创建,时间复杂度O(n^2)。

51620

最短路径算法

确定终点最短路径问题:与确定起点问题相反,该问题是已知终结结点,求最短路径问题。在无图中该问题与确定起点问题完全等同,在有图中该问题等同于把所有路径方向反转的确定起点问题。...) 常用算法 Dijkstra最短路算法(单源最短路) 图片例子和史料来自:http://blog.51cto.com/ahalei/1387799 算法介绍: 迪科斯彻算法使用了广度优先搜索解决赋权图或者无单源最短路径问题...其中每次找到离1号顶点最近顶点时间复杂度是O(N)。 优化: 这里我们可以用“堆”(以后再说)来优化,使得这一部分时间复杂度降低到O(logN)。...另外对于边数M少于N^2稀疏图来说(我们把M远小于N^2图称为稀疏图,而M相对较大图称为稠密图),我们可以用邻接表来代替邻接矩阵,使得整个时间复杂度优化到O((M+N)logN)。...O(M)。

3.1K10

数据结构 第六章 图

完全图:在无图中,如果任意两个顶点之间都存在边,则称该图为无完全图。 完全图:在有图中,如果任意两个顶点之间都存在方向相反两条弧,则称该图为完全图。...含有n顶点完全图n×(n-1)/2条边。 含有n顶点完全图**n×(n-1)**条边。 稀疏图:称边数很少图为稀疏图; 稠密图:称边数很多图为稠密图。...在具有n顶点、e条边图G,各顶点度之和与边数之和关系? 在具有n顶点、e条边图G,各顶点入度之和与各顶点出度之和关系?与边数之和关系?...单源点到其他顶点最短路径 Dijkstra方法,On2) 任意一对顶点之间最短路径 Floyd方法,On3) 单源点最短路径问题 问题描述:给定带权图G=(V, E)和源点v∈V,求从...拓扑序列: 设G=(V,E)是一个具有n顶点图,V顶点序列v1, v2, …, vn称为一个拓扑序列,当且仅当满足下列条件:若从顶点vi到vj一条路径,则在顶点拓扑序列顶点vi必在顶点

41420

最短路径算法

确定终点最短路径问题:与确定起点问题相反,该问题是已知终结结点,求最短路径问题。在无图中该问题与确定起点问题完全等同,在有图中该问题等同于把所有路径方向反转的确定起点问题。...) 常用算法 Dijkstra最短路算法(单源最短路) 图片例子和史料来自:http://blog.51cto.com/ahalei/1387799 算法介绍: 迪科斯彻算法使用了广度优先搜索解决赋权图或者无单源最短路径问题...其中每次找到离1号顶点最近顶点时间复杂度是O(N)。 优化: 这里我们可以用“堆”(以后再说)来优化,使得这一部分时间复杂度降低到O(logN)。...另外对于边数M少于N^2稀疏图来说(我们把M远小于N^2图称为稀疏图,而M相对较大图称为稠密图),我们可以用邻接表来代替邻接矩阵,使得整个时间复杂度优化到O((M+N)logN)。 请注意!...O(M)。

2.7K20

一文理解NP完全理论,NP问题,NPC问题

在以往算法,所接触到大都是多项式时间内可完成算法,比如O(n),O(nlogn),O(n^2)…,但仍存在一些算法时间复杂度为:O(n^logn),O(2^n),O(n!)...P类问题通常被认为是比较容易解决问题,它时间复杂度通常为多项式时间,O(n),O(nlogn),O( )等等。数据结构与算法中学习搜索、排序、小数背包问题等都是P类问题。...2合取范式(CNF)到图转换 设2CNF-SATn个变量,m个子句,构造图G=(V,E),图中共2n个节点,代表n个变量及每个变量‘否’。...对于2CNF每个子句, ,则图中同时存在从节点 到节点y边,和从 到x边。 ...如果表达式值是1,则公式Ф可满足。 显然上述验证算法复杂度是关于n+m多项式,即O(n+m)。 接下来需要证:这是一个NPC问题,就需要从电路归约到公式可满足性。

3.9K20

Bellman-Ford算法--解决负权边单源最短路径算法

Bellman-Ford算法核心思想是:对图中所有的边进行缩放,每一次缩放更新单源最短路径。 我们依然通过一个例子来看: ? 假设存在这么一个图。...最多在缩放了n-1轮(n图中顶点总数)时候就结束了(因为图中两个顶点边最多有n-1条)。...最多250000条边 int dis[N]; // 储存源点到其他顶点最短路径数组 int main() { int n, m, s; // 图中顶点总数,边总数和源点...Bellman-Ford算法时间复杂度为O(M*N),但是我们这里可以对Bellman-Ford算法进行优化:我们每一次缩放时候如果图中某条边确实使得源点到其他顶点最短路径变短,那么下一轮缩放只需要对上一轮缩放时候使得源点到其他顶点最短路径变短结束点出边...我们可以用一个队列来储存这些顶点,缩放时候将这些顶点依次出队,并且将新符合要求顶点入队。直到队列为空。这样的话我们Bellman-Ford算法在最坏情况下时间复杂度也是O(M*N)。

1.4K20

重学数据结构(七、图)

在有图中顶点对是有序,它称为从顶点 x到顶点y一条边。 因此与是不同两条边。 顶点对用一对尖括号括起来,x是始点,y是终点。...2、图基本术语 用n表示图中顶点数目,用e表示边数目, 来看看图结构一些基本术语。...对于图, 若具有 n(n- l)条弧,则称为完全图。 稀疏图和稠密图:很少条边或弧( e<nlog2n) 图称为稀疏图, 反之称为稠密图。...图中极大强连通子图称作强连通分量。例如图2 G1 不是强连通图,但它有两个强连通分量,如图5所示。 图5:G1 两个强连通分量 ?...树和生成森林:一个顶点入度为 0, 其余顶点入度均为 l1图称为树。 一个生成森林是由若干棵树组成,含有图中全部顶点,但只有足以构成若干棵不相交弧。

71520

Prim算法简易教程(~简单易懂,附最详细注释代码)

广义上而言,对于非连通无图来说,它每一连通分量同样最小生成树,它们并被称为最小生成森林。...以有线电视电缆架设为例,若只能沿着街道布线,则以街道为边,而路口为顶点,其中必然一最小生成树能使布线成本最低。...因为贪心算法策略就是在每一步尽可能多选择中选择最优,在当前看是最好选择,这种策略虽然一般不能在全局找到最优解,但是对于最小生成树问题来说,它的确可以找到一颗权重最小树。...:第一个是在 l o w c o s t lowcost lowcost求最小值,其频度为 n n n,第二个是重新选择具有最小权值边,频度为 n n n,由此我们可知Prim算法时间复杂度为 O...( n 2 ) O(n^2) O(n2),与图中边数无关,故十分适合于稠密图。

95410

遍历 - 数据结构

由于图结构本身复杂性,所以图遍历操作也较复杂,主要表现在以下四个方面: ① 在图结构,没有一个“自然”首结点,图中任意一个顶点都可作为第一个被访问结点。...③ 在图结构,如果有回路存在,那么一个顶点被访问之后,可能沿回路又回到该顶点。 ④ 在图结构,一个顶点可以和其它多个顶点相连,当这样顶点访问过后,存在如何选取下一个要访问顶点问题。...图遍历通常有深度优先搜索和广度优先搜索两种方式,他们对无图和图都适用。...因此,遍历图过程实质上是对每个顶点查找其邻接点过程。其耗费时间则取决于所采用存储结构。当用二维数组表示邻接矩阵图存储结构时,查找每个顶点邻接点所需时间为O(n2) ,其中n图中顶点数。...而当以邻接表作图存储结构时,找邻接点所需时间为O(e),其中e 为无图中数或有图中数。由此,当以邻接表作存储结构时,深度优先搜索遍历图时间复杂度为O(n+e) 。

48720

干货 | 数据结构之图论基础

图中a和b分别为无图和邻接矩阵样例,对于不存在边可以赋值为无穷或0。 ?...复杂度分析 可见,邻接表所含列表数等于顶点总数n,每条边在其中仅存放一次(图)或两次(无图),故空间总量为O(n + e),与图自身规模相当,较之邻接矩阵很大改进。...不计对子函数BFS()调用,bfs()本身对所有顶点枚举共需O(n)时间。而在对BFS()所有调用,每个顶点、每条边均只耗费O(1)时间,累计O(n + e)。...若顶点u处于DISCOVERED状态,则意味着在此处发现一个环路。此时,在DFS遍历树u必为v祖先。对于图,顶点u还可能处于VISITED状态。...每次迭代对所有顶点枚举共需O(n)时间。每个顶点、每条边只在子函数DFS()某一递归实例耗费O(1)时间,故累计亦不过O(n + e)时间。

60421

学界 | 清华大学段路明组提出生成模型量子算法

从图 G m顶点,我们选择一个 n 个量子比特子集作为可见单元,并在计算基态 {| 0>;| 1>} 上计算该子集。 从 n 个二元变量 {x_i,i = 1,2, ......,n} 概率分布 Q({x_i})得到计算结果样本(其他 m×n 个隐藏量子比特只用来给出低密度矩阵)。...图 S1:因子图和 QGM 参数空间。a,两种模型都有多项式量级参数一种情况。在这种情况下,因子图不能代表 QGM 一些分布(蓝色圆圈所示处)。...然后每个组使用一个物理索引(用 p 表示)和少量固定数量虚拟索引(在图中用 i,j,k 表示)定义一个张量。 b,|Q(z)>张量网络表示,其中为 a 每个指定组定义一个局部张量。...该图显示了如何在哈密顿算子构造一个项,该项对应于一组相邻局部张量,例如 c 虚线框那些。

1.2K90

数据结构:图结构

图 一、存储设计 1、邻接矩阵 设图 G = (V, E)是一个 n顶点图,则图邻接矩阵G.arcs[n][n]定义为: 图片 无邻接矩阵是对称,在无图中,第 i 行/列 1...邻接矩阵可能是不对称,在有图中,每个1对应行为起点i,对应列为终点j,第 i 行 1 个数就是顶点 i 出度,第 j 列 1 个数就是顶点 j 入度。...在AOV网络选一个入度为0顶点,并输出之; 从图中删去该顶点, 同时删去所有以它为出度边,更新剩余点入度;(只需要判断发生更新顶点入度是否为零,不需要再次遍历一次数组count) 重复以上...2、3步, 直到全部顶点均已输出,拓扑序列形成,拓扑排序完成;或图中还有未输出顶点, 但已跳出处理循环:说明图中还剩下顶点入度都不为0,这时网络必存在有环。...} 五、AOE网 1、定义 无带权图中: 用边表示一个工程各项活动(Activity) 用边上权值表示活动持续时间(Duration) 用顶点表示事件(Event) 2、求完成工程所需最短时间

1.6K10

《大话数据结构》总结第一章 绪论第二章 算法第三章 线性表第四章 栈和队列第五章 字符串第六章 树第七章 图第八章 查找第九章 排序

如果图中任意两个顶点之间边都是边,则称该图为图(Directed graphs)。 简单图——在图中,若不存在顶点到其自身边,且同一条边不重复出现,则称这样图为简单图。...在无图中,如果任意两个顶点之间都存在边,则称该图为无完全图。含有n顶点完全图n(n-1)/2条边。 在有图中,如果任意两个顶点之间都存在方向互为相反两条弧,则称该图为完全图。...如果一个图恰一个顶点入度为0,其余顶点入度均为1,则是一个树。一个生成森林由若干棵树组成,含有图中全部顶点,但只有足以构成若干棵不相交弧。...如果任意两个顶点之间都存在边叫完全图,完全图。若无重复边或顶点到自身边则叫简单图。 图中顶点之间邻接点、依附概念。无顶点边数叫做度,顶点分为入度和出度。...图中有子图,若子图极大连通则就是连通分量,则称强连通分量。 无图中连通且n顶点n-1条边叫生成树。图中顶点入度为0其余顶点入度为1树。

1.3K51

Kosaraju算法、Tarjan算法分析及证明--强连通分量线性算法

一、背景介绍 强连通分量是图中一个子图,在该子图中,所有的节点都可以沿着某条路径访问其他节点。...V和X也是强连通 强连通性可以用来描述一系列属性,自然界物种之间捕食关系,互相捕食物种可以看作等价,在自然界能量传递处于同一位置。...二、Kosaraju算法描述 Kosaraju算法通过以下步骤获得一个强连通分量。 在图G,计算图G反向图G'深度优先搜索逆后序排列。...可以发现,运行Tarjan算法过程,每个顶点都被访问了一次,且只进出了一次堆栈,每条边也只被访问了一次,所以该算法时间复杂度为O(N+M)。...求强连通分量还有一个强有力算法,为Kosaraju算法。Kosaraju是基于对图及其逆图两次DFS方法,其时间复杂度也是O(N+M)。

2.5K60

30 个重要数据结构和算法完整介绍(建议收藏保存)

节点是由边互连值 - 描述两个节点之间依赖关系(有时与成本/距离相关联)线。 图两种主要类型:图和无图。在无图中,边(x, y)在两个方向上都可用:(x, y)和(y, x)。...在有图中,边(x, y)称为箭头,方向由其名称顶点顺序给出:箭头(x, y)与箭头(y, x) 不同。 它们是做什么用?...weixin 上好友关系是无图中边(因为它是互惠),而在 CSDN 或 weibo上,帐户与其关注者/关注帐户之间关系是图中箭头(非互惠)。...特性 图论是一个广阔领域,但我们将重点介绍一些最知名概念: 无图中节点度数是它关联边数; 图中节点内部/外部度数是指向/来自该节点箭头数量; 从节点 x 到节点 y 链是相邻边连续...弗洛依德算法(Floyd-Warshall) Floyd-Warshall / Roy-Floyd 算法解决了所有对最短路径问题:找到给定边加权图中每对顶点之间最短距离。

1.7K31

《大话数据结构》(二)

如果图中任意两个顶点之间边都是边,则该图称为图(Directed grpahs) *无边用小括号表示,边用尖括号表示 在图中,若不存在顶点到其自身边,且同一条边不重复出现,则称这样图为简单图...含有n顶点完全图n*(n-1)/2条边。 在有图中,如果任意两个顶点之间都存在方向互为相反两条弧,则称该图为完全图。...图中极大强连通子图称做强连通分量 一个连通图生成树是一个极小连通子图,它含有图中全部n顶点,但只有足以构成一棵树n-1条边 如果一个图恰一个顶点入度为0,其余顶点入度均为...图中顶点用一个一维数组存储,每个数据元素还要存储指向第一个邻接点指针 图中每个顶点vi所有邻接点构成一个线性表,使用单链表存储,无图称为顶点vi边表,图则称为顶点vi作为弧尾出边表 对于图...,走到输出全部顶点或者AOV网不存在入度为0顶点为止 5.整个算法时间复杂度为O(n+e) G.关键路径 1.在一个表示工程带权图中,用顶点表示事件,用边表示活动,用边上权值表示活动持续时间

95831

最短路径四大算法「建议收藏」

bellman-ford可以用于边权为负图中,图里负环也可以,如果有负环,算法会检测出负环。 时间复杂度O(VE); dijkstra只能用于边权都为正图中。...时间复杂度O(KE); floyd可以用于负权图中,即使负环,算法也可以检测出来,可以求任意点最短路径,图和无最小环和最大环。...时间复杂度On3); 任何题目中都要注意四点事项:图是图还是无图、是否负权边,是否重边,顶点到自身可达性。...floyd能做很多事情,下面简单说两个,求最小环或者最大环(顶点数>=2),求无最小环(顶点数>=3)。 先说求图最小环(最大环略)。...2、图中每个顶点vi所有邻接点构成一个线性表,由于邻接点个数不定,所以用单链表存储,无图称为顶点vi边表,图称为顶点vi作为弧尾出边表。

58430
领券