Problèmes de satisfaction de contraintes

De nombreuses tâches d'ordonnancement, d'affectation et de résolution d'énigmes consistent à choisir les valeurs d'un ensemble de variables pour que toutes les règles soient respectées. Ce cours montre comment décrire ces tâches comme des problèmes de satisfaction de contraintes et comment les résoudre : recherche avec retour arrière et choix judicieux de l'ordre des variables et des valeurs, vérification anticipée et cohérence d'arc pour éliminer les valeurs impossibles, recherche locale par l'heuristique des conflits minimaux pour les grands problèmes et les réparations rapides, et méthodes qui exploitent la structure du graphe de contraintes, comme l'algorithme linéaire pour les problèmes arborescents et le conditionnement par ensemble coupe-cycles. Chaque méthode est détaillée pas à pas sur de petits exemples, notamment un emploi du temps d'ateliers, une coloration de carte et le problème des n reines.

IntermédiaireUnité 3 sur 10 de la formation Formation : Intelligence artificielle : agents, recherche et apprentissage

Ce que tu vas apprendre

  1. Décrire un problème par ses variables, ses domaines et ses contraintes, reconnaître les types de contraintes et transformer des tâches réelles d'ordonnancement et d'affectation en problèmes de satisfaction de contraintes bien définis.
    • Décrire les composantes d'un problème de satisfaction de contraintes
      Nommer les variables, les domaines et les contraintes d'un problème, distinguer les affectations partielles, cohérentes et complètes, et tracer le graphe de contraintes.
    • Distinguer les types de contraintes
      Classer les contraintes en contraintes unaires, binaires, d'arité supérieure ou globales, réécrire les contraintes d'arité supérieure sous forme binaire et distinguer les contraintes dures des préférences.
    • Modéliser l'ordonnancement et l'affectation par des problèmes de satisfaction de contraintes
      Transformer les problèmes d'emploi du temps, d'ordonnancement d'atelier, d'affectation et les énigmes en problèmes de satisfaction de contraintes, en choisissant les variables et les domaines de manière à garder des contraintes simples.
  2. Rechercher une solution en affectant une variable à la fois, revenir en arrière dans les impasses et choisir l'ordre des variables et des valeurs pour trouver une solution, ou prouver qu'il n'en existe aucune, avec beaucoup moins de travail.
    • Exécuter une recherche avec retour arrière pas à pas
      Expliquer pourquoi le retour arrière affecte une variable par niveau, exécuter l'algorithme à la main et indiquer sa complétude et son coût.
    • Choisir les variables et les valeurs à l'aide d'heuristiques d'ordonnancement
      Appliquer l'heuristique du minimum de valeurs restantes, l'heuristique du degré et celle de la valeur la moins contraignante, expliquer pourquoi elles vont dans des directions opposées et mesurer leur effet sur une recherche.
    • Effectuer un retour arrière intelligent après une impasse
      Utiliser les ensembles de conflit pour revenir au-delà des variables qui n'ont pas causé un échec, et enregistrer les nogoods afin de ne pas répéter le même échec.
  3. Utiliser l'inférence pour supprimer les valeurs qui ne peuvent appartenir à aucune solution, avant et pendant la recherche, et déterminer ce que garantissent respectivement la vérification anticipée, la cohérence d'arc et les cohérences plus fortes.
    • Appliquer la vérification anticipée pendant la recherche
      Réduire les domaines des voisins d'une variable nouvellement affectée, détecter les domaines vides, restaurer les valeurs lors du retour arrière et reconnaître ce que la vérification anticipée ne détecte pas.
    • Établir la cohérence d'arc avec AC-3
      Appliquer la cohérence de nœud et d'arc, exécuter AC-3 à la main, connaître son coût et ses limites, et maintenir la cohérence d'arc pendant la recherche.
    • Utiliser des cohérences plus fortes et des contraintes globales
      Expliquer la cohérence de chemin et la k-cohérence, propager les contraintes Alldiff et les contraintes sur les bornes, et mettre en balance la réduction supplémentaire des domaines et son coût.
  4. Partir d'une affectation complète et la réparer avec l'heuristique des conflits minimaux, échapper aux plateaux et aux minima locaux, et déterminer quand la recherche locale ou le retour arrière est le meilleur outil.
    • Réparer les affectations avec l'heuristique des conflits minimaux
      Exécuter à la main l'heuristique des conflits minimaux avec une formulation à états complets, expliquer pourquoi elle fonctionne bien sur les grands problèmes et l'utiliser pour réparer un emploi du temps après un changement.
    • Échapper aux plateaux et aux minima locaux, et choisir entre recherche locale et retour arrière
      Utiliser les déplacements latéraux, la recherche tabou, la pondération des contraintes et les redémarrages, et déterminer quelle méthode convient à un problème donné.
  5. Lire le graphe de contraintes pour séparer un problème en parties indépendantes, résoudre en temps linéaire les problèmes de structure arborescente et ramener à des arbres les problèmes dont la structure est presque arborescente.
    • Séparer les sous-problèmes indépendants et résoudre les problèmes de satisfaction de contraintes arborescents
      Trouver les sous-problèmes indépendants dans le graphe de contraintes et résoudre un problème de satisfaction de contraintes arborescent avec les parcours ascendant et descendant de l'algorithme pour les arbres.
    • Ramener à des arbres les problèmes dont la structure est presque arborescente
      Appliquer le conditionnement par ensemble coupe-cycles et la décomposition arborescente, relier leur coût à la taille de l'ensemble coupe-cycles et à la largeur arborescente, et briser la symétrie de valeurs.

Satisfaction de contraintes : cours

5 chapitres

1

Formuler des problèmes de satisfaction de contraintes

Choisir un emploi du temps ou affecter des relecteurs commence par un modèle : quels éléments ont besoin d'une valeur, quelles valeurs sont possibles et quelles combinaisons sont autorisées. Un modèle clair permet d'utiliser les mêmes méthodes de résolution pour des tâches très différentes. Tu vas construire ce modèle, distinguer les exigences des préférences et voir comment le choix des variables modifie le travail d'un solveur. De petits exemples d'ordonnancement et d'énigmes rendent chaque composante concrète.

1.1 Décrire les composantes d'un problème de satisfaction de contraintes

Un problème de satisfaction de contraintes décrit un ensemble de choix et les règles qui les relient. Son état est une représentation factorisée : tu peux examiner chaque variable et sa valeur, puis réutiliser des méthodes générales de réduction des domaines et de recherche.

Variables, domaines et contraintes

Une variable désigne quelque chose à choisir. Son domaine énumère ses valeurs autorisées. Une contrainte précise les combinaisons qui peuvent se présenter ensemble. Pour les ateliers A et B, chaque valeur est un créneau de {1,2,3}. La règle « A précède B » a pour portée {A,B} et pour relation {(1,2),(1,3),(2,3)}. L'écriture A<B exprime la même relation de façon concise.

La portée indique les variables concernées ; la relation donne les tuples de valeurs autorisés. Confondre les deux conduit à un modèle dans lequel « rouge » devient une variable. Dans la coloration de carte, les régions sont les variables et les couleurs sont les valeurs.

Qu'est-ce qu'une solution ?

Une affectation donne des valeurs aux variables. Trois critères décrivent son état :

  • Elle est partielle si certaines variables n'ont pas de valeur.
  • Elle est complète si chaque variable a une valeur.
  • Elle est cohérente si elle ne viole aucune contrainte entre les variables affectées.

Une solution doit être complète et cohérente. Avec A=2 seule, l'affectation est cohérente mais partielle. La compléter avec B=1 la rend complète et incohérente. Choisir B=3 donne une solution à cet exemple à deux variables. Une affectation partielle cohérente peut néanmoins être impossible à compléter : les variables non affectées peuvent manquer de choix compatibles.

Lire un graphe de contraintes

Pour un problème de satisfaction de contraintes binaire, trace un nœud par variable et une arête pour chaque paire soumise à une contrainte. Dans une carte simplifiée de l'Australie, les variables sont WA, NT, SA, Q, NSW, V et T, chacune de domaine {rouge, vert, bleu}. Les paires voisines sont WA-NT, WA-SA, NT-SA, NT-Q, SA-Q, SA-NSW, SA-V, Q-NSW et NSW-V. Chaque arête exige des couleurs différentes.

Une solution est WA rouge, NT vert, SA bleu, Q rouge, NSW vert, V rouge et T rouge. Vérifie chaque arête, y compris SA-V. T n'a aucune arête : sa couleur est donc indépendante de celle du continent. Il y a 6 colorations du continent et 3 choix pour T, soit 18 solutions. Une contrainte concernant plusieurs variables nécessite une représentation par hypergraphe ; un nœud supplémentaire pour la contrainte peut être relié à chaque variable de sa portée.

Domaines et taille de la recherche

Un domaine discret fini est une liste fixe, comme trois couleurs. Un domaine discret infini pourrait contenir tous les horaires de début entiers positifs ou nuls. Un domaine continu pourrait contenir des horaires à valeurs réelles. Ces deux derniers types nécessitent des représentations et des méthodes adaptées ; la programmation linéaire traite les contraintes linéaires continues.

Pour n variables ayant chacune d valeurs, il y a dn affectations complètes. La carte possède 37=2187 affectations candidates avant que les contraintes n'en éliminent. Les problèmes de satisfaction de contraintes finis comprennent des problèmes NP-complets : on ne connaît donc pas de méthode générale de résolution en temps polynomial. Leur structure interne permet néanmoins de réduire la recherche : le solveur peut éliminer un choix sans énumérer toutes les affectations complètes qui le contiennent. Seules les valeurs finales déterminent si la réponse est valide ; le chemin suivi pour les trouver est sans importance.

Points clés

  • Un problème de satisfaction de contraintes précise les variables, leurs domaines et les contraintes sur les combinaisons de valeurs.
  • Une solution est à la fois complète et cohérente.
  • Un graphe de contraintes binaires montre quelles variables agissent directement les unes sur les autres.
  • Avec des domaines de même taille, le nombre d'affectations complètes est dn.

1.2 Distinguer les types de contraintes

Les contraintes se distinguent par le nombre de variables qu'elles relient et selon qu'elles expriment des exigences ou des préférences. Reconnaître cette structure t'aide à écrire un modèle fidèle et à choisir des méthodes de propagation utiles.

Classer selon la portée

Une contrainte unaire restreint une variable. Si l'atelier E ne peut pas utiliser le créneau 1, applique E≠1 en réduisant son domaine de {1,2,3} à {2,3} avant la recherche. Une contrainte binaire relie deux variables, comme A<B ou A≠D. Un problème de satisfaction de contraintes binaire ne contient que des contraintes unaires et binaires.

Une contrainte d'arité supérieure concerne au moins trois variables. Si les durées des tâches X, Y et Z doivent remplir 10 heures, écris X+Y+Z=10. Chaque durée appartenant à {1,2,3,4,5}, le tuple (2,3,4) ne convient pas, tandis que (2,3,5) convient. Pour vérifier une règle d'arité supérieure, les valeurs doivent convenir ensemble.

Conserver les contraintes globales utiles

Une contrainte globale donne un nom à une règle portant sur un groupe de variables de taille variable. Alldiff⁡(X1,…,Xk) exige des valeurs différentes pour chaque paire. Son ensemble de solutions est égal à celui défini par les k(k−1)/2 inégalités prises deux à deux. Pour neuf cases de Sudoku, cela représente 36 contraintes binaires.

La forme globale permet aussi au solveur de raisonner sur le groupe. Trois variables limitées à deux valeurs distinctes ne peuvent pas toutes être différentes, même si chaque paire séparément admet une affectation compatible. Des ensembles de solutions identiques ne garantissent pas une réduction des domaines aussi forte.

Une règle de capacité peut aussi être globale. Ici, Atmost⁡(10,P1,P2,P3) signifie P1+P2+P3≤10 : le nombre total de personnes affectées aux trois tâches ne peut pas dépasser dix. Les arguments représentent des quantités additionnées ; cette règle autorise donc, par exemple, (3,4,3).

Convertir une contrainte finie en forme binaire

Introduis une variable auxiliaire U dont les valeurs sont les triplets autorisés pour X+Y+Z=10. Une valeur possible est (2,3,5). Ajoute trois contraintes binaires : la première composante de U est égale à X, la deuxième à Y et la troisième à Z. Choisir cette valeur pour U exige donc X=2, Y=3 et Z=5.

Chaque triplet valide d'origine correspond à une valeur de U et chaque affectation cohérente comprenant U produit un triplet valide d'origine. Cette construction permet aux méthodes binaires de traiter une contrainte finie d'arité supérieure. Elle a pour coût un domaine de tuples potentiellement grand : c'est pourquoi les solveurs conservent souvent la règle globale ou d'arité supérieure d'origine.

Exigences et préférences
TypeSignificationExemple d'ordonnancement
Contrainte dureChaque solution doit la satisfaire.Un formateur ne peut pas animer deux ateliers à la fois.
Contrainte soupleUne violation ajoute un coût à un choix par ailleurs réalisable.Un formateur préfère une séance l'après-midi.

Avec des contraintes souples, la tâche devient un problème d'optimisation sous contraintes : satisfaire toutes les règles dures et minimiser le coût total des préférences. La séparation et évaluation et la recherche locale peuvent servir à l'optimisation.

Teste le modèle avec une affectation que tu sais valide et une autre que tu sais invalide. Une inégalité inventée entre des ateliers sans lien élimine des emplois du temps légitimes ; l'oubli d'une contrainte liée à un formateur commun autorise des emplois du temps impossibles. Les préférences demandent aussi de l'attention : transformer « après-midi préférable » en « après-midi obligatoire » peut éliminer tous les emplois du temps réalisables.

Points clés

  • Les contraintes unaires réduisent un domaine ; les contraintes binaires relient deux variables.
  • Alldiff exige des valeurs différentes deux à deux, mais permet une réduction plus forte des domaines par un raisonnement sur le groupe.
  • Des variables auxiliaires dont les valeurs sont des tuples permettent de convertir des contraintes finies d'arité supérieure en forme binaire.
  • Les contraintes dures définissent ce qui est réalisable ; les contraintes souples classent les choix réalisables.
  • Vérifie un cas valide et un cas invalide lorsque tu testes un modèle.

1.3 Modéliser l'ordonnancement et l'affectation par des problèmes de satisfaction de contraintes

Un modèle doit décrire les décisions assez directement pour que les règles soient faciles à exprimer. Commence par déterminer ce qu'il faut choisir, puis attribue des domaines et traduis chaque exigence à l'aide des variables qu'elle concerne réellement.

Construire un emploi du temps d'ateliers

Cinq ateliers d'un créneau chacun se partagent trois créneaux : 1 le matin, 2 au milieu de la journée et 3 l'après-midi. Soit A l'atelier Bases de Python, B Python avancé, C Statistiques, D Bases de données et E Éthique. Chaque atelier est une variable de domaine initial {1,2,3}.

Les participants communs imposent A≠C, A≠D, C≠D, B≠C, C≠E et D≠E. L'atelier de base doit précéder l'atelier avancé, donc A<B. Le formateur en éthique arrive au milieu de la journée, donc E≠1. Cela donne sept arêtes binaires et une règle unaire ; C a quatre voisins.

L'affectation A=2,B=3,C=1,D=3,E=2 satisfait toutes les règles : chaque paire d'ateliers ayant des participants communs occupe des créneaux différents, l'atelier de base précède l'atelier avancé et l'atelier Éthique n'est pas au créneau 1. C'est la seule affectation valide parmi les 35=243 candidates. Les ateliers B et D peuvent tous deux utiliser le créneau 3, car aucune règle ne leur impose d'être différents.

Choisir plutôt une variable par créneau ferait de chaque valeur un sous-ensemble d'ateliers, avec jusqu'à 25=32 sous-ensembles possibles par créneau. Les règles devraient alors examiner ces ensembles et garantir que chaque atelier a lieu une fois. Choisir les ateliers comme variables permet de garder des contraintes plus simples.

Exprimer les horaires des tâches et les ressources partagées

Dans l'ordonnancement d'atelier, utilise une variable d'heure de début pour chaque tâche. Préparer prend 20 minutes, Analyser 40 et Rédiger le rapport 30. Les heures de début sont des nombres entiers de minutes positifs ou nuls. L'ordre et l'échéance de 120 minutes donnent

SP+20≤SA,SA+40≤SR,SR+30≤120.

Les débuts au plus tôt sont 0, 20 et 60. En remontant depuis l'échéance, on obtient les débuts au plus tard 30, 50 et 90. Les intervalles sont donc SP∈[0;30], SA∈[20;50] et SR∈[60;90].

Deux tâches qui partagent une machine nécessitent une contrainte disjonctive : SX+dX≤SY ou SY+dY≤SX. L'une ou l'autre peut venir en premier, mais elles ne peuvent pas se chevaucher. Une simple contrainte de précédence imposerait un ordre particulier et supprimerait l'autre possibilité.

Modéliser les affectations et les énigmes

Pour trois rapports affectés à trois relecteurs, fais de chaque rapport une variable dont les valeurs sont les relecteurs. Utilise Alldiff si chaque relecteur traite un rapport. Un conflit d'intérêts retire un relecteur du domaine du rapport concerné.

Pour le problème des n reines, soit Qi la ligne de la reine dans la colonne i. Une reine par colonne est intégrée au modèle. Pour chaque paire, impose Qi≠Qj et ∣Qi−Qj∣≠∣i−j∣ afin d'éviter les attaques sur les lignes et les diagonales. Pour huit reines, cela réduit l'espace des possibilités : au lieu de choisir 8 cases parmi 64, soit 4 426 165 368 placements, on obtient 88=16 777 216 affectations. Il y a 92 solutions.

Pour le Sudoku, les 81 variables correspondant aux cases ont pour domaine les valeurs de 1 à 9. Les chiffres donnés imposent des contraintes unaires, et les 9 lignes, 9 colonnes et 9 régions imposent chacune une contrainte Alldiff.

Choisis les unités de temps les plus grossières qui permettent encore de représenter chaque début autorisé. Des séances commençant à chaque heure nécessitent des choix à l'heure près ; des domaines à la minute près augmenteraient le travail sans ajouter d'emploi du temps utile. Termine en séparant les préférences des règles dures et en vérifiant un petit cas dont tu connais la réponse.

Points clés

  • Choisis des variables qui gardent les contraintes simples et des domaines pas plus fins que nécessaire.
  • La précédence utilise des inégalités imposant une fin avant un début ; les ressources partagées exigent l'absence de chevauchement.
  • Une reine par colonne peut être intégrée au choix des variables.
  • Un modèle correct comprend les règles implicites sur les ressources et conserve les possibilités légitimes de partager un créneau.
2

Résoudre des problèmes de satisfaction de contraintes par recherche avec retour arrière

Une recherche peut gaspiller l'essentiel de son effort en examinant à nouveau les mêmes choix ou en découvrant les conflits trop tard. Le retour arrière construit une affectation variable par variable et revient aux choix précédents lorsqu'une branche échoue. L'ordonnancement des variables et des valeurs l'aide à trouver plus tôt des branches utiles, tandis que l'analyse des conflits détermine quels choix ont causé une impasse. Suivre les décisions pas à pas facilite l'évaluation de la méthode de base comme de ses améliorations.

2.1 Exécuter une recherche avec retour arrière pas à pas

Le retour arrière construit une affectation partielle par recherche en profondeur d'abord. Il choisit une variable, essaie une valeur et continue jusqu'à trouver une solution ou devoir annuler un choix. La recherche conserve les choix antérieurs utiles lorsqu'un choix ultérieur échoue.

Créer des branches sur les valeurs, une variable à la fois

Affecter A puis B produit la même affectation finale qu'affecter B puis A. Cette commutativité permet à un solveur de contraintes de choisir une variable à chaque niveau et de créer des branches sur ses valeurs. Autoriser tous les ordres de variables produirait n!dn feuilles pour seulement dn affectations complètes distinctes. Pour cinq variables ayant trois valeurs, cela représente 29 160 feuilles au lieu de 243.

La variable suivante peut dépendre des domaines courants. Ce qui compte est de choisir une seule variable suivante à un nœud ; la recherche n'a pas besoin de branches distinctes pour tous les ordres d'affectation possibles.

Suivre les étapes récursives
  1. Si l'affectation est complète et cohérente, la renvoyer.
  2. Choisir une variable non affectée.
  3. Essayer chaque valeur du domaine qui est cohérente avec l'affectation courante.
  4. Effectuer un appel récursif après avoir ajouté une valeur. Si l'appel échoue, supprimer cette affectation et essayer la valeur suivante.
  5. Si aucune valeur ne convient, renvoyer un échec à l'appelant.

Le retour arrière simple teste une contrainte dès que toutes les variables de sa portée ont une valeur. Avec A=1 et B non affectée, A<B ne dispose d'aucun couple complet à rejeter. Essayer ensuite B=1 échoue immédiatement. Attendre que toutes les variables soient affectées retarderait ce rejet facile.

Suivre une impasse

Utilise les règles des ateliers : A≠C,A≠D,C≠D,B≠C,C≠E,D≠E,A<B,E≠1. Prends les variables dans l'ordre A, B, C, D, E et essaie les valeurs 1, 2, 3.

  • Affecte A=1. Rejette B=1 et choisis B=2.
  • Rejette C=1 à cause de A et C=2 à cause de B ; choisis C=3.
  • Rejette D=1 à cause de A ; choisis D=2.
  • E n'a aucune valeur autorisée : 1 est interdite, 2 est incompatible avec D et 3 avec C.

L'échec pour E rend le contrôle à D. Sa valeur suivante, 3, est incompatible avec C. C n'a pas de valeur suivante, le contrôle revient donc à B. Essayer B=3 conduit finalement à une autre impasse avec A=1. La recherche essaie alors A=2 et atteint A=2,B=3,C=1,D=3,E=2. Dans cet ordre, le retour arrière simple teste 32 valeurs candidates au total, y compris celles qui sont rejetées.

Ce que garantit la méthode
PropriétéRetour arrière simple sur des domaines finis
ComplétudeTrouve une solution s'il en existe une ; l'épuisement de la recherche établit qu'il n'y en a pas.
Taille de la recherche dans le pire des casExponentielle, O(dn) affectations selon la borne usuelle.
Mémoire du chemin de rechercheLinéaire en n ; un seul chemin actif est stocké.

La vérification des contraintes et le stockage du modèle ont aussi un coût. La mémoire linéaire décrite concerne le chemin de recherche, tandis que la propagation peut aussi stocker les domaines et des informations de restauration.

Le retour arrière chronologique revient au choix le plus récent. Des variantes plus rapides améliorent quatre décisions distinctes : la variable suivante, l'ordre de ses valeurs, les conséquences déduites après un choix et le choix antérieur à reprendre après un échec. Ces améliorations réduisent le travail en pratique sans changer ce qui constitue une solution.

Points clés

  • La commutativité évite de rechercher tous les ordres d'affectation.
  • Le retour arrière affecte une variable par niveau et rejette les violations de contraintes dont toutes les variables sont affectées.
  • Un appel récursif qui échoue annule son choix et essaie une autre valeur.
  • Le retour arrière sur domaines finis est complet, mais sa recherche est exponentielle dans le pire des cas.
  • La mémoire linéaire du chemin de recherche ne comprend pas tout le stockage du modèle et de la propagation.

2.2 Choisir les variables et les valeurs à l'aide d'heuristiques d'ordonnancement

Un bon ordre peut révéler un échec près du sommet d'un arbre de recherche ou préserver des choix utiles pour la suite. L'ordonnancement des variables et celui des valeurs ont des objectifs différents : la direction qui semble la meilleure diffère donc entre les deux.

Choisir la variable la plus contrainte

L'heuristique du minimum de valeurs restantes sélectionne la variable non affectée qui possède actuellement le moins de valeurs autorisées. Elle est aussi appelée heuristique de la variable la plus contrainte ou du premier échec. Un domaine presque épuisé risque de révéler bientôt une contradiction. Si un domaine est vide, la branche échoue immédiatement.

Compte les valeurs courantes après réduction des domaines, et non les tailles initiales des domaines. Sans domaines stockés, un solveur doit déterminer quelles valeurs d'origine restent cohérentes avec l'affectation avant d'appliquer l'heuristique.

L'heuristique du degré départage les variables à égalité en choisissant celle qui a le plus de contraintes avec d'autres variables non affectées. Un tel choix influence davantage de décisions restantes. Les voisins déjà affectés ne comptent pas dans ce degré restant. Au départ sur la carte de l'Australie, les domaines de trois couleurs sont à égalité et les cinq voisins de SA lui donnent le degré le plus élevé.

Garder des possibilités lors du choix d'une valeur

L'heuristique de la valeur la moins contraignante essaie la valeur qui supprime le moins de valeurs des domaines voisins non affectés. Évaluer les valeurs candidates ajoute des calculs, mais peut éviter une branche infructueuse coûteuse.

Avec WA rouge et NT vert, SA ne peut être que bleue, tandis que Q peut être rouge ou bleue. Choisir Q bleu viderait le domaine de SA. Choisir Q rouge supprime rouge du domaine de NSW tout en conservant bleu pour SA. L'heuristique essaie donc Q rouge.

Décision d'ordonnancementChoix privilégiéRaison
Variable suivanteMoins de valeurs restantesRévéler tôt un échec probable.
Variable à égalitéPlus de voisins non affectésInfluencer davantage de décisions restantes.
Valeur suivanteMoins de valeurs supprimées chez les voisinsPréserver les chances de compléter l'affectation.

Chaque variable doit finir par recevoir une valeur, ce qui rend utile le test précoce d'une variable fragile. Une seule valeur est nécessaire pour compléter une première solution, ce qui favorise une valeur qui laisse de la place aux autres décisions.

Combiner l'ordonnancement et la vérification anticipée

Dans l'emploi du temps des ateliers, applique d'abord E≠1. E a deux valeurs ; A, B, C et D en ont chacune trois. L'heuristique du minimum de valeurs restantes choisit E. Essaie E=2 : la vérification anticipée supprime 2 des domaines de C et D.

C et D sont maintenant à égalité avec les domaines {1,3}. C a trois voisins non affectés, A, B et D ; D en a deux, A et C. L'heuristique du degré sélectionne C. Choisis C=1, ce qui laisse DD={3} et DA=DB={2,3}. L'heuristique du minimum de valeurs restantes choisit D=3, ce qui impose A=2 ; la règle de précédence donne alors B=3. Cinq affectations permettent de trouver la solution sans retour arrière. Avec un ordre fixe des variables, la vérification anticipée nécessite 12 affectations et atteint deux impasses.

L'ordonnancement préserve la complétude, car il change la séquence des choix sans écarter de branches autorisées. La recherche reste exponentielle dans le pire des cas. Lorsqu'on énumère toutes les solutions ou qu'on prouve l'absence de solution, toutes les valeurs pertinentes doivent finir par être explorées : l'avantage de la valeur la moins contraignante pour obtenir un succès précoce est donc réduit. Son principal intérêt est de trouver plus tôt une première solution.

Points clés

  • L'heuristique du minimum de valeurs restantes utilise le nombre courant de valeurs autorisées.
  • L'heuristique du degré départage les variables à l'aide des contraintes avec les variables non affectées.
  • L'heuristique de la valeur la moins contraignante préserve les choix des voisins lorsqu'elle essaie une valeur.
  • L'ordonnancement modifie le travail de recherche tout en préservant la complétude.

2.3 Effectuer un retour arrière intelligent après une impasse

Une impasse a souvent une cause plus limitée que l'ensemble de l'affectation courante. Le retour arrière non chronologique utilise cette cause pour décider où revenir, et l'apprentissage de contraintes mémorise un échec afin de ne pas avoir à le redécouvrir.

Trouver les choix qui ont causé l'échec

Sur la carte de l'Australie, prends l'ordre d'affectation Q, NSW, V, T, SA. Soit Q rouge, NSW vert, V bleu et T rouge. SA touche Q, NSW et V : les trois couleurs sont donc interdites. Son ensemble de conflit est {Q,NSW,V} : ce sont les variables antérieures dont les choix excluent ses valeurs.

Le retour arrière chronologique essaierait de modifier T. La Tasmanie n'a aucune arête avec SA : changer sa couleur ne peut donc rétablir aucune possibilité pour SA. Le retour arrière non chronologique revient à V, le membre le plus récemment affecté de l'ensemble de conflit, et saute T.

Un ensemble de conflit contient des variables ; un nogood enregistre des affectations particulières. Cette distinction compte : une autre couleur pour V peut corriger l'échec, même si V reste voisine de SA.

Transmettre un conflit à travers les échecs antérieurs

Le retour arrière non chronologique simple utilise l'ensemble de conflit direct de l'échec courant. Le retour arrière non chronologique dirigé par les conflits transmet l'information à travers plusieurs niveaux en échec. Lorsqu'une variable X en échec revient à Y, Y absorbe l'ensemble de conflit de X après en avoir retiré Y. Si Y épuise ensuite toutes ses valeurs, son ensemble combiné indique une cause située plus loin dans les affectations antérieures.

Par exemple, utilise l'ordre WA, NSW, T, NT, Q, V, SA et commence avec WA rouge, NSW rouge, T rouge. WA et NSW ne sont pas voisines : cette affectation partielle est donc cohérente. Leurs choix retirent rouge des domaines de NT, Q et SA. Ces trois régions forment un triangle qui ne peut pas être colorié avec seulement du vert et du bleu.

Aucun choix pour T ne change ce triangle. Les informations de conflit peuvent remonter à travers les tentatives infructueuses et désigner WA et NSW comme la cause sous-jacente. La recherche revient à NSW, la plus récente de ces deux décisions, au lieu de passer du temps à recolorier T.

