Warum eignet sich Prolog für die AI-Programmierung? [geschlossen]

25

Ich erforsche Programmiersprachen, die für die AI-Programmierung verwendet werden. Ich weiß, dass LISP an meiner Universität als AI-Programmiersprache unterrichtet wird, Prolog jedoch selten. Ich mag Prolog, aber ich bin kein KI-Programmierer, daher glaube ich nicht, dass ich selbst beurteilen kann, warum Prolog besser ist als LISP / Scheme. Ich habe mich gefragt, ob Programmierer zu diesem Thema etwas beigetragen haben.

Wie könnten Sie argumentieren, dass Prolog für die AI-Programmierung nützlicher wäre?

Ich habe ein bisschen nachgeforscht, und das grundlegende Argument, das ich immer wieder gesehen habe, ist, dass Prolog, da Gedanken in Logik dargestellt werden und Prolog eine logische Programmiersprache ist, Entscheidungsmaschinen leicht bauen kann oder so etwas in diesem Sinne.

Gibt es noch etwas, das für Prolog in AI gesagt werden kann?

2rs2ts
quelle
1
Es ist nicht viel Arbeit, einen Prolog-Compiler / -Interpreter in Lisp zu schreiben. Paul Graham hat ein Beispiel in On Lisp .
Larry Coleman
Einer meiner Klassenkameraden erzählte mir das auch. Ich fand es wirklich interessant, dass ich mit der symbolischen Manipulation von LISP Prolog neu erstellen konnte. Danke für die nette Seite!
2. Februar,
4
@ Larry Coleman: Es ist nicht viel Arbeit, einen naiven Prolog-Compiler / -Interpreter in Lisp zu schreiben. Effizient und voll funktionsfähig zu sein, ist in keiner Sprache trivial.
NUR MEINE STELLUNGNAHME

Antworten:

19

Vom Vorwort bis zur Prolog-Programmierung für künstliche Intelligenz :

Prolog ist eine Programmiersprache, die sich auf einen kleinen Satz grundlegender Mechanismen konzentriert, darunter Mustervergleich, baumbasierte Datenstrukturierung und automatisches Backtracking. Dieser kleine Satz bildet ein überraschend leistungsfähiges und flexibles Programmiergerüst. Prolog eignet sich besonders gut für Probleme, die Objekte - insbesondere strukturierte Objekte - und Beziehungen zwischen diesen betreffen. Zum Beispiel ist es in Prolog eine einfache Übung, räumliche Beziehungen zwischen Objekten auszudrücken, zum Beispiel, wenn sich die blaue Kugel hinter der grünen befindet. Es ist auch einfach, eine allgemeinere Regel zu formulieren: Wenn das Objekt X näher am Beobachter liegt als das Objekt Y und Y näher an Z, muss X näher an Z liegen. Prolog kann nun über die räumlichen Beziehungen und ihre Konsistenz mit urteilen Einhaltung der allgemeinen Regel. Funktionen wie diese machen Prolog zu einer leistungsstarken Sprache für künstliche Intelligenz (KI) und nicht-numerische Programmierung im Allgemeinen. Es gibt bekannte Beispiele für symbolische Berechnungen, für deren Implementierung in anderen Standardsprachen Dutzende Seiten unverdaulichen Codes erforderlich waren. Als die gleichen Algorithmen in Prolog implementiert wurden, war das Ergebnis ein kristallklares Programm, das problemlos auf eine Seite passt.

Grundsätzlich ist es eine großartige Sprache, um verschiedene Beziehungen und Ziele auf prägnante, (meist-) lesbare und (halb-) natürliche Weise auszudrücken. Äquivalenter Code zum Beispiel in den Lisps ist tendenziell wortreicher und verschwommener, weil Sie viel Zeit mit dem Mut und den Klempnern verbringen, um Beziehungen zu managen und zu überlegen.

Nur meine richtige Meinung
quelle
Meine kleine Ergänzung hier wäre, dass Prolog Ihnen erlaubt, Fakten und dann Regeln zu deklarieren , die auf diesen Fakten basieren. Ihre Regeln können dann von Prolog verwendet werden, um andere Fragen zu begründen und zu beantworten, indem die Antworten logisch abgeleitet werden . Wenn beispielsweise ein Fakt angibt, dass A ein Vorfahr von B ist, und ein anderer Fakt angibt, dass B ein Vorfahr von C ist, kann Prolog daraus schließen, dass A ein Vorfahr von C sein muss, ohne dass Sie einen Algorithmus schreiben müssen, um dies zu überprüfen.
code_dredd
25

