Python中的邻接表和邻接矩阵

您好,我了解邻接表和矩阵的概念,但是对于如何在Python中实现它们感到困惑:

一种实现以下两个示例的算法,但是他们一开始就在示例中对其进行硬编码时却一无所知:

对于邻接表:

    a, b, c, d, e, f, g, h = range(8) 

N = [

{b:2, c:1, d:3, e:9, f:4}, # a

{c:4, e:3}, # b

{d:8}, # c

{e:7}, # d

{f:5}, # e

{c:2, g:2, h:2}, # f

{f:1, h:6}, # g

{f:9, g:8} # h

]

对于邻接矩阵:

    a, b, c, d, e, f, g, h = range(8) 

_ = float('inf')

# a b c d e f g h

W = [[0,2,1,3,9,4,_,_], # a

[_,0,4,_,3,_,_,_], # b

[_,_,0,8,_,_,_,_], # c

[_,_,_,0,7,_,_,_], # d

[_,_,_,_,0,5,_,_], # e

[_,_,2,_,_,0,2,2], # f

[_,_,_,_,_,1,0,6], # g

[_,_,_,_,_,9,8,0]] # h

再次感谢您的任何帮助,谢谢!

回答:

假设:

edges = [('a', 'b'), ('a', 'b'), ('a', 'c')]

这是矩阵的一些代码:

from collections import defaultdict

matrix = defaultdict(int)

for edge in edges:

matrix[edge] += 1

print matrix['a', 'b']

2

而对于“列表”:

from collections import defaultdict

adj_list = defaultdict(lambda: defaultdict(lambda: 0))

for start, end in edges:

adj_list[start][end] += 1

print adj_list['a']

{'c': 1, 'b': 2}

以上是 Python中的邻接表和邻接矩阵 的全部内容, 来源链接: utcz.com/qa/429247.html

回到顶部