Apprendre la combinaison ayant échoué

Un solveur peut enregistrer {WA=rouge,NSW=rouge} comme nogood. Chaque fois que les deux choix se reproduisent, la même contradiction sur le triangle s'ensuit : la branche peut donc être rejetée immédiatement. Il serait incorrect d'interdire WA rouge à elle seule : WA peut être rouge dans des solutions valides où NSW a une autre couleur.

L'apprentissage ajoute une contrainte ou une combinaison interdite en cache. La condition apprise doit découler des contraintes d'origine ; un échec dû uniquement à l'atteinte d'une limite de temps ne fournit pas une telle justification logique. Un nogood utile conserve suffisamment d'affectations pour expliquer l'impossibilité sans inclure de choix sans rapport.

Combiner anticipation et retour sur les échecs

La vérification anticipée et la cohérence d'arc suppriment les valeurs sans support avant qu'un échec ne se produise en profondeur. Le retour arrière non chronologique analyse un échec après qu'il s'est produit. Le retour arrière non chronologique direct et simple n'ajoute aucune réduction à ce que détecte déjà la vérification anticipée, mais les méthodes dirigées par les conflits peuvent combiner les explications d'échecs plus profonds. L'apprentissage conserve ces explications pour les branches ultérieures.

Points clés

  • Un ensemble de conflit indique les variables antérieures responsables d'un échec.
  • Le retour arrière non chronologique saute les choix sans rapport avec cet échec.
  • Le retour arrière non chronologique dirigé par les conflits combine les informations de conflit à travers les niveaux en échec.
  • Un nogood interdit une combinaison impossible d'affectations, et non chaque affectation séparément.
  • La réduction anticipée des domaines et les explications apprises peuvent fonctionner ensemble.
3

Réduire les domaines par propagation de contraintes

Une valeur peut être impossible avant même que sa variable soit choisie. La propagation de contraintes suit les conséquences des domaines et des affectations courants en supprimant les valeurs qui n'ont pas le support nécessaire. Les méthodes diffèrent par la portée de leur examen : des voisins immédiats d'une décision aux paires, aux triplets et aux groupes entiers de variables. Des modifications de domaines détaillées montrent ce que chaque méthode détecte, ce qu'elle manque et quand le travail supplémentaire est rentable.

3.1 Appliquer la vérification anticipée pendant la recherche

La vérification anticipée examine ce qu'une nouvelle affectation élimine immédiatement pour ses voisins non affectés. Elle supprime les valeurs incompatibles avant que la recherche n'atteigne ces variables, ce qui rend certaines impasses visibles plusieurs niveaux plus tôt.

Réduire les domaines après une affectation

Après avoir choisi X=x, examine chaque variable Y non affectée qui partage une contrainte avec X. Supprime de DY toute valeur incompatible avec ce choix. Un domaine vide signifie que la branche courante ne peut pas être complétée : reviens donc immédiatement en arrière.

Pour X≠Y, affecter X=2 supprime 2 du domaine de Y. Pour X<Y, affecter X=2 supprime toute valeur de Y inférieure ou égale à 2. C'est la relation elle-même qui détermine les valeurs supprimées ; la vérification anticipée ne se limite pas à supprimer les valeurs égales.

La réduction des domaines modifie ceux de la branche courante. Tiens une liste de restauration, souvent appelée pile de restauration, de chaque suppression causée par le choix. Lorsque ce choix est annulé, rétablis les valeurs qu'il a supprimées tout en conservant les restrictions dues aux choix antérieurs. Une autre implémentation consiste à copier les domaines à chaque niveau.

Suivre les domaines des ateliers

Utilise les créneaux 1 à 3 et les règles A≠C,A≠D,C≠D,B≠C,C≠E,D≠E,A<B,E≠1. Applique la règle unaire pour obtenir DE={2,3}, puis utilise l'ordre fixe A, B, C, D, E.

  1. A=1 laisse à B, C et D le domaine {2,3}.
  2. B=2 laisse à C le domaine {3}.
  3. C=3 laisse à D et E le domaine {2} pour chacune.
  4. D=2 supprime 2 du domaine de E, qui devient vide. Reviens en arrière.

Après restauration des domaines, essayer B=3 impose à C la valeur 2. D et E ne peuvent alors valoir que 3 ; affecter D vide donc à nouveau le domaine de E. La recherche doit modifier A. Avec A=2, elle peut atteindre B=3,C=1,D=3,E=2. Ce parcours essaie 12 valeurs, contre 32 valeurs candidates testées par le retour arrière simple dans le même ordre.

Reconnaître la limite d'une vérification à un pas

Après l'étape 3, D et E ont toutes deux 2 comme seule valeur et doivent être différentes. La vérification anticipée n'a toujours pas vérifié cette contrainte : ni D ni E ne vient d'être affectée. Elle ne détecte l'échec que lorsque D reçoit sa valeur.

C'est la limite principale de la vérification anticipée. Elle teste la variable affectée par rapport à ses voisins non affectés, sans propager plus loin la réduction du domaine d'un voisin. La cohérence d'arc peut suivre ces conséquences entre variables non affectées.

Utiliser les domaines maintenus à jour

L'heuristique du minimum de valeurs restantes peut maintenant sélectionner directement le plus petit domaine restant. Un domaine réduit à une seule valeur devient souvent le choix suivant ; un domaine vide signale un échec sans ajouter d'affectation. Maintenir les domaines à jour aide à la fois l'inférence et l'ordonnancement.

Pour au plus n−1 voisins et au plus d valeurs par voisin, une passe de vérification anticipée utilise environ O(nd) vérifications binaires, en supposant que le test de la relation prend un temps constant. Elle ne supprime que des valeurs incompatibles avec l'affectation courante : le retour arrière reste donc complet. Oublier de restaurer une valeur supprimée peut faire perdre une solution valide dans une branche ultérieure ; réduire le domaine d'une variable sans rapport peut avoir le même effet.

Points clés

  • La vérification anticipée réduit les domaines des voisins non affectés de la variable nouvellement affectée.
  • Un domaine vide rejette immédiatement la branche courante.
  • Restaure les valeurs supprimées dans une branche lorsque tu annules un choix.
  • La vérification anticipée ne propage pas les conséquences entre deux variables non affectées.

3.2 Établir la cohérence d'arc avec AC-3

Une valeur a besoin d'une valeur compatible dans chaque domaine voisin. La cohérence d'arc rend cette exigence de support explicite et suit les effets des changements de domaine dans tout un problème de satisfaction de contraintes binaire.

Le support a une direction

La cohérence de nœud supprime d'abord les valeurs interdites par les règles unaires. Pour une contrainte binaire, l'arc orienté X→Y est cohérent lorsque chaque valeur de X possède au moins une valeur compatible dans Y. Cette valeur de Y est un support. Réviser l'arc consiste à supprimer les valeurs sans support à son origine, X.

Pour A<B avec les deux domaines {1,2,3}, réviser A→B supprime 3 du domaine de A. Réviser B→A supprime 1 du domaine de B. Les domaines obtenus sont DA={1,2} et DB={2,3}. Une valeur conservée peut utiliser un support différent pour chaque voisin ; ces supports ne forment pas nécessairement une solution commune.

Exécuter AC-3

AC-3 utilise une file d'arcs orientés :

  1. Placer initialement tous les arcs dans la file.
  2. Retirer X→Y et réviser le domaine de X à l'aide de celui de Y.
  3. Si le domaine de X devient vide, s'arrêter avec un échec.
  4. Si le domaine de X est réduit, ajouter Z→X pour chaque autre voisin Z de X, à l'exception de Y.
  5. Continuer jusqu'à ce que la file soit vide.

Une suppression dans le domaine de X peut retirer un support à Z : la file doit donc contenir des arcs dirigés vers le domaine modifié. L'arc provenant de Y n'a pas besoin d'être immédiatement vérifié à nouveau : les valeurs supprimées de X ne servaient de support à aucune valeur de Y, puisqu'aucune n'était compatible avec Y au départ. Les domaines non vides obtenus à la fin sont indépendants de l'ordre de traitement ; des ordres différents peuvent conduire à un échec sur des domaines vides différents.

Propager une décision concernant les ateliers

Pour les règles des ateliers A≠C,A≠D,C≠D,B≠C,C≠E,D≠E,A<B,E≠1, l'application initiale d'AC-3 supprime 3 du domaine de A et 1 de celui de B. Elle laisse à C et D le domaine {1,2,3} et à E le domaine {2,3}.

Décide maintenant C=1. L'arc A→C supprime 1 du domaine de A, ce qui laisse A=2. Réviser B par rapport à A impose B=3. D diffère de C et de A, donc D=3. E diffère de D et ne peut pas valoir 1, donc E=2. Les réductions de domaines se sont propagées au-delà des voisins immédiats de la décision initiale.

Le maintien de la cohérence d'arc applique cette inférence après chaque décision de recherche. En partant de domaines cohérents d'arc, la restriction à X=x nécessite une file contenant les arcs entrants provenant de ses voisins non affectés. Les valeurs supprimées des domaines doivent être restaurées lorsque la recherche annule la branche.

Interpréter le résultat et le coût
Résultat après cohérence de nœud et d'arcSignification
Un domaine videAucune solution ne prolonge les restrictions courantes.
Chaque domaine contient une seule valeurL'unique affectation restante satisfait le problème binaire.
Certains domaines ont plusieurs valeursUne inférence supplémentaire ou une recherche peut être nécessaire.

Un triangle dont les domaines sont {rouge, bleu} et dont les trois arêtes imposent des inégalités reste cohérent d'arc, mais n'a pas de solution. Chaque arête possède des supports séparément, mais les trois choix ne peuvent pas fonctionner ensemble.

Avec c contraintes binaires et des domaines de taille maximale d, AC-3 prend un temps de O(cd3) : une révision d'arc vérifie jusqu'à d2 couples, et chaque arc peut nécessiter jusqu'à d révisions à mesure que son extrémité perd des valeurs. Le maintien de la cohérence d'arc coûte davantage par nœud de recherche que la vérification anticipée, souvent en échange d'un arbre de recherche beaucoup plus petit.

Points clés

  • Réviser X→Y supprime de X les valeurs sans support.
  • Après la réduction du domaine de X, AC-3 vérifie à nouveau les arcs dirigés vers X.
  • Des domaines non vides et cohérents d'arc peuvent encore décrire un problème de satisfaction de contraintes sans solution.
  • Le maintien de la cohérence d'arc conserve cette cohérence après les décisions de recherche.
  • La borne usuelle d'AC-3 dans le pire des cas est O(cd3).
  • Pour conclure à partir de domaines à une seule valeur, les contraintes unaires et binaires doivent avoir été appliquées.

3.3 Utiliser des cohérences plus fortes et des contraintes globales

Des supports considérés séparément par paires peuvent masquer une contradiction au sein d'un groupe. Des cohérences plus fortes et des propagations spécialisées pour les contraintes globales examinent des combinaisons que la cohérence d'arc manque, tandis que les bornes numériques peuvent représenter de grands domaines par des intervalles utiles.

Étendre des affectations à une autre variable

La cohérence de chemin examine des triplets. Toute affectation cohérente à deux variables doit pouvoir être étendue à une troisième de manière cohérente avec les deux. Dans un triangle colorié en rouge ou en bleu, X rouge et Y bleu ne laissent aucune valeur pour Z. La cohérence de chemin supprime cette paire autorisée et finit par révéler l'absence de solution. Elle peut supprimer des tuples de relations et fait donc plus que supprimer des valeurs individuelles de domaines.

La k-cohérence exige que toute affectation cohérente à n'importe quelles k−1 variables puisse être étendue à n'importe quelle variable supplémentaire. Pour les problèmes binaires, la 1-cohérence correspond à la cohérence de nœud, la 2-cohérence à la cohérence d'arc et la 3-cohérence à la cohérence de chemin. La k-cohérence forte comprend tous les niveaux de 1 à k. Avec la n-cohérence forte sur n variables et des domaines non vides, toute affectation partielle cohérente peut être étendue jusqu'à devenir une solution, sans retour arrière. Établir cette propriété a un coût exponentiel en temps et en mémoire dans le pire des cas.

Dénombrer les valeurs dans Alldiff

Alldiff exige des valeurs distinctes pour toutes les variables de sa portée. Si un groupe de m variables ne dispose que de n valeurs possibles distinctes et que m>n, aucune affectation ne peut satisfaire la contrainte.

Pour trois cases de domaine {4,7}, les inégalités prises deux à deux sont cohérentes d'arc : chaque 4 a pour support 7 chez chaque voisin, et chaque 7 a pour support 4. Le dénombrement global échoue néanmoins, car trois valeurs différentes sont nécessaires et il n'en existe que deux.

Si deux cases ont toutes deux le domaine {4,7}, elles doivent prendre les valeurs 4 et 7. Ces valeurs peuvent être supprimées de toutes les autres cases de la ligne. Ce raisonnement par paire nue utilise un sous-ensemble de toute la portée d'Alldiff. Un propagateur global simple peut aussi traiter à plusieurs reprises les variables à une seule valeur, supprimer leurs valeurs ailleurs et vérifier s'il reste trop peu de valeurs distinctes. Des propagateurs plus puissants reconnaissent aussi les sous-ensembles contraints.

Resserrer les bornes numériques

La propagation des bornes stocke un domaine à l'aide de son minimum et de son maximum. La cohérence de bornes exige que chaque extrémité puisse être étendue en une affectation qui satisfait chaque contrainte concernée ; elle ne vérifie pas chaque valeur intérieure.

Pour deux bus transportant 100 personnes, soit B1∈[0;50] et B2∈[0;70], avec B1+B2=100. Le second bus transporte au plus 70 personnes, ce qui impose B1≥30. Le premier en transporte au plus 50, ce qui impose B2≥50. Les intervalles resserrés sont [30;50] et [50;70].

Pour Préparer, Analyser et Rédiger le rapport, qui prennent respectivement 20, 40 et 30 minutes dans cet ordre, une échéance de 120 minutes donne les débuts au plus tard 30, 50 et 90. Des débuts positifs ou nuls donnent les débuts au plus tôt 0, 20 et 60. La propagation vers l'avant et vers l'arrière donne ces intervalles avant qu'un horaire de début soit choisi.

Choisir une puissance d'inférence utile

Chaque case de Sudoku a 20 cases distinctes liées à elle : 8 dans sa ligne, 8 dans sa colonne et 4 autres dans sa région. Pour les 81 cases, cela donne 81×20/2=810 paires distinctes de cases devant être différentes. Les contraintes globales conservent les mêmes solutions que ces paires, mais peuvent révéler plus tôt les paires nues et les manques de valeurs. Une inférence plus forte coûte davantage par passe ; les solveurs pratiques mettent ce coût en balance avec la recherche économisée, souvent en combinant la cohérence d'arc avec une propagation spécialisée des contraintes globales et des bornes.

