next up previous contents
suivant: L'interface monter: La résolution de buts précédent: Algorithme de résolution de   Table des matières

Affichage de l'environnement

La résolution de buts mise en place ici ne possède pas de ramasse-miettes (garbage collector en anglais). Si la profondeur venait à être trop grande, soit parce que la question posée demande trop de ressources, soit parce que la résolution est entrée dans une boucle infinie, un message du type stack overflow est affiché par le système. Pour tenter de résoudre ce probléme, on arrête, avec une erreur, les appels récursifs au-delà d'une certaine profondeur. Ceci est complètement arbitraire : il se peut qu'une erreur du type stack overflow se produise avant, si les environnements précédents sont trop importants. Il faudrait pouvoir quantifier plus précisément les choses, ou mettre un ramasse-miettes en place.
Comme on l'a vu précédemment, certaines boucles ont pu être évitées en faisant pointer la variable de niveau supérieur vers la variable de niveau inférieur. Mais les boucles du type *i0 pointe vers f(*x0) et *x0 pointe vers *i0 ne sont pas gérées et conduisent à un arbre de résolution infini. C'est essentiellement ce problème que l'on a voulu éviter en arrêtant l'algorithme à une certaine profondeur.
next up previous contents
suivant: L'interface monter: La résolution de buts précédent: Algorithme de résolution de   Table des matières
Alexandre DAGAN
2000-07-07