next up previous
    Next: Data Up: Prim's Algorithm Previous: Prim's Algorithm

    LDL++ Source Code

    database( {
        g( From:string, To:string, Cost:integer) 
    }).
    
    solved(0, a).          % nodes solved so far
    
    prim(I+1, l_c<(X, Y, C)>) <- solved(I, X), g(X, Y, C), ~solved(I,Y).
    
    solved(I+1, X) <- solved(I, X).
    solved(I, Y) <- prim(I, (X, Y, C)).
    
    single(l_c, (X, Y, C), (X,Y, C)).
    multi(l_c, (X1, Y1, C1), (X2, Y2, C2), (X2, Y2, C2)) <- C2 <C1.
    multi(l_c, (X1, Y1, C1), (X2,Y2, C2), (X1, Y1, C1)) <- C2 >= C1.
    
    edges(X, Y, C) <- prim(_, (X, Y, C)).
    
    export edges(X, Y, C).
    


    Haixun Wang
    4/22/1998