Points clés

  • La cohérence de chemin vérifie si une paire cohérente peut être étendue à une troisième variable.
  • La k-cohérence forte comprend tous les niveaux de cohérence inférieurs.
  • Alldiff détecte les groupes qui disposent de trop peu de valeurs distinctes.
  • Une paire nue réserve ses deux valeurs à ces deux variables.
  • La propagation des bornes resserre les extrémités sans énumérer un grand domaine numérique.
  • Une inférence plus forte échange davantage de travail par passe contre moins de recherche.
4

Résoudre des problèmes de satisfaction de contraintes par recherche locale

Un emploi du temps qui viole quelques règles peut néanmoins être un point de départ utile. La recherche locale conserve une valeur pour chaque variable et répare les conflits un déplacement à la fois. Le défi consiste à choisir des déplacements utiles et à sortir des régions où les progrès s'arrêtent. Tu vas suivre l'heuristique des conflits minimaux sur un petit échiquier, examiner comment poursuivre les réparations et choisir une méthode de résolution adaptée au type de résultat attendu d'une tâche d'ordonnancement ou d'affectation.

4.1 Réparer les affectations avec l'heuristique des conflits minimaux

La recherche locale part d'une valeur pour chaque variable, même lorsque certaines contraintes ne sont pas respectées. L'heuristique des conflits minimaux répare cette affectation complète en donnant à une variable en conflit une valeur qui cause aussi peu de conflits que possible.

Choisir une réparation
  1. Construire une affectation complète, aléatoirement ou de manière gloutonne.
  2. Si aucune contrainte n'est violée, renvoyer la solution.
  3. Choisir au hasard une variable intervenant dans une contrainte violée.
  4. Évaluer chacune des valeurs de son domaine par rapport aux autres variables, qui restent fixes.
  5. Choisir une valeur causant le moins de conflits, en départageant aléatoirement les ex æquo, et répéter jusqu'à réussir ou atteindre une limite d'étapes.

Une variable en conflit intervient dans au moins une contrainte violée. Ce n'est pas nécessairement la variable qui participe au plus grand nombre de violations. Le choix aléatoire parmi les variables en conflit et les valeurs ex æquo aide à éviter la répétition d'une séquence rigide.

Réparer un échiquier de 4 reines

Utilise une reine par colonne, avec les variables de ligne Q1,Q2,Q3,Q4. Une paire est en conflit si ses lignes sont égales ou si leur différence est égale à la différence de ses colonnes. Commence par (2,4,2,3). Les colonnes 1 et 3 partagent la ligne 2 ; les reines des colonnes 3 et 4 s'attaquent en diagonale. Les variables en conflit sont Q1, Q3 et Q4.

Choisis Q3 et évalue les lignes tandis que Q1, Q2 et Q4 restent fixes :

Ligne candidate pour Q3Conflits concernant Q3
10
22
32
43

La ligne 1 donne (2,4,1,3), une solution. Si Q1 avait été choisie à la place, ses nombres de conflits pour les lignes 1 à 4 seraient 0, 1, 2 et 2. La déplacer à la ligne 1 donne (1,4,2,3), où subsiste le conflit en diagonale entre Q3 et Q4. Une réparation localement optimale peut donc nécessiter d'autres réparations.

Compte les contraintes concernant la variable sélectionnée. Compter toutes les violations sur chaque échiquier obtenu donne le même ordre, car les contraintes sans rapport ajoutent une constante pour chaque valeur candidate. Cela demande simplement plus de travail. Utilise une définition cohérente des conflits lorsque tu compares les valeurs candidates.

Réparer un emploi du temps existant

Lorsqu'un formateur devient indisponible, l'emploi du temps courant est déjà une affectation complète. L'heuristique des conflits minimaux peut partir de là et déplacer des séances jusqu'à ce que les contraintes nouvelles et existantes soient respectées. Un petit changement nécessite souvent peu de réparations, même si un déplacement peut créer de nouveaux conflits ailleurs. S'il importe de conserver le plan initial, associe un coût explicite à la modification d'une affectation ; minimiser les violations ne minimise pas à lui seul les changements.

Des expériences avec une bonne affectation initiale ont nécessité relativement peu d'étapes de réparation, même pour un million de reines. Sur des échiquiers plus grands, chaque étape reste plus coûteuse. L'heuristique des conflits minimaux a aussi servi à la planification de Hubble : le temps nécessaire pour planifier une semaine d'observations aurait été réduit d'environ trois semaines à environ 10 minutes.

Interpréter le comportement de la recherche

Dans de nombreuses familles de problèmes de satisfaction de contraintes aléatoires, les problèmes passent de majoritairement solubles à majoritairement insolubles lorsque le rapport entre contraintes et variables augmente. Près de cette transition, déterminer comment les choix interagissent est souvent le plus difficile. Les problèmes peu contraints peuvent avoir de nombreuses solutions faciles à atteindre. Les problèmes très contraints et sans solution peuvent être rapidement rejetés par des solveurs complets fondés sur la propagation.

Atteindre la limite d'étapes de l'heuristique des conflits minimaux signifie qu'aucune solution n'a été trouvée lors de cette exécution. Le problème peut néanmoins être soluble. La force pratique de la méthode vient de réparations efficaces, notamment des déplacements entre valeurs de même score, bien que les solutions ne représentent qu'une infime partie de toutes les affectations possibles.

Points clés

  • L'heuristique des conflits minimaux part d'une affectation complète et répare les contraintes violées.
  • Choisis une variable en conflit, puis une valeur causant le moins de conflits, en départageant aléatoirement les ex æquo.
  • Les scores des valeurs candidates peuvent ignorer les contraintes sans rapport avec la variable choisie.
  • Rendre une affectation réalisable et minimiser les changements sont deux objectifs différents.
  • Un échec dû à la limite d'étapes ne permet pas de conclure à l'absence de solution.

4.2 Échapper aux plateaux et aux minima locaux, et choisir entre recherche locale et retour arrière

La recherche par réparation peut cesser de progresser alors que des conflits subsistent. Pour continuer, le solveur a besoin d'un moyen de traverser des états de même score ou de changer les déplacements qui paraissent utiles. Le résultat recherché compte aussi : une réparation réalisable rapide et une preuve d'absence de solution demandent des méthodes différentes.

Traverser un plateau

Un minimum local comporte des violations, mais aucun déplacement modifiant une seule variable ne réduit leur nombre. Un plateau est une région connexe d'affectations ayant le même score. Les déplacements qui ne font que réduire le score peuvent y rester bloqués ; un déplacement latéral change l'état sans réduire le score.

Pour le problème des 4 reines, (1,4,2,3) comporte un conflit entre Q3 et Q4. Les autres reines restant fixes, les nombres de conflits de Q3 pour les lignes 1 à 4 sont 1, 1, 3 et 2 ; ceux de Q4 sont 2, 2, 1 et 2. Aucune des deux variables ne permet un déplacement qui améliore le score.

Déplacer Q3 à la ligne 1 donne (1,4,1,3), toujours avec un conflit, cette fois entre Q1 et Q3 qui partagent une ligne. Dans ce nouvel état, les nombres de conflits de Q1 sont 1, 0, 3 et 1. Déplacer Q1 à la ligne 2 produit (2,4,1,3) et élimine le conflit. Le déplacement latéral a changé les déplacements améliorants disponibles.

Poursuivre la recherche
MéthodeEffet sur la recherche
Recherche tabouInterdit temporairement des états ou déplacements récents pour réduire les cycles.
Pondération des contraintesAugmente l'importance des contraintes qui restent violées.
Redémarrages aléatoiresRepart d'une autre affectation complète après des étapes infructueuses.
Recuit simuléAccepte parfois des déplacements moins bons, avec une probabilité qui diminue lorsque la température baisse.

Une liste tabou est une mémoire de courte durée. Elle décourage le retour immédiat à un état que l'on vient de quitter. Un redémarrage explore une autre région, tandis que le recuit peut traverser une région comportant davantage de conflits au cours de la même exécution.

Avec la pondération des contraintes, donne d'abord à chaque contrainte un poids de 1 et calcule le score d'un état comme la somme des poids de ses contraintes violées. Choisis une modification qui réduit ce score pondéré, puis augmente les poids des contraintes qui restent violées. Les échecs répétés deviennent plus coûteux, ce qui remodèle le paysage de recherche. Un score pondéré nul signifie toujours que chaque contrainte dure de poids positif est satisfaite.

Choisir le résultat dont tu as besoin

La recherche locale est incomplète : elle peut manquer une solution existante et une exécution finie infructueuse ne permet pas de conclure à l'absence de solution. Le retour arrière sur domaines finis avec propagation est complet : il finit par trouver une solution ou par épuiser toutes les façons de compléter l'affectation.

Utilise la recherche locale lorsqu'un grand problème peu contraint nécessite une affectation réalisable ou une réparation rapide. Le retour arrière avec l'heuristique du minimum de valeurs restantes et le maintien de la cohérence d'arc est un choix solide pour les énigmes fortement contraintes et chaque fois que la tâche exige de déterminer s'il n'y a pas de solution. Le temps d'exécution dépend néanmoins de l'instance ; ces choix de méthode reposent sur leurs garanties.

L'emploi du temps des ateliers possède l'unique solution A=2,B=3,C=1,D=3,E=2. Ajouter C≠1 l'élimine. L'heuristique des conflits minimaux peut essayer des réparations jusqu'à sa limite, mais seule une recherche complète qui épuise les cas restants établit que l'organisateur doit modifier une exigence, par exemple en ajoutant un créneau.

Points clés

  • Un déplacement latéral peut révéler un déplacement améliorant au-delà d'un plateau.
  • La mémoire tabou, les poids, les redémarrages et le recuit répondent à différents obstacles à la progression.
  • La recherche locale est incomplète ; le retour arrière exhaustif sur domaines finis est complet.
  • Choisis une méthode complète lorsqu'il faut établir l'absence de solution.
5

Exploiter la structure d'un problème

La forme d'un graphe de contraintes peut compter autant que la taille de ses domaines. Les composantes séparées peuvent être résolues indépendamment, et un arbre permet d'effectuer un parcours ascendant de réduction des domaines suivi d'un parcours descendant d'affectation sans retour arrière. Les cycles demandent plus de travail, mais un petit ensemble coupe-cycles ou une décomposition arborescente de faible largeur peut le limiter. Ces méthodes relient la structure du graphe au temps nécessaire pour trouver une affectation cohérente.

5.1 Séparer les sous-problèmes indépendants et résoudre les problèmes de satisfaction de contraintes arborescents

Un graphe de contraintes peut révéler des problèmes plus petits à l'intérieur d'un grand problème. Les composantes indépendantes peuvent être résolues séparément, et les composantes sans cycle admettent un algorithme particulièrement efficace, avec un parcours ascendant de réduction des domaines et un parcours descendant d'affectation.

Séparer les composantes non reliées

Une composante connexe est indépendante lorsqu'aucune contrainte ne relie ses variables à une autre composante. Résous chaque composante, puis combine une solution de chacune. Si une composante n'a pas de solution, le problème de satisfaction de contraintes complet n'en a pas non plus. Sur la carte de l'Australie, la Tasmanie est indépendante du continent.

Avec n variables réparties en groupes indépendants de taille c, trouver une affectation complète demande un travail de l'ordre de O((n/c)dc) au lieu de O(dn). Pour 60 variables binaires réparties en trois groupes de 20, les recherches exhaustives séparées examinent au plus 3×220=3 145 728 affectations au lieu d'environ 1,15×1018. Énumérer toutes les solutions combinées exigerait encore de lister les combinaisons ; l'économie décrite concerne la résolution des problèmes associés aux composantes.

Ordonner un arbre depuis sa racine

Un problème de satisfaction de contraintes binaire est arborescent lorsque son graphe de contraintes ne comporte aucun cycle. Un arbre connexe possède un chemin entre chaque paire de variables ; une forêt contient des arbres séparés. Applique d'abord les restrictions unaires. Choisis une racine quelconque et ordonne les variables de sorte que chaque parent apparaisse avant ses enfants.

La cohérence d'arc directionnelle dans cet ordre exige que chaque variable antérieure ait un support chez chaque voisin ultérieur. Dans un arbre, ces voisins ultérieurs sont ses enfants. Le support va du parent vers l'enfant, même si l'algorithme traite les enfants avant les parents.

Réduire les domaines en remontant, affecter en descendant
  1. Parcourir l'ordre à l'envers, sauf la racine. Pour chaque enfant, réviser l'arc de son parent vers cet enfant. Supprimer les valeurs sans support du domaine du parent.
  2. Si un domaine devient vide, signaler qu'il n'y a pas de solution.
  3. Parcourir l'ordre dans le sens direct. Choisir une valeur restante quelconque pour la racine, puis donner à chaque enfant une valeur compatible avec celle de son parent affecté.

Les descendants de l'enfant ont déjà été traités lorsque son parent est révisé. Une valeur restante du parent possède donc un support chez chaque enfant, et chaque valeur d'enfant possède déjà un support plus bas. Les différentes branches issues des enfants n'ont aucune arête qui les relie : ces supports peuvent donc être choisis indépendamment. C'est pourquoi le parcours descendant ne nécessite aucun retour arrière.

Suivre l'arbre des ateliers

Fixe C=1 dans l'emploi du temps des ateliers et supprime 1 des domaines des autres ateliers. Le graphe restant est le chemin B-A-D-E, avec les domaines {2,3} et les contraintes A<B,A≠D,D≠E.

Choisis A comme racine et l'ordre A, B, D, E. Le parcours ascendant révise D→E, puis A→D, sans changement. Enfin, A→B supprime 3 du domaine de A, car B n'a pas de valeur supérieure. L'affectation en descendant donne A=2,B=3,D=3,E=2. Rétablir C=1 donne l'emploi du temps complet.

Pour n variables dont les domaines ont une taille maximale d, le parcours ascendant révise n−1 arcs à un coût pouvant atteindre O(d2) chacun, soit un temps de O(nd2). Cette garantie dépend de l'absence de cycle. Un cycle peut relier des branches distinctes issues d'enfants et invalider l'indépendance qui rendait ces choix locaux fiables.

Points clés

  • Les composantes non reliées peuvent être résolues indépendamment et leurs solutions combinées.
  • La méthode pour les arbres applique d'abord les restrictions unaires et ordonne les parents avant les enfants.
  • Le parcours ascendant révise les arcs du parent vers l'enfant et réduit les domaines des parents.
  • Le parcours descendant choisit des valeurs compatibles sans retour arrière.
  • La borne de temps usuelle pour un problème de satisfaction de contraintes arborescent est O(nd2).

5.2 Ramener à des arbres les problèmes dont la structure est presque arborescente

Un graphe comportant quelques cycles peut néanmoins être assez proche d'un arbre pour être résolu efficacement. Le conditionnement par ensemble coupe-cycles affecte d'abord certaines variables ; la décomposition arborescente regroupe les variables en parties qui se chevauchent. Les deux méthodes donnent à la coordination restante une structure arborescente.

