python实现由邻接矩阵形成有向图的代码
时间: 2023-09-03 18:16:34 浏览: 47
下面是Python实现由邻接矩阵形成有向图的代码:
```python
class DiGraph:
def __init__(self, adj_matrix):
self.adj_matrix = adj_matrix
self.num_nodes = len(adj_matrix)
def add_edge(self, start, end):
self.adj_matrix[start][end] = 1
def remove_edge(self, start, end):
self.adj_matrix[start][end] = 0
def get_adj_matrix(self):
return self.adj_matrix
def get_neighbors(self, node):
neighbors = []
for i in range(self.num_nodes):
if self.adj_matrix[node][i] == 1:
neighbors.append(i)
return neighbors
```
这里我们定义了一个DiGraph类,该类包含了邻接矩阵的构造函数、添加边的方法、删除边的方法、返回邻接矩阵的方法以及获取节点邻居的方法。通过这些方法,我们可以方便地构造有向图,并对图进行各种操作。
相关问题
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表示不存在边。
有向图的邻接矩阵python代码
下面是一个简单的 Python 代码片段,用于创建有向图的邻接矩阵:
```python
# 首先,我们需要定义一个图的大小
n = 5
# 接下来,我们创建一个全零矩阵,它将作为我们的邻接矩阵
adj_matrix = [[0 for i in range(n)] for j in range(n)]
# 然后,我们可以向矩阵中添加边
# 在这个例子中,我们添加了三条边,从第一个节点到第二个节点、第二个节点到第三个节点、以及第三个节点到第一个节点
adj_matrix[0][1] = 1
adj_matrix[1][2] = 1
adj_matrix[2][0] = 1
# 最后,我们可以打印邻接矩阵
for row in adj_matrix:
print(row)
```
这将输出以下邻接矩阵:
```
[0, 1, 0, 0, 0]
[0, 0, 1, 0, 0]
[1, 0, 0, 0, 0]
[0, 0, 0, 0, 0]
[0, 0, 0, 0, 0]
```
在这个例子中,我们创建了一个由 5 个节点组成的有向图,并添加了三条边。注意,每个节点都被表示为矩阵中的一行和一列,而边则表示为将相应行和列中的元素设置为 1。如果两个节点之间没有边,则相应的矩阵元素为 0。