无向带权图的邻接矩阵
时间: 2023-12-21 22:30:26 浏览: 154
无向带权图的邻接矩阵是一个对称矩阵,其中每个元素表示两个顶点之间的权重。如果两个顶点之间没有边相连,则对应的矩阵元素为0。假设有n个顶点,那么邻接矩阵是一个n×n的矩阵,其中第i行第j列的元素表示第i个顶点和第j个顶点之间的权重。下面是一个Python实现的例子:
```python
# 定义邻接矩阵
adj_matrix = [[0, 2, 4, 0],
[2, 0, 3, 5],
[4, 3, 0, 6],
[0, 5, 6, 0]]
# 输出邻接矩阵
for i in range(len(adj_matrix)):
for j in range(len(adj_matrix[i])):
print(adj_matrix[i][j], end=' ')
print()
```
上述代码中,我们定义了一个4个顶点的无向带权图的邻接矩阵,然后使用两个for循环遍历矩阵并输出每个元素。输出结果如下:
```
0 2 4 0
2 0 3 5
4 3 0 6
0 5 6 0
```
相关问题
c语言图的无向网存储,C语言——无向带权图邻接矩阵的建立
无向带权图可以使用邻接矩阵来存储,邻接矩阵是一个二维数组,其中第i行第j列的元素表示第i个顶点到第j个顶点的边的权重(如果两个顶点之间没有边,则对应的元素为0)。以下是C语言中无向带权图邻接矩阵的建立代码:
```c
#define MAX_VERTEX_NUM 100 // 最大顶点数
#define INF 65535 // 表示正无穷
typedef struct {
int vertex[MAX_VERTEX_NUM]; // 存储顶点
int arcs[MAX_VERTEX_NUM][MAX_VERTEX_NUM]; // 存储边的权值
int vexnum, arcnum; // 存储图的顶点数和边数
} MGraph;
void CreateMGraph(MGraph *G) {
int i, j, k, w;
printf("请输入顶点数和边数:\n");
scanf("%d%d", &(G->vexnum), &(G->arcnum));
printf("请输入顶点信息:\n");
for (i = 0; i < G->vexnum; i++) {
scanf("%d", &(G->vertex[i]));
}
for (i = 0; i < G->vexnum; i++) {
for (j = 0; j < G->vexnum; j++) {
G->arcs[i][j] = INF; // 初始化为正无穷
}
}
printf("请输入边的信息:\n");
for (k = 0; k < G->arcnum; k++) {
printf("请输入第%d条边的起点、终点和权值:\n", k+1);
scanf("%d%d%d", &i, &j, &w);
G->arcs[i-1][j-1] = w;
G->arcs[j-1][i-1] = w; // 无向图需要对称存储
}
}
```
在上述代码中,我们首先定义了一个结构体MGraph,包含了一个顶点数组、一个邻接矩阵和图的顶点数和边数。然后,我们使用CreateMGraph函数来创建无向带权图的邻接矩阵。在函数中,我们首先输入图的顶点数和边数,然后输入每个顶点的信息,接着初始化邻接矩阵为正无穷,最后输入每条边的起点、终点和权值,并将其存储到邻接矩阵中。需要注意的是,无向图需要对称存储。
邻接矩阵:建立所给无向带权图的邻接矩阵存储并输出该矩阵
好的,我理解了你的问题。以下是建立无向带权图邻接矩阵的代码示例,你可以参考一下:
```python
# 定义图的顶点数和边数
n = 5 # 顶点数为5
m = 7 # 边数为7
# 初始化邻接矩阵,全部赋值为0
adj_matrix = [[0] * n for i in range(n)]
# 读入每条边的起点、终点和权值,更新邻接矩阵
for i in range(m):
u, v, w = map(int, input().split()) # 读入一条边的信息
adj_matrix[u][v] = w
adj_matrix[v][u] = w # 因为是无向图,所以需要更新两个方向的权值
# 输出邻接矩阵
for i in range(n):
for j in range(n):
print(adj_matrix[i][j], end=' ')
print()
```
以上代码会先读入图的顶点数和边数,然后逐条读入每条边的起点、终点和权值,更新邻接矩阵。最后输出邻接矩阵即可。
注意,这里的邻接矩阵是一个二维数组,其中每个元素表示一条边的权值,如果两个顶点之间没有边相连,则相应的元素值为0。