Conditionner sur un ensemble coupe-cycles

Un ensemble coupe-cycles est un ensemble de variables dont la suppression laisse un arbre ou une forêt. Vérifie chaque cycle restant, et pas seulement le plus visible. Pour la carte de l'Australie, supprimer SA laisse le chemin WA-NT-Q-NSW-V ainsi que T isolée. Pour le graphe des ateliers, supprimer C laisse B-A-D-E.

Pour chaque affectation de l'ensemble coupe-cycles qui satisfait ses contraintes internes :

  1. Supprimer les valeurs incompatibles des domaines restants.
  2. Résoudre chaque arbre restant par réduction des domaines en remontant et affectation en descendant.
  3. Si tous aboutissent, combiner leurs affectations avec les valeurs de l'ensemble coupe-cycles. Sinon, essayer une autre affectation de cet ensemble.

Dans le problème des ateliers, C=1 laisse un arbre qui possède une solution. Avec C=2, A et B doivent appartenir à {1,3} et A<B impose A=1,B=3. D doit être différente à la fois de A et de C, ce qui donne D=3. E ne peut pas valoir 1 et doit être différente de C et de D : il ne lui reste aucune valeur. Avec C=3, A et B doivent valoir 1 et 2 ; D doit alors valoir 2, ce qui ne laisse à nouveau aucune valeur pour E.

Pour un ensemble coupe-cycles de taille c, il y a au plus dc affectations, chacune suivie d'un problème arborescent de coût O((n−c)d2). Le total est O(dc(n−c)d2). La méthode est utile si c est petit ; son coût reste exponentiel en c. Trouver un ensemble coupe-cycles minimal est NP-difficile, mais un ensemble valide non minimal donne tout de même une procédure correcte.

Relier des sacs qui se chevauchent

Une décomposition arborescente dispose en arbre des ensembles de variables appelés sacs. Elle doit respecter trois conditions :

  • Chaque variable apparaît dans un sac.
  • La portée de chaque contrainte tient dans au moins un sac.
  • Les sacs contenant une même variable forment une partie connexe de l'arbre de sacs.

La troisième règle est la propriété d'intersection courante. Si X apparaît aux deux extrémités d'un chemin de sacs, elle doit apparaître tout au long de ce chemin. Sinon, des sacs éloignés pourraient choisir des valeurs incohérentes de X sans vérification de leur accord entre les deux.

Les affectations localement valides de chaque sac deviennent les valeurs d'une méga-variable. Les sacs voisins doivent s'accorder sur les variables partagées. L'arbre obtenu coordonne les solutions locales. Pour un triangle X-Y-Z-X auquel s'ajoute l'arête Z-W, les sacs {X,Y,Z} et {Z,W} couvrent toutes les arêtes et s'accordent sur Z.

La largeur arborescente de la décomposition est la taille de son plus grand sac moins 1. Celle d'un graphe est le minimum sur toutes ses décompositions valides. Pour une largeur w, la borne usuelle d'un problème de satisfaction de contraintes est O(ndw+1). Une largeur bornée par une constante limite l'exposant.

Supprimer la symétrie de valeurs

Lorsque les noms des couleurs n'ont pas de signification particulière, permuter rouge, vert et bleu conserve la validité. Les six solutions du continent australien sont six renommages d'un même motif. Fixer l'ordre NT avant SA avant WA dans l'ordre des couleurs rouge, vert, bleu conserve un représentant. Une telle contrainte de bris de symétrie n'est valide que si le renommage préserve les règles d'origine. Une règle exigeant qu'une région particulière soit rouge donne à cette couleur un rôle particulier et modifie les permutations qui restent des symétries.

Points clés

  • Un ensemble coupe-cycles doit supprimer tous les cycles.
  • Le conditionnement essaie les affectations de l'ensemble coupe-cycles et résout la forêt restante.
  • Le coût du conditionnement est exponentiel en fonction de la taille de l'ensemble coupe-cycles.
  • Les décompositions arborescentes couvrent les variables et les contraintes et satisfont la propriété d'intersection courante.
  • La largeur arborescente est la taille maximale d'un sac moins un, minimisée sur les décompositions du graphe.
  • Ne brise la symétrie de valeurs que pour les renommages qui préservent les contraintes d'origine.

Satisfaction de contraintes : exemples

5 Leçons Interactives

1

Construire et vérifier un modèle de satisfaction de contraintes

13 étapes
Modéliser des emplois du temps et des affectations, examiner les portées des contraintes et vérifier si le modèle préserve les règles réelles.
  1. 1
    IntroductionTransformer une tâche en choix

    Un solveur a besoin d'une description précise de ce qui peut être choisi et des combinaisons qui conviennent. Cette description comprend un ensemble de variables avec leurs domaines de valeurs, ainsi que des contraintes portant chacune sur une portée de variables. Toute erreur dans cette description se répercute sur chaque recherche. Construis un petit emploi du temps, puis compare-le à des modèles d'affectation et d'énigmes. L'objectif est de rendre visibles les décisions et leurs dépendances avant de chercher à les résoudre.

  2. 2
    ExplicationNommer chaque décision

    Soit A et B les créneaux d'ateliers, chacun dans {1,2,3}. A doit précéder B, donc écris A<B. Les variables correspondent aux choix de créneaux des ateliers ; les nombres sont des valeurs.

    La portée de la contrainte comprend A et B. Sa relation autorise les couples (1,2),(1,3),(2,3). Un solveur peut utiliser cette liste de tuples ou la règle d'ordre pour tester une affectation candidate.

  3. 3
    ExempleVérifier une affectation candidate

    Avec A=2 seule, l'affectation est partielle et cohérente. Choisir B=1 la complète, mais viole la règle d'ordre. Choisir B=3 à la place donne une affectation complète et cohérente.

    Ce sont deux vérifications distinctes : chaque variable doit recevoir une valeur de son domaine et chaque contrainte doit être respectée. Une affectation partielle peut passer les vérifications courantes tout en ne pouvant pas être complétée.

  4. 4
    DéfiLe choix partiel peut-il être complété ?

    Trois variables X, Y et Z ont pour domaines {1,2} et pour contraintes X≠Y,Y≠Z,X≠Z. La valeur 1 est affectée à X. Cette affectation partielle cohérente peut-elle être complétée ?

    ---reveal---

    Non. X seule ne viole aucune contrainte. Compléter l'affectation impose la valeur 2 à Y et à Z, ce qui viole leur contrainte d'inégalité. La cohérence courante et la possibilité de compléter l'affectation sont deux exigences différentes.

  5. 5
    LienLire les dépendances dans le graphe

    Un graphe de contraintes binaires place un nœud pour chaque variable et une arête pour chaque paire soumise à une contrainte. Le triangle du défi montre trois choix qui interagissent. Une variable isolée n'a aucune dépendance binaire avec une autre variable.

    Ce graphe sert aux méthodes ultérieures : la réduction des domaines suit les arêtes et les composantes non reliées peuvent être résolues indépendamment. Une contrainte d'arité supérieure nécessite que toute sa portée soit représentée, par exemple par un nœud de contrainte distinct.

  6. 6
    ExplicationRelier la règle à sa portée

    Une règle unaire restreint un domaine : E≠1 retire le créneau le plus tôt à l'atelier Éthique. Une règle binaire relie deux variables : A<B ordonne des ateliers. Une règle d'arité supérieure comme X+Y+Z=10 relie trois choix.

    Une contrainte globale donne un nom à une règle portant sur un groupe de variables de taille variable. Alldiff exige que chaque valeur de sa portée soit différente de toutes les autres.

  7. 7
    ExemplePourquoi conserver Alldiff ?

    Trois variables correspondant à des rapports autorisent chacune les relecteurs 1 et 2. Chaque paire peut recevoir des relecteurs différents, mais trois rapports ne peuvent pas utiliser trois relecteurs distincts dans un ensemble de deux.

    Alldiff révèle ce manque au niveau du groupe. Sa forme en inégalités prises deux à deux possède les mêmes solutions, mais des vérifications séparées par paires peuvent manquer la contradiction. La représentation influence les inférences qu'un solveur peut effectuer.

  8. 8
    DéfiExigence ou préférence ?

    Un plan de répartition des salles doit respecter leur capacité pour les réunions. Un organisateur préfère une salle près de l'entrée, mais une salle admissible plus éloignée est disponible. Choisir la salle la plus éloignée devrait-il rendre le plan irréalisable ?

    ---reveal---

    Non. La capacité est une exigence dure, tandis que l'emplacement est une préférence souple. La salle plus éloignée peut entraîner un coût de préférence sans invalider le plan. Pour être réalisable, le plan doit toujours respecter toutes les règles dures.

  9. 9
    ExempleModéliser la journée d'ateliers

    Utilise les variables A à E pour Bases de Python, Python avancé, Statistiques, Bases de données et Éthique. Chacune prend le créneau 1, 2 ou 3.

    Les participants communs donnent A≠C,A≠D,C≠D,B≠C,C≠E,D≠E. L'atelier de base précède l'atelier avancé, donc A<B. L'atelier Éthique ne peut pas avoir lieu au créneau 1, donc E≠1. Chaque règle relie exactement les décisions qu'elle régit.

  10. 10
    ExempleVérifier l'emploi du temps complet

    Essaie A=2,B=3,C=1,D=3,E=2. Les six paires d'ateliers ayant des participants communs occupent des créneaux différents. L'atelier de base précède l'atelier avancé et l'atelier Éthique n'a pas lieu le matin. Chaque atelier possède un créneau autorisé : c'est donc une solution.

    B et D partagent le créneau 3, ce qui est autorisé puisqu'aucune contrainte ne les relie. Ajouter une règle imposant que tous les ateliers aient des créneaux différents rejetterait cet emploi du temps légitime.

  11. 11
    ExplicationÉcrire correctement l'absence de chevauchement

    Si la tâche X dure 20 minutes et la tâche Y 35, leur machine partagée autorise les deux ordres :

    SX+20≤SYouSY+35≤SX.

    Chaque alternative compare l'heure de fin d'une tâche à l'heure de début de l'autre. Utiliser « et » exigerait que chacune des deux tâches de durée positive précède l'autre. N'utilise une seule règle de précédence que lorsque l'ordre des tâches est effectivement fixé.

  12. 12
    DéfiConstruire un modèle d'affectation

    Trois rapports nécessitent trois relecteurs différents. Le relecteur 2 a un conflit d'intérêts avec le rapport A. Quelles variables, quels domaines et quelles contraintes expriment cette tâche ?

    ---reveal---

    Utilise une variable par rapport avec les relecteurs 1 à 3 comme valeurs. Retire 2 du domaine de A et applique Alldiff aux trois rapports. Il s'agit d'une restriction unaire d'admissibilité et d'une règle globale de distinction ; le modèle donne exactement un relecteur à chaque rapport.

  13. 13
    RécapitulatifVérifier le modèle avant la recherche

    Identifie les décisions, énumère leurs valeurs autorisées et écris les exigences réelles qui les concernent. Vérifie un cas valide et un cas invalide. Les règles dures déterminent ce qui est réalisable ; les coûts des préférences guident l'optimisation. Le choix des variables doit permettre d'exprimer facilement ces règles.

2

Suivre et améliorer le retour arrière

14 étapes
Suivre les choix récursifs, appliquer l'ordonnancement des variables et des valeurs et utiliser les explications des conflits pour éviter de répéter un travail infructueux.

Enregistre cette unité pour suivre chaque Leçon Interactive pas à pas.

  1. 1
    IntroductionConstruire une solution un choix à la fois
  2. 2
    Point cléUne seule variable suivante suffit
  3. 3
    ExempleCommencer la recherche à ordre fixe
  4. 4
    ExempleReconnaître l'impasse
  5. 5
    DéfiQuel appel essaie une autre valeur ?
  6. 6
    ExplicationChoisir la variable susceptible d'échouer
  7. 7
    ExempleLaisser les domaines déterminer l'ordre des ateliers
  8. 8
    Point cléGarder des possibilités lors du choix de la valeur
  9. 9
    DéfiChoisir une valeur après avoir sélectionné la variable
  10. 10
    ExempleSauter une décision sans rapport
  11. 11
    ExplicationFaire remonter les causes dans la recherche
  12. 12
    ExempleApprendre une combinaison ayant échoué
  13. 13
    DéfiConcilier ordonnancement et apprentissage
  14. 14
    RécapitulatifDistinguer les améliorations de la recherche
3

Suivre la réduction des domaines, d'une décision à un conflit de groupe

17 étapes
Suivre la vérification anticipée, AC-3, le maintien de la cohérence d'arc et des propagations plus fortes, ainsi que les limites de chaque niveau d'inférence.

Enregistre cette unité pour suivre chaque Leçon Interactive pas à pas.

  1. 1
    IntroductionSuivre les conséquences d'un changement de domaine
  2. 2
    ExplicationRéduire les domaines des voisins immédiats
  3. 3
    ExempleObserver l'interaction manquée
  4. 4
    DéfiRestaurer exactement les bonnes valeurs
  5. 5
    ExplicationVérifier le support de l'origine vers l'extrémité
  6. 6
    ExempleDéclencher une chaîne de conséquences
  7. 7
    ExempleTerminer l'établissement de la cohérence d'arc
  8. 8
    ConseilMettre en file les arcs susceptibles de perdre un support
  9. 9
    DéfiQue signifie un résultat aux domaines non vides ?
  10. 10
    LienMaintenir la cohérence pendant la recherche
  11. 11
    ExplicationVérifier une paire par rapport à une troisième variable
  12. 12
    Point cléPourquoi la cohérence forte compte
  13. 13
    ExempleRéserver une paire de valeurs
  14. 14
    ExemplePropager les bornes numériques dans les deux sens
  15. 15
    DéfiDétecter un manque de valeurs dans un groupe
  16. 16
    DéfiChoisir l'inférence qui explique l'échec
  17. 17
    RécapitulatifLire précisément chaque garantie
4

Réparer un échiquier et échapper à un plateau

11 étapes
Exécuter l'heuristique des conflits minimaux, suivre un déplacement latéral et sélectionner une méthode qui fournit le résultat nécessaire sur l'existence d'une solution.

Enregistre cette unité pour suivre chaque Leçon Interactive pas à pas.

  1. 1
    IntroductionRéparer une affectation candidate complète
  2. 2
    ExplicationChoisir une variable en conflit
  3. 3
    ExempleRepérer les attaques sur l'échiquier
  4. 4
    ExempleÉvaluer les lignes candidates d'une reine
  5. 5
    DéfiIgnorer la partie constante
  6. 6
    ExempleAtteindre un état sans déplacement améliorant
  7. 7
    ExempleUtiliser un déplacement latéral pour rendre une réparation possible
  8. 8
    ConseilAdapter la méthode de sortie à l'obstacle
  9. 9
    DéfiChoisir un solveur pour déterminer l'absence de solution
  10. 10
    LienRéparer en limitant les changements
  11. 11
    RécapitulatifÉvaluer le résultat de la réparation
5

Résoudre les problèmes arborescents et maîtriser les cycles restants

15 étapes
Suivre la résolution par composantes, les parcours de l'arbre, les essais d'ensembles coupe-cycles et les conditions d'une décomposition arborescente valide.

Enregistre cette unité pour suivre chaque Leçon Interactive pas à pas.

  1. 1
    IntroductionUtiliser le graphe pour réduire le travail
  2. 2
    ExplicationRésoudre séparément les composantes indépendantes
  3. 3
    ExplicationÉtablir l'ordre de l'arbre
  4. 4
    ExempleRéduire les domaines de l'arbre des ateliers en remontant
  5. 5
    ExempleAffecter les valeurs restantes en descendant
  6. 6
    DéfiRepérer un arc inversé
  7. 7
    ExplicationBriser tous les cycles avec un ensemble coupe-cycles
  8. 8
    ExempleEssayer l'ensemble coupe-cycles des ateliers
  9. 9
    Point cléDe petits ensembles coupe-cycles limitent l'exposant
  10. 10
    ExplicationRemplacer les cycles par des sacs qui se chevauchent
  11. 11
    DéfiVérifier le chemin de sacs
  12. 12
    LienDéduire le coût de la taille des sacs
  13. 13
    LienSupprimer les noms de couleurs interchangeables
  14. 14
    DéfiCombiner un ensemble coupe-cycles et la garantie des arbres
  15. 15
    RécapitulatifVérifier la condition structurelle

Satisfaction de contraintes : QCM

40 Questions Pratiques en 4 séries

Série 1 : Modéliser les choix et suivre les algorithmes de base10 Questions Pratiques

Question 1 sur 10

Trois tâches de livraison J, K et L prennent chacune une valeur dans {1,2}. La seule contrainte est J≠K. Comment classer l'affectation J=1,K=2 ?
  1. Complète et cohérente
  2. Partielle et cohérente
  3. Partielle et incohérente
  4. Complète et incohérente
Afficher la réponseMasquer la réponse
Réponse : B
Les valeurs affectées satisfont la seule contrainte : l'affectation est donc cohérente. L n'a pas encore de valeur, ce qui la rend partielle. Satisfaire toutes les contraintes dont les variables sont affectées ne rend pas une affectation partielle complète.

Question 2 sur 10

Quatre canaux de capteurs doivent tous utiliser des fréquences différentes. Combien d'inégalités prises deux à deux expriment la même exigence qu'Alldiff sur ces quatre variables ?
  1. 4
  2. 8
  3. 12
  4. 6
Afficher la réponseMasquer la réponse
Réponse : D
Chacune des quatre variables doit être différente des trois autres, mais compter dans les deux sens compte chaque paire deux fois. Le total est donc quatre fois trois divisé par deux, soit six. Quatre inégalités vérifieraient trop peu de paires pour imposer toute l'exigence.

Question 3 sur 10

Les tests U et V nécessitent le même appareil pendant respectivement 12 et 18 minutes. Leurs heures de début, positives ou nulles, sont SU et SV. Quelle contrainte autorise les deux ordres tout en empêchant le chevauchement ?
  1. SU+12≤SV ou SV+18≤SU
  2. SU+12≤SV et SV+18≤SU
  3. SU+18≤SV ou SV+12≤SU
  4. SU+12≤SV ou SV+12≤SU
Afficher la réponseMasquer la réponse
Réponse : A
L'absence de chevauchement permet à U de se terminer avant le début de V ou à V de se terminer avant le début de U. Chaque heure de fin utilise la durée propre du test concerné. Relier les deux ordres par « et » exigerait que chacun des tests de durée positive se termine avant le début de l'autre, ce qui rendrait le modèle irréalisable.

Question 4 sur 10

Un solveur de contraintes en profondeur d'abord essaie P=2, explore toutes les suites cohérentes et constate qu'elles échouent toutes. P possède aussi la valeur 4, qui n'a pas été essayée. Que doit faire le solveur ensuite ?
  1. Garder P = 2 et réessayer les enfants
  2. Annuler P et renvoyer un échec
  3. Annuler P = 2 et essayer P = 4
  4. Tout annuler et relancer la recherche
Afficher la réponseMasquer la réponse
Réponse : C
L'échec de toutes les suites avec P = 2 rejette cette branche : le solveur supprime donc ce choix et essaie P = 4. Renvoyer immédiatement un échec pour P sauterait une valeur non essayée. Les affectations antérieures restent en place, sauf si P finit par épuiser tout son domaine.

Question 5 sur 10

Des variables non affectées ont pour domaines DH={1,4}, DJ={2} et DK={1,2}. H a quatre voisins non affectés, J en a un et K en a trois. Avec l'heuristique du minimum de valeurs restantes et celle du degré pour départager les ex æquo, quelle variable vient ensuite ?
  1. J
  2. H
  3. K
  4. H ou K
Afficher la réponseMasquer la réponse
Réponse : A
Il reste une valeur à J, tandis que H et K en ont chacune deux : l'heuristique du minimum de valeurs restantes choisit donc J. Le degré n'est utilisé que lorsque les plus petits domaines sont de même taille. Choisir H parce qu'elle a le plus de voisins non affectés inverserait la priorité des deux heuristiques.

Question 6 sur 10

Soit DM={1,2,3,4} et DN={2,3,4}, avec M<N. Après l'affectation M=3, quel domaine la vérification anticipée laisse-t-elle à N ?
  1. {2,4}
  2. {3,4}
  3. {4}
  4. {2,3}
Afficher la réponseMasquer la réponse
Réponse : C
N doit être supérieure à la valeur affectée 3 : seule la valeur 4 reste donc possible. Supprimer uniquement la valeur égale à 3 laisserait 2, qui viole aussi la règle d'ordre. La vérification anticipée applique la relation binaire réelle, qu'il s'agisse d'une inégalité, d'une précédence ou d'une autre condition.

Question 7 sur 10

Pour X+Y+Z=7, une variable auxiliaire U contient tous les triplets autorisés et est reliée à X, Y et Z par des contraintes d'égalité des composantes. Si U=(1,4,2), quelles valeurs sont imposées ?
  1. X=4,Y=2,Z=1
  2. X=1,Y=2,Z=4
  3. X=1,Y=4,Z=2
  4. X=2,Y=4,Z=1
Afficher la réponseMasquer la réponse
Réponse : C
Les première, deuxième et troisième composantes de U doivent être égales à X, Y et Z dans cet ordre. Le tuple choisi impose donc respectivement 1, 4 et 2. Une autre permutation peut aussi donner une somme de 7, mais elle est incompatible avec cette valeur particulière de la variable auxiliaire.

Question 8 sur 10

Une affectation complète comporte quatre contraintes violées. Une variable sélectionnée R intervient dans l'une d'elles. Les valeurs candidates a, b et c donnent respectivement à R 2, 0 et 1 conflit. Quelle valeur l'heuristique des conflits minimaux sélectionne-t-elle ?
  1. a
  2. c
  3. a ou c
  4. b
Afficher la réponseMasquer la réponse
Réponse : D
L'heuristique des conflits minimaux compare les violations concernant R tandis que les autres variables restent fixes : b l'emporte donc avec zéro conflit. Les trois violations sans rapport ajoutent la même quantité à chaque état obtenu. Choisir c parce qu'elle semble réduire le total d'une seule unité confond le score local avec cette partie constante.

Question 9 sur 10

Un graphe de contraintes binaires possède les composantes {U,V} et {W,Z} sans arête entre elles. Chaque composante possède une solution. Comment former une solution du problème complet ?
  1. Utiliser la solution d'une seule composante
  2. Combiner une solution de chaque composante
  3. Exiger des valeurs identiques entre composantes
  4. Donner les mêmes valeurs aux deux composantes
Afficher la réponseMasquer la réponse
Réponse : B
Aucune contrainte ne relie les composantes : combiner une solution quelconque de la première avec une solution quelconque de la seconde satisfait donc toutes les règles. Exiger que leurs valeurs correspondent ajouterait une restriction absente du modèle. L'indépendance permet à chaque composante de choisir sa propre affectation valide.

Question 10 sur 10

Un graphe possède les arêtes P-Q, Q-R, R-S, S-P, R-T, T-U et U-R. On conditionne sur une variable pour obtenir un graphe sans cycle. Quel ensemble coupe-cycles à une seule variable convient ?
  1. R
  2. P
  3. T
  4. Q
Afficher la réponseMasquer la réponse
Réponse : A
Retirer R brise à la fois le cycle à quatre nœuds et le triangle, laissant le chemin Q-P-S et l'arête séparée T-U. Retirer P ou Q ne brise que le cycle à quatre nœuds et laisse R-T-U-R intact. Un ensemble coupe-cycles doit éliminer tous les cycles du graphe.
Série 2 : Suivre la propagation et analyser les échecs de recherche10 Questions Pratiques

Enregistre cette unité pour voir chaque réponse et t'entraîner sur chaque série.

Question 1 sur 10

Les variables P, Q et R ont pour domaines DP=DQ={1,2} et DR={1}. Les règles sont P≠Q et Q≠R. Que se passe-t-il lorsqu'on complète l'affectation partielle P=1 ?
  1. Q doit valoir 2, donc R = 1 convient
  2. Q doit valoir 1, ce qui contredit P
  3. Q et R doivent toutes deux valoir 2
  4. P doit valoir 2 puisque R vaut 1
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 2 sur 10

Pour X<Y, soit DX={2,5} et DY={3,4}. Que se passe-t-il lorsqu'on révise l'arc X→Y ?
  1. Y perd 3 ; X reste inchangée
  2. X perd 2 ; Y reste inchangée
  3. X perd 5 ; Y reste inchangée
  4. Y perd 4 ; X reste inchangée
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 3 sur 10

Quatre variables possèdent chacune trois valeurs. Une recherche crée des branches pour chaque variable non affectée et chaque valeur jusqu'à atteindre des affectations complètes. Par quel facteur le choix d'une variable par niveau réduit-il le nombre de feuilles avant la réduction due aux contraintes ?
  1. 4
  2. 12
  3. 81
  4. 24
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 4 sur 10

L'ordre d'affectation est A, B, C, D, E, F. F n'a aucune valeur autorisée et son ensemble de conflit est {A,C}. À quelle variable le retour arrière non chronologique simple revient-il ?
  1. A
  2. C
  3. D
  4. E
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 5 sur 10

Soit DU=DV=DW={2,5,8}, avec U<V et V<W. Quels domaines restent après la fin d'AC-3 ?
  1. DU={2,5},DV={5},DW={5,8}
  2. DU={2},DV={5},DW={8}
  3. DU={2,5},DV={5,8},DW={2,5,8}
  4. DU={2},DV={2,5},DW={5,8}
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 6 sur 10

Trois codes d'accès distincts satisfont Alldiff⁡(H,J,K), avec DH=DJ={2,8} et DK={2,5,8}. Quelle valeur la propagation globale impose-t-elle à K ?
  1. 5
  2. 2
  3. 8
  4. 2 ou 8
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 7 sur 10

Une exécution de réparation sélectionne la variable T. Ses valeurs candidates ont respectivement 1, 3 et 2 violations locales, tandis que quatre contraintes violées ne concernent pas T. Quels sont les nombres totaux de violations des trois états obtenus ?
  1. 1, 3, 2
  2. 4, 4, 4
  3. 5, 7, 6
  4. 4, 12, 8
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 8 sur 10

Un solveur passe à plusieurs reprises entre deux affectations qui violent chacune une contrainte. Quel changement décourage directement le retour immédiat à l'affectation qui vient d'être quittée ?
  1. Toujours choisir la même variable en conflit
  2. N'autoriser que les déplacements de même score
  3. Redémarrer avec la même affectation initiale
  4. Garder une courte liste tabou des états récents
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 9 sur 10

Un arbre enraciné est le chemin R-S-T-W, avec l'ordre R, S, T, W et les contraintes R<S,S<T,T<W. Les domaines sont DR={1,2,3},DS={2,3,4},DT={3,4},DW={4}. Quels domaines restent après le parcours ascendant ?
  1. DR={1},DS={2},DT={3},DW={4}
  2. DR={1,2},DS={2,3},DT={3},DW={4}
  3. DR={1},DS={2,3},DT={3,4},DW={4}
  4. DR={1,2,3},DS={2},DT={3},DW={4}
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 10 sur 10

Les sacs {A,B,C}, {C,D} et {A,D} forment un chemin couvrant le cycle A-B-C-D-A. Les sacs aux extrémités restent fixes. Quelle est la plus petite modification du sac central qui rend la décomposition valide, et quelle largeur obtient-on ?
  1. Remplacer C par A ; largeur 2
  2. Ajouter A au sac central ; largeur 2
  3. Retirer D du sac central ; largeur 2
  4. Ajouter un sac séparé {A} à une extrémité ; largeur 2
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Série 3 : Combiner décisions, inférence et réparation10 Questions Pratiques

Enregistre cette unité pour voir chaque réponse et t'entraîner sur chaque série.

Question 1 sur 10

Le traitement prend 16 minutes, suivi d'une vérification de 24 minutes, puis d'un emballage de 10 minutes. Toutes les heures de début sont des nombres entiers de minutes positifs ou nuls, des temps d'attente sont autorisés et l'emballage doit se terminer au plus tard à la minute 80. Quels sont les intervalles de début les plus resserrés, dans cet ordre ?
  1. [0;64], [16;56], [40;70]
  2. [0;30], [16;40], [40;70]
  3. [0;30], [16;46], [40;70]
  4. [0;40], [16;56], [40;80]
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 2 sur 10

Des variables non affectées ont DA=DB={1,2} et DC={1,2,3}. Les règles sont A≠B et A<C. Utilise l'heuristique du minimum de valeurs restantes, celle du degré pour départager les ex æquo et celle de la valeur la moins contraignante. Quelles variable et valeur sont choisies ?
  1. B = 1
  2. A = 2
  3. C = 3
  4. A = 1
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 3 sur 10

L'ordre d'affectation est L, M, N, P, Q. Q échoue avec l'ensemble de conflit {L,N} et revient à N, dont l'ensemble de conflit courant est {M}. N épuise ensuite ses valeurs sans nouveau contributeur au conflit. À quelle variable le retour arrière non chronologique dirigé par les conflits revient-il ensuite ?
  1. M
  2. L
  3. P
  4. Q
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 4 sur 10

Soit DA=DB=DC={1,2,3}, avec A≠B,A≠C,B≠C. La vérification anticipée suit A=1, puis B=2. Si l'affectation de B est annulée tandis que A reste affectée, quels domaines B et C doivent-elles avoir avant d'essayer la valeur suivante de B ?
  1. DB={1,2,3},DC={1,2,3}
  2. DB={2,3},DC={2,3}
  3. DB={2,3},DC={3}
  4. DB={2},DC={2,3}
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 5 sur 10

