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?
Antworten:
Vom Vorwort bis zur Prolog-Programmierung für künstliche Intelligenz :
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.
quelle
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.
quelle
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.
quelle
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.
quelle