您好,我了解邻接表和矩阵的概念,但是对于如何在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}