Python 图

介绍

数学和计算机科学中的图由“节点”组成,这些“节点”可以相互连接,也可以不相互连接。节点之间的连接称为边。图可以是有方向的(箭头)或不带方向的。边沿可以代表距离或重量。

默认图(左),有向图(右)

Python 没有图数据类型。要使用图,我们可以使用模块或自己实现:

  • 自己实现图
  • networkx 模块

Python 中的图

有向图可以定义为:

#!/usr/bin/env python
 
graph = {'A': ['B', 'C'],
         'B': ['C', 'A'],
         'C': ['D'],
         'D': ['A']}
 
print(graph)

使用 networkx 的图

networkx 模块支持创建和操作图形。

#!/usr/bin/env python
import networkx as nx
 
G=nx.Graph()
G.add_node("A")
G.add_node("B")
G.add_node("C")
G.add_edge("A","B")
G.add_edge("B","C")
G.add_edge("C","A")
 
print("Nodes: " + str(G.nodes()))
print("Edges: " + str(G.edges()))

结果:

Nodes: ['A', 'C', 'B']
Edges: [('A', 'C'), ('A', 'B'), ('C', 'B')]