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.

AFNIX Module                                          AFNIX                                               gfx(3)