python实现由邻接矩阵形成有向图的代码
时间: 2023-09-03 12:16:34 浏览: 96
下面是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
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, v1, v2):
self.adj_matrix[v1][v2] = 1
def remove_edge(self, v1, v2):
self.adj_matrix[v1][v2] = 0
def print_adj_matrix(self):
for row in self.adj_matrix:
print(row)
# 创建一个包含 5 个节点的有向图
dg = DirectedGraph(5)
# 添加边
dg.add_edge(0, 1)
dg.add_edge(0, 2)
dg.add_edge(1, 2)
dg.add_edge(2, 3)
dg.add_edge(3, 4)
# 打印邻接矩阵
dg.print_adj_matrix()
```
输出结果:
```
[0, 1, 1, 0, 0]
[0, 0, 1, 0, 0]
[0, 0, 0, 1, 0]
[0, 0, 0, 0, 1]
[0, 0, 0, 0, 0]
```
在这个示例中,我们创建了一个包含 5 个节点的有向图,并添加了一些边。然后,我们打印了邻接矩阵,它显示了各个节点之间的连接情况。其中,1 表示有连接,0 表示没有连接。
用Python代码通过邻接矩阵的方式创建无向图,有向图。
创建无向图的代码:
```python
class Graph:
def __init__(self, vertices):
self.V = vertices
self.graph = [[0] * self.V for i in range(self.V)]
def add_edge(self, u, v):
self.graph[u][v] = 1
self.graph[v][u] = 1
def print_graph(self):
for i in range(self.V):
for j in range(self.V):
print(self.graph[i][j], end=" ")
print("")
```
创建有向图的代码:
```python
class Graph:
def __init__(self, vertices):
self.V = vertices
self.graph = [[0] * self.V for i in range(self.V)]
def add_edge(self, u, v):
self.graph[u][v] = 1
def print_graph(self):
for i in range(self.V):
for j in range(self.V):
print(self.graph[i][j], end=" ")
print("")
```
以上代码中,`Graph` 类接收一个参数 `vertices` 表示图的顶点数,然后定义了一个邻接矩阵 `graph`。`add_edge` 方法用于添加边,对于无向图,需要将两个节点互相连接;对于有向图,只需将一个节点指向另一个节点。`print_graph` 方法用于打印邻接矩阵。
阅读全文