
Dans  le  cas  général,  FC  effectue  parcours  mois  de  nœuds  que  BT  (ou  sinon  le 
même nombre : cf. explication ci-dessus) mais effectue toujours plus de tests (tests 
des instances de domaines possibles) 
 
(iv) Les algorithmes BT et FC instancient les variables les unes après les autres dans 
un ordre donné. Il est à peut près sur que ces algorithmes effectuerons des retours 
en arrières dans l’arbre qu’ils parcourent, il est donc impossible d’affirmer à l’aide de 
ces  algorithmes  que  la  grille  est  déductible  ou  pas.  Il  faut  donc  utiliser  un  autre 
algorithme pour pouvoir effectuer ce teste. 
 
b.  Génération aléatoire : 
 
Pour générer aléatoirement une grille de sudoku (contenu de 17 à 81 
chiffres) valide, il faut qu’elle satisfasse ces 2 propriétés : 
-  avoir exactement une solution 
-  cette solution pour être trouver uniquement grâce a des déductions 
 
Pour  satisfaire  la  première  propriété,  nous  avons  utilisé  un  algorithme  amélioré  de 
Forward-Checking  qui  compte  les  nombres  de  solutions  possibles,  puis  pour  la 
deuxième propriété nous avons créer un nouvelle algorithme qui vérifie si la grille est 
déductible ou non. 
 
Pour  commencer,  nous avons  décidé  de  générer  aléatoirement  (tout  en  respectant 
les contraintes) une grille de 15 chiffres, puis a l’aide de FC, nous gênerons 1 grille 
possible qui devient alors la solution a la future grille générée. Nous avons choisis de 
générer 15 chiffres car plus il y a de variables générées aléatoirement, moins il est 
possible  de  trouver  une  solution  possible  puisque  nous  faisons  alors  face  au 
problème de chevauchement des domaines : 
 
Exemple : parmi les variables non instanciées, x y et z sont 3 variables en relation les 
unes  avec  les  autres  (soumis  aux  contraintes).  Il  est  possible  que  lors  de 
l’instanciation  des  autres  variables,  les  domaines  de  ces  variables  deviennent 
identiques  et  ne  contiennent  que  2  valeurs :  k  et  l.  Le  sudoku  n’aura  donc  plus  de 
solution possible puisque les 3 variables se partagent seulement 2 valeurs possibles 
(donc une variable aura un domaine vide). 
 
Ensuite,  nous  supprimons  au  fur  et  a  mesure  des  variables  tout  en  mettant  les 
domaines  des  autres  variables  a  jour.  Des  qu’une  variable  a  été  supprimée,  nous 
appelons l’algorithme de déduction pour vérifier que la grille est toujours déductible. 
Si c’est le cas nous appelons alors l’algorithme Forward-Checking afin qu’il s’assure 
que le grille n’a qu’une seule solution. Nous effectuons les appels à ces algorithmes 
dans  cet ordre  car  l’algorithme de  déduction  est  plus  rapide  que  FC.  Les  variables 
supprimés  sont  sélectionné  au  hasard  mais  toutefois,  nous  avons  vérifie  que  1 
variable  ne  soit  pas  testé  2  fois  et  que  si  toute  les  variables  on  été  testées,  cela 
revient a dire que la grille ne peut plus être allégée. 
 
 
III.  Comparaison entre l’algorithme BT et FC :