【发布时间】:2015-12-11 22:29:23
【问题描述】:
在这里有点挣扎。我想实现深度优先搜索,这是一个邻接列表图。完全工作,但我对实施这样的搜索有点无能为力。在开始 DFS 之前是否需要添加堆栈类?任何帮助都会很棒!
class vertex:
def __init__(self, label, edges = []):
self.id = label
self.edges = []
class graph(vertex):
def __init__(self):
self.vertices = {}
def addVertex(self, label):
self.vertices[label] = vertex(label)
return self.vertices
def addEdge(self,frm,to):
self.vertices[frm].edges = self.vertices[frm].edges + [to]
return self.vertices
def dot(self):
for v in self.vertices:
for e in self.vertices[v].edges:
print "%s -> %s;"%(v, e)
def viewVertLink(self):
for v in self.vertices:
print ""
print "Vertex:","(",v,")"
for e in self.vertices[v].edges:
print "%s -> %s;"%(v, e)
if __name__ == '__main__':
g = graph()
for i in range(10):
str(g.addVertex(i))
str(g.addEdge(0,1))
str(g.addEdge(0,2))
str(g.addEdge(1,3))
str(g.addEdge(1,4))
str(g.addEdge(2,3))
str(g.addEdge(3,5))
str(g.addEdge(4,5))
str(g.addEdge(4,6))
str(g.addEdge(6,7))
str(g.addEdge(7,1))
str(g.addEdge(7,8))
str(g.addEdge(8,9))
str(g.addEdge(9,0))
print "digraph G{"
g.dot()
print "}"
【问题讨论】:
标签: graph stack depth-first-search