Prolog – Logikprogrammierung
Prolog (Programming in Logic) ist eine deklarative Programmiersprache: Statt Algorithmen beschreibst du Fakten und Regeln, und die Engine (der Resolution-Mechanismus) beantwortet Anfragen per Backtracking. Prolog wird klassisch in KI, Expertensystemen und Sprachverarbeitung eingesetzt.
SWI-Prolog – Die gängigste Distribution
swipl– interaktive REPL startenswipl -s datei.pl– Datei laden (consult)swipl -f datei.pl -g anfrage– Anfrage direkt ausführenhalt.– Prolog beenden
Basissyntax: Fakten, Regeln, Anfragen
% Fakten
eltern(hans, peter).
eltern(anna, peter).
eltern(peter, lisa).
% Regel
großelter(X, Y) :- eltern(X, Z), eltern(Z, Y).
% Anfrage
?- großelter(anna, lisa).
true.
- Variablen beginnen mit Großbuchstaben:
X,Y - Atome/Konstanten beginnen klein:
hans :-bedeutet „wenn“ (Implikation),,ist UND,;ist ODER- Backtracking: findet automatisch alle Lösungen, z. B.
findall(X, eltern(X, peter), L).
Wichtige eingebaute Prädikate
member(X, Liste)– X ist Element der Listeappend(L1, L2, L3)– Listen verkettenlength(L, N)– Listenlängesort(L, S)– sortierenfindall(T, Ziel, Liste)– alle Lösungen sammelnassert/retract– Fakten zur Laufzeit hinzufügen/entfernenwrite(X), nl– Ausgaberead(X)– Eingabe
Typische Einsatzgebiete
- Expertensysteme: Wenn-Dann-Regeln für Diagnosen
- Constraint-Programming:
library(clpfd)für Rätsel und Planung - Grammatiken: DCG (Definite Clause Grammars) für Parser
- Suchprobleme: Backtracking löst viele Kombinatorik-Probleme von selbst
Verwandte Einträge: Algorithmus, Rekursion und die Referenz Haskell für funktionale Alternativen.