IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Algorithmes et structures de données Discussion :

Sudoku backtracking sans pile système


Sujet :

Algorithmes et structures de données

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2012
    Messages : 6
    Points : 5
    Points
    5
    Par défaut Sudoku backtracking sans pile système
    Bonsoir à tous,

    Alors voilà je tente de résoudre un sudoku via la méthode de backtracking en C mais sans la pile système, c'est à dire que c'est moi même qui gère une pile.
    Autrement dis, pas d'appels récursifs.

    Seulement je ne comprends pas vraiment quand je devrai empiler et dépiler

    Pourrez vous m'aider ??

    Merci

  2. #2
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 084
    Points
    16 084
    Par défaut
    Seulement je ne comprends pas vraiment quand je devrai empiler et dépiler
    Tu empiles une valeur dans la pile lorsqu'elle est une solution possible à la case actuelle, et tu passes à la case suivante. Si tu ne trouve pas de solution pour une case, tu dépiles la valeur précédente et tu en testes une autre.

    un petit lien pour aider.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2012
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Merci de votre réponse.
    Alors ok j'ai compris quand dépiler et empiler maintenant.
    Par contre lorsque vous me dites de dépiler et d'en tester une autre, je ne comprend pas très bien quoi en faire.
    Je fais rien de la valeur dépilée?
    Et ma case qui était alors mauvaise précédemment, j'en fais quoi ?

    Merci encore de votre réponse.

  4. #4
    Membre émérite
    Avatar de Franck Dernoncourt
    Homme Profil pro
    PhD student in AI @ MIT
    Inscrit en
    Avril 2010
    Messages
    894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PhD student in AI @ MIT
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2010
    Messages : 894
    Points : 2 464
    Points
    2 464
    Par défaut
    As-tu déjà implémenté un algorithme de résolution par backtracking ?

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2012
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Non c'est la première fois que je m'y attaque ^^

    Mon soucis est lorsque je n'ai aucune valeur possible pour une case, je dois donc comme on dit "revenir en arrière" et c'est là que ça coince, je n'arrive pas a cerner le problème.

    Lorsque je me rend compte que je n'ai aucune valeur possible ca veut dire que précédemment une case n'est pas "bonne" et là je vois pas comment revenir sur mes pas.

    Merci de vos réponse.

  6. #6
    Membre émérite
    Avatar de Franck Dernoncourt
    Homme Profil pro
    PhD student in AI @ MIT
    Inscrit en
    Avril 2010
    Messages
    894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PhD student in AI @ MIT
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2010
    Messages : 894
    Points : 2 464
    Points
    2 464
    Par défaut
    Citation Envoyé par getabrainplz Voir le message
    Non c'est la première fois que je m'y attaque ^^
    Il vaudrait mieux que d'abord tu t'entraînes en utilisant la récursion classique, comme le montre le code de pseudocode.

    Citation Envoyé par getabrainplz Voir le message
    Mon soucis est lorsque je n'ai aucune valeur possible pour une case, je dois donc comme on dit "revenir en arrière" et c'est là que ça coince, je n'arrive pas a cerner le problème.

    Lorsque je me rend compte que je n'ai aucune valeur possible ca veut dire que précédemment une case n'est pas "bonne" et là je vois pas comment revenir sur mes pas.
    pop!

  7. #7
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 084
    Points
    16 084
    Par défaut
    Citation Envoyé par getabrainplz Voir le message
    Par contre lorsque vous me dites de dépiler et d'en tester une autre, je ne comprend pas très bien quoi en faire.
    Je fais rien de la valeur dépilée?
    Et ma case qui était alors mauvaise précédemment, j'en fais quoi ?
    La valeur que tu as dépilée était par définition la valeur que tu croyais bonne, mais elle t'a menée à une impasse. Tu dois donc la remplacer par une autre valeur possible. Pour un Sudoku, le plus naturel c'est de tester les valeurs dans l'ordre : 1, 2, 3...

    Par exemple:
    - tu as déjà 4 cases dans ta pile : [1],[5],[2],[6]
    - Tu cherches la 5ème case: tu testes 1, 2, 3, ... jusqu'a 9
    - Aucune valeur n'est possible pour cette 5ème case: tu es donc dans une impasse => backtracking
    - Tu dépiles la 4ème case : [6]. Ta pile contient maintenant [1],[5],[2]
    - Tu cherches une autre valeur pour cette 4ème case. Comme tu étais a 6, tu testes 7. Ca ne marche pas. Tu testes 8...
    - "8" est possible. Tu empiles 8 dans la pile : [1],[5],[2],[8]
    - Tu cherches une valeur pour la 5ème case: tu testes 1, 2, 3, ...
    etc.

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2012
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Merci pour vos réponse, je test ça tout de suite

Discussions similaires

  1. Sudoku backtracking sans pile système
    Par getabrainplz dans le forum C
    Réponses: 1
    Dernier message: 15/03/2012, 00h40
  2. Utiliser Fastboot sans appels systèmes
    Par Bouben dans le forum Android
    Réponses: 0
    Dernier message: 20/06/2011, 13h31
  3. sudoku backtracking langage C
    Par souzen dans le forum Débuter
    Réponses: 5
    Dernier message: 28/03/2009, 04h54
  4. sudoku backtracking (langage C)
    Par souzen dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 04/01/2009, 13h20
  5. Comment les BIOS sans piles retenaient les paramètres
    Par beegees dans le forum Composants
    Réponses: 27
    Dernier message: 20/03/2007, 21h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo