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 :

Algorithme de simplification des termes d'une équation


Sujet :

Algorithmes et structures de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné Avatar de Shivaneth
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    349
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 349
    Par défaut Algorithme de simplification des termes d'une équation
    Bonjour à tous et bonne année :p

    Alors voilà, j'aimerai savoir si vous avez une idée du type d'algorithme qui tourne en arrière plan de ce programme : http://www.mathepower.com/english/terme.php parce que c'est exactement ce que je cherche à faire pour un de mes programmes mais niveau algo ça bloque.

    Merci d'avance

    Shiv@

  2. #2
    Expert confirmé
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Par défaut
    En fait, généralement ce qui est fait, c'est une transformation d'arbre.

    A partir d'une expression, tu construis un arbre de syntaxe abstraite. Les modifications de l'arbre te permettent de modifier l'expression (factorisation, développement, réduction, ...).

    Il y a plusieurs moyens pour construire l'arbre (on en parle dans cette discussion actuellement : http://www.developpez.net/forums/sho...d.php?t=465459 et il y en a d'autres)

    Ensuite pour ce qui est des algorithmes, c'est relativement simple. Tu te fixes des règles et tu les appliques sur l'arbre, c'est un processus purement récursif.

    Un exemple d'arbre : 3 + 5 * 4

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
        +
       / \
      3   *
         / \
        5   4
    Tu peux appliquer une règle de réduction du style suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Si noeud courant = opérateur alors
         Si fils gauche = constante numérique et
              fils droit = constante numerique alors 
              reduire 
              Noeud courrant = fils gauche Noeud.opération fils droit. 
         Fin si
    Fin si
    Il faut appliquer ceci sur un parcours suffixe ( fils gauche, fils droit, noeud courant)

    Ainsi ça donne :

    Application sur le noeud courant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
        +
       / \
      3   *
         / \
        5   4
    Il faut donc l'appliquer sur le fils gauche, le fils gauche est une constante numérique, on ne fait rien. On parcours donc le fils droit :

    Ici tu appliques la règle et le noeud devient donc une constante numérique (égale à 20).

    L'arbre principal est donc :

    Dernière étape du parcours suffixe : appliquer la règle sur le noeud courant.

    Le résultat est donc 23.

    Voilà pour le principe, une fois l'arbre construit, c'est relativement amusant à faire.

  3. #3
    Membre chevronné Avatar de Shivaneth
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    349
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 349
    Par défaut
    Comme tu dis, une fois l'arbre construit ...

    merci de ta réponse, je vais creuser de ce côté mais le problème c'est que je n'ai pas beaucoup de temps.

  4. #4
    Expert confirmé
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Par défaut
    Si ce qui t'intéresse c'est manipuler l'arbre et pas le construire, comme je l'ai dis dans précédentes discussions, utilises flex/bison pour construire ton arbre.

  5. #5
    Membre chevronné Avatar de Shivaneth
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    349
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 349
    Par défaut
    Le problème c'est que tout ce traitement doit se faire à l'intérieur d'un programme en C et que je ne pense pass qu'ajouter un autre traitement grâce à lex et yacc serait bon pour mon projet.

  6. #6
    Expert confirmé
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Par défaut
    flex et bisons te fournissent des analyseurs léxicaux et syntaxiques sous forme de fonctions C.

Discussions similaires

  1. Algorithme de selection des points dans une grille
    Par Senadin dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 18/12/2013, 18h16
  2. Réponses: 1
    Dernier message: 25/10/2012, 12h30
  3. détermination des paramètres d'une équation
    Par eya.eniso dans le forum MATLAB
    Réponses: 5
    Dernier message: 27/04/2011, 16h52
  4. Réponses: 8
    Dernier message: 23/04/2009, 10h13
  5. importance de l'ordre des termes d'une addition
    Par naz dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 25/08/2006, 15h47

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