有一个图(请参见示例here),我正在使用字典来存储邻接矩阵:
{A:{B:a, C:a, D:a}, B:{A:a, E:b}, C:{A:a}, D:{A:a}, E:{B:b}}
大写字母是节点,小写字母是边。
我试图找到具有相同邻接关系的节点(在此示例中为C,D)。我该如何实施?更改邻接矩阵的数据结构很好。任何帮助将不胜感激。
答案 0 :(得分:0)
如果我正确理解了您的问题,那么如果您的数据类型是字典,那么这可以为您提供解决方案:
temp = {}
for key, value in your_dictionary.items():
temp.setdefault(value, set()).add(key)
如果您随后要从“词典”中检索具有相同值的键,则可以使用此键:
res = [values for key, values in temp.items() if len(values) > 1]
答案 1 :(得分:0)
您可以迭代该图,并使用==
运算符检查每个不同的节点的邻接细节是否相同。
graph = {
'A': {'B': 'a', 'C': 'a', 'D': 'a'},
'B': {'A': 'a', 'E': 'b'},
'C': {'A': 'a'},
'D': {'A': 'a'},
'E': {'B': 'b'},
}
res = {}
for u, u_adj in graph.items():
res.setdefault(u, [])
for v, v_adj in graph.items():
if u != v and u_adj == v_adj:
res[u].append(v)
print(res)