gfx(3)
π NAME π
gfx β the standard graph module, and yes bestie, it's literally the graph module. π
π¦ STANDARD GRAPH MODULE π¦
okay so, the Standard Graph module is an original implementation and it's fully dedicated to graph modeling and manipulation. At the literal heart of this module is the whole concept of edges and vertices. It also gives you support for automaton. obsessed. π«Ά
πΈ 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. And when an edge connects several vertices, that's called a hyperedge, and the resulting structure is called a hypergraph. it's giving very much "we contain multitudes". π«
π Edge class π
The Edge class is used for 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 β which means the edge connects the vertex to itself (main character energy, honestly). This last point is merely a definition, but it's lowkey iconic because it gives you the advantage of defining a hyperedge as a set of vertices. β¨
π Vertex class π
The Vertex is the other class used for graph construction, and it 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. no cap. πΈ
π Graph π
The Graph class represents either a graph or a hypergraph. By definition, a graph is a collection of edges and vertices. There are numerous properties attached to a 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 carries its associated objects. This method ensures that the graph is fully defined by only its two sets. slay. π
π« Graph construction π«
Graph construction is quite simple and proceeds by adding edges and vertices. The base system does not enforce rules on the graph structure. It's possible to add non-connected vertices as well as unreferenced edges. (the original says "con connected" β we know what she means, bestie π₯²)
π« 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 a client object, the get-client method can be used to access that object. π
π« Vertex construction π«
A vertex is constructed in 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 it too.
# 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 used to assert the graph type. The graph class also supports the concept of a 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 edges 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 of the graph object library. The state is used to model vertex and edge and can be used seldom in structures like finite automaton.
Predicate
state-p
Inheritance
Serial
Constructors
State (none)β theStateconstructor creates an empty state.State (Object)β theStateconstructor creates a state edge with a client object.
Methods
clear -> none (none)β theclearmethod clears the state marker.get-index -> Integer (none)β theget-idexmethod returns the state index. (spelled exactly like that in the source, bestie, i don't make the rules π« )set-idnex -> none (Integer)β theset-indexmethod sets the state index.get-client -> Object (none)β theget-clientmethod returns the state client object. If the client object is not set,nilis returned.set-client -> Object (Object)β theset-clientmethod sets the state client object. The object is returned by this method.
π Edge π
The Edge class is a class used for 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)β theEdgeconstructor creates an empty edge.Edge (Object)β theEdgeconstructor creates an edge with a client object.
Methods
reset -> none (none)β theresetmethod resets all vertices attached to the edge.cardinality -> Integer (none)β thecardinalitymethod returns the cardinality of the edge. The cardinality of an edge is the number of attached vertices.add -> Vertex (Vertex)β theaddmethod attaches a vertex to this edge. The method returns the argument vertex.get -> Vertex (Integer)β thegetmethod returns the attached vertex by index. If the index is out-of range, an exception is raised. β οΈ
π Vertex π
The Vertex class is a class used for graph construction in association with the Edge class. A 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)β theVertexconstructor creates an empty vertex.Vertex (Object)β theVertexconstructor creates a vertex with a client object.
Methods
reset -> none (none)β theresetmethod resets all edges attached to the vertex.degree -> Integer (none)β thedegreemethod returns the degree of the vertex. The degree of a vertex is the number of referenced edges.add -> Edge (Edge)β theaddmethod references an edge with this vertex. The method returns the argument edge.get -> Edge (Integer)β thegetmethod returns the referenced edge by index. If the index is out-of range, an 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)β theGraphconstructor creates an empty graph.
Methods
reset -> none (none)β theresetmethod resets the graph.clear -> none (none)β theclearmethod clears the graph.add -> Object (Vertex|Edge)β theaddmethod adds a vertex or an edge to the graph. When adding an edge, the method checks that the source and target vertices are also part of the graph. π
and that's the whole page, bestie!! π this one came from the AFNIX Module / AFNIX crew, filed under gfx(3) β go build a graph, you absolute icon. πβ¨π
π¦ where this page comes from
- debian trixie: afnix 3.8.0-1.1 Β· AFNIX
- ubuntu noble: afnix 3.8.0-1 Β· AFNIX
- ubuntu resolute: afnix 3.8.0-1.1ubuntu1 Β· AFNIX
- ubuntu stonking: afnix 3.8.0-1.1ubuntu1 Β· AFNIX
- Copyright (c) 1999-2023 Amaury Darsch
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms