210 likes | 334 Views
Struktur-Funktions-Modelle von Pflanzen - Sommersemester 2014 - Winfried Kurth Universität Göttingen, Lehrstuhl Computergrafik und Ökologische Informatik 7. Vorlesung: 26. 6. 2014. zuletzt: kontextsensitive Regeln Interpretationsregeln Graph als mathematische Grundstruktur
E N D
Struktur-Funktions-Modelle von Pflanzen - Sommersemester 2014 - Winfried Kurth Universität Göttingen, Lehrstuhl Computergrafik und Ökologische Informatik 7. Vorlesung: 26. 6. 2014
zuletzt: • kontextsensitive Regeln • Interpretationsregeln • Graph als mathematische Grundstruktur • (ein Exkurs: topologische Analyse von Graphen) • Graph-Ersetzungsregeln
als nächstes: • Funktionsweise von relationalen Wachstumsgrammatiken • zwei Regelsorten: L-System- und SPO-Regeln • ein weiterer Regeltyp: Aktualisierungsregeln • Notation von Graphen in XL
Wiederholung: Relationale Wachstumsgrammatiken (RGG: Relational Growth Grammars, parallele Graph-Gramm.) Zusammenfassung: Aufbau einer Regel einer RGG
• Grammatik modifiziert direkt den Graphen, Umweg über String-Codierung entfällt (bzw. wird nur noch für Regel-Eingabe gebraucht)
RGG als Verallgemeinerungen von L-Systemen: Zeichenketten entsprechen speziellen Graphen In Textform schreiben wir allgemeine (selbstdefinierte) Kanten als -kantensorte-> Kanten des speziellen Typs "Nachfolger" werden meist als Leerzeichen geschrieben (statt -successor->)
für allgemeine Graphen: Problem der Einbettung der rechten Regelseite Regel: Anwendung:
2 Regeltypen für Graph-Ersetzungsregeln in XL: ● L-System-Regel, Symbol: ==> sorgt für Einbettung der rechten Seite in den Graphen (d.h. ein- und ausgehende Kanten werden beibehalten) mit Standard-Vorgabe ●SPO-Regel, Symbol: ==>> Ein- und ausgehende Kanten werden gelöscht (sofern ihre Beibehaltung nicht explizit in der Regel angegeben wird) „SPO“ von „single pushout“ - ein Fachbegriff aus der universellen Algebra
Beispiel: a:A ==>> a C (SPO-Regel) B ==> D E (Regeln vom L-System-Typ) C ==> A Ausgangs-graph: A B C
a:A ==>> a C (SPO-Regel) B ==> D E (Regeln vom L-System-Typ) C ==> A A B C D E A
a:A ==>> a C (SPO-Regel) B ==> D E (Regeln vom L-System-Typ) C ==> A A B C a: D E A
a:A ==>> a C (SPO-Regel) B ==> D E (Regeln vom L-System-Typ) C ==> A A D E A a: = Endergebnis C
Testen Sie das Beispiel sm09_b27.rgg : module A extends Sphere(3); protected void init() [ Axiom ==> F(20, 4) A; ] public void runL() [ A ==> RU(20) F(20, 4) A; ] public void runSPO() [ A ==>> ^ RU(20) F(20, 4, 5) A; ] (^ bezeichnet den Wurzelknoten im aktuellen Graphen)
ein weiterer Regeltyp: Aktualisierungsregeln manchmal will man gar nichts an der Graph-Struktur ändern, sondern nur Attribute eines einzelnen Knotens verändern (z.B. Berechnung der Photosyntheseleistung für ein Blatt). Dazu gibt es einen eigenen Regeltyp: A ::> { imperativer Code }; Testen Sie die Beispiele sm09_b25.rgg, sm09_b16.rgg, sm09_b18.rgg
Darstellung von Graphen in der Programmiersprache XL ● (neue)Knotentypen müssen mit „module“ deklariert werden ● Knoten können alle Java-Objekte sein. Bei eigenen module-Deklarationen können auch Methoden (Funktionen) und zusätzliche Variablen mitdeklariert werden, wie in Java ● Notation für Knoten in einem Graphen: Knotentyp, optional davor: bezeichner: Beispiele: A, Meristem(t), b:Bud ● Notation für Kanten: -Kantenbezeichner->, <-Kantenbezeichner- ● Spezielle Kantentypen: Nachfolgerkante: > Verzweigungskante: +> Verfeinerungskante: />
selbstdefinierte Kantentypen const int xxx = EDGE_0; // oder EDGE_1, ..., EDGE_14 ... Verwendung im Graphen: -xxx->, <-xxx-, -xxx-
Notation von Graphen in XL Beispiel: wird im Programmcode dargestellt als (die Darstellung ist nicht eindeutig!) ( >: Nachfolgerkante, +: Verzweigungskante)
wie lässt sich der folgende Graph im Code textuell beschreiben? Bud > 0 1 X + Leaf
Hausaufgabe zum 3. 7.: Lesen Sie die Abschnitte 3.1 bis 3.13 (S. 17-33) aus der Dissertation von Ole Kniemeyer (http://nbn-resolving.de/urn/resolver.pl?urn=urn:nbn:de:kobv:co1-opus-5937)