【发布时间】:2015-10-06 15:35:46
【问题描述】:
Python 不直接支持图形,但很多消息来源说它们可以使用字典来表示,例如。
graph = { "a" : ["c"],
"b" : ["c", "e"],
"c" : ["a", "b", "d", "e"],
"d" : ["c"],
"e" : ["c", "b"],
"f" : []
}
由于这是一个无向图,而字典是有向映射,看起来真的很不简洁。说 graph = {'x':['y'], 'y':['x']} 而不是 graph = {{'x', 'y'}} 真的更好吗?
【问题讨论】:
-
@EXO,它似乎适合邻接表的模型
-
许多图算法涉及扫描从给定节点辐射的边集。即使以一定数量的冗余为代价,拥有一种可以简化此操作的表示也是非常有用的。
-
想想你用图表做什么。你从一个节点开始,你想知道你可以从它到达哪些节点。你会如何用你的符号来做到这一点?您必须搜索元组列表,查找包含起始节点的任何对。
-
无向字典几乎肯定必须在内部实现为您问题中的字典。每次添加
a<=>b条目时,它实际上会将b推送到a=>[]列表并将a推送到b=>[]列表。否则,您如何使a和b的查找都高效? -
因此,如果这是您想要的,您可以轻松编写一个类来封装它。
标签: python math dictionary graph set