python-igraph API 参考

python-igraph 中所有类、函数和方法的列表

模块文档

igraph.Graph.Formula() 的实现。

您应该仅在有非常充分的理由时才直接使用此模块。在几乎所有情况下,您最好调用 igraph.Graph.Formula()

函数 construct_graph_from_formula Graph.Formula(formula = None, attr = "name", simplify = True)
函数 generate_edges 从给定公式部分的头部解析边的规范,并产生以下结果
def construct_graph_from_formula(cls, formula=None, attr='name', simplify=True):

Graph.Formula(formula = None, attr = "name", simplify = True)

从图公式生成图

图公式是图的简单字符串表示形式。它非常方便快速创建小图。该字符串由边运算符分隔的顶点名称组成。边运算符是一系列短划线 (-),可能以箭头开头(<在序列的开头或>在序列的末尾)。边运算符可以任意长,即,您可以根据需要使用任意数量的短划线来绘制它们。这总共产生了四个不同的边运算符

  • -----生成一个无向边
  • <----生成一个有向边,从运算符右侧的顶点指向运算符左侧的顶点
  • ----><----
  • <--->在两个顶点之间创建互有向边对

如果只使用无向边运算符(-----),则该图将是无向的。否则它将是有向的。公式中使用的顶点名称将被分配给name图的顶点属性。

一些简单的例子

>>> from igraph import Graph
>>> print(Graph.Formula())          # empty graph
IGRAPH UN-- 0 0 --
+ attr: name (v)
>>> g = Graph.Formula("A-B")        # undirected graph
>>> g.vs["name"]
['A', 'B']
>>> print(g)
IGRAPH UN-- 2 1 --
+ attr: name (v)
+ edges (vertex names):
A--B
>>> g.get_edgelist()
[(0, 1)]
>>> g2 = Graph.Formula("A-----------B")
>>> g2.isomorphic(g)
True
>>> g = Graph.Formula("A  --->  B") # directed graph
>>> g.vs["name"]
['A', 'B']
>>> print(g)
IGRAPH DN-- 2 1 --
+ attr: name (v)
+ edges (vertex names):
A->B

如果您有断开的组件,可以用逗号分隔它们。您还可以指定孤立的顶点

>>> g = Graph.Formula("A--B, C--D, E--F, G--H, I, J, K")
>>> print(", ".join(g.vs["name"]))
A, B, C, D, E, F, G, H, I, J, K
>>> g.connected_components().membership
[0, 0, 1, 1, 2, 2, 3, 3, 4, 5, 6]

冒号(:)运算符可用于指定顶点集。如果边运算符连接两个顶点集,则第一个顶点集中的每个顶点将连接到第二个顶点集中的每个顶点

>>> g = Graph.Formula("A:B:C:D --- E:F:G")
>>> g.isomorphic(Graph.Full_Bipartite(4, 3))
True

请注意,如果顶点名称包含空格或特殊字符,则必须引用它们

>>> g = Graph.Formula('"this is" +- "a silly" -+ "graph here"')
>>> g.vs["name"]
['this is', 'a silly', 'graph here']
参数
cls未归档
formula公式本身
attr将存储顶点名称的顶点属性的名称
simplify是否简化构造的图
返回值
构造的图
def generate_edges(formula):

从给定公式部分的头部解析边的规范,并产生以下结果

  • 边的起始点(通过顶点名称)
  • 边的终点(通过名称)或如果顶点是孤立的,则为空列表
  • 一对布尔值,表示我们在起始和结束顶点是否有箭头