Python图的邻接矩阵
时间: 2023-11-19 19:50:17 浏览: 45
Python中可以使用numpy库来实现图的邻接矩阵表示。具体实现方法如下:
首先需要定义图的节点数和边数,假设节点数为n,边数为m。
``` python
import numpy as np
n = 5
m = 7
```
定义一个n x n的零矩阵,作为初始的邻接矩阵。
``` python
graph = np.zeros((n, n))
```
然后根据边的信息,将对应的矩阵元素设置为1。
``` python
edges = [(0, 1), (0, 2), (1, 2), (1, 3), (2, 3), (3, 4), (4, 0)]
for edge in edges:
graph[edge[0]][edge[1]] = 1
graph[edge[1]][edge[0]] = 1
```
这里假设输入的边是无向边,所以需要将两个节点之间的元素都设置为1。
最终得到的邻接矩阵为:
```
[[0. 1. 1. 0. 0.]
[1. 0. 1. 1. 0.]
[1. 1. 0. 1. 0.]
[0. 1. 1. 0. 1.]
[1. 0. 0. 1. 0.]]
```
相关问题
python 输入邻接矩阵
请问您需要一个 Python 程序来输入邻接矩阵吗?如果是,下面是一个简单的示例程序,它从标准输入中读取邻接矩阵并将其存储到一个二维列表中:
```
n = int(input("请输入节点数:"))
# 初始化邻接矩阵
adj_matrix = [[0] * n for _ in range(n)]
# 读取邻接矩阵
for i in range(n):
row = input(f"请输入第 {i+1} 行邻接矩阵,以空格分隔:").strip().split()
for j in range(n):
adj_matrix[i][j] = int(row[j])
# 输出邻接矩阵
print("邻接矩阵:")
for row in adj_matrix:
print(row)
```
这个程序首先要求用户输入节点数,然后初始化一个大小为 $n\times n$ 的邻接矩阵,接着按行读取邻接矩阵,每行数字之间用空格分隔。最后,程序输出邻接矩阵。您可以将其保存到一个 Python 文件中,例如 `input_adj_matrix.py`,然后在命令行中运行:
```
python input_adj_matrix.py
```
希望对您有帮助!
python邻接矩阵绘制图
要使用Python绘制邻接矩阵图,可以使用networkx库和matplotlib库。首先,需要将邻接矩阵转换为图形表示,然后使用networkx库创建图形对象,最后使用matplotlib库绘制图形。
以下是一个简单的示例代码:
```python
import networkx as nx
import matplotlib.pyplot as plt
# 邻接矩阵
adj_matrix = [[0, 1, 1, 0],
[1, 0, 1, 1],
[1, 1, 0, 1],
[0, 1, 1, 0]]
# 创建图形对象
G = nx.Graph()
# 添加节点
for i in range(len(adj_matrix)):
G.add_node(i)
# 添加边
for i in range(len(adj_matrix)):
for j in range(i+1, len(adj_matrix)):
if adj_matrix[i][j] == 1:
G.add_edge(i, j)
# 绘制图形
nx.draw(G, with_labels=True)
plt.show()
```