全部,
考虑下面的示例“树状”图。
纵向上它是一个基于节点“0”的层次结构。横向上它是一个从级别 1 开始的基于组的结构,组意味着从一个根节点继承的节点
'''
+---+
| 0 | Level 0
+---+
|
+--------------+---------------+
| | |
+---+ +---+ +---+
| 1 | | 2 | | 3 | Level 1
+---+ +---+ +---+
+-----+----+ +-----+-----+ +|---+-----+
| | | | | | | | |
+---+ +---+ +---+ +---+ +---+ +---+ +---+ +---+ +---+
|11 | |12 | |13 | |21 | |22 | |23 | |31 | |32 | |33 | Level 2
+---+ +---+ +---+ +---+ +---+ +---+ +---+ +---+ +---+
| | / | / | | |
| | / | / | | |
| +---+ +---+ +---+ +---+ |
| |121|-|131| |211| |221| | Level 3
| +---+ +---+ +---+ +---+ |
| |--------|------| |
|-----------|----------------------------|
| Group 0 | group 1 | group 2 |
'''
在 Networkx 中创建:
# create it in networkx
import networkx as nx
G = nx.DiGraph()
G.add_edges_from([('0', '1'), ('0', '2'), ('0', '3')])
G.add_edges_from([('1', '11'), ('1', '12'), ('1', '13')])
G.add_edges_from([('2', '21'), ('2', '22'), ('2', '23')])
G.add_edges_from([('3', '31'), ('3', '32'), ('3', '33')])
#
G.add_edges_from([('12', '121'), ('13', '131')])
G.add_edges_from([('12', '121'), ('13', '131')])
G.add_edges_from([('21', '211'), ('22', '221')])
#
G.add_edges_from([('13', '121')])
G.add_edges_from([('21', '131')])
G.add_edges_from([('131', '211')])
G.add_edges_from([('131', '221')])
#
G.add_edges_from([('121', '13')]) # node may not with "in_degree" link only
G.add_edges_from([('131', '21')]) # ditto
#
G.add_edges_from([('131', '31')])
G.add_edges_from([('131', '11')])
G.add_edges_from([('11', '131')])
#
G.add_edges_from([('121', '131')])
问题:
如何找出图中的节点和边,使用下面的节点作为示例:
“121”,在同一组中有多个链接到更高级别?(节点边缘类型“不确定”,可能是 in_degree 或 out_degree 或两者,在以下问题中相同)
“131”,与其他组的更高级别节点有多个链接?
“131”,链接到同一组中的同一级别节点
“131”,链接到同级节点但在其他组中
“21”,链接到不同组中的较低级别节点
“Graph”的新手,并尝试获取示例代码以了解如何使用 networkx 深入挖掘。
非常感谢。