Un problème de satisfaction de contraintes binaire possède les domaines DP={1,2}, DQ={1,2} et DR={2,3} avec P≠Q,Q<R,P=R. Que se passe-t-il lorsqu'AC-3 est exécuté jusqu'à son terme ?
  1. Il laisse P = 1, Q = 2, R = 3
  2. Il trouve un domaine vide
  3. Il laisse tous les domaines inchangés
  4. Il laisse P = 2, Q = 1, R = 2
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 6 sur 10

Deux quantités entières satisfont U+V=68, avec U∈[0;30] et V∈[0;50]. Une nouvelle règle de capacité abaisse le maximum de V à 42. Après propagation des bornes, quels sont les intervalles les plus resserrés ?
  1. U∈[26;30], V∈[38;42]
  2. U∈[18;30], V∈[38;42]
  3. U∈[26;30], V∈[26;42]
  4. U∈[26;38], V∈[30;42]
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 7 sur 10

Une affectation complète satisfait toutes les anciennes règles d'ordonnancement. Une nouvelle contrainte de disponibilité crée des conflits. L'organisateur exige que les réparations réalisables modifient le moins d'affectations possible. Que doit comprendre l'objectif de réparation ?
  1. Seulement le nombre de contraintes violées
  2. Un coût pour chaque affectation modifiée
  3. Seulement la taille du domaine de chaque variable
  4. Un ordre fixe de sélection des variables
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 8 sur 10

Les contraintes a, b et c ont respectivement les poids 4, 2 et 1. Trois déplacements candidats laissent respectivement les violations {a}, {b,c} et {c}. Après avoir choisi le résultat de poids le plus faible et augmenté de 1 le poids de chaque contrainte encore violée, quels sont les poids obtenus ?
  1. 5, 2, 1
  2. 4, 3, 2
  3. 4, 2, 2
  4. 5, 3, 2
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 9 sur 10

Un problème de satisfaction de contraintes possède 24 variables à valeurs binaires réparties en six groupes indépendants de quatre. Combien d'affectations complètes de groupes des recherches exhaustives séparées examineraient-elles au plus pour résoudre ces groupes ?
  1. 16
  2. 64
  3. 96
  4. 256
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 10 sur 10

Quatre variables à valeurs binaires suivent les règles A=B,B≠C,C=D,A≠D. Combien d'affectations complètes satisfont les quatre règles ?
  1. 2
  2. 0
  3. 4
  4. 8
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Série 4 : Appliquer les méthodes à de nouvelles structures de contraintes10 Questions Pratiques

Enregistre cette unité pour voir chaque réponse et t'entraîner sur chaque série.

Question 1 sur 10

Un graphe possède les arêtes A-B, B-C, C-A, C-D, D-E et E-C. Deux sacs proposés {A,B,C} et {C,D,E} sont reliés par une arête. Avec au plus cinq valeurs par variable, cette décomposition est-elle valide, et quelles largeur et borne usuelle donne-t-elle ?
  1. Invalide ; les deux occurrences de C empêchent une décomposition arborescente
  2. Valide, largeur 2, avec la borne O(n53)
  3. Valide, largeur 2, avec la borne O(n52)
  4. Valide, largeur 3, avec la borne O(n53)
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 2 sur 10

Un tableau de service doit couvrir tous les postes requis et devrait de préférence éviter les services tardifs pour un membre du personnel. La préférence de cette personne est la seule contrainte souple. Qu'est-ce qui rend un tableau de service réalisable ?
  1. Il minimise uniquement les services tardifs
  2. Il satisfait la plupart des règles dures
  3. Il a un coût de préférence nul
  4. Il satisfait toutes les règles dures
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 3 sur 10

Un modèle du problème des 5 reines utilise les variables de ligne Q1 à Q5, une par colonne. Un apprenant propose l'affectation candidate (1,3,5,2,4) et affirme qu'une seconde contrainte imposant une reine par colonne est encore nécessaire. Quelle évaluation est correcte ?
  1. L'affectation est valide ; une reine par colonne est déjà garantie
  2. L'affectation échoue ; les colonnes 1 et 3 s'attaquent
  3. L'affectation échoue ; les colonnes 2 et 5 s'attaquent
  4. L'affectation est valide ; les inégalités de lignes garantissent les colonnes
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 4 sur 10

Un solveur par retour arrière sur domaines finis a exploré toutes les branches et renvoyé un échec. Un solveur utilisant l'heuristique des conflits minimaux s'est arrêté après 2 000 déplacements sans succès. Quelle conclusion est justifiée pour chaque exécution ?
  1. Les deux établissent l'absence de solution puisqu'elles n'en ont pas trouvé
  2. Les deux laissent l'existence d'une solution ouverte puisqu'elles ont échoué
  3. Le retour arrière établit l'absence de solution ; la recherche locale laisse la question ouverte
  4. La recherche locale établit l'absence de solution ; le retour arrière laisse la question ouverte
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 5 sur 10

Les variables non affectées X et Y ont chacune deux valeurs autorisées ; Z en a trois. X a un voisin non affecté et Y en a deux. Les valeurs candidates de Y suppriment respectivement 3 et 1 valeurs des domaines voisins. Que choisit-on avec les heuristiques du minimum de valeurs restantes, du degré et de la valeur la moins contraignante ?
  1. La première valeur de X
  2. La deuxième valeur de Y
  3. La première valeur de Y
  4. La deuxième valeur de Z
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 6 sur 10

Les variables P, Q et R ont le domaine {1,2} et les contraintes P≠R,Q≠R. U est indépendante. Une branche avec P=1,Q=2,U=1 échoue. Dans une branche ultérieure avec P=1,U=2, quelle restriction sur Q peut être justifiée par l'apprentissage tiré de cet échec ?
  1. Rejeter Q = 2 tant que P = 1
  2. Rejeter Q = 1 tant que P = 1
  3. Rejeter Q = 2 dans chaque branche
  4. Autoriser les deux valeurs de Q après le changement de U
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 7 sur 10

Avant une décision, les variables non affectées Y et Z ont chacune le domaine {2,6} et doivent être différentes. L'affectation de X supprime 6 des deux domaines par les contraintes X-Y et X-Z. Que signale immédiatement la vérification anticipée ordinaire ?
  1. Un domaine vide, car Y et Z doivent être différentes
  2. Aucune réduction, car Y et Z ne sont pas affectées
  3. Une solution, car toutes les valeurs restantes sont fixées
  4. Aucun domaine vide pour l'instant ; Y et Z conservent toutes deux 2
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 8 sur 10

Soit DA={1,2,3}, DB={2,3} et DC={2}, avec A<B et B≠C. Quels sont les domaines finaux d'AC-3 ?
  1. DA={1},DB={3},DC={2}
  2. DA={1,2},DB={2,3},DC={2}
  3. DA={1,2},DB={3},DC={2}
  4. DA={1,2,3},DB={3},DC={2}
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 9 sur 10

Quatre variables doivent toutes être différentes. Leurs domaines sont DJ=DK={1,4}, DL={1,4,7} et DM={4,7,9}. Qu'impose une propagation complète d'Alldiff ?
  1. L=1,M=7
  2. L=7,M=9
  3. L=7,M∈{4,9}
  4. L∈{1,7},M=9
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 10 sur 10

Un plan comporte 6 violations. Les déplacements disponibles modifiant une seule variable conduisent aux scores 6, 7 et 8. Le déplacement donnant le score 6 atteint un état qui permet un déplacement vers le score 4. Quel comportement de recherche peut atteindre le score 4 sans d'abord augmenter le nombre de violations ?
  1. Autoriser un déplacement latéral, puis un déplacement améliorant
  2. Exiger une diminution stricte à chaque déplacement
  3. Autoriser un déplacement moins bon, puis un déplacement améliorant
  4. Modifier les poids des contraintes en gardant l'état fixe
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Tu bloques sur ton propre exercice ? Aide aux Devoirs

Mots-Clés

73 Mots-Clés, chacun avec sa définition

A

AC-3
AC-3 est un algorithme utilisant une file qui révise à plusieurs reprises des arcs orientés et vérifie à nouveau les voisins touchés par les réductions de domaines.
Après que X a perdu des valeurs, les arcs entrants provenant de ses autres voisins sont mis en file, car leurs supports peuvent avoir disparu.
Affectation cohérente
Une affectation cohérente ne viole aucune contrainte sur les valeurs affectées, même si elle peut ne pas être prolongeable en une solution complète.
Deux régions coloriées peuvent être compatibles même si leurs couleurs ne laissent aucune couleur disponible pour une région non coloriée.
Alldiff
Alldiff est une contrainte globale qui exige que toutes les variables de sa portée prennent dans leurs domaines des valeurs différentes deux à deux.
Pour trois rapports affectés avec Alldiff, un même relecteur ne peut pas recevoir plus d'un de ces rapports.
Apprentissage de contraintes
L'apprentissage de contraintes enregistre les conséquences logiques des échecs de recherche sous forme de restrictions ou de nogoods en cache, afin d'éviter de les redécouvrir.
Une branche ultérieure peut rejeter une combinaison de couleurs impossible apprise, même après modification de choix sans rapport.

C

Cohérence d'arc
La cohérence d'arc exige que chaque valeur à l'origine d'un arc binaire orienté possède une valeur compatible dans le domaine à son extrémité.
Une heure de début est supprimée lorsque la tâche suivante n'a plus d'heure assez tardive pour satisfaire la précédence.
Cohérence d'arc directionnelle
La cohérence d'arc directionnelle exige que chaque variable soit cohérente d'arc avec chaque voisin soumis à une contrainte qui apparaît plus tard dans un ordre donné.
Dans un ordre d'arbre où les parents précèdent les enfants, les valeurs restantes des parents doivent avoir un support dans le domaine de chaque enfant.
Cohérence de bornes
La cohérence de bornes exige que chaque extrémité du domaine d'une variable puisse être étendue en une affectation qui satisfait chaque contrainte la concernant.
Les extrémités d'un intervalle peuvent avoir des supports même si certaines valeurs intérieures ne satisfont pas une contrainte.
Cohérence de chemin
La cohérence de chemin exige que chaque affectation cohérente à une paire de variables puisse être étendue de manière compatible à toute troisième variable dans un problème de satisfaction de contraintes binaire.
Deux couleurs différentes sur un triangle à deux couleurs ne laissent aucune couleur compatible pour sa troisième région.
Cohérence de nœud
La cohérence de nœud signifie que chaque valeur restante du domaine d'une variable satisfait toutes les contraintes unaires portant sur cette variable.
Après application d'une interdiction le matin, le domaine cohérent de nœud de la séance ne contient que le milieu de journée et l'après-midi.
Commutativité
La commutativité des affectations dans un problème de satisfaction de contraintes signifie qu'affecter les mêmes valeurs aux variables dans des ordres différents produit le même état final.
Donner 1 à A avant de donner 3 à B produit le même couple complet que choisir la valeur de B avant celle de A.
Composante indépendante
Une composante indépendante est une partie connexe d'un graphe de contraintes dont aucune variable n'est reliée par une contrainte à une autre composante.
Le nœud isolé de la Tasmanie peut être colorié après le continent sans vérifier d'arête supplémentaire avec celui-ci.
Conditionnement par ensemble coupe-cycles
Le conditionnement par ensemble coupe-cycles essaie les affectations de l'ensemble coupe-cycles, réduit les domaines restants et résout l'arbre ou la forêt obtenue pour chaque essai.
Si l'arbre ne peut pas être complété en une solution, le solveur essaie une autre affectation de l'ensemble coupe-cycles au lieu de rejeter immédiatement tout le problème.
Contrainte binaire
Une contrainte binaire restreint les combinaisons de valeurs autorisées pour deux variables, par exemple leur ordre ou le fait que leurs valeurs soient différentes.
Deux tests qui partagent un technicien nécessitent une règle binaire empêchant le chevauchement de leurs périodes d'exécution.
Contrainte d'arité supérieure
Une contrainte d'arité supérieure restreint une combinaison de valeurs concernant au moins trois variables dans une même relation.
Une règle exigeant que trois durées de tâches totalisent dix heures relie les trois variables de durée.
Contrainte de bris de symétrie
Une contrainte de bris de symétrie conserve des représentants de solutions équivalentes en restreignant les choix qui ne diffèrent que par une symétrie valide.
Fixer un ordre de couleurs sur une clique de trois régions supprime les permutations répétées des noms de couleurs lorsque celles-ci sont interchangeables.
Contrainte de précédence
Une contrainte de précédence exige qu'une tâche se termine avant qu'une autre commence, en reliant son heure de début et sa durée à l'heure de début suivante.
Une tâche de préparation de 20 minutes commençant à la minute 5 permet à l'analyse de commencer au plus tôt à la minute 25.
Contrainte disjonctive
Une contrainte disjonctive exige qu'au moins une relation parmi plusieurs soit satisfaite, par exemple l'un de deux ordres possibles sans chevauchement.
Deux tâches utilisant une machine peuvent s'exécuter dans l'ordre X puis Y ou Y puis X, à condition que leurs intervalles d'exécution ne se chevauchent pas.
Contrainte dure
Une contrainte dure est une exigence obligatoire que toute affectation réalisable doit satisfaire, quels que soient les coûts des préférences.
La capacité maximale d'une salle reste obligatoire même si la dépasser rendait l'emploi du temps plus pratique.
Contrainte globale
Une contrainte globale est une relation nommée définie sur un groupe de variables de taille variable, souvent associée à une méthode spécialisée de réduction des domaines.
Alldiff permet à un solveur de reconnaître que trois cases ne peuvent pas toutes être différentes lorsqu'il ne reste que deux chiffres.
Contrainte souple
Une contrainte souple exprime une préférence dont la violation contribue à un coût utilisé pour comparer des affectations par ailleurs réalisables.
Une préférence pour l'après-midi peut être violée lorsqu'un placement le matin est nécessaire pour satisfaire toutes les règles dures.
Contrainte unaire
Une contrainte unaire restreint les valeurs d'une variable et peut être appliquée en supprimant les valeurs interdites de son domaine.
La règle selon laquelle une séance ne peut pas commencer avant le milieu de la journée supprime les choix du matin avant toute décision de recherche.

D

Décomposition arborescente
Une décomposition arborescente dispose en arbre des sacs de variables qui se chevauchent, tout en couvrant toutes les variables et les contraintes et en préservant la connexité des occurrences.
Deux sacs partageant une variable peuvent coordonner leurs solutions locales en s'accordant sur la valeur de cette variable.
Déplacement latéral
Un déplacement latéral modifie une affectation sans changer son score, ce qui peut ouvrir l'accès à une amélioration ultérieure.
Déplacer une reine remplace une attaque en diagonale par une attaque sur une ligne, puis permet à une autre reine de résoudre le problème.
Domaine
Un domaine est l'ensemble des valeurs qu'une variable peut prendre ; la propagation peut supprimer les valeurs incompatibles avec les restrictions courantes.
Une séance dispose initialement de trois créneaux possibles, mais l'heure d'arrivée de son formateur élimine le premier.

