logo

Algorithme de retour en arrière

Algorithmes de retour en arrière sont comme des stratégies de résolution de problèmes qui aident à explorer différentes options pour trouver la meilleure solution. Ils travaillent en essayant différentes voies et si l’une ne fonctionne pas, ils reviennent en arrière et en essaient une autre jusqu’à ce qu’ils trouvent la bonne. C’est comme résoudre un puzzle en testant différentes pièces jusqu’à ce qu’elles s’emboîtent parfaitement.

Retour en arrière

Table des matières



Qu’est-ce que l’algorithme de retour en arrière ?

Retour en arrière est une technique algorithmique de résolution de problèmes qui consiste à trouver une solution progressivement en essayant différentes options et perte eux s'ils conduisent à un impasse .

Il est couramment utilisé dans les situations où vous devez explorer plusieurs possibilités pour résoudre un problème, comme rechercher un chemin dans un labyrinthe ou résoudre des énigmes comme Sudoku . Lorsqu’une impasse est atteinte, l’algorithme revient au point de décision précédent et explore un chemin différent jusqu’à ce qu’une solution soit trouvée ou que toutes les possibilités soient épuisées.

Comment fonctionne un algorithme de backtracking ?

UN algorithme de retour en arrière fonctionne en explorant de manière récursive toutes les solutions possibles à un problème. Il commence par choisir une solution initiale, puis explore toutes les extensions possibles de cette solution. Si une extension mène à une solution, l'algorithme renvoie cette solution. Si une extension ne conduit pas à une solution, l’algorithme revient à la solution précédente et essaie une extension différente.

Voici un aperçu général du fonctionnement d’un algorithme de backtracking :

  1. Choisissez une première solution.
  2. Explorez toutes les extensions possibles de la solution actuelle.
  3. Si une extension mène à une solution, renvoyez cette solution.
  4. Si une extension ne mène pas à une solution, revenez à la solution précédente et essayez une autre extension.
  5. Répétez les étapes 2 à 4 jusqu'à ce que toutes les solutions possibles aient été explorées.

Exemple d'algorithme de retour en arrière

Exemple: Trouver le chemin le plus court dans un labyrinthe

Saisir: Un labyrinthe représenté comme un tableau 2D, où 0 représente un espace ouvert et 1 représente un mur.

Algorithme:

  1. Commencez au point de départ.
  2. Pour chacune des quatre directions possibles (haut, bas, gauche, droite), essayez de vous déplacer dans cette direction.
  3. Si le déplacement dans cette direction mène au point final, revenez sur le chemin emprunté.
  4. Si le déplacement dans cette direction ne mène pas au point final, revenez à la position précédente et essayez une direction différente.
  5. Répétez les étapes 2 à 4 jusqu'à ce que le point final soit atteint ou que tous les chemins possibles aient été explorés.

Quand utiliser un algorithme de backtracking ?

Les algorithmes de backtracking sont mieux utilisés pour résoudre des problèmes présentant les caractéristiques suivantes :

  • Il existe plusieurs solutions possibles au problème.
  • Le problème peut être décomposé en sous-problèmes plus petits.
  • Les sous-problèmes peuvent être résolus indépendamment.

Applications de l'algorithme de retour en arrière

Les algorithmes de backtracking sont utilisés dans une grande variété d’applications, notamment :

  • Résoudre des énigmes (par exemple, Sudoku, mots croisés)
  • Trouver le chemin le plus court dans un labyrinthe
  • Problèmes de planification
  • Problèmes d'allocation des ressources
  • Problèmes d'optimisation du réseau

Base de l'algorithme de retour en arrière :

  • Différence entre la technique Backtracking et Branch-N-Bound
  • Quelle est la différence entre le retour en arrière et la récursion ?

Problèmes standard sur l'algorithme de retour en arrière :

  • Le problème de la tournée du chevalier
  • Rat dans un labyrinthe
  • N Queen Problème | Retour en arrière-3
  • Problème de somme de sous-ensemble
  • m Problème de coloration
  • Cycle hamiltonien
  • Sudoku | Retour en arrière-7
  • Puzzle magnétique
  • Supprimer les parenthèses invalides
  • Une approche de backtracking pour générer des codes gris à n bits
  • Écrire un programme pour imprimer toutes les permutations d'une chaîne donnée

Problèmes faciles sur l'algorithme de retour en arrière :

  • Retour en arrière pour trouver tous les sous-ensembles
  • Vérifier si une chaîne donnée est une chaîne de somme
  • Compter tous les chemins possibles entre deux sommets
  • Trouver tous les sous-ensembles distincts d'un ensemble donné
  • Rechercher s'il existe un chemin de plus de k longueur à partir d'une source
  • Imprimer tous les chemins d'une source donnée vers une destination
  • Imprimez toutes les chaînes possibles qui peuvent être créées en plaçant des espaces

Problèmes moyens sur l'algorithme de retour en arrière :

  • Tir à la corde
  • Problème de 8 reines
  • Somme combinatoire
  • Algorithme de Warnsdorff pour le problème de la tournée de Knight
  • Trouvez les chemins de la cellule de coin à la cellule du milieu dans le labyrinthe
  • Trouver le nombre maximum possible en effectuant au plus K swaps
  • Rat dans un labyrinthe avec plusieurs étapes ou sauts autorisés
  • N Reine dans l'espace O(n)

Problèmes difficiles sur l'algorithme de retour en arrière :

  • Ensemble de puissance dans l'ordre lexicographique
  • Problème de saut de mot utilisant le retour en arrière
  • Partition d'un ensemble en K sous-ensembles de somme égale
  • Itinéraire le plus long possible dans une matrice avec haies
  • Trouver l'itinéraire sûr le plus court sur un chemin avec des mines terrestres
  • Imprimer toutes les partitions palindromiques d'une chaîne
  • Impression de toutes les solutions dans le problème N-Queen
  • Imprimer toutes les sous-séquences communes les plus longues dans l'ordre lexicographique

Liens rapides :

  • Apprendre la structure des données et les algorithmes | Tutoriel DSA
  • Top 20 des questions d'entretien sur l'algorithme de retour en arrière
  • « Vidéos » sur le retour en arrière