Praktikum Graphische Darstellung gerichteter Graphen
Zur Darstellung gerichteter Graphen soll die Lösungsannotation
graphs_marks(Graphs,Marks) realisiert werden. Dabei ist Graphs eine
Liste von Prädikatsindikatoren. Jedes Prädikat beschreibt einen
gerichteten Graphen, dessen Knoten Atome (Konstanten) sind. Marks ist
eine Liste der Knoten, die gesondert hervorgehoben werden sollen (In
diesem Falle Joseph II). Die erste Relation wird durch einfache
möglichst senkrechte Striche dargestellt, die
zweite durch doppelte möglichst horizontale Striche.
kind_von(joseph_I, leopold_I).
kind_von(karl_VI, leopold_I).
kind_von(maria_theresia, karl_VI).
kind_von(joseph_II, maria_theresia).
kind_von(joseph_II, franz_I).
kind_von(leopold_II, maria_theresia).
kind_von(leopold_II, franz_I).
kind_von(marie_antoinette, maria_theresia).
kind_von(franz_II, leopold_II).
gatte_gattin(franz_I, maria_theresia).
:- graphs_marks([kind_von/2,gatte_gattin/2], [P]) <<< P = joseph_II.
Details
Die Lösungsannotation graph_marks/2 soll vor allem verwendet werden,
um die Relationen kind_von/2 und gatte_gattin/2 der Familiendatenbasis
darzustellen. Durch sie sollen mögliche Fehler in der db leichter
erkannt werden, bzw. die Verwendung der db in späteren Beispielen
anschaulicher werden. graph_marks/2 soll aber allgemein genug
gehalten sein, um auch beliebige andere Graphen darstellen zu können.
Wichtig ist, daß die Notation wie im Skriptum beibehalten wird.
Jede Person ist dort ein Knoten dargestellt als Kreis. Die Kinder der
Person erkennt man dadurch, daß sie von den Kanten, die vom unteren
Ende des Kreises weggehen, erreichbar sind, die Eltern von den oberen.
Verheiratete werden durch Doppelstriche, die auf der linken
bzw. rechten Seite eines Kreises ansetzen, dargestellt.
Der Graph soll hier vor allem die Generationsfolge schön zur
Geltung bringen. Jedoch sollen auch zyklische Graphen darstellbar
sein. (Sind in der Familiendatenbasis natürlich Fehler.)
Realisierung
Es bieten sich zwei Möglichkeiten an:
- Direkt in Prolog als Constraint-Problem.
- Verwendung eines bestehenden Werkzeugs. (dot o.ä. vcg
dürfte nicht so gut geeignet sein).
Praktika und Diplomarbeiten