邻接矩阵设计基本操作演示
时间: 2023-10-16 17:08:12 浏览: 76
图论邻接矩阵,邻接表的建立c++ 数据结构课程设计
5星 · 资源好评率100%
邻接矩阵的设计基本操作包括创建图、添加节点、添加边、删除节点、删除边、查找节点和遍历图等操作。下面我演示一下这些基本操作的实现过程:
1. 创建图
创建图需要确定节点个数和边的数量,可以通过二维数组来表示。以下是一个示例代码:
```python
class Graph:
def __init__(self, num):
self.num = num
self.matrix = [[0] * num for _ in range(num)]
```
2. 添加节点
添加节点可以通过修改节点个数来实现,同时需要调整邻接矩阵的大小。以下是一个示例代码:
```python
class Graph:
def add_node(self):
self.num += 1
for row in self.matrix:
row.append(0)
self.matrix.append([0] * self.num)
```
3. 添加边
添加边需要确定边的起点和终点以及权重(如果有的话),同时需要修改邻接矩阵中对应位置的值。以下是一个示例代码:
```python
class Graph:
def add_edge(self, start, end, weight=1):
self.matrix[start][end] = weight
self.matrix[end][start] = weight
```
4. 删除节点
删除节点需要先删除与其相关的边,然后再将节点从邻接矩阵中删除。以下是一个示例代码:
```python
class Graph:
def remove_node(self, node):
for i in range(self.num):
if i == node:
continue
self.remove_edge(i, node)
del self.matrix[node]
self.num -= 1
for i in range(self.num):
del self.matrix[i][node]
```
5. 删除边
删除边需要确定边的起点和终点,然后将邻接矩阵中对应位置的值修改为0。以下是一个示例代码:
```python
class Graph:
def remove_edge(self, start, end):
self.matrix[start][end] = 0
self.matrix[end][start] = 0
```
6. 查找节点
查找节点可以通过遍历邻接矩阵来实现,找到节点后返回其索引。以下是一个示例代码:
```python
class Graph:
def find_node(self, value):
for i in range(self.num):
if i == value:
return i
return -1
```
7. 遍历图
遍历图可以通过深度优先搜索(DFS)或广度优先搜索(BFS)来实现。以下是一个示例代码:
```python
class Graph:
def dfs(self, node, visited=None):
if visited is None:
visited = set()
visited.add(node)
for i in range(self.num):
if self.matrix[node][i] != 0 and i not in visited:
self.dfs(i, visited)
return visited
def bfs(self, node):
visited = set()
queue = [node]
while queue:
node = queue.pop(0)
if node not in visited:
visited.add(node)
for i in range(self.num):
if self.matrix[node][i] != 0 and i not in visited:
queue.append(i)
return visited
```
以上是邻接矩阵的设计基本操作的实现演示。
阅读全文