python-3.x - Python:使用一组邻接列表构建图
问题描述
你好,这是我的第一篇文章,我的英语不流利,如果我做错了发帖协议,请原谅我......
所以,我通过邻接矩阵有一个图的当前实现:
class GFG:
def __init__(self,graph):
self.graph = graph
我从这里开始:
my_shape = (N,M)
bpGraph = np.zeros(my_shape)
并添加这样的边缘:
vertex_a = 2
vertex_b = 5
bpGraph [vertex_a, vertex_b] = 1
g = GFG(bpGraph)
并检查这样的边缘:
if bpGraph [vertice_a, vertice_b]:
do something...
但是这种结构如果我有很多顶点的话会占用很多空间,所以我想切换到一个set map
class GFG:
def __init__(self,N,M):
mysetdict = {
"dummy_a": {"dummy_b","dummy_c"},
}
self.graph = mysetdict
def add_edges(self,N,M):
N_set = {}
if str(N) in self.graph:
N_set = self.graph[str(N)]
N_set.add(str(M))
self.graph[str(N)] = N_set
def check_edges(self,N,M):
return str(M) in self.graph[str(N)]
当我尝试添加顶点时,出现此错误:
g = GFG (3,4)
g.add_edges (0, 0)
AttributeError: 'dict' object has no attribute 'add'
---> 16 N_set.add(str(M))
我尝试了很多方法来构建这个集合,并在添加 vertex_a 以使用 vertex_b 做边之前检查是否存在条目,但我所有的尝试都会导致属性错误。
有什么建议么?
解决方案
解决了,只做 N_set = set()
def add_edges(self,N,M):
N_set = set()
if str(N) in self.m_graph:
N_set = self.m_graph[str(N)]
N_set.add(str(M))
self.m_graph[str(N)] = N_set
推荐阅读
- apache-kafka - 使用cloudera进行Kafka通信
- assembly - ARM - 内存地址编号实际指向哪里 - 地址的顶部或底部?
- c - fifo linux - write() 函数突然终止程序
- typescript - 检查变量是否属于 Typescript 中的自定义类型
- python-3.x - 如何将 touchripple.py 与 Kivy lang 一起使用?
- google-apps-script - 根据单元格值隐藏特定列
- swift - How To Link XCTest Dependency To Production / Main Target?
- imagemagick - 使用 IM 将所有图像调整为相同的绝对宽度
- javascript - Javascript游戏碰撞检测墙
- javascript - 关闭按钮时,它会使用 slideToggle 重新打开