Dlaczego Prolog jest dobry do programowania AI? [Zamknięte]


25

Badam języki programowania używane do programowania AI. Wiem, że LISP jest nauczany jako język programowania AI na moim uniwersytecie, ale Prolog rzadko. Lubię trochę Prologa, ale nie jestem programistą sztucznej inteligencji, więc nie sądzę, żebym kwalifikował się do samodzielnego oceniania, dlaczego Prolog jest lepszy niż LISP / Scheme. Zastanawiałem się, czy programiści mieli jakieś uwagi na ten temat.

Jak można argumentować, że Prolog byłby bardziej przydatny do programowania AI?

Trochę go badam, a podstawowy argument, który wielokrotnie widziałem, jest taki, że skoro myśli są przedstawione w logice, a Prolog jest logicznym językiem programowania, Prolog może łatwo budować maszyny decyzyjne lub coś w tym rodzaju.

Czy jest coś jeszcze, co można powiedzieć o Prologu w AI?


1
Pisanie kompilatora / interpretera Prologu w Lisp nie jest trudne. Paul Graham ma przykład w On Lisp .
Larry Coleman,

Jeden z moich kolegów z klasy też mi to powiedział. Uważam, że to naprawdę interesujące, że manipulacja symboliczna LISP pozwoliła mi odtworzyć Prolog. Dzięki za miły na bok!
2rs2ts

4
@ Larry Coleman: Pisanie naiwnego kompilatora / interpretera Prologu w Lisp nie jest ciężką pracą. Stworzenie wydajnego i w pełni funkcjonalnego nie jest trywialne w żadnym języku.
WŁAŚNIE MOJA poprawna OPINIA,

Odpowiedzi:


19

Od przedmowy do programowania Prolog dla sztucznej inteligencji :

Prolog jest językiem programowania skoncentrowanym na niewielkim zestawie podstawowych mechanizmów, w tym dopasowaniu wzorców, strukturze danych opartej na drzewach i automatycznym śledzeniu wstecznym. Ten niewielki zestaw stanowi zaskakująco wydajne i elastyczne środowisko programistyczne. Prolog szczególnie dobrze nadaje się do problemów dotyczących obiektów - w szczególności obiektów o strukturze - i relacji między nimi. Na przykład w Prologu łatwo jest wyrazić relacje przestrzenne między obiektami, takie jak niebieska kula znajduje się za zieloną. Łatwo jest również sformułować ogólniejszą zasadę: jeśli obiekt X jest bliżej obserwatora niż obiekt Y, a Y jest bliżej niż Z, to X musi być bliżej niż Z. Prolog może teraz uzasadniać relacje przestrzenne i ich zgodność z poszanowanie ogólnej zasady. Takie funkcje sprawiają, że Prolog jest potężnym językiem sztucznej inteligencji (AI) i ogólnie programowania nieliczbowego. Istnieją dobrze znane przykłady obliczeń symbolicznych, których implementacja w innych standardowych językach zajęła dziesiątki stron niestrawnego kodu. Gdy te same algorytmy zostały zaimplementowane w Prologu, rezultatem był krystalicznie czysty program, który łatwo mieści się na jednej stronie.

Zasadniczo jest to świetny język do wyrażania różnych relacji i celów w zwięzły, (głównie-) czytelny i (pół-) naturalny sposób. Kod ekwiwalentny, powiedzmy, w Lisps jest bardziej rozległy i bardziej zaciemniony w swojej intencji, ponieważ spędzasz dużo czasu na trzewiach i hydraulice zarządzania i rozumowania na temat związków.


Chciałbym dodać, że Prolog pozwala ci zadeklarować fakty , a następnie reguły oparte na tych faktach. Twoje reguły mogą być następnie wykorzystane przez Prolog do uzasadnienia i odpowiedzi na inne pytania poprzez logiczne dedukcje odpowiedzi. Na przykład, jeśli fakt stwierdza, że ​​A jest przodkiem B, a inny fakt mówi, że B jest przodkiem C, to Prolog może wywnioskować, że A musi być przodkiem C, bez konieczności pisania algorytmu, aby to sprawdzić.
code_dredd

