python 实现将带权图图的领接矩阵转换成邻接表,和将邻接表转换成邻接矩阵
时间: 2023-10-06 14:06:44 浏览: 138
将带权图的领接矩阵转换成邻接表可以按照如下步骤进行:
1. 遍历领接矩阵,找到每个非零元素;
2. 对于每个非零元素,将其所在的行表示的节点与列表示的节点之间添加一条边;
3. 如果图是有向图,则只需将该边添加到起点的邻接表中;
4. 如果图是无向图,则需要将该边同时添加到起点和终点的邻接表中。
Python 代码实现如下:
```python
def matrix_to_list(matrix):
n = len(matrix)
graph = {}
for i in range(n):
for j in range(n):
if matrix[i][j] != 0:
if i not in graph:
graph[i] = []
graph[i].append((j, matrix[i][j]))
return graph
```
将邻接表转换成邻接矩阵可以按照如下步骤进行:
1. 遍历邻接表,找到每个节点以及其邻居节点;
2. 对于每个节点及其邻居节点,将其在邻接矩阵中对应位置的值置为其边权值;
3. 注意区分有向图和无向图,无向图需要将对称的两个位置的值都置为边权值。
Python 代码实现如下:
```python
def list_to_matrix(graph, directed=False):
n = len(graph)
matrix = [[0] * n for _ in range(n)]
for node in graph:
for neighbor, weight in graph[node]:
matrix[node][neighbor] = weight
if not directed:
matrix[neighbor][node] = weight
return matrix
```
注意,这里的邻接表使用字典来存储,字典的键表示节点,值为一个列表,其中每个元素是一个二元组,表示该节点与其邻居节点之间的边权值。
阅读全文
相关推荐
![pptx](https://img-home.csdnimg.cn/images/20241231044947.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pptx](https://img-home.csdnimg.cn/images/20241231044947.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)