Un exemplu de folosire a metodelor de returnare după eșec (opn) și trunchiere și rollback (oo) în prologul limbajului,

Un exemplu simplu de lucru de utilizare a metodelor de "tăiere și rulare înapoi" și "rulare înapoi după eșec" pentru organizarea ciclurilor în limba Prolog:

% Acest exemplu ilustrează modul de obținere a mai multor soluții posibile.






% Sunt utilizate metode: răsturnarea după eșec (ARF) și trunchierea și răsturnarea (RO)


Scop: obținerea de liste diferite de copii

predicate
copil nedeterminat (simbol, simbol)

all_childs
all_childs_Alisa
all_childs_before_Diana
first_child_Alisa

clauze
% Baza pentru copii
copil (Timur, Kozlov).
copil ("Alice", "Popova").
copil ("Eugene", "Kuznetsova").
copil ("Olya", "Frolova").
copil ("Alice", "Shapochka").
copil ("Petru", "Ivanov").
copil ("Alice", "Rublev").


% Lista tuturor copiilor - Metoda de returnare după eșec (OPN)
all_childs: - copil (X, Y), scrie (X, "", Y), nl, eșuează.

% Lista tuturor copiilor numiți Alice - Metoda de revenire după eșec (ARF)
all_childs_Alisa: - copil (X, Y), X = "Alice", scrie (X, Y), nl, eșuează.








% Lista tuturor copiilor până la Diana inclusiv - Metoda de tăiere și rulare înapoi (OO)
all_childs_before_Diana: - copil (X, Y), scrie (X, Y), nl, X = "Diana".

% Primul copil numit Alice - metoda de tăiere și de rulare înapoi (OO)
first_child_Alisa: - copil (X, Y), X = "Alice", scrie (X, Y), nl.

poartă
% write ("Lista tuturor copiilor:"), nl, all_childs.
% write ("Lista de copii numită Alice:"), nl, all_childs_Alisa.
% write ("Lista tuturor copiilor până la Diana inclusiv:"), nl, all_childs_before_Diana.
scrie ("Primul copil numit Alice:"), nl, first_child_Alisa.


Punctul de exclamare în prologul (așa-numitul operator de cut-off), în cazul în care explica pe degete, functioneaza ceva de genul: Dacă a existat performanța echipei, chiar daca sunt cauzate de regulile anterioare au fost alte soluții pentru examinare - derulare înapoi de la această regulă tot nu ar fi „!“ a făcut. Am interzis revocarea și căutarea altor soluții.

Mai mult (A, 3): - A<3.
Mai mult (A, 5): - A<5.
Mai mult (A, 8): - A<8.

Scopul este mai mare (4, număr).

Va returna răspunsul: number = 5.

Deși au existat două răspunsuri posibile: 4 și 8. Dar înainte de verificarea ultimei reguli nu am ajuns, pentru că în regula "Mai mult (A, 5): - A<5. " запретил нам откатываться к предыдущим правилам своим восклицательным знаком, на который Пролог наткнулись, когда нашёл решение "число=5".

Sam sa încurcat în ceea ce el a scris, dar este ușor de înțeles și explicat rapid))







Trimiteți-le prietenilor: