如何在python中使用BFS Algo打印顶点?

时间:2018-07-22 11:59:14

标签: python-3.x function dictionary graph-theory breadth-first-search

问题出在这行 RAM 10:10 10:40 coding RAM 10:50 11:30 documentation 中,当我打印此代码时,我无法获取当前连接到(graph.vertList[currentVert].getConnections())的所有已连接节点的列表所有连接的对象currentVert
我无法找到这些对象的node(vertex)或id,因此,我可以轻松地从一个节点遍历到另一个节点并同时打印结果。

我无法修正该错误,这是完整的代码:-

print(g.vertList[1].getConnections())
dict_keys([<__main__.Vertex object at 0x7f7a7db9a3c8>, <__main__.Vertex object at 0x7f7a7db9a2e8>])

然后我创建另一个class Queue: def __init__(self): self.queue=[] def enqueue(self,item): self.queue.insert(0,item) def isEmpty(self): return self.queue == [] def dequeue(self): return self.queue.pop() def size(self): return len(self.queue)

class Vertex

另一个class Vertex: def __init__(self,key): self.id=key self.connectedTo={} def addNeighbor(self,nbr,weight=0): self.connectedTo[nbr]=weight def __str__(self): return str(self.id)+' Connected To : '+str([x.id for x in self.connectedTo]) def getConnections(self): return self.connectedTo.keys() def getId(self): return self.id def getWeight(self,nbr): return self.connectedTo[nbr]

class Graph

此后,我创建了一个功能 class Graph: def __init__(self): self.vertList={} self.numVertices=0 def addVertex(self,key): self.numVertices=self.numVertices+1 newVertex=Vertex(key) self.vertList[key]=newVertex return newVertex def addEdges(self,f,t,cost=0): if f in self.vertList: if t in self.vertList: self.vertList[f].addNeighbor(self.vertList[t],cost) else: return "Not present in Graph" else: return "Not present in Graph" def getVertex(self,n): if n in self.vertList: return self.vertList[n] else: return None def getVertices(self): return self.vertList.keys() (宽度优先搜索)

bfs

如何解决此问题?

1 个答案:

答案 0 :(得分:0)

问题在这里:

self.vertList[f].addNeighbor(self.vertList[t],cost)

将此更改为

self.vertList[f].addNeighbor(t,cost)

它应该可以工作。