python - Python 中的邻接矩阵

标签 python adjacency-matrix

关于如何在 Python 中创建考虑权重的邻接矩阵,我找不到任何明确的解释。我认为创建起来应该相对简单。

我有以下矩阵...

   1   2   3   4   5   6
1  0   15  0   7   10  0
2  15  0   9   11  0   9
3  0   9   0   0   12  7
4  7   11  0   0   8   14
5  10  0   12  8   0   8
6  0   9   7   14  8   0

数字1到6是顶点,里面的数字是每个相邻顶点之间的权重。例如,边 1-2 的权重为 15。

我如何在 python 中实现它?我只需要一个简单的示例,不一定使用我提供的示例。

我知道如何创建邻接表...

graph = {'1': [{'2':'15'}, {'4':'7'}, {'5':'10'}],
    '2': [{'3':'9'}, {'4':'11'}, {'6':'9'}],
    '3': [{'5':'12'}, {'6':'7'}],
    '4': [{'5':'8'}, {'6':'14'}],
    '5': [{'6':'8'}]}

但我需要一个邻接矩阵。

最佳答案

我认为存储邻接矩阵最常见和最简单的概念是使用二维数组,在python中对应于嵌套列表

mat = [[0, 15, 0, 7, 10, 0], [15, 0, ...], [...], [...]]
m[0][1]  # = 15 (weight of 1-2)

如果值是只读的,您可以使用嵌套元组代替:)

当然,您可以随心所欲地使用字典或编写类并重新定义 __getattr__ 以提高访问时间和存储效率,因为矩阵是对称的。

关于python - Python 中的邻接矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29464252/

相关文章:

r - Boggle作弊......呃......用R中的图表解决

r - 加入两个邻接矩阵并保留值

r - 将多个节点向量合并到边列表中并将它们转换为邻接矩阵

python - 随机矩阵,各列值的总和不大于 1

python - 一种方法允许引发多种类型的异常还是只引发一种更好?

python 2.7 : Format a list within a list using for loops

c - 是否可以在不存储节点索引的情况下为图构造邻接矩阵

c - "too many arguments for format"警告

python - 是否有 Python 库来提取视频元数据,例如 [标题、描述、标题/字幕]?

python - 如何保持 (+/-) 数字的分隔符空间大小?