Unweighted graph-processing utilities

Author(s): Richard A. O'Keefe (original shared code), Mats Carlsson (adapted from original code), Francisco Bueno (modifications), Manuel Carro (modifications).

An unweighted directed graph (ugraph) is represented as a list of (vertex-neighbors) pairs, where the pairs are in standard order (as produced by keysort with unique keys) and the neighbors of each vertex are also in standard order (as produced by sort), and every neighbor appears as a vertex even if it has no neighbors itself.

An undirected graph is represented as a directed graph where for each edge (U,V) there is a symmetric edge (V,U).

An edge (U,V) is represented as the term U-V.

A vertex can be any term. Two vertices are distinct iff they are not identical (==/2).

A path is represented as a list of vertices. No vertex can appear twice in a path.

Usage and interface

Documentation on exports

No further documentation available for this predicate.

PREDICATEneighbors/3

Usage:neighbors(Vertex,Graph,Neighbors)

Is true if Vertex is a vertex in Graph and Neighbors are its neighbors.

PREDICATEedges/2

Usage:edges(Graph,Edges)

Unifies Edges with the edges in Graph.

PREDICATEdel_edges/3

Usage:del_edges(Graph1,Edges,Graph2)

Is true if Graph2 is Graph1 with Edges removed from it.

PREDICATEadd_edges/3

Usage:add_edges(Graph1,Edges,Graph2)

Is true if Graph2 is Graph1 with Edges and their 'to' and 'from' vertices added to it.

PREDICATEvertices/2

Usage:vertices(Graph,Vertices)

Unifies Vertices with the vertices in Graph.

Usage:del_vertices(Graph1,Vertices,Graph2)

Is true if Graph2 is Graph1 with Vertices and all edges to and from Vertices removed from it.

Usage:add_vertices(Graph1,Vertices,Graph2)

Is true if Graph2 is Graph1 with Vertices added to it.

PREDICATEtranspose/2

Usage:transpose(Graph,Transpose)

Is true if Transpose is the graph computed by replacing each edge (u,v) in Graph by its symmetric edge (v,u). It can only be used one way around. The cost is O(N^2).

Usage:rooted_subgraph(Graph,Sources,SubGraph)

SubGraph is the subgraph of Graph which is reachable from Sources.

PREDICATEpoint_to/3

Usage:point_to(Vertex,Graph,Point_to)

Is true if Point_to is the list of nodes which go directly to Vertex in Graph.

REGTYPEugraph/1

Usage:ugraph(Graph)

Graph is an ugraph.

    Documentation on imports

    This module has the following direct dependencies: