模块文档
您应该仅在有非常充分的理由时才直接使用此模块。在几乎所有情况下,您最好调用 igraph.Graph.Formula()
。
函数 | construct |
Graph.Formula(formula = None, attr = "name", simplify = True) |
函数 | generate |
从给定公式部分的头部解析边的规范,并产生以下结果 |
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 | 是否简化构造的图 |
返回值 | |
构造的图 |