创建一个有向图用python
时间: 2024-01-26 20:49:35 浏览: 162
在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)
G.add_edge(3, 1)
# 输出图的信息
print("节点列表:", G.nodes())
print("边列表:", G.edges())
print("节点1的出度:", G.out_degree(1))
print("节点2的入度:", G.in_degree(2))
```
输出结果为:
```
节点列表: [1, 2, 3]
边列表: [(1, 2), (2, 3), (3, 1)]
节点1的出度: 1
节点2的入度: 1
```
在这个示例中,我们首先创建了一个有向图对象G,然后使用add_node()方法添加了3个节点,使用add_edge()方法添加了3条边,最后使用out_degree()和in_degree()方法计算了节点的出度和入度。
相关问题
有向图创建python代码
在Python中,可以使用邻接表或邻接矩阵来表示有向图,并通过相应的数据结构来创建有向图。下面是使用邻接表表示有向图的Python代码示例:
```python
class DirectedGraph:
def __init__(self):
self.graph = {}
def add_edge(self, start, end):
if start in self.graph:
self.graph[start].append(end)
else:
self.graph[start] = [end]
def get_neighbors(self, node):
if node in self.graph:
return self.graph[node]
else:
return []
# 创建有向图对象
graph = DirectedGraph()
# 添加边
graph.add_edge(1, 2)
graph.add_edge(1, 3)
graph.add_edge(2, 3)
graph.add_edge(3, 4)
# 获取节点的邻居
neighbors = graph.get_neighbors(1)
print(neighbors) # 输出:[2, 3]
```
上述代码中,`DirectedGraph`类表示有向图,使用字典`graph`来存储节点和其对应的邻居节点。`add_edge`方法用于添加边,`get_neighbors`方法用于获取节点的邻居。
python邻接矩阵创建有向图
在Python中,可以使用二维列表来表示邻接矩阵,其中每个元素表示两个顶点之间的边,如果有边则为1,否则为0。
下面是一个简单的示例代码,用于创建一个有向图的邻接矩阵:
```python
# 创建一个有向图的邻接矩阵
num_vertices = 4
# 初始化邻接矩阵
adj_matrix = [[0] * num_vertices for _ in range(num_vertices)]
# 添加边
adj_matrix[0][1] = 1
adj_matrix[1][2] = 1
adj_matrix[2][3] = 1
adj_matrix[3][0] = 1
# 打印邻接矩阵
for row in adj_matrix:
print(row)
```
该代码创建了一个包含4个顶点的有向图,其中顶点0指向顶点1,顶点1指向顶点2,顶点2指向顶点3,顶点3指向顶点0。
输出结果如下:
```
[0, 1, 0, 0]
[0, 0, 1, 0]
[0, 0, 0, 1]
[1, 0, 0, 0]
```
可以看到,邻接矩阵的行和列分别表示图中的顶点,而每个元素表示顶点之间是否存在边。1表示存在边,0表示不存在边。
阅读全文