Utilisateur:Alain.benlagha/Algorithmes de résolution des Sudokus

Une page de Wikipédia, l'encyclopédie libre.
A typical Sudoku puzzle, a 9x9 grid with several numbers missing
Un puzzle Sudoku typique

Un Sudoku standard contient 81 cellules, dans une grille 9×9, et comporte 9 régions, chaque région étant l'intersection de la première, du milieu ou des 3 dernières lignes et des 3 premières colonnes, du milieu ou des dernières. Chaque cellule peut contenir un nombre de un à neuf, et chaque nombre ne peut apparaître qu'une seule fois dans chaque ligne, colonne et région. Un Sudoku commence avec quelques cellules contenant des nombres ( indices ) et le but est de résoudre les cellules restantes. Les bons Sudokus ont une solution.[réf. nécessaire] Les joueurs et les enquêteurs utilisent un large éventail d'algorithmes informatiques pour résoudre les Sudokus, étudier leurs propriétés et créer de nouveaux puzzles, y compris des Sudokus avec des symétries intéressantes et d'autres propriétés.

Il existe plusieurs algorithmes informatiques qui résoudront des puzzles 9 × 9 ( n = 9) en une fractions de seconde, mais une explosion combinatoire se produit lorsque n augmente, créant des limites aux propriétés du Sudokus qui peuvent être construites, analysées et résolues lorsque n augmente.

Techniques[modifier | modifier le code]

Retour sur trace ( Backtracking )[modifier | modifier le code]

Un Sudoku (en haut) en cours de résolution par retour sur trace. Chaque cellule est testée pour un nombre valide, reculant en cas de violation et avançant à nouveau jusqu'à ce que l'énigme soit résolue.
Un Sudoku conçu pour fonctionner contre l'algorithme de force brute. [1]

Certains amateurs ont développé des programmes informatiques qui résoudront les puzzles de Sudoku à l'aide d'un algorithme de retour sur trace, qui est un type de recherche par force brute. [2] Le retour sur trace est une recherche en profondeur (contrairement à une recherche en largeur ), car il explorera complètement une branche vers une solution possible avant de passer à une autre branche. Bien qu'il ait été établi qu'il existe environ 5,96 x 11 26 grilles finales, un algorithme de force brute peut être une méthode pratique pour résoudre les puzzles de Sudoku.

Un algorithme de force brute visite les cellules vides dans un certain ordre, en remplissant les chiffres de manière séquentielle ou en revenant en arrière lorsque le numéro s'avère non valide. [3] [4] [5] [6] En bref, un programme résoudrait une énigme en plaçant le chiffre « 1 » dans la première cellule et en vérifiant s’il est autorisé à s’y trouver. S'il n'y a aucune violation (vérification des contraintes de ligne, de colonne et de région), l'algorithme passe à la cellule suivante et place un « 1 » dans cette cellule. Lors de la vérification des violations, s'il s'avère que le "1" n'est pas autorisé, la valeur passe à "2". Si une cellule est découverte dans laquelle aucun des 9 chiffres n'est autorisé, l'algorithme laisse cette cellule vide et revient à la cellule précédente. La valeur de cette cellule est ensuite incrémentée de un. Ceci est répété jusqu'à ce que la valeur autorisée dans la dernière (81e) cellule soit découverte.

L'animation montre comment un Sudoku est résolu avec cette méthode. Les indices du puzzle (chiffres rouges) restent fixes tandis que l'algorithme teste chaque cellule non résolue avec une solution possible. Notez que l'algorithme peut ignorer toutes les valeurs testées précédemment s'il constate que l'ensemble existant ne remplit pas les contraintes du Sudoku.

Les avantages de cette méthode sont :

  • Une solution est garantie (tant que le puzzle est valide).
  • Le temps de résolution n'est généralement pas lié au degré de difficulté.[Information douteuse]
  • L'algorithme (et donc le code du programme) est plus simple que les autres algorithmes, notamment par rapport aux algorithmes puissants qui garantissent une solution aux énigmes les plus difficiles.

L’inconvénient de cette méthode est que le temps de résolution peut être lent par rapport aux algorithmes modélisés d’après les méthodes déductives. Un programmeur a rapporté qu'un tel algorithme peut généralement nécessiter aussi peu que 15 000 cycles, voire jusqu'à 900 000 cycles pour résoudre un Sudoku, chaque cycle étant le changement de position d'un « pointeur » lorsqu'il se déplace dans les cellules d'un Sudoku. [7] [8]

