23
Logisches Programmieren (Fach) / Gesamt (Lektion)
Gesamt
Diese Lektion wurde von jaybeoh erstellt.
Diese Lektion ist leider nicht zum lernen freigegeben.
Anzeige
- Welche Ideen liegen Prolog zu Grunde? Idee des "automatischen Beweisens" von Fakten aus einer gegebenen Menge von Axiomen - Eingeschränktes Resolutionsprinzip als grundlegende Rechnemethode, sodass diese für Computer umsetzbar ist
- In welchen Bereichen wird Prolog verstärkt angewandt? Künstliche Intelligenz aber auch Nicht-numerische Mathematik, Übersetzerbau, Datenbanken, Sprachverarbeitung
- Imperative Programmiersprachen basieren auf der Idee der von-Neumann-Architektur (Programmieren als Manipulation von Speicherzellen). Wie funktioniert Prolog? Prolog basiert auf der Prädikatenlogik: 1. Stufe der Prädikatenlogik: Quantizierung über Werte mit Eigenschaften2. Stufe der Prädikatenlogik: Quantifizierung über Prädikate Der Unterschied zur imperativen Programmierung: Bei der imperativen Programmierung wird mit Hilfe von Variablenmanipulation seitens des Programmierers das Ergebnis ermittelt, bei Prolog soll der Programmierer die logische Struktur erfassen, sodass das System anschließend Aussagen durch Regeln und Aussagen beweisen kann.
- Welche Zeichenelemente kennt Prolog? 1. Großbuchstaben: A-Z2. Kleinbuchstaben: a-z3. Ziffern: 0-94. Bestimmte Sonderzeichen: % ! ( ) , ; [ ]5. Kommentar: %, bzw. mehrzeilig /* */ [Ein Kommentar kann nicht innerhalb von Konstanten angegeben werden]
- Wie lauten grundsätzlich die Ergebnisse auf Anfragen in Prolog? yes und no
- Wie läuft eine Anwendung im Prolog-System grundsätzlich ab? 1. Bei Aufruf wird i. d. R. im Anfragemodus gearbeitet [?-]. Dann lässt sich 1a) Eine Datei mit Fakten und Regeln einlesen via Eingabe von [rules.txt]1b) Durch eingabe von [user]. eine Direkteingabe mit Regeln durchführen. Diese endet durch die Eingabe von "end_of_file". 2. Das System lässt sich durch Eingabe "halt." im Anfragemodus beenden.
- Was ist ein Term in Prolog? Ein Term (auch Objekt genannt) ist die einzige in Prolog existierenden Datenstruktur. Terme werden in Prolog nicht deklariert. Man bezeichnet gesondert: 1. Grundterme - ohne Variablen2. Unterterme - direkt oder indirekt in einem anderen Term enthalten
- Was sind Konstanten? Eine Konstante ist ein atomarer, nicht-zusammengesetzter Term. Arten:1. Zahl: [123]Ganzzahl, Fließkommazahl 2. Atom: ["asdf"] Folge von Zeichenelementen - muss eines der folgenden Kriterien erfüllen- muss mit Kleinbuchstaben beginnen und dann nur Klein-, Großbuchstaben, Ziffern und Unterstriche enthalten- muss aus Sonderzeichen bestehen- muss mit einem Apostroph beginnen und enden- Ein Sonderatom darstellen: , : ! []
- Was sind Strukturen? Eine Struktur ist ein Termtyp. Eine Struktur besteht aus einem - Funktor (Name), der ein Atom sein muss und die Struktur eindeutig identifiziert - in Klammern gefasst und kommasepariert die Komponenten der Struktur Strukturen sind: Operatoren und Listen.
- Wie bezeichnet man die Zahl der Komponenten einer Struktur Stelligkeit
- Anzeige
- Was ist ein Operator und welche Arten gibt es? Ein Operator ist eine Struktur, kann aber auch mittels der Operatorschreibweise verfasst werden 1. Präfixoperator -2 --> -(2)2. Postfixoperator: 3 fakultaet --> Fakultaet(3)3. Infixoperator: 2+3 --> +(2,3)
- Was ist eine Liste und welche Arten gibt es? Eine Liste ist eine Struktur. Die Listenlänge ist prinzipiell unbekannt. Sie hat einen Kopf und die restlichen Elemente: [Schreibweise: <Listenkopf> | <Listenrest>]Alternativ: <Listenkopf> | <Element 2> | <Element 3> | <Listenrest> Es gibt 4 verschiedene Schreibweisen für Listen in Prolog: 1. Herkömmlich: ".(e1,.(e2,[]))"2. Leere Liste: Durch das Atom "[]" 3. Listennotation: "[e1, e2, e3]" --> "[e1 | [e2, e3]]", --> "[e1, e2 | [e3]]" --> "[e1, e2, e3 | []]"4. String: "Bla" --> Automatische Umwandlung in eine Liste der ASCII-Werte
- Was ist eine Variable? Eine Variable ist ein Term. Variablen werden anders als ein Objekt groß geschrieben und beinnen mit einem Unterstrich. Dadrüber hinaus bestehen sie nur aus Klein-, Großbuchstaben, Ziffern und Unterstrichen.
- Wie können Variablen quantifiziert werden? 1. All-quantifiziert [Stellvertretend für alle möglichen Belegungen in Klauseln] 2. Existenz-quantifiziert [in Anfragen als (zu bestimmender) Platzhalter für alle erlaubten Belegungen]
- Eine Variable befindet sich immer in einem von zwei möglichen Zuständen. welche sind dies? 1. Nicht-instanziiert [ungebunden]: Damit in Belegung irrelevant für Richtigkeit eines Beweises. 2. Instanziiert: An einen konkreten Term gebunden. Dieser Wert bleibt dann bis zum Ende einer Anfrage bestehen un d kann nicht, wie in anderen Programmiersprachen zerstört werden (finaler Wert in Java). Solche Variablen bilden Rückgabewerte.
- Was sind Klauseln? Klauseln sind Berechnungsvorschriften (keine Datenstrukturen!) und definieren Prädikate / Relatioenn von Objekten. Beispiel "weiblich(maria)" bildet das Prädikat weiblich für das Objekt Maria. Die Objekte, die in diesen Funktionen vorkommen, sind Arugmente, deren Zahl die Stelligkeit. Gleichnamige Klauseln mit unterschiedlicher Stelligkeit beschreiben unterschiedliche Prädikate. Klauseln bestehen allgemein aus Literalen, wobei Fakten ein grundsätzlich wahres und Klauseln ein durch andere Literale bedingtes Literal beschreiben.
- Was ist ein Faktum? Ein Faktum ist eine Klausel. Es ist beschreibt eine elementare Tatsache über ein oder mehrere Prolog-Objekte bzw. Regeln ohne Voraussetzung [a(e): - true]. Die Reihenfolge der erwähnten Objekte ist dabei weichtig. Der Name eines Faktums muss selbst ein Atom sein.
- Was ist eine Regel? Eine Regel ist eine Klausur. Sie bietet die Möglichkeit zur Ableitung / Schlussfolgerung neuen Wissens aus Tatsachen. Je nach Bezug kann eine Variable oder auch ein konkretes Objekt eingesetzt werden.
- Was ist eine Anfrage? Eine Anfrage ist eine Klausel. [?- aussage(name, ..), aussage2(name2,..)] Sie kann grundsätzlich in Endlosschleifen resultieren. 1. Sofern keine Variablen eingegeben werden, werden die Ergebnisse je nach Beweisbarkeit der Literale als "yes" oder "no" ausgegeben. 2. Sofern Variablen eingegeben werden, werden alle richtigen Aussagen als "Variable = objekt" gelistet. Mit einem Semikolon wird die nächste Aussage angezeigt. Sollte diese nicht existieren, endet die Anzeige mit "no".
- Welche Sichtweisen hat Prolog auf seine Semantik? 1. Operationale Semantik: Wie werden Programme abgearbeitet? 2. Deklarativ Semantik: Was ist die logische Bedeutung des Programmes?
- Was sind Typische Programmiertechniken in Prolog? 1. Programmieren mit Akkumulator 2. Generate-and-test
- Wie funktioniert das Programmieren mit Akkumulator? Eine ursprüngliche Anfrage enthält eine Akkumulator-Variable [oft: „A“], die für das Ergebnis wahr sein muss. Dazu wird ein Eingabe- und ein Ausgabespeicher deklariert, wobei der Eingabespeicher zunächst die gesamte Eingabe enthält und der Ausgabespeicher leer ist. Dann wird schrittweise ein Element vom Eingabe- in den Ausgabespeicher verschoben. Wenn der Eingabespeicher leer ist, wird der Akkumulator durch gleichsetzen mit dem Ausgabespeicher zurückgegeben.
- Wie funktioniert die PRogrammiertechnik Generate-and-test? Suchen nach allen möglichen Lösungen [loesung(L) :- moeglicheLoesung(L), korrekteLoesung(L)]: eine erste Klausel findet eine beliebige Kombination, die formal gesehen eine Lösung sein könnte, die zweite Klausel überprüft diese dann auf Richtigkeit. Durch Backtracking wird dann jede mögliche Kombination ausprobiert und im Fall deren Richtigkeit wiedergegeben. Dieses Prinzip wird vor allem dann angewandt, falls kein Wissen über ein systematisches Lösungsverfahren vorhanden ist, die Lösung aber nicht zu viele mögliche Ausprägungen hat. [Beispiel: N-Damen-Problem, Sekt*Bier-Rätsel]