Künstliche Intelligenz und Prolog
Copyright © 2019 Jiri Kriz, www.nosco.ch

4Wissens­repräsentation in Pure Prolog

Lösungen

4.1Verkehrsmittel

Repräsentieren Sie die folgende "Welt" in Prolog:

Ergänzen Sie diese "Wissensbank", sodass die folgenden Fragen "richtig" und "vollständig" beantwortet werden:

Kann Ihre Wissensbank die Frage beantworten:

Wenn nein, wie müsste sie modifiziert werden, damit es möglich ist?

Lösung 4.1

4.2Probleme mit Isolatoren

Formulieren Sie das folgende Wissen in Prolog:

Elektrische Leitungen werden an Masten mittels Isolatoren befestigt. Dabei kann es zu Kurzschluss kommen in Form eines Überschlags, eines Durchschlags oder eines Kriech-stroms. Ein Überschlag durch die Luft entsteht bei grosser Überspannung, z.B. durch Blitzschlag. Ein Durchschlag durch den Isolator entsteht, wenn das Isoliermaterial einen Fehler oder Riss hat. Dabei wird der Isolator zerstört. Ein Kriechstrom entlang der Oberfläche entsteht, wenn sie feucht und verschmutzt ist. Kunstharze, insbesondere Phenoplaste, neigen zu Kriechstrombildung. Wenn sich Kriechwege gebildet haben, müssen die Isolatoren ersetzt werden.

Es sollen folgende Abfragen möglich sein:

Lösung 4.2

4.3Netzwerk von Widerständen (Wissensrepräsentation durch Terme)

Ein elektrisches Netzwerk, in dem Widerstände nur seriell oder parallel geschaltet werden, kann durch einen zusammengesetzten Term beschrieben werden. Bsp.:

Netzwerk mit Widerständen

Fig. 4.1: Ein Netzwerk mit Widerständen

Die Widerstände seien durch Fakten der Form resistor( R, V) definiert, wobei V der Wert des Widerstandes R in Ohm ist, z.B. resistor( r1, 5). Definieren Sie das Prädikat

res( N, R)
/* R ist der Widerstand des Netzwerkes N. */

Lösung 4.3

4.4Digitale Schaltungen (Wissens­repräsentation durch Klauseln)

Repräsentieren Sie die folgende Schaltung "adder1" in Prolog:

Digitale Schaltung Adder1

Fig. 4.2: Die digitale Schaltung "Adder1"

Hinweis:

adder1( In1, In2, Cin, Out, Cout) :- 
    xor( In1, In2, A), 
	xor( A, Cin, Out), 
	... . 

Überzeugen Sie sich durch Simulation, dass es ein 1-Bit-Volladdierer ist, d.h.

Out = (In1 + In2 + Cin) mod 2, 
    Cout = (In1 + In2 + Cin) div 2.  

Implementieren Sie damit einen N-Bit-Volladdierer:

adder( X, Y, Z, OF).
X, Y, Z sind Listen der N Bits beginnend mit dem "most significant bit", Z is die Summe von X und Y, und OF ist der Overflow.

Lösung 4.4