创建无向图的邻接矩阵
时间: 2023-12-23 15:27:28 浏览: 28
创建无向图的邻接矩阵可以通过使用二维数组来表示图中的节点之间的连接关系。邻接矩阵是一个正方形矩阵,其中行和列分别表示图中的节点,矩阵中的元素表示节点之间的连接关系。
下面是一个示例代码,演示了如何创建无向图的邻接矩阵:
```python
# 定义图的节点数量
num_nodes = 5
# 创建一个空的邻接矩阵
adj_matrix = [[0] * num_nodes for _ in range(num_nodes)]
# 添加边的连接关系
edges = [(0, 1), (0, 4), (1, 2), (1, 3), (1, 4), (2, 3), (3, 4)]
for edge in edges:
node1, node2 = edge
# 在邻接矩阵中标记节点之间的连接关系
adj_matrix[node1][node2] = 1
adj_matrix[node2][node1] = 1
# 打印邻接矩阵
for row in adj_matrix:
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]
```
这个邻接矩阵表示了一个包含5个节点的无向图,其中1表示节点之间有连接,0表示节点之间没有连接。
相关问题
创建无向图邻接矩阵算法
在C++中,可以使用邻接矩阵来表示无向图。邻接矩阵是一个二维数组,其中的元素表示图中两个顶点之间的边的存在与否。
下面是一个简单的示例代码,展示了如何创建一个无向图的邻接矩阵:
```cpp
#include <iostream>
#include <vector>
using namespace std;
class Graph {
private:
int numVertices; // 图中顶点的数量
vector<vector<int>> adjMatrix; // 邻接矩阵
public:
// 构造函数
Graph(int num) {
numVertices = num;
adjMatrix.resize(numVertices, vector<int>(numVertices, 0));
}
// 添加边
void addEdge(int src, int dest) {
adjMatrix[src][dest] = 1;
adjMatrix[dest][src] = 1;
}
// 打印邻接矩阵
void printMatrix() {
for (int i = 0; i < numVertices; i++) {
for (int j = 0; j < numVertices; j++) {
cout << adjMatrix[i][j] << " ";
}
cout << endl;
}
}
};
int main() {
// 创建一个包含5个顶点的无向图
Graph graph(5);
// 添加边
graph.addEdge(0, 1);
graph.addEdge(0, 4);
graph.addEdge(1, 2);
graph.addEdge(1, 3);
graph.addEdge(1, 4);
graph.addEdge(2, 3);
graph.addEdge(3, 4);
// 打印邻接矩阵
graph.printMatrix();
return 0;
}
```
在上面的代码中,我们首先定义了一个`Graph`类,其中包含了私有成员变量`numVertices`表示图中顶点的数量,以及`adjMatrix`表示邻接矩阵。构造函数用于初始化邻接矩阵的大小。
然后,我们定义了`addEdge`函数用于添加边,这里我们使用1表示两个顶点之间存在边。注意,由于是无向图,所以我们需要同时在两个顶点之间设置边。
最后,我们定义了`printMatrix`函数用于打印邻接矩阵。
在`main`函数中,我们创建了一个包含5个顶点的无向图,并添加了一些边。然后,我们调用`printMatrix`函数打印邻接矩阵。
希望这个示例能够帮助你理解如何使用邻接矩阵来表示无向图。如果你有任何问题,请随时提问。
邻接矩阵创建无向图
邻接矩阵可以用来表示无向图,其中矩阵的行和列分别代表图中的节点,矩阵中的元素则表示相邻节点之间的连接情况。对于无向图,邻接矩阵是对称的,即矩阵中第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。最后,我们打印邻接矩阵,以便检查构建的图是否正确。