code/BelmanFord.code
author lindenmannm
Tue, 08 Mar 2011 21:11:05 +0100
changeset 12 8e872e077a21
permissions -rw-r--r--
fs ml
lindenmannm@3
     1
DIST[s]=0;
lindenmannm@3
     2
Z[s]=0;
lindenmannm@3
     3
forall(v:V\{s}) {
lindenmannm@3
     4
    DIST[v]=infty;
lindenmannm@3
     5
    Z[v]=0;
lindenmannm@3
     6
}
lindenmannm@3
     7
U={s};
lindenmannm@3
     8
while(!U.Empty) {
lindenmannm@3
     9
    Wähle und streiche Knoten u am Kopf von U;
lindenmannm@3
    10
    Z[u]=Z[u]+1;
lindenmannm@3
    11
    if Z[u]>n
lindenmannm@3
    12
        return "negativer Zyklus";
lindenmannm@3
    13
    forall(e=(u,v):E) {
lindenmannm@3
    14
        if(DIST[v]>DIST[u]+c(u,v)) {
lindenmannm@3
    15
            DIST[v]=DIST[u]+c(u,v);
lindenmannm@3
    16
            U=[U,{v}];
lindenmannm@3
    17
}}}