E

Ensemble coupe-cycles
Un ensemble coupe-cycles est un ensemble de variables dont la suppression, avec leurs arêtes incidentes, laisse un arbre ou une forêt sans cycle.
Retirer le sommet partagé par deux triangles brise les deux cycles tout en conservant deux arêtes séparées.
Ensemble de conflit
Un ensemble de conflit indique les variables antérieures dont les valeurs affectées ont contribué à éliminer les choix possibles d'une variable en échec.
Si les couleurs de trois voisins épuisent la palette d'une région, ces voisins antérieurs expliquent son domaine vide.

F

Formulation à états complets
Une formulation à états complets garde toutes les variables affectées pendant toute la recherche locale, tout en autorisant des violations temporaires de contraintes.
Un algorithme de réparation part d'un emploi du temps complet même lorsqu'une nouvelle règle de disponibilité crée un conflit entre deux séances.

G

Graphe de contraintes
Un graphe de contraintes représente les variables par des nœuds et relie deux nœuds lorsque leurs variables partagent une contrainte binaire.
Dans un graphe de coloration de carte, le nœud isolé d'une île montre que sa couleur peut être choisie indépendamment des régions reliées du continent.

H

Heuristique des conflits minimaux
L'heuristique des conflits minimaux répare une affectation complète en sélectionnant une variable en conflit et en lui donnant une valeur causant le moins de violations.
Une reine est déplacée vers une ligne où elle subit le moins d'attaques des autres reines, les ex æquo étant départagés aléatoirement.
Heuristique du degré
L'heuristique du degré privilégie une variable ayant davantage de contraintes avec des variables non affectées, généralement pour départager des domaines de même taille.
Il reste deux couleurs à deux régions ; celle qui a le plus de voisins non coloriés est choisie par l'heuristique du degré.
Heuristique du minimum de valeurs restantes
L'heuristique du minimum de valeurs restantes sélectionne une variable non affectée à laquelle il reste le moins de valeurs autorisées sous les restrictions courantes.
Une séance à laquelle il ne reste qu'un créneau est choisie avant une séance qui peut encore utiliser trois créneaux différents.

K

k-cohérence
La k-cohérence exige que toute affectation cohérente à n'importe quelles k − 1 variables puisse être étendue de manière cohérente à toute variable supplémentaire.
Au niveau trois, une paire compatible doit laisser à chaque troisième variable une valeur cohérente avec les deux.
k-cohérence forte
La k-cohérence forte signifie qu'un problème de satisfaction de contraintes satisfait tous les niveaux de cohérence de 1 à k, y compris toutes les exigences d'extension inférieures.
La n-cohérence forte permet d'affecter les variables d'un problème à n variables et à domaines non vides sans retour arrière, quel que soit leur ordre.

L

Largeur arborescente
La largeur arborescente d'un graphe est la plus petite taille possible du plus grand sac, moins un, parmi toutes les décompositions arborescentes valides de ce graphe.
Une décomposition dont les sacs comptent au plus trois variables montre que la largeur arborescente du graphe est au plus égale à deux.

M

Maintien de la cohérence d'arc
Le maintien de la cohérence d'arc établit la cohérence d'arc après chaque décision de la recherche avec retour arrière et restaure les domaines lors de l'annulation.
Les conséquences d'une décision peuvent se propager à travers plusieurs séances non affectées avant la sélection de la variable suivante.
Minimum local
Un minimum local est une affectation comportant des violations dans laquelle aucun changement d'une seule variable ne réduit le score de conflit choisi.
Un échiquier de reines peut conserver une attaque même si chaque changement immédiat donne un score égal ou moins bon.
Modèle factorisé
Un modèle factorisé représente un état par des variables et des valeurs distinctes, ce qui permet à un solveur d'examiner les contraintes entre les choix.
La ligne d'une reine peut changer sans reconstruire une description de chaque case de l'échiquier.

N

Nogood
Un nogood est une combinaison précise d'affectations qui ne peut pas être prolongée en une solution du problème de satisfaction de contraintes et peut donc être interdite.
Deux couleurs attribuées antérieurement à des régions peuvent obliger un triangle à n'utiliser que deux couleurs, faisant de leur combinaison un nogood.

O

Ordonnancement d'atelier
L'ordonnancement d'atelier attribue des heures de début aux tâches tout en respectant les exigences d'ordre et les limites des machines ou des personnes partagées.
Un plan de laboratoire doit ordonner la préparation et l'analyse tout en empêchant deux analyses d'utiliser simultanément un même instrument.

P

Paire nue
Une paire nue se compose de deux variables d'une même portée Alldiff limitées aux deux mêmes valeurs, qu'elles réservent ainsi à cette paire.
Deux cases d'une ligne limitées à 4 et 7 permettent à un solveur de Sudoku de supprimer ces deux chiffres de toutes les autres cases de la ligne.
Parcours ascendant de l'arbre
Un parcours ascendant de l'arbre traite les enfants avant les parents et révise les arcs allant des parents aux enfants, en supprimant les valeurs sans support des domaines des parents.
La racine n'est vérifiée par rapport à un enfant qu'après que les valeurs possibles de cet enfant reflètent ses descendants.
Parcours descendant de l'arbre
Un parcours descendant de l'arbre choisit une valeur restante pour la racine, puis affecte à chaque enfant une valeur compatible avec celle de son parent affecté.
Les branches distinctes issues des enfants peuvent choisir leurs valeurs de support indépendamment une fois la réduction ascendante des domaines terminée.
Pile de restauration
Une pile de restauration enregistre les valeurs supprimées des domaines par les décisions de recherche afin que le solveur puisse restaurer les bonnes valeurs pendant le retour arrière.
Annuler une décision ultérieure restaure les valeurs qu'elle a supprimées tout en conservant les suppressions imposées par une affectation antérieure.
Plateau
Un plateau est une région connexe d'affectations ayant le même score de recherche locale, où des déplacements qui améliorent strictement le score peuvent être indisponibles.
Plusieurs déplacements de reines peuvent conserver une attaque avant qu'une autre disposition ne permette un déplacement vers zéro attaque.
Pondération des contraintes
La pondération des contraintes augmente les pénalités des contraintes qui restent violées, ce qui modifie les scores utilisés pour choisir les réparations ultérieures.
Un conflit qui reste sans cesse non résolu devient plus coûteux, ce qui dirige les déplacements suivants vers sa résolution.
Portée d'une contrainte
La portée d'une contrainte est l'ensemble des variables dont les valeurs combinées sont restreintes par la relation autorisée de cette contrainte.
La règle selon laquelle la séance A précède la séance B a une portée contenant A et B, quels que soient leurs domaines.
Principe du premier échec
Le principe du premier échec privilégie une décision précoce susceptible de révéler une impasse, afin d'éviter de construire une longue suite vouée à l'échec.
L'heuristique du minimum de valeurs restantes teste tôt le domaine presque épuisé d'une séance, alors que de nombreux autres choix d'emploi du temps ne sont pas encore affectés.
Problème d'affectation
Un problème d'affectation associe des entités comme des personnes, des tâches ou des salles en respectant les restrictions d'admissibilité et de ressources.
Un modèle de relecture choisit un relecteur admissible pour chaque rapport et peut interdire d'affecter plusieurs rapports au même relecteur.
Problème d'optimisation sous contraintes
Un problème d'optimisation sous contraintes recherche une affectation réalisable qui donne la meilleure valeur de l'objectif, par exemple le coût total minimal des préférences.
Un outil d'optimisation des tableaux de service peut couvrir tous les postes requis tout en minimisant le coût des horaires de travail indésirables.
Problème de satisfaction de contraintes
Un problème de satisfaction de contraintes consiste à affecter aux variables des valeurs issues de leurs domaines tout en respectant toutes les contraintes.
Un problème de satisfaction de contraintes d'emploi du temps choisit un créneau pour chaque atelier tout en respectant les règles de présence et de disponibilité des formateurs.
Problème de satisfaction de contraintes arborescent
Un problème de satisfaction de contraintes arborescent est un problème binaire dont le graphe de contraintes est sans cycle, ce qui permet une réduction ascendante des domaines suivie d'une affectation descendante.
Une fois une variable d'atelier fixée, le graphe des ateliers restants forme le chemin B-A-D-E, qui peut être résolu par les parcours d'arbre.
Propagation des bornes
La propagation des bornes resserre les extrémités des domaines numériques à l'aide des contraintes, évitant d'énumérer toutes les valeurs d'un grand intervalle.
Lorsque deux bus se partagent un groupe de passagers, la capacité maximale de l'un impose une borne inférieure au nombre de passagers que l'autre doit transporter.
Propriété d'intersection courante
La propriété d'intersection courante exige que chaque sac situé sur un chemin entre deux occurrences d'une variable contienne aussi cette variable.
Si X apparaît dans les deux sacs aux extrémités mais est absente du sac central, la décomposition proposée est invalide.

R

Rapport critique de contraintes
Un rapport critique de contraintes marque une région de transition entre des instances majoritairement solubles et majoritairement insolubles dans de nombreuses familles de problèmes de satisfaction de contraintes aléatoires.
Les instances proches de cette transition nécessitent souvent davantage de recherche que celles qui sont peu contraintes ou clairement irréalisables.
Recherche avec retour arrière
La recherche avec retour arrière est une recherche en profondeur d'abord qui affecte une variable à la fois et annule les choix dont les suites échouent.
Lorsqu'aucun créneau ne convient pour la dernière séance, le solveur revient à une séance antérieure et essaie un autre créneau.
Recherche complète
Une recherche complète trouve une solution lorsqu'il en existe une et peut établir l'absence de solution en épuisant toutes les possibilités finies nécessaires.
Après l'échec de chaque branche sur domaines finis, un retour arrière exhaustif peut signaler que l'emploi du temps est irréalisable.
Recherche tabou
La recherche tabou interdit temporairement des états ou des déplacements récents et utilise une mémoire à court terme pour décourager les cycles répétés en recherche locale.
Un solveur évite de replacer immédiatement une séance dans le créneau qu'elle vient de quitter si cela répète le même conflit.
Recuit simulé
Le recuit simulé accepte parfois des déplacements de recherche locale donnant un moins bon score, avec une probabilité d'acceptation qui diminue lorsque la température baisse.
Des déplacements moins bons au début peuvent permettre d'échapper à un minimum local ; ensuite, les décisions à plus basse température favorisent une stabilisation dans de meilleurs états.
Redémarrage aléatoire
Un redémarrage aléatoire commence une recherche locale à partir d'une nouvelle affectation complète choisie au hasard lorsque la tentative courante progresse insuffisamment.
Après de nombreux déplacements sur un plateau, le solveur part d'un autre échiquier complet pour explorer une autre région.
Relation d'une contrainte
La relation d'une contrainte est l'ensemble des combinaisons de valeurs autorisées pour les variables de sa portée, exprimé sous forme de tuples ou d'une règle.
La relation d'une règle de précédence peut énumérer les couples de créneaux autorisés tels que (1,2) et (1,3).
Réparation en ligne
La réparation en ligne part d'une affectation existante et la met à jour lorsque les exigences changent, afin de rétablir un plan réalisable.
Lorsqu'un technicien devient indisponible, le solveur peut réparer l'emploi du temps courant au lieu d'en construire un nouveau.
Retour arrière chronologique
Le retour arrière chronologique revient d'une impasse à la variable affectée le plus récemment, quelle que soit la cause de l'échec.
Dans la coloration de carte, un solveur peut réexaminer la couleur d'une région indépendante avant de revenir au choix qui a causé un conflit.
Retour arrière non chronologique
Le retour arrière non chronologique revient d'une variable en échec au membre affecté le plus récemment de son ensemble de conflit, en sautant les décisions sans rapport.
Un échec de coloration du continent permet au solveur de ne pas réexaminer une île qui n'a aucune arête de contrainte.
Retour arrière non chronologique dirigé par les conflits
Le retour arrière non chronologique dirigé par les conflits fusionne les explications des conflits à travers les niveaux en échec pour déterminer une décision antérieure responsable.
Une cause découverte après un choix indépendant peut être transmise en arrière jusqu'à ce que la recherche atteigne une variable concernée.
Révision d'arc
Une révision d'arc supprime les valeurs du domaine à l'origine qui n'ont pas de support dans le domaine courant à l'extrémité selon la relation binaire concernée.
Réviser X→Y modifie le domaine de X ; la direction opposée doit être vérifiée séparément.

S

Solution
Une solution est une affectation qui donne à chaque variable une valeur de son domaine et satisfait simultanément toutes les contraintes.
Une grille de Sudoku entièrement remplie n'est une solution que si toutes les lignes, colonnes et régions respectent les règles et si tous les chiffres donnés sont conservés.
Support
Un support est une valeur d'un domaine voisin qui satisfait la contrainte binaire reliant les variables avec une valeur donnée à l'origine de l'arc.
Pour X<Y, la valeur 4 de Y sert de support à la valeur 3 de X, contrairement à la valeur 2 de Y.
Symétrie de valeurs
Une symétrie de valeurs existe lorsque renommer des valeurs de domaine interchangeables préserve les contraintes d'origine et transforme des solutions en solutions.
Renommer trois couleurs de carte produit des colorations équivalentes lorsqu'aucune règle ne donne un rôle particulier à une couleur.

V

Valeur la moins contraignante
L'heuristique de la valeur la moins contraignante essaie la valeur candidate qui supprime le moins de choix des domaines voisins non affectés.
Un choix de salle qui préserve la seule salle admissible pour une autre réunion est essayé avant un choix qui la lui retire.
Variable
Une variable désigne une décision dont la valeur doit être choisie dans le cadre d'une solution à un problème de satisfaction de contraintes.
Dans un modèle d'affectation de salles, chaque réunion peut être une variable dont la valeur désigne la salle qui lui est attribuée.
Variable en conflit
Une variable en conflit intervient dans au moins une contrainte violée de l'affectation complète courante utilisée par la recherche locale.
Chacune de deux réunions réservées simultanément dans une même salle est en conflit, même s'il suffit d'en déplacer une pour résoudre le problème.
Vérification anticipée
La vérification anticipée supprime des domaines des voisins non affectés les valeurs incompatibles avec la valeur choisie pour la variable nouvellement affectée.
Affecter le créneau 2 à un test supprime le créneau 2 du domaine d'un autre test qui partage le même technicien.
Vidage de domaine
Un vidage de domaine se produit lorsque la réduction ne laisse aucune valeur disponible à une variable, ce qui établit un échec sous les restrictions courantes.
Une séance perd son dernier créneau compatible après l'affectation d'une séance voisine : la branche s'arrête donc.

À propos de cette unité

Par StudeliSignaler une erreur

Crée ton propre Matériel d'Étude

Transforme tes notes, diapos et documents en Guides d'Étude, Questions Pratiques, Flashcards et 6 autres outils.

Commencer