Elementele de bază ale prologului vizual

Bazele Visual Prolog

1.1 Programarea în LOGIC

În Prolog, soluția problemei este obținută printr-o concluzie logică din propozițiile cunoscute anterior. De obicei, programul pe Prolog nu este o secvență de acțiuni - este un set de fapte cu reguli care oferă concluzii pe baza acestor fapte. Prin urmare, Prolog este cunoscut ca un limbaj declarativ.







Prologul se bazează pe propozițiile lui Horn, care sunt un subset al sistemului formal, numit logica predicatelor. Logica predicatelor este cea mai simplă modalitate de a explica modul în care funcționează gândirea și este mai simplu decât aritmetica pe care o utilizați de mult timp. Prolog folosește o versiune simplificată a sintaxei logicii predicatelor.

Prolog include un mecanism de ieșire, care se bazează pe compararea probelor. Selectând răspunsurile la solicitări, el extrage informațiile stocate (cunoscute). Prolog încearcă să verifice adevărul ipotezei (cu alte cuvinte - să răspundă la întrebare), solicitând aceste informații, ceea ce este deja cunoscut că este adevărat. Cunoașterea prologului a lumii este un set limitat de fapte (și reguli) stabilite în program.

Una dintre cele mai importante caracteristici ale Prolog este că, pe lângă căutarea logică a răspunsurilor la întrebările adresate, el se poate ocupa de alternative și poate găsi toate soluțiile posibile. În loc de munca obișnuită de la începutul programului până la sfârșitul prologului poate merge înapoi și să vizualizați mai mult de un „mod“ în rezolvarea problemei tuturor părților componente.

Logica predicatului a fost dezvoltată pentru cea mai simplă transformare a principiilor gândirii logice într-o formă scrisă. Prolog profită de sintaxa logicii pentru a dezvolta un limbaj de programare. În logica predicatelor, toate cuvintele neesențiale trebuie să fie excluse din propoziție. Apoi este necesar să transformăm aceste propoziții, punându-le pe primul loc relația, și după ea - obiectele grupate. În viitor, obiectele devin argumente, între care se stabilește această relație.

Oferte în limbaj natural

Sintaxa logicii predicatelor

Bill îi place mașina dacă mașina este frumoasă

(Bill, masina) daca este distractiv (masina)

Fapte și reguli

Când compuneți un program în limba Prolog, trebuie să descrieți obiectele și relațiile și apoi regulile în care aceste relații sunt adevărate.

Bill îi plac câinii.

această teză stabilește relația dintre obiectele Bill și câini; această atitudine este ca și cum. Regula care determină când o teză este adevărată poate să arate astfel:

Bill îi plac câinii dacă câinii sunt drăguți.

Relația dintre obiecte este numită un fapt. Faptele sunt relații sau proprietăți despre care se știe că au sensul "adevărului". Relația constă în numele relației și al obiectului sau al obiectelor închise în paranteze. Ca și propoziția, fapta se încheie cu o perioadă.

Fapte în plus față de relațiile pot exprima și proprietăți:

Regulile vă permit să deduceți un fapt din alte fapte. O regulă este o concluzie pentru care se știe că este adevărat dacă una sau mai multe alte constatări sau fapte găsite sunt adevărate. Regulile sunt relații înrudite. Acestea permit Prologului să furnizeze logic o informație de la alta. Regula presupune valoarea "adevăr" dacă se dovedește că setul de condiții dat este adevărat.

Cindy îi place tot ce îi place lui Bill.

Conform acestei reguli, se dovedește că

Cindy îi place câinilor.

Pe sintaxa Prolog a regulilor vor fi diferite:

place (Cindy, Ceva): - place (factura, ceva).

Simbol: - are sens "dacă" și servește la separarea a două părți ale regulii: antetul și corpul. Un titlu este un fapt care ar fi adevărat dacă ar fi adevărate câteva condiții. Aceasta se numește o derivare sau o relație dependentă. Corpul este un set de condiții care trebuie să fie adevărate, astfel încât Prolog să poată dovedi că titlul regulii este adevărat.







Regula poate fi privită ca o procedură. În cazul nostru, arată astfel: "Pentru a dovedi că Cindy iubește ceva, dovedește că Bill o iubește". Din acest punct de vedere procedural, regulile pot prevedea executarea oricăror acțiuni, altele decât dovada faptelor - tipărirea unui lucru sau crearea unui fișier.

Odată întrebat câteva fapte, putem pune întrebări despre relația dintre ele. Aceasta se numește interogarea sistemului Prolog. Prolog întotdeauna caută răspunsul la interogare, începând cu primul fapt și sortează toate faptele până la sfârșit.

