Lösung eines vereinfachten Problems

Vereinfachung des Graphenproblems

Zur Vereinfachung des Graphenproblems betrachten wir vorerst nur Graphen, die keine Kreise enthalten.

Graph

Zunächst soll es nur darum gehen, die Existenz von Wegen zwischen Knoten des Graphen zu überprüfen.

Beschreibung des Graphen

Zur Beschreibung der Knoten des Graphen werden entsprechende Konstanten eingeführt. Die Kanten des Graphen werden mit Hilfe eines Prädikats kante/2 erfasst. Für jede Kante wird ein entsprechendes Faktum in der Wissensbasis aufgenommen.

% Graph
kante(a, b).
kante(a, c).
kante(b, d).
kante(b, e).
kante(c, e).
kante(c, f).
kante(d, g).
kante(d, e).
kante(f, b).
kante(f, i).
kante(h, e).
kante(h, b).
kante(i, e).
kante(i, h).

Wege in einem so beschriebenen Graphen sollen mit dem Prädikat weg/2 erfasst werden. Eine deklarative Beschreibung dieses Prädikats kann von folgenden Regeln ausgehen:

Regel 1: 
Es gibt einen Weg zwischen einem Knoten X und einem Knoten Y,
wenn es eine Kante von X nach Y gibt.
Regel 2: 
Es gibt einen Weg zwischen einem Knoten X und einem Knoten Y,
wenn es eine Kante von X zu einem Knoten Z und 
einen Weg vom Knoten Z zum Knoten Y gibt.

Aufgabe 1

Entwickle geeignete Prolog-Regeln zur Festlegung des weg-Prädikats.

Teste die entwickelten Regeln mit Anfragen wie der folgenden.

% Anfrage
?- weg(a, h).
X

Fehler melden

X

Suche