25

Zapoznałem się ze wstępem do kursu sztucznej inteligencji na moim licencjacie, który wykorzystywał Prolog, abyśmy wdrożyli system ekspercki.

System ekspercki to oprogramowanie służące do rozwiązania bardzo specyficznego problemu, którego rozwiązanie zależy od dużej liczby reguł i zmiennych.

Na przykład możesz sobie wyobrazić system ekspercki, który mówi ci, czy powinieneś zabrać ze sobą parasolkę, gdy wychodzisz, czy nie; podasz mu zestaw danych (czy jest pochmurno, czy pada dzień wcześniej, jaka jest pora roku itp.), a system ekspercki przejdzie przez zasady, by dać ci odpowiedź (jeśli jest pochmurno i padał deszcz dzień wcześniej powinieneś wziąć parasol).

Charakter Prologu sprawia, że ​​bardzo łatwo jest wdrożyć reguły i fakty (w Prologu wszystko jest regułą lub faktem), a następnie „przeszukać bazę danych” (uzyskać odpowiedź na swoje pytanie), nawet jeśli masz tysiące tych reguł i faktów .

Jeśli jesteś zainteresowany tym tematem, zalecam zainstalowanie interpretera Prologa i spróbowanie zaimplementować bardzo prosty system ekspercki, aby go wyczuć - może pomóc zrozumieć, dlaczego jest to tak potężne narzędzie do tych zadań.


W swoich badaniach przeczytałem, że Prolog ułatwia wdrożenie systemów ekspertowych. Dzięki za wsparcie z wyjaśnieniem :)
2rs2ts 16.06.11

16

Różnica jest trochę jak używanie SQL do zapytań do bazy danych, a nie pisanie programu, powiedzmy C. W SQL mówisz, co chcesz - ale nie musisz (bezpośrednio) określać algorytmu używanego do jego uzyskania.

Program Prolog jest czasem nazywany bazą danych, ale tak naprawdę jest to zbiór predykatów logicznych. Mechanizm oceny pobiera zapytanie i dokonuje na nim podstawień na podstawie instrukcji logiki predykatu, szukając właściwych rozwiązań. Wszystkie potrzebne algorytmy wyszukiwania (znacznie bardziej wymagające niż zapytanie SQL) są wbudowane w kompilator Prolog.

Zapytanie SQL, jeśli naiwnie zaimplementujesz tę samą logikę w C, nie wymagałoby niczego więcej niż zapętlanie i warunkowe if / else.

Zapytanie Prolog, zaimplementowane w C, wymagałoby (przynajmniej) wyszukiwania wstecznego przy użyciu techniki znajdowania związku. I to znowu jest naiwne rozwiązanie.

Pewien rodzaj programowania AI obejmuje wiele rodzajów wyszukiwania, które wykonuje Prolog. Nic dziwnego, naprawdę - pierwotnie programowanie AI odbywało się w Lisp lub innym języku, ale Prolog został napisany specjalnie do tego zadania.

Logika predykatów jest naturalnym podejściem do definiowania tego rodzaju problemu AI, a po jego zdefiniowaniu można uruchomić go bezpośrednio, bez konieczności implementowania wszystkich tych niezręcznych algorytmów wyszukiwania.


3

Wziąłem 2 moduły Prolog na uniwersytecie i bardzo lubiłem rozwijać się w tym języku.

Jest to szczególnie dobre dla systemów eksperckich, napisałem diagnozę symtomów medycznych.

Wyjaśniono mi, że Lisp jest częściej używany w niektórych krajach, a Prolog w innych.

Pod względem tego, co jest najlepsze, omawiałem Lisp tylko krótko, kiedy wykonałem rachunek lambda w module Teoretycznej Informatyki, więc jestem stronniczy w stosunku do Prologu.

Jeśli tworzysz aplikację do radzenia sobie z regułami i faktami w celu uzyskania odpowiedzi, Prolog jest bardzo dobry i naturalnie wspiera cofanie się.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.