Python 如何修改dijkstra以计算最小最大瓶颈路线?
编辑:找到解决方案,这是找到最小-最大瓶颈路由的工作算法Python 如何修改dijkstra以计算最小最大瓶颈路线?,python,algorithm,dijkstra,weighted-graph,Python,Algorithm,Dijkstra,Weighted Graph,编辑:找到解决方案,这是找到最小-最大瓶颈路由的工作算法 def dijkstra(g,s): for i in g.vertices: g.dist[i] = INF g.pred[i] = 0 g.dist[s] = 0 queue = [i for i in g.vertices] while len(queue) > 0: minval = INF u = 0 f
def dijkstra(g,s):
for i in g.vertices:
g.dist[i] = INF
g.pred[i] = 0
g.dist[s] = 0
queue = [i for i in g.vertices]
while len(queue) > 0:
minval = INF
u = 0
for vert in queue:
if g.dist[vert] < minval:
minval = g.dist[vert]
u = vert
queue.remove(u)
for edge in g.adj_list[u]:
v = edge.node
if g.dist[v] > max(g.dist[u], edge.weight):
g.dist[v] = max(g.dist[u], edge.weight)
g.pred[v] = u
def dijkstra(g,s):
对于g中的i顶点:
g、 dist[i]=INF
g、 pred[i]=0
g、 距离[s]=0
队列=[i代表g中的i]
当len(队列)>0时:
minval=INF
u=0
对于队列中的vert:
如果g.dist[vert]最大值(g.dist[u],边缘重量):
g、 距离[v]=最大值(g.距离[u],边缘重量)
g、 pred[v]=u
这就是我现在用Python编写的dijkstra,但我不知道应该如何修改它,以计算具有最小可能最大重量的路线
def dijkstra(g,s):
for i in g.vertices:
g.dist[i] = INF
g.pred[i] = 0
g.dist[s] = 0
queue = [i for i in g.vertices]
while len(queue) > 0:
minval = INF
u = 0
for vert in queue:
if g.dist[vert] < minval:
minval = g.dist[vert]
u = vert
queue.remove(u)
for edge in g.adj_list[u]:
v = edge.node
if g.dist[v] > g.dist[u] + edge.weight:
g.dist[v] = g.dist[u] + edge.weight
g.pred[v] = u
def dijkstra(g,s):
对于g中的i顶点:
g、 dist[i]=INF
g、 pred[i]=0
g、 距离[s]=0
队列=[i代表g中的i]
当len(队列)>0时:
minval=INF
u=0
对于队列中的vert:
如果g.dist[vert]g.dist[u]+边缘重量:
g、 距离[v]=克距离[u]+边缘重量
g、 pred[v]=u
我不能确定最大瓶颈路径,我猜它是一条从S到t的路径,它的最小边是最大的。如果是这样,我认为我们不能设置一个队列来保持montonicity(我觉得这是diji的本质)。也许你只能对bfs使用二进制搜索?如果我没有弄错你,试试看,S是1,t是5
5 5
1 2 12
1 3 11
2 4 9
3 4 11
4 5 11