La recherche exhaustive ou recherche par force brute est une méthode algorithmique qui consiste principalement à essayer toutes les solutions possibles.

L'objectif de cette activité est d'implémenter en Python l'algorithme par force brute afin de trouver la solution à certains problèmes.

 

Recherche d'un code secret ou d'un mot de passe

Aucun algorithme particulier existe pour trouver un code secret que l'on ne connaît pas. La seule solution consiste à tester un par un tous les codes possibles, ce qui correspond à l'algorithme par force brute.

Recherche d'un code secret par force brute
Recherche d'un mot de passe par force brute

 

Tri d'une liste par force brute

Pour trier une listes différents algorithmes performents existent (tri fusion, tri rapide, Timsort, etc.).

Mais on peut aussi utiliser l'algorithme par force brute consistant à comparer toutes les combinaisons possibles de la liste au résultat attendu (liste triée).

Pour obtenir toutes les permutations d'une liste on utilisera la fonction permutations() du module itertools de Python.

Tri d'une liste par force brute

 

Le problème du sac à dos

Les problèmes de type "problème du sac à dos" peuvent se résoudre avec un algorithme glouton. Problèmes alors rencontrés : quel est le meilleur choix à faire à chaque étape ? L'algorithme glouton donne-t-il forcément la solution optimale ?

L'algorithme par force brute lui, s'il est bien implémenté, donnera forcément la solution optimale.

Problème des 7 vidéos à stocker sur une clé USB

 

Résolution d'un carré magique

En mathématiques, un carré magique d'ordre n est composé de n2 entiers strictement positifs, écrits sous la forme d'un tableau carré de dimension nxn . Il faut disposer ces nombres entiers dans les cases de telle sorte que :

Cette somme unique est appelée la constante magique.

Voici un exemple de carré magique d'ordre 3 (dimension 3x3) et de constante magique 15 (chacune des 8 sommes vaut 15) :

Et voici un exemple de carré magique d'ordre 4 (dimension 4x4) et de constante magique 34 :

Mais combien existe-t-il de carrés magiques différents d'ordre 3 ? Et d'ordre 4 ? La recherche par force brute peut apporter une réponse.

Voici des exemples de résolution de carré magique en Python en implémentant une recherche par force brute :

Carré magique d'ordre 3 (avec itertools)
Carré magique d'ordre 3 (sans itertools)
Carré magique d'ordre 3 (sans itertools : version rapide)
Carré magique d'ordre 4 (avec itertools)
Carré magique d'ordre 4 (sans itertools)

Pour plus d'informations sur les carrés magiques cliquez ici

 

Résolution d'un problème logique

Un problème logique (ou problème avec contraintes) possède un énoncé contenant un grand nombre de contraintes à satisfaire simultanément, et peut ête vu comme une expression logique complexe.

Voici des exemples de problèmes logiques :

Exemples de problèmes logiques

 

Et voici quelques exemples de résolution en Python en implémentant une recherche par force brute :

Qui a le lapin ?
Qui a le poisson ?
Qui a le serpent ? (solution 1)
Qui a le serpent ? (solution 2)
Qui a le serpent ? (solution 3)
Les 5 sportifs chez le medecin (version 1 à compléter)
Les 5 sportifs chez le medecin (version 1 complète)
Les 5 sportifs chez le medecin (version 2 à compléter)
Les 5 sportifs chez le medecin (version 2 complète)
Qui a le zèbre ? (version 1 lente : teste 24 milliards de tableaux en 120 heures environ)
Qui a le zèbre ? (version 2 moyenne : teste 200 millions de tableaux en 1 heure environ)
Qui a le zèbre ? (version 3 rapide : teste 7 millions de tableaux en 3 minutes environ)

 

Nouveaux problèmes à résoudre

Voici de nouveaux problèmes logiques à résoudre.

 

Où est le panda ?

Dans une rue, 5 maisons sont alignées. Dans chaque maison habite un animal, qui joue d'un instrument de musique et qui mange un fruit particulier.

Les données du problème sont :

Et voici les 3 problématiques à résoudre :

 

Où est le koala ?

Dans une rue 3 maisons voisines sont de couleurs différentes. Des personnes vivent dans ces maisons et elles ont chacune un animal de compagnie différent.

Les données du problème sont :

La problématique à résoudre est :

 

Où est le pharmacien ?

Les données du problème sont :

Trois commerçants habitent dans 3 maisons situées aux numéros 21, 23 et 25 de la même rue. Le boucher habite dans la maison jaune, qui est à côté de la rouge mais qui n’est pas à côté de la verte. L’épicier, qui n’est pas suisse, habite à côté du Français. L’Italien habite au numéro 21 et sa maison n’est pas jaune.

La problématique à résoudre est :

Quelle est la nationalité du pharmacien, quelle est la couleur de sa maison, et où habite-t-il ?

 

Où est la maison blanche ?

Dans une rue, il y a quatre maisons voisines de 4 couleurs différentes. Dans chaque maison vit une personne de nationalité différente ; chacun des 4 propriétaires a un métier différent.

Les données du problème sont :

La problématique à résoudre est :

 

Où est le kangourou ?

Dans une ruelle, il y a cinq maisons voisines de 5 couleurs différentes, et dans chaque maison vit une personne de nationalité différente. Chacun des 5 propriétaires boit un certain type de boisson, joue d'un certain type d'instrument de musique et garde un certain animal domestique.

Les données du problème sont :

La problématique à résoudre est :

 

Vous en voulez encore ?

Voici de nouveaux problèmes logiques à résoudre. Pour chacun d'entre eux il est vivement conseillé de comparer les solutions obtenues par différentes méthodes :

Ces 3 techniques de résolution mènent-elles systématiquement au même résultat pour chacun des problèmes ci-dessous ?

Problème n°1
Problème n°2
Problème n°3
Problème n°4
Problème n°5
Problème n°6
Problème n°7
Problème n°8
Problème n°9

Avant de tester ces problème avec une intelligence artificielle vous devez posséder la solution exacte (soit après réflexion intellectuelle sur un papier, soit en utilisant Python). La question posée à l'intelligence artificielle n'est pas "Quelle est la solution du problème ?" mais c'est "L'intelligence artificielle arrive-t-elle à résoudre un tel problème ?". De plus, les différentes intelligences artificielles donnent-elles systématiquement les mêmes solutions pour un problème donné ? Chacun se fera une idée.

Voici quelques liens externes pour tester ces problèmes avec une intelligence artificielle :

YIAHO : L'intelligence artificielle gratuite en ligne & française
Le chat : l'intelligence artificielle française
ChatbotGPT.fr gratuit
ChatGPT gratuit
Character AI
Open AI
Copilot : l'intelligence artificielle de Microsoft
ChatGPT en français
ChatGPT
DeepSeek : l'intelligence artificielle chinoise

 

Conclusion

Bien que Python ne soit pas spécialement adapté pour résoudre des problèmes logiques, il y parvient instantanément si on implémente proprement un algorithme par force brute démélant le vrai du faux à partir des données de l'énoncé.

 

 

Réalisé par Jean-Christophe MICHEL

© Décembre 2024