Disjuncția obiectivelor

Cartea experților englezi, care conține o descriere a programelor logice de bază și a caracteristicilor limbajului Prolog - limba de bază a unui calculator de generația a cincea. Domeniile de aplicare a acestei limbi sunt asociate cu dezvoltarea de sisteme expert, baze de date inteligente, prelucrarea limbajului natural, dezvoltarea compilatoarelor. Cartea este utilă pentru prima citire a limbajului Prolog.







Carte: PROGRAMAREA LA LIMBA PROLOGULUI

Disjuncția obiectivelor

Disjuncția obiectivelor

Functorul ";" definește o disjuncție (adică) a declarațiilor țintă. În cazul în care X și Y - aprobare de încredere, declarația obiectiv X, Y este în concordanță cu baza de date, în cazul în care acordul X sau Y. Dacă X nu se potrivește, atunci se face o încercare de a demonstra consistența Y. Dacă Y nu este de acord, nu este consecventă și întreaga disjuncția . Putem folosi functorul ";" pentru a exprima alternative în cadrul aceleiași declarații. De exemplu, vom presupune că un obiect este o persoană, dacă acest obiect este Adam sau Eva sau dacă obiectul are o mamă. Putem exprima acest lucru într-o singură regulă după cum urmează:

persoană (X): - (X = adam, X = eva, mama (X, Y)).







În această regulă, am identificat de fapt trei alternative. Cu toate acestea, pentru Prolog această regulă conține două alternative, dintre care una conține două alternative. Din moment ce functorul ";" este construit și definit ca un operator infix asociativ drept, atunci declarația țintă din regula de mai sus poate fi rescrisă după cum urmează:

';' (X = adam, ';' (X = eva, mama (X, Y)))

Astfel, prima posibilitate corespunde faptului că X este un adam. A doua opțiune include două alternative: X este eva sau X are o mamă

Putem folosi disjuncția oriunde, unde poate fi folosită orice altă declarație țintă despre Prolog. Cu toate acestea, este recomandabil să se utilizeze paranteze suplimentare pentru a evita neînțelegerile privind interacțiunea operatorilor; "; și ",". De obicei, putem evita folosirea disjuncției prin utilizarea mai multor fapte și reguli care conțin, eventual, definiția unor predicate suplimentare. De exemplu, exemplul de mai sus este exact echivalent cu următorul text:

Această opțiune este mai tradițională și, probabil, mai ușor de citit. Pentru multe sisteme Prolog, poate fi mai eficient decât utilizarea ";".

Rezultatul tăierii este incapacitatea de a schimba alegerea alternativelor datorită prezenței disjuncțiilor, realizată din momentul comparației cu regula care conține tăierea (vezi Capitolul 4). Ca o consecință, există un număr de cazuri în care un program care conține tăierea nu poate fi convertit într-un program obișnuit fără a utiliza disjuncții. Cu toate acestea, în general, nu este recomandat să utilizați prea des ";". Ca un avertisment, vă referim la Ch. 8, care arată modul în care utilizarea erupției cutanate ";" face dificilă înțelegerea programelor.







Articole similare

Trimiteți-le prietenilor: