next up previous contents
suivant: Résultats expérimentaux monter: Utilisation du centre de précédent: Définitions et propriétés   Table des matières

Mise en \oeuvre

On considère tous les sous-problèmes triangulaires de notre instance fermée et on peut définir le sous-problème $ T_{ijk}$ en ajoutant des contraintes redondantes, mettant en jeu le centre de gravité du triangle. On peut le faire uniquement si l'instance est fermée et donc que les distances vérifient les inégalités triangulaires. Voici comment on construit l'instance de $ T_{ijk}$ : Cet exemple, dérivé de l'exemple 2.2, illustre l'amélioration du filtrage que l'on peut faire en ajoutant ces contraintes redondantes.

Exemple 4.1   Soient 3 points $ A(x_A,y_A)$, $ B(x_B,y_B)$ et $ C(x_C,y_C)$ tels que :
$ AB=BC=8$ et $ AC=16$
$ D_{x_A}=[0,4]$, $ D_{x_B}=[8,12]$ et $ D_{x_C}=[16,20]$. $ D_{y_A}=[0,4]$, $ D_{y_B}=[8,12]$ et $ D_{y_C}=[0,4]$.
Nos inconnues sont donc $ x_A$, $ x_B$ et $ x_C$ et les contraintes :
$ C_1$ : $ (x_A-x_B)^2+(y_A-y_B)^2=8^2$
$ C_2$ : $ (x_B-x_C)^2+(y_B-y_C)^2=8^2$
$ C_3$ : $ (x_A-x_C)^2+(y_A-y_C)^2=16^2$
On remarque que $ AB+BC=AC$, ce qui veut dire que les 3 points sont alignés. Ce système n'a pas de solutions puisqu'on ne peut pas aligner les 3 points s'il sont instanciés dans leurs domaines.
Ici le $ \mathcal{CSP}$ est 2B-consistant car les domaines vérifient localement toutes les contraintes, pourtant le système n'a pas de solutions.
Voici l'instance $ T_{ABC}$ correspondante, on a : Lorsqu'on veut résoudre cette instance par la 2B, on a la réponse immédiatement puisque la contrainte $ C_5$ est violée. En effet, elle signifie que les points $ B$ et $ G$ sont confondus, or leurs domaines en $ y$ ont une intersection vide.

On peut donc remplacer la procedure FILTER-DOMAINS par une méthode qui calcule les données de l'instance $ T_{ijk}$, puis la résout par 3B, avec effets de bord sur l'instance du problème initial. On appelle cette procédure Floyd-3B :

procedure Floyd-3B( $ \mathcal{I}=(\mathcal{P},\:\mathcal{D},\:\Delta)$ )
pour k $ \rightarrow$ 1 à $ n$ faire
pour j $ \rightarrow$ 1 à $ n$ faire
pour i $ \rightarrow$ 1 à $ n$ faire
si $ u_{ij} > u_{ik} + u_{jk}$ alors $ u_{ij} = u_{ik} + u_{jk}$
si $ l_{ij} < l_{ik} - u_{jk}$ alors $ l_{ij} = l_{ik} - u_{jk}$
sinon si $ l_{ij} < l_{jk} - u_{ik}$ alors $ l_{ij} = l_{jk} - u_{ik}$
si $ l_{ij} > u_{ij}$ alors Erreur
3B($ T_{ijk}$)
finpour
finpour
finpour
retourner $ \mathcal{I}$


next up previous contents
suivant: Résultats expérimentaux monter: Utilisation du centre de précédent: Définitions et propriétés   Table des matières
Heikel Batnini 2002-10-22