networkx.algorithms.planarity.PlanarEmbedding#

class PlanarEmbedding(incoming_graph_data=None, **attr)[源代码]#

表示平面图及其平面嵌入。

平面嵌入由 combinatorial embedding .

邻居排序:

与通常的图形结构相比,嵌入还存储每个顶点的所有相邻点的顺序。相邻的顺序可以是顺时针(CW)或逆时针(CCW)方向。这个顺序在底层的有向图中存储为边缘属性。对于边(u,v),沿顺时针方向将边属性“cw”设置为紧随v之后的u的邻居。

为了使planarembedding有效,它必须满足多个条件。可以用该方法检查这些条件是否满足 check_structure() . 条件是:

  • 边缘必须向两个方向移动(因为边缘属性不同)

  • 每个边必须有一个“cw”和“ccw”属性,该属性对应于正确的平面嵌入。

  • 具有非零度的节点必须具有节点属性“first_nbr”。

只要planarembedding无效,只应调用以下方法:

尽管该图是nx.digraph的一个子类,但它仍然可以用于需要无向图的算法,因为该方法 is_directed() 被重写。这是可能的,因为有效的平面图必须在两个方向都有边。

半边:

在方法上像 add_half_edge_ccw the term "half-edge" is used, which is a term that is used in doubly connected edge lists . 它用来强调边缘只在一个方向上,而在相反方向上存在另一个半边缘。虽然常规边总是在其旁边有两个面(包括外表面),但可以指定每个半边 恰好一 面对。对于定向为u低于v的半边(u,v),则属于(u,v)的面位于该半边的右侧。

实例

创建星型图的嵌入(比较 nx.star_graph(3) ):

>>> G = nx.PlanarEmbedding()
>>> G.add_half_edge_cw(0, 1, None)
>>> G.add_half_edge_cw(0, 2, 1)
>>> G.add_half_edge_cw(0, 3, 2)
>>> G.add_half_edge_cw(1, 0, None)
>>> G.add_half_edge_cw(2, 0, None)
>>> G.add_half_edge_cw(3, 0, None)

或者,同样的嵌入也可以按逆时针方向定义。以下结果将产生完全相同的平面嵌入:

>>> G = nx.PlanarEmbedding()
>>> G.add_half_edge_ccw(0, 1, None)
>>> G.add_half_edge_ccw(0, 3, 1)
>>> G.add_half_edge_ccw(0, 2, 3)
>>> G.add_half_edge_ccw(1, 0, None)
>>> G.add_half_edge_ccw(2, 0, None)
>>> G.add_half_edge_ccw(3, 0, None)

创建图形后,可以验证planarembedding对象是否正确:

>>> G.check_structure()
__init__(incoming_graph_data=None, **attr)#

用边、名称或图形属性初始化图形。

参数
incoming_graph_data输入图形(可选,默认:无)

要初始化图形的数据。如果为None(默认),则创建一个空图。数据可以是边列表,也可以是任何NetworkX图形对象。如果安装了相应的可选Python包,则数据还可以是2D NumPy数组、SciPy稀疏矩阵或PyGraphviz图。

attr关键字参数,可选(默认值=无属性)

要以键=值对的形式添加到图表中的属性。

参见

convert

实例

>>> G = nx.Graph()  # or DiGraph, MultiGraph, MultiDiGraph, etc
>>> G = nx.Graph(name="my graph")
>>> e = [(1, 2), (2, 3), (3, 4)]  # list of edges
>>> G = nx.Graph(e)

可以指定任意图形属性对(key=value)

>>> G = nx.Graph(e, day="Friday")
>>> G.graph
{'day': 'Friday'}

方法

add_edge(u_of_edge, v_of_edge, **attr)

在U和V之间添加边。

add_edges_from(ebunch_to_add, **attr)

将ebunch_中的所有边添加到_add。

add_half_edge_ccw(start_node, end_node, ...)

添加从开始节点到结束节点的半边缘。

add_half_edge_cw(start_node, end_node, ...)

添加从开始节点到结束节点的半边缘。

add_half_edge_first(start_node, end_node)

添加的半边按顺序插入到第一个位置。

add_node(node_for_adding, **attr)

添加单个节点 node_for_adding 更新节点属性。

add_nodes_from(nodes_for_adding, **attr)

添加多个节点。

add_weighted_edges_from(ebunch_to_add[, weight])

在中添加加权边 ebunch_to_add 指定重量属性

adjacency()

返回所有节点的(node,adjacency dict)元组的迭代器。

check_structure()

如果此对象有效,则无例外运行。

clear()

从图形中删除所有节点和边。

clear_edges()

从图形中移除所有边,而不改变节点。

connect_components(v, w)

在某些位置为(v,w)和(w,v)添加半边。

copy([as_view])

返回图表的副本。

edge_subgraph(edges)

返回由指定边诱导的子图。

get_data()

将相邻结构转换为可读性更好的结构。

get_edge_data(u, v[, default])

返回与边(u,v)关联的属性字典。

has_edge(u, v)

如果边(u,v)在图中,则返回true。

has_node(n)

如果图表包含节点n,则返回true。

has_predecessor(u, v)

如果节点u具有前置节点v,则返回True。

has_successor(u, v)

如果节点u具有后继者v,则返回True。

is_directed()

有效的planarembedding是无向的。

is_multigraph()

如果graph是多重图,则返回True,否则返回False。

nbunch_iter([nbunch])

返回包含在nbunch中的节点上的迭代器,该节点也在图中。

neighbors(n)

返回N的后续节点上的迭代器。

neighbors_cw_order(v)

发电机按顺时针顺序与V相邻。

next_face_half_edge(v, w)

返回面的左下半个边。

number_of_edges([u, v])

返回两个节点之间的边数。

number_of_nodes()

返回图表中的节点数。

order()

返回图表中的节点数。

predecessors(n)

返回n的前置节点上的迭代器。

remove_edge(u, v)

移除U和V之间的边缘。

remove_edges_from(ebunch)

删除ebunch中指定的所有边缘。

remove_node(n)

删除节点N。

remove_nodes_from(nodes)

删除多个节点。

reverse([copy])

返回图形的相反方向。

set_data(data)

根据给定的排序邻居列表插入边。

size([weight])

返回边数或所有边权重的总数。

subgraph(nodes)

返回在上引发的子图的子图视图 nodes .

successors(n)

返回N的后续节点上的迭代器。

to_directed([as_view])

返回图形的定向表示形式。

to_directed_class()

返回用于空定向副本的类。

to_undirected([reciprocal, as_view])

返回有向图的无向表示。

to_undirected_class()

返回用于空的无定向副本的类。

traverse_face(v, w[, mark_half_edges])

返回属于半边(V,W)的面上的节点。

update([edges, nodes])

使用节点/边/图形作为输入更新图形。

属性

adj

图形邻接对象,包含每个节点的邻居。

degree

图形的degreeview,如g.degree或g.degree()。

edges

有向图的outedgeview,如g.edges或g.edges()。

in_degree

对于(节点,以度表示)或对于单个节点,以度表示的不一致视图。

in_edges

图的一个线性视图,如g.in_edges或g.in_edges()。

name

图形的字符串标识符。

nodes

图形的节点视图,如g.nodes或g.nodes()。

out_degree

(节点、出度)的Outdegreeview

out_edges

有向图的outedgeview,如g.edges或g.edges()。

pred

图形邻接对象,包含每个节点的前置任务。

succ

包含每个节点的后续节点的图邻接对象。