Inteligenta artificiala - iteratie si recursivitate
calendar_month 26 Ian 2010, 00:00
Programatorii Pascal, C sunt familiarizati cu instructiunile tipice acestor limbaje: for, while, etc. in Prolog nu exista aceste instructiuni care specifica direct un ciclu. Prolog admite doua tipuri de procese repetitive – backtracking si recursivitate.

Aceasta aparenta lipsa a instructiunilor ciclice nu restrictioneaza limbajul Prolog. De fapt Prolog recunoaste un caz special de recursivitate – numita tail recursion – si o compileaza transformand-o intr-o bucla iterativa in limbaj masina. Aceasta inseamna ca programul va fi scris recursiv, insa codul compilat este la fel de eficient ca si cand ar fi scris in Pascal sau C nerecursiv (iterativ).

Atunci cand o procedura revine inapoi, prin mecanismul backtracking acest lucru se face cu scopul de a gasi o solutie noua la un obiectiv. Se face aceasta revenire prin retragerea la cel mai recent subobiectiv care mai are alternative ce nu au fost luate in considerare; se ia in considerare aceasta noua alternativa, apoi se continua mai departe. Se poate exploata mecanismul backtracking pentru a obtine procese repetitive.