首页 > 编程语言 >Python_DAG-有向无环图-igraph

Python_DAG-有向无环图-igraph

时间:2024-08-04 22:28:04浏览次数:6  
标签:directed DAG Python Graph 环图 有向图 igraph

DAG-有向无环图-igraph

安装

pip install python-igraph
pip install pycairo

pip list发现Python安装的有igraph包有两个:igraph、python-igraph

有向图
  有向图(Digraph) 是图论中的一种图结构,其中的边(弧)具有方向性,表明从一个节点(顶点)到另一个节点的单向关系。与无向图不同,无向图中的边不区分方向,而有向图则强调了某些关系的单向特性。
在某些情况下,单向关系可能是理解复杂网络结构的关键,使得有向图成为信息科学、社会科学以及工程学等领域的基础工具  cyclic  acyclic
  acyclic 没有环的图,‌即图中没有回路


g.is_acyclic() 方法 是否是无环图

def is_dag(self, *args, **kwargs)
Checks whether the graph is a DAG (directed acyclic graph)

使用

使用 Python 构建 DAG(有向无环图,Directed Acyclic Graph) 任务 Directed Acyclic Graph
由一组节点和有向边组成,其中每个节点表示一个任务或操作,有向边表示任务之间的依赖关系

构造依赖关系树和计算链
 从任务编排和数据等的角度来看,DAG 的术语是叫工作流(Workflow)
跟踪计算状态以及它们之间的依赖关系,允许完全和部分重新计算

Graph
  __init__(n=0, edges=None, directed=False, graph_attrs=None,
        vertex_attrs=None, edge_attrs=None)

ig.Graph.Ring(n=nodes, circular=True)


通过继承Graph类并在子类中添加额外的方法和属性来实现
 Graph.__init__(self, directed=True, graph_attrs={"name": name}, **kwargs)

DAGFlow继承了Graph类,并在其初始化方法中调用了父类的初始化方法 directed=True 指明了是有向图

实现

常规 DAG 到函数式 DAG
基于注解与条件的 DAG 函数

Apache Airflow 的 DAG 实现本着 “工作流即代码” 的思想设计


spec 是规约,规格的意思

基础包

Python itertools模块combinations(iterable, r)方法可以创建一个迭代器,
  返回iterable中所有长度为r的子序列,返回的子序列中的项按输入iterable中的顺序排序
  combinations  组合
  permutations 排列

 undirected graph with a fixed number of edges, without loops.   g.to_directed(mode="acyclic")
as_directed  as_undirected 




mode:值可为IN,OUT,ALL,分别表示入度核值,出度核值,以及无向核值

计划

  增量计算(Incremental computing) 
如何设计增量 DAG 计算
异步函数 和可变函数
Memoization(记忆化)是函数式语言的一种特性,
   使用一组参数初次调用函数时,缓存参数和计算结果,当再次使用相同的参数调用该函数时,直接返回相应的缓存结果
  采用分布式键值存储来对结果进行缓存就是更好的选择

其他包

MessagePack (简称 msgPack)是一种高效的二进制序列化格式,可以将各种数据类型(如整数、字符串、数组等)转换为二进制格式,以便于在网络传输或存储时使用

BSON是一种计算机数据交换格式,主要被用作MongoDB数据库中的数据存储和网络传输格式

美国

国家能源研究科学计算中心NERSC(National Energy Research Scientific Computing Center)是

参考

https://python.igraph.org/en/stable/
https://python.igraph.org/en/stable/tutorials/quickstart.html
igraph 上手教程——使用 Python 开展社会网络分析和可视化 https://zhuanlan.zhihu.com/p/426397948
自动增量计算:构建高性能数据分析系统的任务编排 https://zhuanlan.zhihu.com/p/580966356

标签:directed,DAG,Python,Graph,环图,有向图,igraph
From: https://www.cnblogs.com/ytwang/p/18342331

相关文章

  • 【Python系列】深入理解 Python 中的 `nonlocal` 关键字
    ......
  • [python][代码]Python分页工具类
    这段Python代码定义了一个名为Pagination的类,用于实现数据的分页功能。下面是代码的逐行解释:#encoding:utf-8:指定文件的编码格式为UTF-8。importmath:导入Python的数学模块,用于访问数学函数和常量。定义了Pagination类,它继承自object(在Python3中,所有类都隐式地继承自......
  • 【自动化测试必学语言】python:面向对象
    目录面向对象基本介绍类和对象类的组成类的抽象(类的设计)面向代码的步骤面向对象基本代码的书写self的说明对象的属性操作添加属性获取属性魔法方法__init__方法**__str__方法*__del__方法 【了解】案例封装案例案例二私有和公有案例继承语法案例......
  • Selenium + Python 自动化测试03(元素定位)
        上一篇我们讲述了第一个测试用例脚本的编写。我们对web自动化测试有了一个初步的认识。接着我们详细讲述元素定位方法。        Selenium对网页的控制是基于各种前端元素的,在使用过程中,对于元素的定位是基础,只有准去抓取到对应元素才能进行后续的自动化控......
  • Python pymodbus类库使用学习总结
    实践环境Python3.9.13https://www.python.org/ftp/python/3.9.13/python-3.9.13-amd64.exepymodbus-3.6.8-py3-none-any.whlhttps://files.pythonhosted.org/packages/35/19/a9d16f74548d6750acf6604fa74c2cd165b5bc955fe021bf5e1fa04acf14/pymodbus-3.6.8-py3-none-any.whl......
  • 【秋招笔试】2024-08-03-科大讯飞秋招笔试题(算法岗)-三语言题解(CPP/Python/Java)
    ......
  • Python 爬虫项目实战(一):破解网易云 VIP 免费下载付费歌曲
    前言网络爬虫(WebCrawler),也称为网页蜘蛛(WebSpider)或网页机器人(WebBot),是一种按照既定规则自动浏览网络并提取信息的程序。爬虫的主要用途包括数据采集、网络索引、内容抓取等。爬虫的基本原理种子URL:爬虫从一个或多个种子URL开始,这些URL是起点。发送请求:爬虫向这些种......
  • python常用绘图操作
    1.turtle绘制奥运五环图importturtleaspdefdrawCircle(x,y,c='red'):p.pu()#抬起画笔p.goto(x,y)#绘制圆的起始位置p.pd()#放下画笔p.color(c)#绘制c色圆环p.circle(30,360)#绘制圆:半径,角度p.pensize(3)#画笔尺寸设置3drawCircle(0,0,'b......
  • 【学习笔记】Matlab和python双语言的学习(蒙特卡洛法)
    文章目录前言一、蒙特卡洛二、经典示例:计算圆周率π1.代码实现----Matlab2.代码实现----python三、示例2:三门问题1.代码实现----Matlab2.代码实现----python总结前言通过模型算法,熟练对Matlab和python的应用。学习视频链接:https://www.bilibili.com/video/BV1E......
  • python-查找元素3(赛氪OJ)
    [题目描述]有n个不同的数,从小到大排成一列。现在告诉你其中的一个数x,x不一定是原先数列中的数。你需要输出最后一个<=x的数在此数组中的下标。输入:输入共两行第一行为两个整数n、x。第二行为n个整数,代表a[i]。输出:请你输出最后一个<=x的数在此数组中的下标。样例输入1541......