我写了一些关于类图的代码,测试结果很奇怪。在这里,我将为您提供一些相关的代码。 图的这个功能是向图中添加一个顶点。
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}
但是,测试结果很奇怪,我发现在我只为图形添加边缘后所有节点都已连接。
[ 1