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:
  1. Direkt in Prolog als Constraint-Problem.
  2. Verwendung eines bestehenden Werkzeugs. (dot o.ä. vcg dürfte nicht so gut geeignet sein).

Praktika und Diplomarbeiten