Logische Programmierung

Was ist logische Programmierung?

Es handelt sich hierbei um ein Programmierparadigma, das zu einem großen Teil auf der formalen Logik beruht. Jedes Programm, das in einer logischen Programmiersprache entwickelt wird, ist eine Reihe von logisch geformten Sätzen, die Fakten und Regeln zu einem bestimmten Themenbereich beschreiben. Logische Programmierung gehört zu den deklarativen Programmiersprachen und ist Grundlage für Anwendung im Bereich maschinelles Lernen und Künstliche Intelligenz.

Diese Art von Programmierung ist ein Zweig der Computerprogrammierung, der formale logische Regeln verwendet. In gewisser Weise ist die Logikprogrammierung die Anwendung mathematischer Gleichungen und anderer logischer Konstrukte, um Programmierergebnisse zu erzielen.

Es gibt objekt-orientierte und induktive logische Programmierung:

  • mit objekt-orientierter Programmierung können reale Anforderungen im System implementiert werden, um daraus wirklichkeitsnahe Schlussfolgerungen abzuleiten
  • eine induktive logische Programmierung (ILP) ist ein gewisser Bereich des maschinellen Lernens. So gibt es ein Verfahren zur automatischen Erstellung ganzer logischer Programme aus Beispielen

Einer der wichtigsten Vertreter der logischen Programmierung ist die Programmiersprache Prolog. Prolog-Programme bestehen aus einer umfangreichen Wissensdatenbank und die Einträge sind Fakten und Regeln. Ein Benutzer kann Anfragen an diese Wissensdatenbank formulieren.

Der Prolog-Interpreter kann Fakten und Regeln verwenden, um systematisch die passende Antwort zu finden. Es gibt positive und negative Resultate. Bei positiven Resultaten kann eine Anfrage logisch abgeleitet werden und bei einem negativen Resultat ist die Datenbasis nicht in der Lage eine Ableitung zu finden.

In welchen Bereichen wird logische Programmierung eingesetzt?

Die typischen Einsatzgebiete von logischer Programmierung sind Simulatoren, Generatoren und Systeme zur Diagnose und zur Prognose. Anwendungen finden sich in den Bereichen Künstliche Intelligenz, Datenbanken und Expertensysteme.

Weitere Einsatzgebiete sind:

  • In der Wirtschaft und im Handel:
    Produktkonfigurator, Routenplaner, Marktsimulation (wie etwa die Preisfindung)
  • Medizin:
    Diagnosesysteme
  • Mathematik:
    Theorembeweiser und Theoremgeneratoren
  • allg. Naturwissenschaften:
    Auswerten und Abfragen von geologischen und meteorologischen Datensammlungen sowie Simulatoren und Vorhersagesysteme für das Wetter, für Erdbeben und Wasserstände
  • Technik:
    CAD und CAM
  • Soziologie
  • Psychologie
  • Computerlinguistik:
    Maschinelles Übersetzen natürlicher Sprache und die Erkennung und das Verstehen von gesprochener Sprache
  • Computertechnik:
    Design und Simulation von bestimmten Prozessoren und von Schaltkreisen
  • Compilerbau
  • Computerspiele:
    „intelligentes“ Verhalten von simulierten Mitspielern, Taktik und Strategie
  • Dokumentenmanagement:
    Strukturierte Dokumente systematisch verarbeiten, semantisches Web und XSLT
  • Rapid Prototyping

Was ist ein Beispiel für ein Programm?

Eine deklarative Programmiersprache beschreibt immer das gewünschte Endergebnis und lässt dann den Lösungsweg automatisch ermitteln. Das funktioniert immer ganz gut, solange der Endzustand klar definiert ist und dazu ein passendes Ausführungsverfahren existiert. Ist beides vorhanden, so ist die deklarative Programmierung äußerst effizient.

Folgendes Beispiel illustriert die Anwendung:

Programm:

weiblich(monika).

weiblich(karin).

weiblich(susanne).

weiblich(aline).

maennlich(werner).

maennlich(klaus).

maennlich(gerd).

maennlich(peter).

maennlich(dominique).

verheiratet(werner, monika).

verheiratet(gerd, renate).

verheiratet(klaus, susanne).

mutterVon(monika, karin).

mutterVon(monika, klaus).

mutterVon(renate, susanne).

mutterVon(renate, peter).

mutterVon(susanne, aline).

mutterVon(susanne, dominique).

mensch(X).

Abfragen:

?- maennlich(gerd).

true

?- verheiratet(gerd, monika).

false

?- mensch(gerd).

true

Data Navigator Newsletter