zoukankan      html  css  js  c++  java
  • DAG如何保证正确性?

    最近在看算法概论,关于DAG的思考:

    Q:为什么DAG需要按照拓扑排序的顺序来求最短路径?这样就可以保证正确性了?
    1.我们得从dijkstra算法的分析中得出结论。
    2.为什么dijkstra不能有负边?因为负边可能导致已经求出的最短路径dist(u)不正确(新发现的负边(v1,u)导致dist(u)可以更小)。
    3.负边导致dist(u)更小的原因,是我们在确定dist(u)时,u的度并没有考虑完全(至少(v1,u)还没有考虑到)。
    4.对DAG进行线性化(拓扑排序),然后按照顺序来更新dist(u),这样就可以避免已确定dist(u)继续被更改。因为每次考虑的u必满足入度为0,即所有可以到达它的边(包括负边(v1,u))都已经考虑到了。   
  • 相关阅读:
    享元模式及php实现
    共享内存
    LCD触屏驱动
    I2C驱动
    C++ & java小结
    使用GlobalKey启动APP
    socketpair通信
    inotify和epoll
    C语言之二叉树
    灯光系统
  • 原文地址:https://www.cnblogs.com/wang3/p/3208706.html
Copyright © 2011-2022 走看看