用python实现获得一个图的邻接矩阵
时间: 2023-12-27 09:05:07 浏览: 75
可以使用Python中的numpy库来实现获得一个图的邻接矩阵。假设图有n个节点,邻接矩阵A的大小为n×n,其中A[i][j]表示节点i和节点j之间是否有边相连。如果有边相连,则A[i][j]=1,否则A[i][j]=0。下面是一个示例代码:
```python
import numpy as np
# 定义一个图,用边集表示,例如:{(0,1), (1,2), (2,0)}
edges = [(0, 1), (1, 2), (2, 0)]
n = 3
# 初始化邻接矩阵为0
A = np.zeros((n, n))
# 将边集中的边加入邻接矩阵
for i, j in edges:
A[i][j] = 1
A[j][i] = 1 # 无向图需要对称
# 输出邻接矩阵
print(A)
```
输出结果为:
```
array([[0., 1., 1.],
[1., 0., 1.],
[1., 1., 0.]])
```
其中,第i行第j列的元素为1表示节点i和节点j之间有边相连,为0表示没有。
相关问题
使用python写出一个输入邻接矩阵判断无向图的连通性的代码
好的,下面是 Python 代码:
```python
def is_connected(adj_matrix):
n = len(adj_matrix)
visited = set()
stack = [0]
while stack:
node = stack.pop()
visited.add(node)
for neighbor in range(n):
if adj_matrix[node][neighbor] and neighbor not in visited:
stack.append(neighbor)
return len(visited) == n
```
其中,`adj_matrix` 是邻接矩阵,它是一个 n×n 的矩阵,表示有 n 个顶点的无向图。其中,`adj_matrix[i][j]` 表示顶点 i 和顶点 j 是否相邻,如果相邻则为 1,否则为 0。该函数返回一个布尔值,表示该无向图是否是连通图。
python带权无向图中邻接矩阵
在Python中,可以使用二维列表来表示带权无向图的邻接矩阵。邻接矩阵是一个方阵,其中的元素表示图中两个顶点之间的边权重。如果两个顶点之间没有边,则对应位置的元素为0或者无穷大。
下面是一个示例代码,展示了如何使用邻接矩阵表示带权无向图:
```python
# 定义邻接矩阵
adjacency_matrix = [
[0, 2, 0, 4, 0],
[2, 0, 3, 0, 0],
[0, 3, 0, 0, 1],
[4, 0, 0, 0, 5],
[0, 0, 1, 5, 0]
]
# 打印邻接矩阵
for row in adjacency_matrix:
print(row)
```
输出结果为:
```
[0, 2, 0, 4, 0]
[2, 0, 3, 0, 0]
[0, 3, 0, 0, 1]
[4, 0, 0, 0, 5]
[0, 0, 1, 5, 0]
```
这个邻接矩阵表示了一个带权无向图,其中顶点之间的边的权重分别为2、4、3、1和5。
阅读全文