În cel de-al doilea caz, cel de-al doilea obiect - Ce - începe cu o literă principală, în timp ce primul obiect - cindy - cu un litere mici. Acest lucru se datorează faptului că cindy este un obiect fix, constant, o valoare cunoscută și Ce este o variabilă.

După ce a primit o cerere că iubește pe Cindy, Prolog va răspunde:

Solicitările (obiectivele) pot fi simple sau complexe. Complexul se numește goluri, constând din două sau mai multe părți. Și fiecare parte a unui scop complex este un sub-obiectiv. Este posibil să se utilizeze formele conjunctive și disjunctive de combinare a subgalezelor. Semnele sunt folosite ca separatoare. și; respectiv.

Obiectivele multiple pot fi utilizate pentru a găsi o soluție în care:

ü Ambele subgaloane A și B sunt adevărate (conjuncție), împărțind subgoalele cu o virgulă:

ü este adevărat fie un sub-gol A, fie un sub-gol B (disjuncție), împărțind subgoalele cu punct și virgulă.

Variabilele din Prolog întotdeauna încep cu o majusculă sau cu un subliniere.

Prolog nu are un operator de atribuire. Variabilele din prolog sunt inițializate în comparație cu constantele din fapte sau reguli. Înainte de inițializare, variabila este liberă, după ce îi atribuie o valoare, devine obligatorie. Variabila rămâne legată doar de timpul necesar pentru a obține o soluție la cerere, apoi Prolog îl eliberează și caută o altă soluție.

Nu puteți salva informații atribuind o valoare unei variabile. Variabilele sunt folosite ca parte a procesului de căutare a soluției, nu ca un magazin de informații.

Acest exemplu este convenabil de a observa modul în care el iese în evidență printre faptele care al doilea argument - lectură, o variabilă Persoana este inițial asociată cu valoarea lui Ellen și lista faptelor urmărește fapt care corespunde la a doua parte a interogării: likes (Ellenei, înot). Din cauza acestui fapt, nu, fapte Prolog distinge între următorul fapt care al doilea argument - lectură, adică, îi place (Eric, lectură) și o persoană variabilă este asociată cu valoarea lui Eric. În plus, potrivit listei de fapte, se caută faptele care corespund celei de-a doua părți a cererii: likes (eric, swimming). Și, din moment ce are loc acest lucru, Prolog dă răspunsul:

Variabilele de acest tip sunt utilizate în cazul în care este necesar să nu se utilizeze la cerere completarea, ci anumite informații din interogare, ignorând valorile inutile. Aceste variabile sunt notate cu un subliniere.

De asemenea, variabilele anonime pot fi folosite în faptele Prolog. De exemplu, faptele:

Poate fi exprimată printr-o limbă naturală: Toată lumea are o gură. Toată lumea bea.

Variabile anonime sunt mapate la orice date.

articole = carte (șir Titlu, șir Autor)

(șirul superior, șirul de caractere inferior)

Programe Prolog Visual

Principalele secțiuni ale programelor.

- domenii (domenii);

- secțiune a predicatelor;

- secțiuni (propuneri);

- scopul secțiunii.

Sugestie secțiune. Toate frazele pentru fiecare predicat din această secțiune trebuie plasate împreună. Secvența de propoziții care descriu un predicat se numește o procedură.

Secțiunea predicat. Acesta afișează toate predicatele diferite de standard (VP încorporat) și utilizate în program. Predicatele ar trebui să fie listate cu tipurile (domeniile) argumentelor lor.

1) numele predicatului este o succesiune de litere latine, cifre și subliniere, începând cu o literă de majuscule. Numele nu poate fi mai mare de 250 de caractere. În nume este interzis să folosiți astfel de caractere ca un spațiu, -, * etc .;

2) lista domeniilor (tipurilor) argumentelor predicatului închise în paranteze.

Spre deosebire de clauza clauzelor, descrierea predicatului nu se încheie cu o perioadă. Domeniile (tipurile) de argumente pot fi fie domenii standard, fie domenii declarate în secțiunea de domenii.

Aritatea unui predicat este numărul de argumente care sunt necesare. În program, puteți folosi două predicate cu același nume, dar cu o diferență în funcție.

Domeniu partiție. Dacă predicatul my_predikate (simbol, integer) este declarat în secțiunea predicate după cum urmează:

my_predikate (simbol, intreg)

my_predikate (nume, număr),

cele de mai sus ar trebui descrise în secțiunea de domenii

Domeniile vă permit să specificați nume diferite pentru diferite tipuri de date.

imya, pol = simbol

persoană (imya, pol, vozrast)

rovesnik (X, Y): - persoana (X, Pol, Let), persoana (Pol, Y, Let)

dacă o variabilă dintr-o propoziție este folosită în mai mult de un predicat, ea trebuie declarată identic în fiecare dintre acestea.

scurt, semnat, cantitativ







Articole similare

Trimiteți-le prietenilor: