Provided by: afnix_3.8.0-1_amd64 bug

NAME

       gfx - standard graph module

STANDARD GRAPH MODULE

       The  Standard  Graph  module is an original implementation dedicated to the graph modeling
       and manipulation. At the heart of this module is the concept of edges  and  vertices.  The
       module also provides support for automaton.

       Graph concepts
       The  afnix-gfx  module provides the support for manipulating graphs. Formally a graph is a
       collection of edges and vertices. In a normal graph, an edge connects two vertices. On the
       other hand, a vertex can have several edges. When an edge connects several vertices, it is
       called an hyperedge and the resulting structure is called an hypergraph.

       Edge class
       The Edge class is a class used for a graph construction in  association  with  the  Vertex
       class.  An  edge is used to connect vertices. Normally, an edge connects two vertices. The
       number of vertices attached to an edge is called the cardinality of that  edge.  When  the
       edge  cardinality is one, the edge is called a self-loop. This mean that the edge connects
       the vertex to itself. This last point is merely a definition but present the advantage  of
       defining an hyperedge as a set of vertices.

       Vertex class
       The  Vertex is the other class used for the graph construction. and operates with the edge
       class. A vertex is used to reference edges. the number of edges referenced by a vertex  is
       called the degree of that vertex.

       Graph
       The  Graph  class is class that represent either a graph or a hypergraph. By definition, a
       graph is collection of edges and vertices. There are numerous property attached to  graph.
       Formally,  a  graph  consists  of  a  set  of  edges, a set of vertices and the associated
       endpoints. However, the implementation is designed in a way so that each edge  and  vertex
       carry  its associated objects. This method ensures that the graph is fully defined by only
       its two sets.

       Graph construction
       The graph construction is quite simple and proceed by adding edges and vertices. The  base
       system  does not enforce rules on the graph structure. it is possible to add con connected
       vertices as well as unreferenced edges.

       Edge construction
       An edge is constructed by simply invoking the default constructor.  Optionally,  a  client
       object can be attached to the edge.

       # create a default edge
       const edge (afnix:gfx:Edge)
       # create an edge with a client object
       const hello (afnix:gfx:Edge "hello")

       The  edge-p  predicate  can  be used to check for the object type. When an edge is created
       with client object, the get-client method can be used to access that object.

       Vertex construction
       A vertex is constructed a way similar to the Edge> object. The vertex  is  constructed  by
       simply  invoking  the  default constructor. Optionally, a client object can be attached to
       the edge.

       # create a default vertex
       const vrtx (afnix:gfx:Vertex)
       # create an vertex with a client object
       const world (afnix:gfx:Vertex "world")

       The vertex-p predicate can be used to check for the object type. When a vertex is  created
       with a client object, the get-client method can be used to access that object.

       Graph construction
       A  graph  is  constructed by simply adding edges and vertices to it. The graph-p predicate
       can be use to assert the graph type. the graph class also supports the concept  of  client
       object which can be attached at construction or with the set-client method.

       const graph (afnix:gfx:Graph)

       The  add  method can be used to add edges or vertices to the graph. The important point is
       that during the construction process, the graph  structure  is  updated  with  the  proper
       number of edge and vertices.

       # create a graph
       const  g    (afnix:gfx:Graph)
       assert true (afnix:gfx:graph-p g)
       # create an edge and add vertices
       const edge (afnix:gfx:Edge)
       edge:add   (afnix:gfx:Vertex "hello")
       edge:add   (afnix:gfx:Vertex "world")
       assert 2   (edge:degree)
       # add the edge to the graph and check
       g:add edge
       assert 1 (g:number-of-edges)
       assert 2 (g:number-of-vertices)
       # check for nodes and edges
       assert true (afnix:gfx:edge-p   (g:get-edge   0))
       assert true (afnix:gfx:vertex-p (g:get-vertex 0))
       assert true (afnix:gfx:vertex-p (g:get-vertex 1))

STANDARD GRAPH REFERENCE

       State
       The State class is a class the graph object library. The state is used to model vertex and
       edge and can be used seldom in structure like finite automaton.

       Predicate

              state-p

       Inheritance

              Serial

       Constructors

              State (none)
              The State constructor create an empty state.

              State (Object)
              The State constructor create a state edge with a client object.

       Methods

              clear -> none (none)
              The clear method clear the state marker.

              get-index -> Integer (none)
              The get-idex method returns the state index.

              set-idnex -> none (Integer)
              The set-index method sets the state index.

              get-client -> Object (none)
              The get-client method returns the state client object. If the client object is  not
              set, nil is returned.

              set-client -> Object (Object)
              The  set-client method sets the state client object. The object is returned by this
              method.

       Edge
       The Edge class is a class used for a graph construction in  association  with  the  Vertex
       class.  An  edge is used to connect vertices. Normally, an edge connects two vertices. The
       number of vertices attached to an edge is called the cardinality of that  edge.  A  client
       object can also be attached to the class.

       Predicate

              edge-p

       Inheritance

              State, Collectable

       Constructors

              Edge (none)
              The Edge constructor create an empty edge.

              Edge (Object)
              The Edge constructor create an edge with a client object.

       Methods

              reset -> none (none)
              The reset method reset all vertices attached to the edge.

              cardinality -> Integer (none)
              The  cardinality  method returns the cardinality of the edge. The cardinality of an
              edge is the number of attached vertices.

              add -> Vertex (Vertex)
              The add method attach a vertex to this edge. The method return the argument vertex.

              get -> Vertex (Integer)
              The get method returns the attached vertex by index. If the index is out-of  range,
              and exception is raised.

       Vertex
       The  Vertex  class  is  a class used for a graph construction in association with the Edge
       class. An vertex is an edge node. The number of edges referenced by a vertex is called the
       degree of that vertex. A client object can also be attached to the object.

       Predicate

              vertex-p

       Inheritance

              State, Collectable

       Constructors

              Vertex (none)
              The Vertex constructor create an empty vertex.

              Vertex (Object)
              The Vertex constructor create a vertex with a client object.

       Methods

              reset -> none (none)
              The reset method reset all edges attached to the vertex.

              degree -> Integer (none)
              The  degree  method returns the degree of the vertex. The degree of a vertex is the
              number of referenced edges.

              add -> Edge (Edge)
              The add method references an edge with this vertex. The method return the  argument
              edge.

              get -> Edge (Integer)
              The  get method returns the referenced edge by index. If the index is out-of range,
              and exception is raised.

       Graph
       The Graph object is a general graph class that manages a set of edges  and  vertices.  The
       graph operates by adding edges and vertices to it.

       Predicate

              graph-p

       Inheritance

              Object

       Constructors

              Graph (none)
              The Graph constructor create an empty graph.

       Methods

              reset -> none (none)
              The reset method reset the graph

              clear -> none (none)
              The clear method clear the graph

              add -> Object (Vertex|Edge)
              The  add  method  adds  a  vertex or an edge to the graph. When adding an edge, the
              methods check that the source and target vertices are also part of the graph.