3.3 Teoria de la demostració - La Salle
3.3 Teoria de la demostració - La Salle
3.3 Teoria de la demostració - La Salle
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
Estratègia d’execució (el control)<br />
En l’exemple anterior hem vist que l’estratègia per l’execució d’un programa inclou els<br />
següents processos:<br />
1. Incloure objectius en <strong>la</strong> llista d’objectius com a resultat <strong>de</strong> <strong>la</strong> resolució entre un<br />
objectiu i una reg<strong>la</strong>.<br />
2. Seleccionar una reg<strong>la</strong>, entre les possibles, per resoldre un objectiu.<br />
3. Seleccionar el proper objectiu, <strong>de</strong> <strong>la</strong> llista d’objectius a resoldre.<br />
Visual Prolog segueix <strong>la</strong> següent estratègia. Sigui o1, o2,...en què <strong>la</strong> llista d’objectius a<br />
<strong>de</strong>mostrar en un pas <strong>de</strong>terminat <strong>de</strong> l’execució.<br />
1. Seleccionar l’objectiu més a l’esquerra (o1). Efectivament, es <strong>de</strong>mostraran<br />
d’esquerra a dreta.<br />
2. Seleccionar una reg<strong>la</strong> r1 :- p1,p2,...pm. <strong>de</strong> manera que o1 i r1 tinguin el mateix nom<br />
<strong>de</strong> predicat i els seus termes (arguments) siguin unificables. Com <strong>la</strong> lògica permet tenir<br />
predicats no <strong>de</strong>terministes, aleshores po<strong>de</strong>n haver-hi diverses regles potencials per<br />
resoldre l’objectiu. Prolog selecciona <strong>la</strong> primera en l’ordre que apareixen en el<br />
programa. Fixeu-vos doncs en <strong>la</strong> importància <strong>de</strong> l’ordre ja que és una manera<br />
d’intervenir en l’estratègia.<br />
3. Aplicar <strong>la</strong> reg<strong>la</strong> seleccionada. L’execució <strong>de</strong> <strong>la</strong> reg<strong>la</strong> consisteix en:<br />
- unificar els termes <strong>de</strong> l’objectiu i <strong>de</strong>l predicat <strong>de</strong> <strong>la</strong> part esquerra <strong>de</strong> <strong>la</strong> reg<strong>la</strong>.<br />
- aplicar l’unificador als predicats <strong>de</strong> <strong>la</strong> part dreta <strong>de</strong> <strong>la</strong> reg<strong>la</strong> i els objectius restants <strong>de</strong><br />
<strong>la</strong> llista que falten per <strong>de</strong>mostrar.<br />
- substituir l’objectiu que s’està <strong>de</strong>mostrant per als predicats unificats <strong>de</strong> <strong>la</strong> part dreta<br />
<strong>de</strong> <strong>la</strong> reg<strong>la</strong>.<br />
Aquests predicats s’insereixen com a nous objectius en <strong>la</strong> part esquerra <strong>de</strong> <strong>la</strong> llista<br />
d’objectius<br />
Backtracking<br />
En l’estratègia <strong>de</strong>scrita anteriorment, a l’hora d’escollir i aplicar una reg<strong>la</strong> <strong>de</strong> les<br />
possibles per <strong>de</strong>mostrar un objectiu, po<strong>de</strong>n presentar-se dues situacions:<br />
1. Algun o tots els objectius nous introduïts no po<strong>de</strong>n ser provats.<br />
2. Els objectius nous introduïts po<strong>de</strong>n ser provats però hi ha altres regles que també<br />
ens portarien a una solució.<br />
En els dos casos Visual Prolog aplica <strong>la</strong> tècnica <strong>de</strong> backtracking. És a dir, torna enrere<br />
<strong>de</strong>sfent el que ha fet per seguir un altre camí aplicant <strong>la</strong> següent reg<strong>la</strong> possible. En el<br />
primer cas és necessari per continuar provant i per esgotar tots el camins per trobar<br />
una solució. En el segon cas, es fa per trobar totes les solucions possibles. Aquesta és<br />
una característica espectacu<strong>la</strong>r <strong>de</strong> Prolog que fa que sigui un llenguatge <strong>de</strong><br />
programació molt po<strong>de</strong>rós.<br />
En aquesta mateixa sessió donarem exemples per il·lustrar aquest mecanisme.<br />
105