如何解决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...
但是如果我有很多顶点,这种类型的结构会占用很多空间,所以我想切换到集合图
class GFG:
def __init__(self,N,M):
mysetdict = {
"dummy_a": {"dummy_b","dummy_c"},}
self.graph = mysetdict
def add_edges(self,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,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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。