Une approche différente, qui utilise également le retour sur trace, s'appuie sur le fait que dans la solution d'un sudoku standard, la distribution de chaque symbole individuel (valeur) doit être seulement l'un des 46 656 modèles. Dans la résolution manuelle du sudoku, cette technique est appelée superposition de motifs ou utilisation de modèles et se limite à remplir uniquement les dernières valeurs. Une bibliothèque avec tous les modèles possibles peut être chargée ou créée au démarrage du programme. Ensuite, chaque symbole donné se voit attribuer un ensemble filtré avec ces modèles, qui sont conformes aux indices donnés. Dans la dernière étape, la partie de retour sur trace proprement dite, les modèles de ces ensembles sont tentés d'être combinés ou superposés de manière non conflictuelle jusqu'à ce que la seule combinaison autorisée soit trouvée. L'implémentation est exceptionnellement simple lors de l'utilisation de vecteurs de bits, car pour tous les tests, seules des opérations logiques au niveau du bit sont nécessaires, au lieu d'itérations imbriquées sur les lignes et les colonnes. Une optimisation significative peut être obtenue en réduisant encore davantage les ensembles de modèles pendant le filtrage. En testant chaque modèle douteux par rapport à tous les ensembles réduits déjà acceptés pour les autres symboles, le nombre total de modèles restant à revenir en arrière est considérablement réduit.

Et comme pour toutes les techniques de force brute du sudoku, le temps d'exécution peut être considérablement réduit en appliquant d'abord certaines des pratiques de résolution les plus simples qui peuvent remplir certaines valeurs « faciles ».

Un Sudoku peut être construit pour lutter contre le retour sur trace. En supposant que le solveur fonctionne de haut en bas (comme dans l'animation), un puzzle avec peu d'indices (17), aucun indice dans la rangée du haut et une solution "987654321" pour la première rangée fonctionnerait à l'opposé de l'algorithme. Ainsi, le programme passerait beaucoup de temps à « compter » vers le haut avant d’arriver à la grille qui répond au puzzle. Dans un cas, un programmeur a découvert qu'un programme en force brute nécessitait six heures pour parvenir à la solution d'un tel Sudoku (bien qu'en utilisant un ordinateur datant de 2008). Un tel Sudoku peut aujourd’hui être résolu en moins d’une seconde grâce à une routine de recherche exhaustive et à des processeurs plus rapides.[réf. nécessaire]

Paragraphe pour le publication ne pas prêter attention :

Il était une fois une petite fille de village, la plus jolie qu'on eût su voir ; sa mère en était folle, et sa mère-grand plus folle encore. Cette bonne femme lui fit faire un petit chaperon rouge, qui lui seyait si bien que partout on l'appelait le petit Chaperon rouge.

Un jour sa mère, ayant cuit et fait des galettes, lui dit : « Va voir comme se porte ta mère-grand, car on m'a dit qu'elle était malade, porte-lui une galette et ce petit pot de beurre. » Le petit Chaperon rouge partit aussitôt pour aller chez sa mère-grand, qui demeurait dans un autre village. En passant dans un bois elle rencontra compère le loup, qui eut bien envie de la manger ; mais il n'osa, à cause de quelques bûcherons qui étaient dans la forêt. Il lui demanda où elle allait ; la pauvre enfant, qui ne savait pas qu'il est dangereux de s'arrêter à écouter un loup, lui dit : « Je vais voir ma mère-grand, et lui porter une

Voir également[modifier | modifier le code]

Notes et références[modifier | modifier le code]

  1. "Star Burst - Polar Graph" Un graphe polaire montrant un chemin de solution pour un Sudoku (Star Burst) en utilisant une routine de recherche exhaustive et des commentaires sur le Sudoku à 17 indices
  2. http://intelligence.worldofcomputing/brute-force-search Brute Force Search, 14 décembre 2009.
  3. (en) « Backtracking - Set 7 (Sudoku) » [archive du ], GeeksforGeeks (consulté le )
  4. (en) Norvig, « Solving Every Sudoku Puzzle », Peter Norvig (personal website) (consulté le )
  5. "Chart of Cells Visited for Solution" Un graphique montrant un chemin de solution à un Sudoku difficile.
  6. Lecture 11 | Programming Abstractions (Stanford), Zelenski, Julie () Stanford Computer Science Department.
  7. "Star Burst Leo - Polar Graph" Un graphe polaire montrant un chemin de solution pour un Sudoku (Star Burst Leo) en utilisant une routine de recherche exhaustive.
  8. "Chart of Cells Visited for Solution" Un tableau montrant un chemin de solution pour un Sudoku difficile en utilisant une routine de recherche exhaustive.

Liens externes[modifier | modifier le code]

[[Catégorie:Algorithme de recherche]] [[Catégorie:Jeu de stratégie combinatoire abstrait]] [[Catégorie:Sudoku]] [[Catégorie:Pages avec des traductions non relues]]