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