Rechercher des chemins dans une grille
Fermé
Yugo
-
19 juin 2013 à 11:29
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 19 juin 2013 à 12:02
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 19 juin 2013 à 12:02
A voir également:
- Rechercher des chemins dans une grille
- Rechercher ou entrer l'adresse - Guide
- Rechercher une adresse - Guide
- Rechercher une chanson - Guide
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Rechercher et remplacer word - Guide
1 réponse
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
19 juin 2013 à 12:02
19 juin 2013 à 12:02
Salut.
Pas simple comme problème.
Je suppose qu'il y a une condition supplémentaire qui est de ne pas repasser plusieurs fois par une même case, sinon le nombre de solution est infini.
On peut déjà remarqué que pour atteindre ta case finale, il faut avoir L mouvements vers le haut et l vers la droite (en cumulé). Tu as L*l cases, soit au max l*L mouvements maximum. Un mouvement peut être codé par un couple d'entier (v,h) compris entre -1 et 1 (soit 3 valeurs). Par contre, tout les couples ne sont pas valables, tu peux sortir de la grille ou repasser par un endroit déjà fait. Tu peux aussi faire un cul de sac qui ne mène nulle par.
Pour moi l'algorithme est le suivant, pour chaque case tu as 4 directions différentes. Au moins l'une d'elle est mauvaise (celle d'où tu viens).
Il faut donc contruire un arbre à chaque nouvelle case exploré, ou plutôt le dupliquer. Le plus chiant est alors la gestion des variables.
Pas simple comme problème.
Je suppose qu'il y a une condition supplémentaire qui est de ne pas repasser plusieurs fois par une même case, sinon le nombre de solution est infini.
On peut déjà remarqué que pour atteindre ta case finale, il faut avoir L mouvements vers le haut et l vers la droite (en cumulé). Tu as L*l cases, soit au max l*L mouvements maximum. Un mouvement peut être codé par un couple d'entier (v,h) compris entre -1 et 1 (soit 3 valeurs). Par contre, tout les couples ne sont pas valables, tu peux sortir de la grille ou repasser par un endroit déjà fait. Tu peux aussi faire un cul de sac qui ne mène nulle par.
Pour moi l'algorithme est le suivant, pour chaque case tu as 4 directions différentes. Au moins l'une d'elle est mauvaise (celle d'où tu viens).
Il faut donc contruire un arbre à chaque nouvelle case exploré, ou plutôt le dupliquer. Le plus chiant est alors la gestion des variables.