首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >计算节点度的图算法

计算节点度的图算法
EN

Stack Overflow用户
提问于 2014-03-06 09:33:34
回答 3查看 9.6K关注 0票数 3

我在尝试实现DAG的拓扑排序算法。(sorting)这个简单算法的第一步是找到零度的节点,如果没有二次算法,我就找不到任何方法来做到这一点。

我的图形实现是一个简单的邻接列表,其基本过程是遍历每个节点,对每个节点遍历每个邻接列表,因此复杂度将是O(|V| * |V|)

拓扑排序的复杂性是O(|V| + |E|),所以我认为必须有一种方法来计算所有节点的线性度。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-03-06 09:44:24

您可以在从图中删除节点的同时维护所有顶点的索引树,并维护一个由零个索引树节点组成的链接列表:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
indeg[x] = indegree of node x (compute this by going through the adjacency lists)
zero = [ x in nodes | indeg[x] = 0 ]
result = []
while zero != []:
    x = zero.pop()
    result.push(x)
    for y in adj(x):
        indeg[y]--
        if indeg[y] = 0:
            zero.push(y)

也就是说,使用DFS进行拓扑排序在概念上要简单得多,IMHO:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
result = []
visited = {}
dfs(x):
    if x in visited: return
    visited.insert(x)
    for y in adj(x):
        dfs(y)
    result.push(x)
for x in V: dfs(x)
reverse(result)
票数 2
EN

Stack Overflow用户

发布于 2017-02-26 22:05:29

您可以在o(|v|+|e|)中实现它。按照下列步骤执行:

  1. 创建两个列表inDegreeoutDegree,它为每个节点保持输入和输出边沿的计数,将其初始化为0。
  2. 现在遍历给定的邻接表,对于图g中的edge (u,v),增加u的outdegree计数,对v增加indegree的增量计数。
  3. 您可以遍历o(v +e)中的邻接列表,对于o(|v|+|e|)中的每个u都有索引和度。
票数 0
EN

Stack Overflow用户

发布于 2014-03-06 09:49:28

您还可以使用DFS进行拓扑排序。在处理每个节点后,您将不需要额外的传递来计算内度。

http://www.geeksforgeeks.org/topological-sorting/

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22231815

