我需要在下面的代码中实现“乳房优先搜索”。
这是行不通的,因为我的脑海里有一个错误
。
回溯(最近通话最近一次):
文件“”,第1行,在 runfile('C:/Users/psh93/.spyder-py3/Breadth_First_Search.py',wdir ='C:/Users/psh93/.spyder-py3')
runfile中的文件“ D:\ Anaconda \ lib \ site-packages \ spyder_kernels \ customize \ spydercustomize.py”,第827行 execfile(文件名,命名空间)
execfile中的文件“ D:\ Anaconda \ lib \ site-packages \ spyder_kernels \ customize \ spydercustomize.py”,第110行 exec(compile(f.read(),文件名,'exec'),命名空间)
文件“ C:/Users/psh93/.spyder-py3/Breadth_First_Search.py”,第51行,在 graph.BFS(1)
BFS中的文件“ C:/Users/psh93/.spyder-py3/Breadth_First_Search.py”,第33行 queue.append(self.E [n])
TypeError:不可散列的类型:“列表”
。
这是我的代码。
class Vertex:
def __init__(self, ID=0, data=None):
self.id = ID
self.data = data
self.Visited = False
class Graph:
def __init__(self):
self.V = {}
self.E = {}
def addVertex(self, vertex=None):
if vertex == None: return
self.V[vertex.id] = vertex
self.E[vertex.id] = []
def addEdge(self, start_id=None, end_id=None):
if start_id == None or end_id == None: return
self.E[start_id].append(end_id)
def BFS(self, first):
#queue = [first]
#visited = []
#while queue:
#n = queue.pop(0)
#if n not in visited:
#visited.append(n)
#queue.append(self.E[n])
#print(visited)
if __name__ == '__main__':
graph = Graph()
vertices = [(1, "A"), (2, "B"), (3, "C"), (4, "D"), (5, "E"), (6, "F"), (7, "G")]
edges = [(1,2), (1,3), (2,4), (2,5), (3,4), (3,6), (4,5), (4,7), (5,7), (6,7)]
for (idx, data) in vertices:
v = Vertex(idx, data)
graph.addVertex(v)
for (s, e) in edges:
graph.addEdge(s, e)
graph.BFS(1)
标记为#的区域就是问题所在。
def BFS(self, first)
除BFS之外,没有其他触摸代码
的输出
graph.BFS(1)
我想得到1> 2> 3> 4> 5> 6> 7。
我该怎么办?
感谢您阅读长代码。