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 :

Resolution simple d'un puzzle 3*3


Sujet :

Algorithmes et structures de données

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 31
    Par défaut Resolution simple d'un puzzle 3*3
    Bonjour,
    Je suis debutante en C et je dois realiser un puzzle en utilisant un tableau 3*3.
    Pour cele l'algorithme est le suivant:
    Un puzzle 3x3 se présente comme suit:

    abc
    def
    gh

    Une case est toujours vide afin de pouvoir y déplacer, au choix, l'une des
    cases adjacentes dont elle prend la place. Ainsi, les deux opérations
    réalisables sur l'exemple ci-dessus sont:

    abc
    de
    ghf

    abc
    def
    g h

    L'objectif de la résolution du puzzle est de passer d'un état initial connu à
    un état final choisi.

    abc ? abc
    def ---> d e
    gh fgh

    Pour ce faire, on évalue à chaque étape "l'erreur" vis-à-vis de l'état final en
    sommant, sur chaque case, la distance par rapport à sa position dans l'état
    final. La distance entre deux cases se calcule en additionnant le nombre de
    colonnes et de lignes qui les séparent. Dans l'exemple ci-dessus, on a :

    erreur(e) = 1
    erreur(f) = 3
    erreur(g) = 1
    erreur(h) = 1
    -------------
    erreur 6

    Donc, pour résoudre le puzzle, il suffit de choisir, à chaque étape, le
    déplacement parmi les 2, 3 ou 4 possibles (selon la position de la case vide)
    qui minimise cette erreur. Bien sûr, lorsque l'erreur est nulle, la solution
    est atteinte.

    La solution n'est pas toujours trouvable par cette méthode (c'est le cas de
    l'exemple ci-dessus). Pour éviter une boucle infinie, il faut fixer un nombre
    maximum d'itérations de l'algorithme.

    Interface:

    Le programme doit pouvoir s'appeller en ligne de commande, avec comme arguments
    le puzzle de départ et le puzzle d'arrivée, mis sous forme d'une chaîne de 9
    caractères entre guillemets (en concaténant les lignes de la matrice).

    Le programme affiche les déplacements réalisés sous la forme d'une suite de
    symboles représentant le parcours de la case vide. Par exemple "hbgd" pour
    "haut-bas-gauche-droite", ou encore "^v<>".

    Exemple:
    $ MC []MON_PROGRAMME.EXE " 23185746" "1238 4765"

    Solution: v>v>^<
    Le truc c'est que je ne comprends pas vrt comment on calcule l'erreur et par ou commencer...Pourriez vous m'aider svp en ces temps difficiles d'examens..?
    Merci d'avance!

  2. #2
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Par défaut
    Bonjour,

    pour ce qui est de l'erreur, il faut bien lire l'énoncé, c'est expliqué dedans :
    - Pour une pièce P du puzzle, elle génère une erreur E qui se calcule comme suit expliqué dans l'énoncé.
    - On additionne le nombre de ligne et de colonnes entre la position actuelle de la pièce P et sa position juste (celle dans la solution du puzzle).
    Consignes aux jeunes padawans : une image vaut 1000 mots !
    - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
    - Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
    - ton poste tu dois marquer quand la bonne réponse tu as obtenu.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 31
    Par défaut
    ok j'ai compris comment n calcule cette erreur.. Mais une fois que j'ai calcule cette errueur, comment je fais pour resoudre ce puzzle? Comment choisir l'ordre des pieces que je dois bouger et faut iln que je prenne un matrice supplementaire temporaire ou je stockerai au fur t a mesure mon puzzle que je modifie a chaque calcule d'erreur?

  4. #4
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Par défaut
    Bonjour,

    la encore, il suffit de lire l'énoncé, la solution est dedans :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Donc, pour résoudre le puzzle, il suffit de choisir, à chaque étape, le
    déplacement parmi les 2, 3 ou 4 possibles (selon la position de la case vide)
    qui minimise cette erreur. Bien sûr, lorsque l'erreur est nulle, la solution
    est atteinte.
    Donc à chaque itération, tu peux calculer l'erreur de chaque pièce et tu déplaces celle qui se trouve contre la case vide et qui possède la plus petite erreur.
    Consignes aux jeunes padawans : une image vaut 1000 mots !
    - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
    - Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
    - ton poste tu dois marquer quand la bonne réponse tu as obtenu.

Discussions similaires

  1. [EDP]Cherche code simple pour maillages, resolution EDP, etc
    Par hollowdeadoss dans le forum MATLAB
    Réponses: 1
    Dernier message: 14/03/2008, 10h57
  2. Bon je vais essayer d'être simple :
    Par fpouget dans le forum Langage SQL
    Réponses: 8
    Dernier message: 09/04/2003, 17h46
  3. Edition d'un simple fichier java
    Par mcrepin dans le forum Eclipse Java
    Réponses: 5
    Dernier message: 21/03/2003, 14h28
  4. [Kylix] Resolution e Kylix
    Par ulisse dans le forum EDI
    Réponses: 1
    Dernier message: 02/03/2003, 15h57
  5. recherche exemple simple pour corba en c++
    Par Pinggui dans le forum CORBA
    Réponses: 4
    Dernier message: 06/05/2002, 11h29

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