268 RSTI/hors série. JFPLC 2003.
1. Introduction
La consistance d’arc joue un rôle central dans la résolution de Problèmes de Sa-
tisfaction de Contraintes (CSPs). En effet, l’algorithme MAC [SAB 94], i.e., l’algo-
rithme qui consiste à maintenir la consistance d’arc au cours de la recherche d’une
solution, est considéré comme l’approche générique complète la plus efficace pour
résoudre des instances de problèmes larges et difficiles [BES 96]. De nombreux algo-
rithmes ont été proposés pour établir la consistance d’arc.
D’un coté, des algorithmes à gros grain tels que AC3 [MAC 77], AC2000 [BES 01],
AC2001/3.1 [BES 01, ZHA 01] et AC3 [DON 02] ont été développés; le principe
étant d’appliquer des révisions successives d’arcs, i.e., de couples composés
d’une contrainte et d’une variable appartenant à l’ensemble des variables de .
Ces algorithmes sont faciles à implémenter et efficaces en pratique.
De l’autre coté, des algorithmes à grain fin tels que AC4 [MOH 86], AC6 [BES 94]
et AC7 [BES 99] ont été proposés; le principe étant d’appliquer des révisions succes-
sives de “valeurs”, i.e., de triplets composés d’un arc et d’une valeur
appartenant au domaine de . Ces algorithmes sont plus difficiles à implémenter
puisqu’il est nécessaire de gérer des structures de données plus lourdes. Et même si,
AC6 et AC7 sont compétitifs vis à vis de AC3 et de AC2001/3.1 dans le contexte d’une
phase de pré-traitement, ceci est moins évident dans le contexte d’une recherche de
solution puisque maintenir ces structures de données peut s’avérer pénalisant.
Les algorithmes de consistance d’arc peuvent être caractérisés par un certain nom-
bre de propriétés “désirables” [BES 99]. En particulier, il est intéressant d’exploiter la
bidirectionalité des contraintes (appelée multidirectionalité si les contraintes ne sont
pas binaires) de manière à éviter des tests de consistance inutiles. La bidirectionalité
signifie que si une valeur d’un domaine d’une variable supporte (est compatible
avec) une valeur du domaine d’une variable par rapport à une contrainte binaire
liant et alors de supporte également de . Aussi, si un test de
consistance est réalisé lors de la recherche d’un support pour , il n’y a nul
besoin de réaliser ultérieurement le même test de consistance lors de la recherche
d’un support pour pourvu que ce test de consistance ait été enregistré comme un
succès ou comme un échec. On peut parler d’exploitation positive et négative de la
bidirectionalité.
Parmi tous les algorithmes cités précédemment, AC7 est le seul qui prenne en
compte la bidirectionalité. Dans ce papier, nous proposons d’exploiter la bidirectio-
nalité des contraintes pour les algorithmes à gros grain. Tout d’abord, nous introdui-
sons deux nouveaux algorithmes, appelés AC3.2 et AC3.3, qui peuvent être considé-
rés comme des améliorations de AC2001/3.1. AC3.2 est un algorithme général, i.e.,
adapté aux problèmes dont les contraintes sont d’arité quelconque, qui exploite par-
tiellement la bidirectionalité positive tandis que AC3.3 est un algorithme binaire, i.e.,
adapté uniquement aux problèmes dont les contraintes sont binaires, qui exploite to-
talement la bidirectionalité positive.