Vous êtes sur la page 1sur 7

UNIVERSITE HASSAN II DE CASABLANCA

ECOLE NORMALE SUPERIEURE DE


L’ENSEIGNEMENT TECHNIQUE DE
MOHAMMEDIA

Filière : Génie Electrique & Contrôles des Systèmes industriels


GECSI_II

Le jeu de taquin 3X3

Réalisé par : Encadré par :


Mme.Ait Ichou Mariam Abderrazzak Ammar
M.Sabari Mbarek

Département génie électrique Année universitaire : 2022-2023


Introduction
Le taquin 3x3, également connu sous le nom de puzzle de 8, est un puzzle
classique qui consiste en une grille de 3x3 cases, chacune contenant un numéro
de 1 à 8, ainsi qu'une case vide. Le but du jeu est de déplacer les numéros autour
de la grille en utilisant la case vide comme espace de travail, jusqu'à ce que les
numéros soient arrangés dans l'ordre numérique correct.

L'intelligence artificielle peut être utilisée pour résoudre des problèmes de taquin
3x3 en utilisant des algorithmes de recherche, tels que l'algorithme A* ou
l'algorithme de recherche en profondeur d'abord. Ces algorithmes utilisent des
techniques de recherche heuristiques pour explorer efficacement l'espace des
solutions possibles, afin de trouver la solution la plus rapide et la plus efficace.

Les algorithmes de recherche peuvent être utilisés pour résoudre le taquin 3x3
dans un certain nombre de situations, telles que lorsque la grille est dans un état
initial aléatoire ou lorsqu'elle est arrangée de manière à être difficile à résoudre.
Cependant, ces algorithmes peuvent ne pas être efficaces pour résoudre des
configurations de taquin plus complexes ou pour des grilles de taille plus grande.

Dans l'ensemble, le taquin 3x3 est un bon exemple de la façon dont l'intelligence
artificielle peut être utilisée pour résoudre des problèmes de logique et de
résolution de problèmes.

1|Page
Travail demandé
Préparer une application pour la résolution du jeu taquin 3x3 basé sur les
algorithmes de recherche non informé (en largeur BFS, en profondeur DFS, ...)

Programme
from queue import Queue

class Node:
def init (self, state, parent, action):
self.state = state
self.parent = parent
self.action = action

def repr (self):


return f"{self.state}"

def bfs(initial_state, goal_state):


frontier = Queue()
explored = set()
actions = ['UP', 'DOWN', 'LEFT', 'RIGHT']
initial_node = Node(initial_state, None, None)
frontier.put(initial_node)

while not frontier.empty():


node = frontier.get()
explored.add(node.state)

if node.state == goal_state:
# on remonte l'arbre de recherche pour obtenir le chemin
parcouru
path = []
while node.parent is not None:
path.append(node.action)
node = node.parent
path.reverse()
return path

for action in actions:


child_state = get_child(node.state, action)

2|Page
if child_state is not None and child_state not in explored:
child_node = Node(child_state, node, action)
frontier.put(child_node)

return None # si on n'a pas trouvé de solution, on renvoie None

def get_child(state, action):


state = list(state)
index = state.index(0)

if action == 'UP':
if index not in [0, 1, 2]:
state[index], state[index-3] = state[index-3], state[index]
return tuple(state)
else:
return None

if action == 'DOWN':
if index not in [6, 7, 8]:
state[index], state[index+3] = state[index+3], state[index]
return tuple(state)
else:
return None

if action == 'LEFT':
if index not in [0, 3, 6]:
state[index], state[index-1] = state[index-1], state[index]
return tuple(state)
else:
return None

if action == 'RIGHT':
if index not in [2, 5, 8]:
state[index], state[index+1] = state[index+1], state[index]
return tuple(state)
else:
return None

def print_puzzle(state):
for i in range(0, 9, 3):
print(state[i:i+3])

# Entrée du puzzle personnalisé


initial_state = tuple(int(input(f"Entrer la valeur {i+1} : ")) for i in
range(9))
print("Puzzle initial :")
print_puzzle(initial_state)

goal_state = (1, 2, 3, 4, 5, 6, 7, 8, 0)

path = bfs(initial_state, goal_state)

if path is None:
print("Pas de solution trouvée.")
else:
print("Solution trouvée en", len(path), "étapes :")
print(path)
current_state = initial_state

3|Page
print("Puzzle après chaque étape :")
print_puzzle(current_state)
for action in path:
current_state = get_child(current_state, action)
print_puzzle(current_state)

Résultat
Entrer la valeur 1 : 1
Entrer la valeur 2 : 3
Entrer la valeur 3 : 5
Entrer la valeur 4 : 7
Entrer la valeur 5 : 0
Entrer la valeur 6 : 8
Entrer la valeur 7 : 6
Entrer la valeur 8 : 4
Entrer la valeur 9 : 2
taquin initial :
(1, 3, 5)
(7, 0, 8)
(6, 4, 2)
Solution trouvée en 14 étapes :
['DOWN', 'LEFT', 'UP', 'RIGHT', 'RIGHT', 'DOWN',
'LEFT', 'UP', 'RIGHT', 'UP', 'LEFT', 'DOWN',
'RIGHT', 'DOWN']
taquin après chaque étape :
(1, 3, 5)
(7, 0, 8)
(6, 4, 2)
(1, 3, 5)
(7, 4, 8)
(6, 0, 2)
(1, 3, 5)
(7, 4, 8)
(0, 6, 2)
(1, 3, 5)
(0, 4, 8)
(7, 6, 2)
(1, 3, 5)
(4, 0, 8)
(7, 6, 2)
(1, 3, 5)
(4, 8, 0)
(7, 6, 2)
4|Page
(1, 3, 5)
(4, 8, 2)
(7, 6, 0)
(1, 3, 5)
(4, 8, 2)
(7, 0, 6)
(1, 3, 5)
(4, 0, 2)
(7, 8, 6)
(1, 3, 5)
(4, 2, 0)
(7, 8, 6)
(1, 3, 0)
(4, 2, 5)
(7, 8, 6)
(1, 0, 3)
(4, 2, 5)
(7, 8, 6)
(1, 2, 3)
(4, 0, 5)
(7, 8, 6)
(1, 2, 3)
(4, 5, 0)
(7, 8, 6)
(1, 2, 3)
(4, 5, 6)
(7, 8, 0)

5|Page
Conclusion
En conclusion, la résolution de taquin 3x3 à l'aide de l'intelligence artificielle est possible en
utilisant des algorithmes de recherche tels que l'algorithme A* ou l'algorithme de recherche en
profondeur. Ces algorithmes utilisent des heuristiques pour évaluer la distance entre l'état
actuel du taquin et l'état final souhaité, et ils sont capables de trouver la solution optimale en
un temps raisonnable.
Cependant, il convient de noter que la résolution du taquin 3x3 est relativement simple et peut
être résolue efficacement avec des méthodes non-IA telles que l'algorithme de résolution de
taquin de Johnson & Story.
Néanmoins, l'utilisation de l'intelligence artificielle pour résoudre le taquin 3x3 peut être
bénéfique pour résoudre des taquins plus complexes, tels que des taquins de 4x4 ou plus. En
utilisant des techniques d'apprentissage automatique, l'IA peut apprendre à résoudre des taquins
plus complexes en utilisant des modèles de résolution préalablement appris.
En fin de compte, l'utilisation de l'intelligence artificielle pour résoudre des casse-têtes comme
le taquin 3x3 montre le potentiel de l'IA pour résoudre des problèmes complexes et apporter
des solutions efficaces et innovantes à divers problèmes.

6|Page

Vous aimerez peut-être aussi