邻接矩阵创建无向图
时间: 2023-10-18 18:12:32 浏览: 120
邻接矩阵可以用来表示无向图,其中矩阵的行和列分别代表图中的节点,矩阵中的元素则表示相邻节点之间的连接情况。对于无向图,邻接矩阵是对称的,即矩阵中第i行第j列和第j行第i列的元素应该相同。
下面是一个创建无向图邻接矩阵的示例代码(假设图中有n个节点):
```
int adjMatrix[n][n]; // 定义邻接矩阵
// 初始化邻接矩阵,所有元素都为0
for(int i=0; i<n; i++) {
for(int j=0; j<n; j++) {
adjMatrix[i][j] = 0;
}
}
// 添加边,将相邻节点之间的元素标记为1
adjMatrix[0][1] = 1;
adjMatrix[1][0] = 1;
adjMatrix[1][2] = 1;
adjMatrix[2][1] = 1;
// ...
// 打印邻接矩阵
for(int i=0; i<n; i++) {
for(int j=0; j<n; j++) {
cout << adjMatrix[i][j] << " ";
}
cout << endl;
}
```
在上面的代码中,我们首先定义了一个n x n的二维数组,用于表示邻接矩阵。然后,我们初始化所有元素为0,并逐个添加边,将相邻节点之间的元素标记为1。最后,我们打印邻接矩阵,以便检查构建的图是否正确。
相关问题
采用邻接矩阵创建无向图
创建一个无向图的邻接矩阵需要以下步骤:
1. 确定图中顶点的个数,假设有n个顶点,那么邻接矩阵的大小为n * n。
2. 初始化邻接矩阵,将每个元素都赋值为0。
3. 对于图中的每一条边 (u, v),将邻接矩阵中第u行第v列和第v行第u列的元素值设置为1,表示这两个顶点之间有一条边。
4. 如果图是带权图,那么在第3步时可以将对应的元素值设置为边的权重。
下面是使用Python代码创建一个无向图的邻接矩阵的示例:
```python
# 创建一个无向图的邻接矩阵
n = 5 # 图中有5个顶点
graph = [[0] * n for _ in range(n)] # 初始化邻接矩阵
# 添加边
edges = [(0, 1), (0, 4), (1, 2), (1, 3), (1, 4), (2, 3), (3, 4)]
for u, v in edges:
graph[u][v] = 1
graph[v][u] = 1
# 输出邻接矩阵
for row in graph:
print(row)
```
输出结果:
```
[0, 1, 0, 0, 1]
[1, 0, 1, 1, 1]
[0, 1, 0, 1, 0]
[0, 1, 1, 0, 1]
[1, 1, 0, 1, 0]
```
可以看到,邻接矩阵中每个元素表示两个顶点之间是否有边。例如,第1行第2列和第1列第5行的值为1,表示顶点0和顶点1之间、顶点0和顶点4之间有一条边。
用邻接矩阵创建无向图
要用邻接矩阵创建无向图,你需要先确定图中的顶点数量。然后,创建一个大小为顶点数量的二维矩阵,初始化所有元素为0。接下来,对于每条边 (u, v),将矩阵的第 u 行第 v 列和第 v 行第 u 列的元素设置为1,表示存在一条连接顶点 u 和 v 的边。
以下是一段示例代码,展示了如何用邻接矩阵创建无向图:
```python
# 定义顶点数量
num_vertices = 5
# 创建一个大小为 num_vertices x num_vertices 的邻接矩阵
adj_matrix = [[0] * num_vertices for _ in range(num_vertices)]
# 添加边 (u, v)
def add_edge(u, v):
adj_matrix[u][v] = 1
adj_matrix[v][u] = 1
# 示例:添加三条边
add_edge(0, 1)
add_edge(1, 2)
add_edge(2, 3)
# 打印邻接矩阵
for row in adj_matrix:
print(row)
```
输出结果为:
```
[0, 1, 0, 0, 0]
[1, 0, 1, 0, 0]
[0, 1, 0, 1, 0]
[0, 0, 1, 0, 0]
[0, 0, 0, 0, 0]
```
这个邻接矩阵表示了一个有 5 个顶点的无向图,其中的 1 表示存在边,0 表示不存在边。
阅读全文