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 :

Transformation d'une chaine en arbre n-aire


Sujet :

Algorithmes et structures de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de nicolas66
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    326
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 326
    Par défaut Transformation d'une chaine en arbre n-aire
    Bonjour,

    Pour les besoins d'un projet, je dois arriver à transformer une chaine structurée en arbre n-iare en langage PHP.

    Voici un exemple :
    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
     
    Chaine -> sujet(gn(pronom nom)) verbe cod(article nom)
    Arbre n-aire résultat :
               racine
               / | \
              /  |  \
             /   |   \
            /    |    \
           /     |     \
        sujet  verbe   cod
          |             |
         gn             gn
         /\             /\
        /  \           /  \
       /    \         /    \
    pronom  nom   article  nom
    Pour la gestion des chaînes de caractères, de l'arbre et des noeuds, j'ai déjà écrit toutes les classes nécessaires. Il me reste à trouver l'algo. J'ai essayé d'y réfléchir mais je vois pas trop comment faire ca, à part peut-être avec une pile. Merci qd même à ceux qui pourront me filer un coup de pouce


    Nico.

  2. #2
    Membre émérite
    Avatar de ol9245
    Homme Profil pro
    Chercheur
    Inscrit en
    Avril 2007
    Messages
    985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Avril 2007
    Messages : 985
    Billets dans le blog
    1
    Par défaut
    quand tu ouvre une parenthèse, tu crée un niveau fils.
    tant qu'il n'y a pas de parenthèse ouvrante ni fermante, tu crée des frères.
    quand tu trouve une parenthèse fermante, tu remonte au père
    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
    r=racine
    pour chaque mot m, faire :
        si mot == "(", 
            créer c = fils de r
            r = c
        sinon, si mot == ")",
            r = père de r
        sinon
            si r contient déja un mot, 
                créer f = frère de r
                r = f
            fin si
            attacher le mot m à r
        fin si
    mot suivant

  3. #3
    Membre émérite

    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    717
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 717
    Par défaut
    Tu peux formuler le problème sous la forme d'une grammaire puis utiliser un algorithme d'analyse syntaxique tel que CYK.

Discussions similaires

  1. Transformer simplement une chaine en INT
    Par alex2746 dans le forum Débuter
    Réponses: 1
    Dernier message: 23/11/2009, 22h19
  2. transformation d'une chaine
    Par nejib salem dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 21/09/2009, 01h53
  3. Réponses: 3
    Dernier message: 24/05/2009, 11h45
  4. [Débutant] Transformation d'une chaine de caractères en fonction
    Par safizounet dans le forum Interfaces Graphiques
    Réponses: 4
    Dernier message: 27/01/2009, 18h08
  5. Réponses: 2
    Dernier message: 14/01/2005, 16h40

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