Bellman Ford and One Olympiad Questions?

后端 未结 2 1774
梦如初夏
梦如初夏 2021-02-19 09:01

I took an Olympiad Exam three days ago. I ran into a nice question as follows.

We know the bellman-ford algorithm checks all edges in each step, and for each edge if,

2条回答
  •  误落风尘
    2021-02-19 09:25

    1 is incorrect. First of all, we always find shortest paths with k edges, if any. But also, if we happen to relax the arcs in the topological order of a shortest path tree, then we converge in one iteration, despite the fact that the shortest path tree may be arbitrarily deep.

    s --> t --> u --> v
    
    Relax s->t, t->u, u->v; shortest path from s->v is three hops,
    but B--F has made two iterations.
    

    2 is incorrect, because who knows what the weights are?

      100
    s --> t
    
    Relax s->t; weight is 100, but B--F has made two iterations.
    

    3 is correct, because by an averaging argument at least one arc of a negative cycle would be unrelaxed. Let v1, ..., vn be a cycle. Since the arcs are relaxed, we have d(vi) + len(vi->vi+1) - d(vi+1) >= 0. Sum the inequalities for all i and telescope the d terms to simplify to sum_i len(vi->vi+1) >= 0, which says that the cycle is nonnegative.

提交回复
热议问题