Table of Contents
The aim of this chapter is to give some background to the rather informal explanations of the previous chapters. The relation between relational growth grammars and the programming languages XL and Java is clarified.
As has been stated in the introduction, growth grammars are a rule-based approach to the modelling of dynamic systems. The dynamics is implemented by replacement rules, examples of which you have seen in the previous chapters.
In the context of rule-based modelling, L-systems have proven to be very successful in the past decades. However, they use a simple internal representation of the structure as a linear string of symbols. Graph grammars have also been developed during the past decades; they represent the structure as it is, i.e., as a graph. But they have not yet been widely used in the context of modelling. Now relational growths grammars (RGG) are defined as a unification of L-systems and graph grammars in order to combine their advantages:
A graph is used as the representation of structure. You already have learned about this in Section 1.4, “Third example: Creating branched structures - The graph”. Nodes of the graph represent objects which may have a geometric or some model-specific meaning. They are connected by directed edges which represent the explicit relations between nodes.
Replacement rules implement the dynamics of the model. L-system-style rules are a subset of the possible rules, the preceding examples used L-system rules exclusively. But it is also possible to specify more complex rules which use and modify the structure of the graph in a more complex way.
The formalism is equipped with an integrated conventional (imperative) programming language. Using this language, all modelling aspects which cannot be implemented with rules alone are representable. The language is tightly connected with the graph structure.