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 :

Le problème inverse de l'analyseur syntaxique


Sujet :

Algorithmes et structures de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif Avatar de CompuTux
    Homme Profil pro
    Développeur Python et Django
    Inscrit en
    Juillet 2004
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur Python et Django
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2004
    Messages : 82
    Par défaut Le problème inverse de l'analyseur syntaxique
    Bonjour,

    J'aimerais programmer le problème inverse de l'analyseur syntaxique :

    Il s'agit pour moi d'étudier le problème suivant :

    On s’autorise les opérations arithmétiques usuelles {+,-,*,/} et l'objectif est de construire le maximum de nombre entiers positifs à l'aide de ces opérations et de n fois le nombre n.

    Par exemple :

    Si n=1 : on a 1 = 1 donc une seule formule, l'identité.

    Si n=2 : on a 4 formules : 0=2-2, 1=2/2, 4=2+2=2*2

    Si n= 3 : on a 16 formules "linéaires" obtenues en créant un arbre binaire...

    Bref si n=k : on a 4^(k-1) formules "linéaires"...


    J'aimerais pouvoir automatiser l'écriture de ces formules, les évaluer, et les trier.

    Je suis pas très doué en algorithmique, si quelqu'un pouvait m'aider, je lui en serais très reconnaissant.

    Merci d'avance!

  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 : 52
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    La méthode la plus simple c'est d'imbriquer des boucles pour parcourir toutes les configurations possibles:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    TABLEAU operations[] = { add(), sub(), mul(), div() }
     
    ' cas N=2
    POUR CHAQUE f1 DANS operations
      valeur = f1(2,2)
    FIN POUR
     
    ' cas N=3
    POUR CHAQUE f1 DANS operations
      POUR CHAQUE f2 DANS operations
        valeur = f1(3, f2(3,3) )
      FIN POUR
    FIN POUR
     
    ' cas N=4
    POUR CHAQUE f1 DANS operations
      POUR CHAQUE f2 DANS operations
        POUR CHAQUE f3 DANS operations
          valeur = f1(4, f2(4, f3(4,4) ) )
        FIN POUR
      FIN POUR
    FIN POUR
    Le problème de cette approche c'est qu'il faut écrire un code spécifique pour chaque valeur de N.

    Pour avoir une solution générique, on peut utiliser des appels récursifs. On peut aussi utiliser un itérateur.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

Discussions similaires

  1. Analyseur Syntaxique Expression Booléenne
    Par Invité dans le forum Langage
    Réponses: 8
    Dernier message: 01/10/2006, 10h57
  2. Analyseur syntaxique HTML
    Par roudoudouduo dans le forum Outils
    Réponses: 5
    Dernier message: 03/07/2006, 16h52
  3. analyseur syntaxique
    Par tomy29 dans le forum Langage
    Réponses: 11
    Dernier message: 11/01/2006, 12h45
  4. problème inversion d'affichage....???
    Par AlSvartr dans le forum Langage
    Réponses: 8
    Dernier message: 10/01/2006, 11h40
  5. [Conception] Analyseur Syntaxique
    Par guu dans le forum Général Java
    Réponses: 7
    Dernier message: 03/01/2006, 12h28

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