复制
相关文章
Python计算有向图节点的入度和出度
本文代码使用字典和集合模拟有向图结构,也可以改用其他的数据类型来实现。 def getDegrees(orientedGraph, node): #出度 outDegree = len(orientedGraph.get(node, [])) #入度 inDegree = sum(1 for v in orientedGraph.values() if node in v) return (inDegree, outDegree) #模拟有向图 graph = {'a':set('bc
Python小屋屋主
2018/04/16
3.3K0
Python计算有向图节点的入度和出度
Tensorboard 显示计算图节点信息
[1]Tensorflow实战Google深度学习框架: https://github.com/caicloud/tensorflow-tutorial/tree/master/Deep_Learning_with_TensorFlow/1.4.0
演化计算与人工智能
2020/08/14
8400
Tugraph Analytics图计算快速上手之紧密中心度算法
紧密中心度(Closeness Centrality)计量了一个节点到其他所有节点的紧密性,即该节点到其他节点的距离的倒数;节点对应的值越高表示紧密性越好,能够在图中传播信息的能力越强,可用以衡量信息流入或流出该节点的能力,多用与社交网络中关键节点发掘等场景。
GeaFlow
2023/09/19
4510
LeetCode 1791. 找出星型图的中心节点(图出入度)
有一个无向的 星型 图,由 n 个编号从 1 到 n 的节点组成。 星型图有一个 中心 节点,并且恰有 n - 1 条边将中心节点与其他每个节点连接起来。
Michael阿明
2021/09/06
2530
算法时间复杂度的计算
在进行算法分析时候,语句总的执行次数T(n)是关于问题规模n的函数,进而分型T(n)随着n的变化情况并确定T(n)的数量级.算法的时间复杂度,也就是算法的时间度量记作:T(n)=O(f(n)).它表示随着问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同,称作算法的渐近时间复杂度,简称时间复杂度.其中f(n)是问题规模n的某个函数.
全栈程序员站长
2022/08/28
1.3K0
算法时间复杂度的计算
如何计算算法的复杂度
这段伪代码运行了多少次呢! 1次 ,时间时间复杂度为O(1):常数复杂度/常数阶。
营琪
2019/11/04
7100
Matlab实现网络图中节点度的概率分布图。
1、点击[Matlab] 2、点击[新建] 3、点击[函数] 4、点击[编辑器] 5、点击[运行] 6、点击[保存]
裴来凡
2022/05/28
1.1K0
Matlab实现网络图中节点度的概率分布图。
TDW千台Spark千亿节点对相似度计算
相似度计算在信息检索、数据挖掘等领域有着广泛的应用,是目前推荐引擎中的重要组成部分。随着互联网用户数目和内容的爆炸性增长,对大规模数据进行相似度计算的需求变得日益强烈。在传统的MapReduce框架下进行相似度计算会引入大量的网络开销,导致性能低下。我们借助于Spark对内存计算的支持以及图划分的思想,大大降低了网络数据传输量;并通过在系统层次对Spark的改进优化,使其可以稳定地扩展至上千台规模。本文将介绍腾讯TDW使用千台规模的Spark集群来对千亿量级的节点对进行相似度计算这个案例,通过实验对比,我
腾讯大数据
2018/01/26
1.5K0
十亿节点大规模图计算降至「分钟」级,腾讯开源图计算框架柏拉图
Plato 开源地址:https://github.com/tencent/plato
机器之心
2019/11/15
1.4K0
十亿节点大规模图计算降至「分钟」级,腾讯开源图计算框架柏拉图
算法的时间复杂度和空间复杂度计算
在进行算法分析时,语句总的执行次数T(n)是关于问题规模n的函数,进而分析T(n)随n的变化情况并确定T(n)的数量级。算法的时间复杂度,也就是算法的时间量度,记作:T(n)= O(f(n))。它表示随问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同,称作算法的渐近时间复杂度,简称为时间复杂度,是一种“渐进表示法”。其中f(n)是问题规模n的某个函数。
全栈程序员站长
2022/08/28
2.4K0
算法的时间复杂度和空间复杂度计算
腾讯开源图计算框架 Plato:十亿级节点图计算进入分钟级时代
据介绍,Plato 可满足十亿级节点的超大规模图计算需求,并将算法计算时间从天级缩短到分钟级;而且在性能方面也处于领先,并打破了原本动辄需要数百台服务器的资源瓶颈。我们将本次开源项目 Plato 相关内容整理如下。
AI研习社
2019/11/18
1.8K0
腾讯开源图计算框架 Plato:十亿级节点图计算进入分钟级时代
感知哈希算法计算图像相似度
感知哈希算法是一个比均值哈希算法更为健壮的一种算法,与均值哈希算法的区别在于感知哈希算法是通过DCT(离散余弦变换)来获取图片的低频信息。
软件架构师Michael
2022/11/03
1.4K0
算法时间复杂度计算方式
【对于一个给定的算法,通常要评估其正确性和运行效率的高低。算法的正确性评估不在本文范围之内,本文主要讨论从算法的时间复杂度特性去评估算法的优劣。】
全栈程序员站长
2022/08/28
4970
算法时间复杂度计算方式
【数据结构】图—图的邻接矩阵存储及度计算
假设图用邻接矩阵存储。输入图的顶点信息和边信息,完成邻接矩阵的设置,并计算各顶点的入度、出度和度,并输出图中的孤立点(度为0的顶点)
叶茂林
2023/07/30
3090
均值哈希算法计算图片相似度
一张图片就是一个二维信号,它包含了不同频率的成分。亮度变化小的区域是低频成分,它描述大范围的信息。而亮度变化剧烈的区域(比如物体的边缘)就是高频的成分,它描述具体的细节。或者说高频可以提供图片详细的信息,而低频可以提供一个框架。 而一张大的,详细的图片有很高的频率,而小图片缺乏图像细节,所以都是低频的。所以我们平时的下采样,也就是缩小图片的过程,实际上是损失高频信息的过程。均值哈希算法就是利用图片的低频信息。 具体步骤: (1)缩小尺寸:将图片缩小到8x8的尺寸,总共64个像素。这一步的作用是去除图片的细节,只保留结构、明暗等基本信息,摒弃不同尺寸、比例带来的图片差异。 (2)简化色彩:将缩小后的图片,转为64级灰度。也就是说,所有像素点总共只有64种颜色。 (3)计算平均值:计算所有64个像素的灰度平均值 (4)比较像素的灰度:将每个像素的灰度,与平均值进行比较。大于或等于平均值,记为1;小于平均值,记为0。 (5)计算哈希值:将上一步的比较结果,组合在一起,就构成了一个64位的整数,这就是这张图片的指纹。组合的次序并不重要,只要保证所有图片都采用同样次序就行了。 最后得到两张图片的指纹信息后,计算两组64位数据的汉明距离,即对比数据不同的位数,不同位数越少,表明图片的相似度越大。 分析: 均值哈希算法计算速度快,不受图片尺寸大小的影响,但是缺点就是对均值敏感,例如对图像进行伽马校正或直方图均衡就会影响均值,从而影响最终的hash值。
软件架构师Michael
2022/11/05
1.2K0
腾讯正式开源图计算框架Plato,十亿级节点图计算进入分钟级时代
腾讯开源再次迎来重磅项目,14日,腾讯正式宣布开源高性能图计算框架Plato,这是在短短一周之内,开源的第五个重大项目。 相对于目前全球范围内其它的图计算框架,Plato可满足十亿级节点的超大规模图计算需求,将算法计算时间从天级缩短到分钟级,性能全面领先领先于其它主流分布式图计算框架,并且打破了原本动辄需要数百台服务器的资源瓶颈,现在,最少只需要十台服务器即可完成计算。 腾讯Plato团队负责人于东海表示:“Plato已经支持腾讯内部包括微信在内的众多核心业务,尤其是为腾讯超大规模社交网络图数据的各类
腾讯技术工程官方号
2019/11/18
7370
腾讯正式开源图计算框架Plato,十亿级节点图计算进入分钟级时代
腾讯正式开源图计算框架Plato,十亿级节点图计算进入分钟级时代
腾讯开源再次迎来重磅项目,14日,腾讯正式宣布开源高性能图计算框架Plato,这是在短短一周之内,开源的第五个重大项目。 相对于目前全球范围内其它的图计算框架,Plato可满足十亿级节点的超大规模图计算需求,将算法计算时间从天级缩短到分钟级,性能全面领先领先于其它主流分布式图计算框架,并且打破了原本动辄需要数百台服务器的资源瓶颈,现在,最少只需要十台服务器即可完成计算。 腾讯Plato团队负责人于东海表示:“Plato已经支持腾讯内部包括微信在内的众多核心业务,尤其是为腾讯超大规模社交网络图数据的各类
腾讯开源
2019/11/18
5400
腾讯正式开源图计算框架Plato,十亿级节点图计算进入分钟级时代
文本相似度计算_文本相似度分析算法
一. Simhash 计算文档相似度的算法, 比如用在搜索引擎的爬虫系统中,收录重复的网页是毫无意义的,只会造成存储和计算资源的浪费。有时候我们需要处理类似的文档,比如新闻,很多不同新闻网的新闻内容十分相近,标题略有相似。如此问题,便可以应用Simhash 文档相似度算法,查看两篇文档相似程度,删去相似度高的web文档。
全栈程序员站长
2022/11/15
1.5K0
文本相似度计算_文本相似度分析算法
【算法】计算完全二叉树的节点数
由于要求复杂度为小于O(N),那么遍历所有节点的方式肯定是不可能的了。那么回顾完全二叉树概念
MapleYe
2020/03/28
1.6K0
sriov计算节点转ovs计算节点脚本
就把手动修改的命令一条条排列组成脚本,然后用ansible工具批量运行下面的将sriov计算节点,转ovs计算节点的脚本。
后端云
2019/05/31
9160

相似问题

基于邻接节点计算节点值的图算法

14

Neo4j图算法/节点相似度

15

计算图的总度

13

计算图的中心度

119

对数图/算法时间复杂度图

14
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文