为什么在图形中添加边时连接所有顶点?

时间:2016-05-14 11:07:48

标签: python

我写了一些关于类图的代码,测试结果很奇怪。在这里,我将为您提供一些相关的代码。 图的这个功能是向图中添加一个顶点。

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)

图的这个功能是通过使用这个顶点的id来获取顶点。

def getVertex(self,vertexid):
    if self.containsVertex(vertexid):
        return self.vertexlist[vertexid]
    else:
        return None

Node类的这个功能是将一个连接的节点添加到自身:

def addLinkto(self,vertexid):
    self.linkto[vertexid]=0 

类Node的这个功能是将属性link更新为:

def setLinkedNodeWeight(self,vertex,weight):
    self.linkto[vertex]=weight

对某些属性的解释:

Class Graph:
self.vertexlist is a dict(), {id of vertex in the graph:the object of vertex}
self.adj is a dict(),an adjacency list of graph, {id of vertex: id of other vertices}
Class Node:
self.linkto, dict(),{the connected object of node: weight}

但是,测试结果很奇怪,我发现在我只为图形添加边缘后所有节点都已连接。

[the test result] 1

0 个答案:

没有答案