Cunoștințe, prelegeri, construcții de bază prolog de limbă

Rezumat: Caracteristicile generale ale limbajului Prolog: baze de cunoștințe și sisteme expert. Obiectele și termenii lui Prolog: obiecte Prolog - nume, variabile și liste; termeni de bază și non-bază; atomi. Fapte prolog: sintaxa faptelor; fapte universale. Reguli prolog: problema faptelor insuficiente pentru a descrie baza de cunoștințe; sintaxa regulii este poziția și corpul regulii; procedură ca o uniune de reguli cu un antet; Prolog Prolog ca o colecție de fapte și reguli. Solicitări prolog: sintaxa interogării; răspunsul la o interogare fără variabile; interogarea cu variabile și interpretarea variabilelor la execuția programului; Exemple de programe cu interogări pentru ele.







Caracteristicile generale ale limbajului Prolog

Logica matematică ne oferă un limbaj clar și precis pentru exprimarea explicită a cunoștințelor, a ipotezelor și a obiectivelor. Posibilitatea demonstrării teoreme a mașinilor. bazată pe o concluzie specială, numită principiul rezoluțiilor. a fost obținută pentru prima dată de către J. Robinson în 1965. Acest lucru a dus la dorința de a construi un limbaj de programare. care ar permite realizarea unuia dintre aspectele intelectuale ale activității umane - desfășurarea raționamentului sub formă de programe.

La începutul anilor 70 ai secolului trecut, un grup condus de A. Kolmeroe din Marsilia de pe Fortran a scris un program de demonstrare a teoremei. Prologul (de la Programmation en Logique). Acest lucru a condus la sfârșitul deceniului la dezvoltarea limbajului Prolog și la dezvoltarea ulterioară a acestei limbi și, în general, la direcția numită programare logică.

Prologul limbajului este aproape de modelul Markov: de asemenea, baza este căutarea unei substituții adecvate - interpretarea variabilelor. Dar substituțiile sunt căutate în regulile limbajului (analogul propozițiilor de refalare), iar scopul este exact căutarea substituției.

Programul pe Prolog constă în reguli. care sunt produse cu predicate (relative la obiecte) din stânga și din dreapta. Astfel, programul Prolog exprimă unele cunoștințe despre lumea exterioară (sarcină sau grup de sarcini) necesare pentru rezolvarea problemelor. Regulile care nu conțin colete în produse se numesc fapte. iar întregul sistem de reguli de programe formează baza cunoașterii.

O întrebare a unei sarcini, numită o interogare. este, de asemenea, un predicat. adevărul despre care suntem interesați. Dacă interogarea nu conține variabile. atunci calculul valorii sale dă răspunsul "Da" cu adevărul său sau răspunsul "Nu" pentru falsitatea sa. Dacă există variabile în predicatul interogării. apoi se caută valorile lor (interpretarea), în baza cărora acest predicat și toate predicatele programului devin adevărate. Acesta este calculul programului pe Prolog.

Deoarece fiecare predicat este o funcție. atunci Prolog este limba programării funcționale.

Deci, în limba Prolog, sunt luate în considerare obiecte și 3 tipuri de declarații despre obiecte: fapte, reguli și interogări. Singura structură de date este termenul.







Obiectele și termenii Prologului

Obiectele Prolog sunt

  • nume (încep cu o literă mică), șiruri de caractere (sunt închise în apostrofuri) și numere - obiecte sau constante constante; de exemplu, o mașină, o casă, Ivan, "a + b". 'X'. 123;
  • variabilele - pot lua valorile altor obiecte și le vom scrie în litere latine litere mari: de exemplu, X, A, W;
  • listele - elementele lor sunt orice obiecte; Vom închide listele în paranteze pătrate, separând elementele cu virgule; de exemplu, [] - listă goală (este o constantă, vom fi notate ca fiind zero și orice listă pentru a completa articolul pentru a afișa sfârșitul listei), [a, b, c, nil] - o listă constând din trei constante a. b și c; [X, [b, Y, X, nil], nil] este o listă formată din două elemente, dintre care prima este variabila X. iar a doua este o listă cu trei elemente: numele b. variabila Y și șirul "X".

Elementul final nu poate fi omis atunci când scrieți, ceea ce înseamnă că este necesar. Pentru a concatena (a îmbina) liste și elemente într-o singură listă, utilizați punctul ca operație de cuplare binară a părții stângi (capul listei) și a părții drepte (coada listei). În cazul unei operații de concatenare, parantezele pătrate la nivelul zero pot fi omise. De exemplu, a.X.Y.a cu X = b. Y = c este o listă cu [a, b, c, a]. de asemenea, pentru X = [b]. Y = [c] este aceeași listă. și pentru X = [b, [d, e]] și Y = [[c]] există o listă cu [a, b, [d, e], [c], a].

Acum introducem conceptul unui termen inductiv. Termenii sunt obiectele Prolog. În plus, termenii sunt termeni compuși. Un termen compus este format din numele funcției și lista argumentelor (termenii Prolog) în paranteze. Termenul compus sintactic are forma

unde f este numele functorului n-ary. a - argumente.

Exemple de termeni compozite sunt: ​​rece (apa), tatăl (Ivan eter petroleum), lista (d, lista (b, nil)) și bintree (bintree (zero 7, zero), L, 12.).

În primul exemplu, un termen compus este o afirmație cu numele unei funcții booleene 1 a unui argument constant, care are o valoare booleană adevărată sau falsă.

În al doilea exemplu, relația "ivan este tatăl lui Petra" este dată ca o funcție booleană cu 2 constante de argument.

În al treilea exemplu, o funcție binară cu lista de nume și două argumente are ca prim argument un obiect constant d. și ca al doilea argument - un termen compus cu numele aceleiași funcții și întoarce, aparent, o listă.

În al patrulea exemplu, o funcție numită bintree și trei argumente returnează un copac binar cu rădăcini 7, fiu drept 12 și fiu stâng, care este definit de variabila L.

Termeni. în care nu sunt incluse variabile, se va numi de bază. dar termeni. care conțin variabile nu sunt de bază. Deci, primele trei exemple de mai sus sunt termenii principali. iar al patrulea exemplu este un termen non-principal.

În programarea logică, structura de bază este o funcție predicată, descrisă de un termen compus care are o valoare de adevăr (adevărată sau falsă), posibil în funcție de valorile argumentelor. Un asemenea predicat se numește atom sau atom.

Faptele sunt simple afirmații despre obiecte de program care sunt considerate adevărate, adică ei înțeleg axiomele programului. Fiecare fapt se formează sub forma unui predicat atomic și a săgeții spre stânga, care este la dreapta lui. Deci, în exemplul următor

Se specifică că obiectele lui Ivan și Petru sunt bărbați. că Ivan este tatăl lui Petra și că două ori sunt patru.

De ce este pusă o săgeată? Vederea generală a înregistrării produsului "dacă A. atunci B", unde A și B sunt predicate, este exprimată în Prolog după cum urmează:

Faptul nu are o premisă și este citit "apoi B", adică afirmația B este privită ca un adevărat fapt.

O mulțime de fapte formează cel mai simplu program Prolog. Dar un predicat atomic de fapt poate conține variabile ca argumente sau termeni non-bază. În acest caz, în mod implicit, se adaugă un cuantificator universal cu variabile predicate. Astfel de fapte sunt numite universale. acestea sunt valabile pentru toate valorile variabilelor. De exemplu,

înseamnă că orice obiect al programului "iubește un măr". Faptele universale scurtează înregistrarea programului.







Trimiteți-le prietenilor: