找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 3729|回复: 0

[讨论] 图中插入边,节点为什么莫名其妙地连接?

2

主题

2

帖子

2

积分

贫民

积分
2
Alain 发表于 2016-5-14 17:33:07 | 显示全部楼层 |阅读模式
因为作业要求,我用python写了个图,添加边时结果很奇怪,我贴下主要代码:
图有属性解释:vertexlist,字典,{节点标识符:节点内容}; adj,字典,图地邻接表,{节点:连接的节点}.
节点对象主要属性是linkto,字典,{相连接的节点对象:权值}
addLinkto(linktovertex)是向linkto中添加{linktovertex:0}, setLinkedNodeWeight(linktovertex,weight)是改变linkto[linktovertex]=weight
图里添加节点地函数:
def addVertex(self,vertexid):
self.vertexlist.update({vertexid:Node(category="M")})
self.adj[vertexid]=[]
self.size=self.size+1
图里添加边地函数:
def addEdge(self,startvertexid,endvertexid,weight=0):
if not self.containsVertex(startvertexid):
print("The start vertex is not in the graph")
exit(0)
if not self.containsVertex(endvertexid):
print("The end vertex is not in the graph")
exit(0)
linktovertex=self.getVertex(endvertexid)
tmp=self.getVertex(startvertexid)
tmp.addLinkto(linktovertex)
tmp.setLinkedNodeWeight(linktovertex,weight)
self.adj[startvertexid].append(endvertexid)
图中得到节点函数:
def getVertex(self,vertexid):
if self.containsVertex(vertexid):
return self.vertexlist[vertexid]
else:
return None
测试的时候奇怪地事就发生了:

反复测试后发现,尽管只增加了一条边,但所有节点都和'2'连接在了一起,也就是所有节点地linkto属性中都莫名其妙地出现了'2'所对应的节点对象,我已经不知所措了

测试结果

测试结果
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表