有向图无向图python
时间: 2023-12-19 09:31:57 浏览: 155
Python中有很多库可以用来处理有向图和无向图,其中比较常用的是networkx库。下面是一个简单的例子,展示如何使用networkx库创建有向图和无向图:
```python
import networkx as nx
import matplotlib.pyplot as plt
# 创建有向图
G = nx.DiGraph()
G.add_edges_from([(1, 2), (2, 3), (3, 1)])
nx.draw(G, with_labels=True)
plt.show()
# 创建无向图
G = nx.Graph()
G.add_edges_from([(1, 2), (2,3), (3, 1)])
nx.draw(G, with_labels=True)
plt.show()
```
上述代码中,我们首先导入了networkx库和matplotlib库。然后,我们使用`DiGraph()`函数创建了一个有向图对象`G`,使用`add_edges_from()`方法向有向图中添加了三条边。接着,我们使用`draw()`方法和`with_labels=True`参数绘制了有向图,并使用`show()`方法显示了图形。
同样地,我们使用`Graph()`函数创建了一个无向图对象`G`,使用`add_edges_from()`方法向无向图中添加了三条边。然后,我们使用`draw()`方法和`with_labels=True`参数绘制了无向图,并使用`show()`方法显示了图形。
相关问题
无向图 python
无向图是图论中的一个基本概念,它是由一组顶点和一组能够将这些顶点两两相连的边组成的。在无向图中,每条边连接两个顶点,并且不区分方向,即边 (u, v) 与边 (v, u) 是相同的。无向图可以用来表示各种实体之间的对等关系。
在Python中,可以使用多种方式来表示无向图。最简单的一种方法是使用邻接矩阵,另一种方法是使用邻接表。
1. 邻接矩阵:是一个二维数组,其中的元素表示顶点之间的连接关系。如果顶点i和顶点j之间有边相连,则矩阵的第i行第j列的元素为1(或者边的权重),否则为0。
2. 邻接表:通常用字典(或列表)来实现,字典的键是顶点,值是与该顶点相连的其他顶点的列表。
下面是一个简单的Python代码示例,使用邻接表来表示一个无向图,并实现图的创建和边的添加:
```python
class UndirectedGraph:
def __init__(self):
self.graph = {} # 使用字典来存储邻接表
def add_vertex(self, v):
"""添加顶点"""
if v not in self.graph:
self.graph[v] = []
def add_edge(self, v1, v2):
"""添加边"""
if v1 in self.graph and v2 in self.graph:
self.graph[v1].append(v2)
self.graph[v2].append(v1)
def print_graph(self):
"""打印图"""
for vertex in self.graph:
print(f"{vertex}: {self.graph[vertex]}")
# 使用示例
ug = UndirectedGraph()
ug.add_vertex(0)
ug.add_vertex(1)
ug.add_vertex(2)
ug.add_vertex(3)
ug.add_edge(0, 1)
ug.add_edge(0, 2)
ug.add_edge(1, 2)
ug.add_edge(2, 3)
ug.print_graph()
```
运行上述代码后,会输出图中各个顶点及其连接的其他顶点,例如:
```
0: [1, 2]
1: [0, 2]
2: [0, 1, 3]
3: [2]
```
Python无向图转有向
在Python中,可以使用networkx库来实现无向图转有向图的操作。具体步骤如下:
1. 首先,导入networkx库:
import networkx as nx
2. 创建一个无向图:
G = nx.Graph()
3. 向无向图中添加节点和边:
G.add_nodes_from([1, 2, 3, 4])
G.add_edges_from([(1, 2), (2, 3), (3, 4)])
4. 使用DiGraph()函数将无向图转换为有向图:
DG = G.to_directed()
5. 最后,可以使用draw()函数来可视化有向图:
nx.draw(DG, with_labels=True)
阅读全文