python建立有向图的代码
时间: 2023-10-12 17:16:57 浏览: 48
下面是使用Python建立有向图的代码,使用了networkx库:
```python
import networkx as nx
# 创建一个空的有向图
G = nx.DiGraph()
# 添加节点
G.add_node(1)
G.add_node(2)
G.add_node(3)
# 添加边
G.add_edge(1, 2)
G.add_edge(2, 3)
# 获取节点和边
print("Nodes:", G.nodes())
print("Edges:", G.edges())
```
上面的代码创建了一个有向图,添加了三个节点和两条边,并打印了节点和边的信息。你可以根据需要修改节点和边的数量和属性。
相关问题
用Python建立一个有向图的邻接矩阵,代码
以下是基于Python的有向图邻接矩阵的代码:
```python
# 定义有向图的邻接矩阵类
class DirectedGraph:
def __init__(self, num_vertices):
self.num_vertices = num_vertices
self.adj_matrix = [[0] * num_vertices for _ in range(num_vertices)]
# 添加边
def add_edge(self, src, dest):
self.adj_matrix[src][dest] = 1
# 显示邻接矩阵
def display(self):
for row in self.adj_matrix:
print(row)
# 示例用法
g = DirectedGraph(5)
# 向有向图中添加边
g.add_edge(0, 1)
g.add_edge(1, 2)
g.add_edge(2, 3)
g.add_edge(3, 4)
g.add_edge(4, 0)
# 输出邻接矩阵
g.display()
# 输出结果
'''
[0, 1, 0, 0, 0]
[0, 0, 1, 0, 0]
[0, 0, 0, 1, 0]
[0, 0, 0, 0, 1]
[1, 0, 0, 0, 0]
'''
```
以上代码可以创建一个有向图,并且使用邻接矩阵来表示它。每个顶点都有对应的行和列,对于每个边(i,j),在矩阵中对应的(i,j)位置设置为1,表示从节点i向节点j连一条边。 但需要注意的是,这只是建立有向图邻接矩阵的一种方法,具体实现可能根据不同的需求而有所不同。
Python建立一个无向图或有向图的邻接矩阵
可以使用NumPy库来创建邻接矩阵。以下是一个示例代码,用于创建一个有向图的邻接矩阵:
```python
import numpy as np
# 定义图的大小
N = 5
# 创建一个空矩阵
adj_matrix = np.zeros((N, N), dtype=int)
# 添加边
adj_matrix[0][3] = 1
adj_matrix[1][0] = 1
adj_matrix[1][2] = 1
adj_matrix[2][4] = 1
adj_matrix[3][1] = 1
adj_matrix[4][3] = 1
# 显示邻接矩阵
print(adj_matrix)
```
输出结果:
```
[[0 0 0 1 0]
[1 0 1 0 0]
[0 0 0 0 1]
[0 1 0 0 0]
[0 0 0 1 0]]
```
这个邻接矩阵表示了一个有向图,其中顶点0指向顶点3,顶点1指向顶点0和顶点2,顶点2指向顶点4,顶点3指向顶点1,顶点4指向顶点3。