Ich habe in meinem Grundstudium eine Einführung in den AI-Kurs genommen, in dem Prolog verwendet wurde, um ein Expertensystem zu implementieren.

Ein Expertensystem ist eine Software, mit der ein ganz bestimmtes Problem gelöst wird, dessen Lösung von einer Vielzahl von Regeln und Variablen abhängt.

Sie könnten sich zum Beispiel ein Expertensystem vorstellen, das Ihnen sagt, ob Sie einen Regenschirm mitnehmen sollten, wenn Sie ausgehen oder nicht. Sie würden ihm eine Reihe von Daten geben (ob es bewölkt ist, ob es am Vortag geregnet hat, welche Jahreszeit es ist usw.) und das Expertensystem würde Regeln durchgehen, um Ihnen eine Antwort zu geben (wenn es bewölkt ist und es geregnet hat) am Vortag sollten Sie einen Regenschirm mitnehmen).

Aufgrund der Natur von Prolog ist es sehr einfach, Regeln und Fakten zu implementieren (in Prolog ist alles eine Regel oder eine Tatsache) und dann die Datenbank abzufragen (eine Antwort auf Ihre Frage zu erhalten), selbst wenn Sie Tausende dieser Regeln und Fakten haben .

Wenn Sie sich für das Thema interessieren, empfehlen wir Ihnen, einen Prolog-Interpreter zu installieren und ein grundlegendes Expertensystem zu implementieren, um ein Gefühl dafür zu bekommen. Dies kann Ihnen helfen, zu verstehen, warum es für diese Aufgaben ein so leistungsfähiges Tool ist.

Bitgarden
quelle
In meinen Recherchen habe ich gelesen, dass Prolog Expertensysteme einfach zu implementieren macht. Vielen Dank für die Unterstützung mit einigen Erklärungen :)
2rs2ts
16

Der Unterschied ist ein bisschen wie bei der Verwendung von SQL für Datenbankabfragen, anstatt ein Programm beispielsweise in C zu schreiben. In SQL sagen Sie, was Sie wollen, müssen aber nicht (direkt) den Algorithmus angeben, der zur Ableitung verwendet wird.

Ein Prolog-Programm wird manchmal als Datenbank bezeichnet, es ist jedoch eine Reihe von Prädikaten-Logik-Anweisungen. Der Auswertungsmechanismus nimmt die Abfrage entgegen und führt basierend auf den Prädikatlogikanweisungen Substitutionen durch, um die richtigen Lösungen zu finden. Alle benötigten Suchalgorithmen (viel aufwendiger als eine SQL-Abfrage) sind in den Prolog-Compiler integriert.

Eine SQL-Abfrage würde, wenn Sie dieselbe Logik naiv in C implementieren würden, nicht viel mehr als Schleifen und if / else-Bedingungen erfordern.

Eine in C implementierte Prolog-Abfrage würde (mindestens) eine Rückverfolgungssuche unter Verwendung der Union-Find-Technik erfordern. Und das ist wiederum eine naive Lösung.

Eine bestimmte Art der KI-Programmierung beinhaltet viel von der Art der Suche, die Prolog durchführt. Eigentlich nicht überraschend - ursprünglich wurde die KI-Programmierung in Lisp oder einer anderen Sprache durchgeführt, aber Prolog wurde speziell dafür geschrieben.

Prädikatenlogik ist der natürliche Ansatz zur Definition dieses Stils von KI-Problemen. Sobald Sie diese Definition haben, können Sie sie in Prolog direkt ausführen, ohne all diese umständlichen Suchalgorithmen implementieren zu müssen.

Steve314
quelle
3

Ich habe 2 Prolog-Module an der Universität belegt und es hat mir sehr viel Spaß gemacht, mich in der Sprache weiterzuentwickeln.

Es ist besonders gut für Expertensysteme, ich habe eine medizinische Symptomdiagnose geschrieben.

Mir wurde erklärt, dass Lisp in bestimmten Ländern häufiger verwendet wird und Prolog in anderen.

In Bezug auf das Beste habe ich Lisp nur kurz behandelt, als ich in einem Modul für Theoretische Informatik Lambda-Berechnungen durchgeführt habe, also bin ich voreingenommen in Richtung Prolog.

Wenn Sie eine Anwendung zum Umgang mit Regeln und Fakten entwickeln, um Antworten abzuleiten, ist Prolog sehr gut und unterstützt natürlich das Zurückverfolgen.

DazManCat
quelle