Python 调用Dijkstra函数时出错
当我调用此函数时,会出现下面的错误,非常感谢您的任何想法 错误: dist,next=Dijkstra(图、汇、源) 第111行,在迪克斯特拉 S、 Q=列表(源[:]),范围(1,n+1) TypeError:“int”对象没有属性“getitem” 守则:Python 调用Dijkstra函数时出错,python,dijkstra,shortest-path,Python,Dijkstra,Shortest Path,当我调用此函数时,会出现下面的错误,非常感谢您的任何想法 错误: dist,next=Dijkstra(图、汇、源) 第111行,在迪克斯特拉 S、 Q=列表(源[:]),范围(1,n+1) TypeError:“int”对象没有属性“getitem” 守则: def Dijkstra(graph, sink, sources = None): n = len (graph.nodes ()) dist = {k+1:np.inf for k in range(n)} n
def Dijkstra(graph, sink, sources = None):
n = len (graph.nodes ())
dist = {k+1:np.inf for k in range(n)}
next = {k+1:None for k in range(n)}
dist[sink] = 0.0
S = list(sources[:])
Q = range(1,n+1)
while len(Q)>0:
min = np.inf
for v in Q:
if (dist[v] < min):
u=v
min = dist[v]
if min == np.inf: return dist, next
for s in S:
if u == s: S.remove(u)
if len(S)==0: return dist,next
Q.remove(u)
for a in graph.predecessors_iter(u):
v = a
alt = dist[u] + graph [v][u]["weight"]
if alt < dist[v]: dist[v] = alt; next[v] = u
return dist, next
def mainKSP(graph, sources, sink, K):
"""Find the K-shortest paths from sources to sink
Return value:
-------------
As: dictionary s.t. As[s]=[K-shortest paths from s to sink for s in sources]
"""
dist, next = Dijkstra(graph, sink, sources)
A0s = {s:get_path(s, sink, next) for s in sources}
return {s : YenKSP(graph, s, sink, K, A0s[s]) for s in sources}
graphnodes = [h for h in range (1, 24)]
path = mainKSP(network, graphnodes, 1, 3)
def Dijkstra(图形、接收器、源=无):
n=len(graph.nodes())
dist={k+1:np.inf表示范围(n)中的k}
next={k+1:范围(n)内的k无}
距离[水槽]=0.0
S=列表(源[:])
Q=范围(1,n+1)
当len(Q)>0时:
min=np.inf
对于Q中的v:
如果(距离[v]
我是一个python初学者,花了这么多时间才弄清楚S列表的错误,但没有成功。Dijkstra函数是从上面提供的另一个函数的内部调用的。错误表明您正在为
sources
参数传入int
。你还没有展示那个电话,所以我们不知道你为什么这么做。如果包含异常的完整回溯(而不仅仅是最后几行),我想我们也会看到调用。如何调用函数?代码经过编辑,以便您可以检查函数的调用方式。还添加了完整的追溯。谢谢该错误表明您正在为sources
参数传递int
。你还没有展示那个电话,所以我们不知道你为什么这么做。如果包含异常的完整回溯(而不仅仅是最后几行),我想我们也会看到调用。如何调用函数?代码经过编辑,以便您可以检查函数的调用方式。还添加了完整的追溯。谢谢