UM2 : M2RI UMIN310 2005-2006
2. De s’intéresser aux propriétés suivantes (i.e. donner des preuves (au moins des schémas de preuves) ou des contre-
exemples) :
o équivalence entre spécialisation et projection ;
o adéquation et complétude de la projection par rapport à la déduction logique et/ou par rapport à la
conséquence sémantique définie dans l’interprétation ensembliste.
3. De discuter des liens entre cette extension et l’extension des BG à la négation telle qu’elle est décrite dans le
rapport de recherche. En particulier, observant que la différence est la négation de l’égalité, pourrait-on proposer
différentes sémantiques de différence ?
Sujet 2 : Amélioration de l’algorithme de backtrack recherchant une projection
Contexte. En cours, nous avons vu un algorithme générique qui, étant donnés deux BGs G et H, retourne une projection de G
dans H s'il en existe une, et un échec dans le cas contraire. Cet algorithme suit le principe classique du backtrack : il tente
successivement d'affecter une image à un noeud de G, en maintenant la propriété suivante : « à un instant donné, les
affectations déjà construites doivent définir une solution partielle ». Si une affectation d'un sommet c est incompatible avec
celles déjà réalisées (on n'a plus une solution partielle), l'algorithme tente d'affecter une autre image à c. Si toutes les images
potentielles de c ont été essayées sans succès, l'algorithme « backtrack » : il revient au noeud traité juste avant c et essaye
d'affecter une autre image à ce noeud, si possible. Cet algorithme peut être vu comme explorant un arbre de recherche
représentant toutes les applications possibles de CG dans CH.
Le sous-algorithme preprocessing() a pour tâche de restreindre a priori la partie de l'arbre de recherche explorée par
l'algorithme. Nous partirons du sous-algorithme suivant :
Pour tout sommet c de CG
1. Calculer poss(c) = { c'
CH | étiq(c) étiq(c') }
2. Si poss(c) est vide, sortir avec échec
Questions.
1. Donner une définition précise de ce qu'est une « projection partielle ». Comment peut-on vérifier, après affectation
d'une image à c, que l'application Sol' obtenue est une projection partielle?
2. On appelle filtre une application qui à tout sommet concept de G associe un ensemble non vide de sommets de H ayant
une étiquette inférieure ou égale. Tout filtre vérifie la propriété suivante, appelée consistance d'étiquettes :
pour c
CG, poss(c) n'est pas vide et
pour tout c'
poss(c), {(c,c')} est une projection partielle de G dans H.
Lorsqu'il se termine avec succès, le sous-algorithme précédent calcule le filtre maximal (à tout sommet, il associe
l'ensemble de tous les sommets de H ayant une étiquette inférieure ou égale). Toute projection de G dans H associe forcément
à tout sommet c
CG un élément de poss(c).
A partir du filtre maximal, on veut calculer le plus grand filtre qui vérifie la propriété suivante (appelée consistance de
relation) : pour tout c
CG, pour tout c'
poss(c), pour toute relation r voisine
de c, ayant pour autres voisins c1 ... cp, on peut étendre la projection
partielle {(c,c')} à une projection partielle affectant à tout ci une image
prise dans poss(ci).
Pour G et H donnés, il n'existe pas forcément de filtre vérifiant cette propriété, mais s'il en existe un, il est unique (ce qu'on
ne vous demande pas de démontrer). On l'appelle le filtre relation-consistant.
Remarque : pour assurer cette propriété, il est intéressant d'étendre la notion de filtre aux sommets relations.
o Définir précisément la notion de filtre qui vérifie la consistance de relation.
o Proposer un algorithme qui calcule ce filtre lorsqu'il existe. Votre algorithme est-il polynomial ?
3. Les techniques de filtrage peuvent être utilisées en phase de prétraitement, mais aussi pendant la recherche elle-même,
de façon à propager les conséquences d'une affectation. Expliquez comment vous pouvez tirer parti de votre
algorithme de filtrage dans l'algorithme de backtrack.