Fabian Kostadinov

A Short Introduction to Rhizomes

Be rk <= (ri, rj) a directed relation rk between the ordered pair of relata ri and rj, with rk ≠ ri and rk ≠ rj. We will call a relation a terminal iff ri = rj. Furthermore, we call ri (the left-hand-sided element in the ordered pair) the normative relatum and rj (the right-hand-sided element in the ordered pair) the associative relatum.


A _rhizome_ is recursively defined as a directed relation between two relata where both relata are directed relations themselves.

To be really of use a rhizome must be complemented by a (bidirectional) dictionary (or similar data structure) that maps between terminals and data items. The rhizome itself does not store any data in a traditional sense, but only relations.
Here is a picture of a sample rhizome:

A simple rhizome

This rhizome consists of four terminal and several non-terminal relations:

Terminals Non-Terminals
  • r5 <= (r1, r1)
  • r6 <= (r2, r2)
  • r7 <= (r3, r3)
  • r8 <= (r4, r4)
  • r9 <= (r8, r5)
  • r10 <= (r6, r7)
  • r11 <= (r5, r8)
  • r12 <= (r7, r5)
  • r13 <= (r12, r10)
  • r14 <= (r15, r12)
  • r15 <= (r8, r10)
  • r16 <= (r13, r15)

r1 to r4 are relata but not relators. Furthermore, r9, r11, r14 and r16 are only relators but not relata.

On the right-hand-side of the rhizome, we added a sample dictionary. The four characters A, B, C and D are stored in the dictionary and they were assigned a terminal relation each. The rhizome tree can be traversed from top to bottom replacing each relator through its pair of relata until all relations are resolved to terminals. Finally, the terminals are replaced with values stored in the dictionary. This is a list of relators and the character strings they represent:

It should be obvious from this simple example that relators higher up in the rhizome’s hierarchy encode longer character strings. A rhizome is not a data storage container in a traditional sense. Whereas in (unpacked) data containers a character string like DADADA contains the same characters D, A and the combination DA thereof multiple times, a rhizome is always without redundancy. At the same time, data is never simply read and retrieved from the storage system but must be regenerated for every single access.

Working with rhizomes requires the user to define a vocabulary of atomic symbols (such as the letters A to D in the example). All more complex data types (e.g. DDAC) will be combinations of these atomic symbols. As the vocabulary’s atomic data symbols are de facto immutable and because there exists always exactly one relator per ordered pair of relata, updating or deleting existing relations is - at least theoretically - not necessary.

A comparison with graphs

In computer science, a vast number of data structures are commonly represented as graphs. According to most definitions, a graph is a set of nodes (vertices) and edges (links, archs, spikes) between the nodes. Edges can be directed or undirected. Accepting such a definition for a graph, it should be noted that a rhizome is not a graph, as the only elements it consists of are relations (or directed edges). In graphs it is impossible to draw a link from one edge to another because edges are not “adressable” or “linkable”. The only way to link one edge to another is to make it a node itself. A rhizome is therefore more general or fundamental than a graph.

A further important distinction is the distinct need for storage. The storage need for a graph with a high degree of connectivity grows exponentially with an increasing number of nodes. In contrast, the required storage for a rhizome grows logarithmically with an increasing number of relations. This is because the expressive power of higher order relations in a rhizome grows exponentially, whereas it remains flat for added nodes in a graph.

comments powered by Disqus