Débutant en python à la recherche d'aide :)
Répondre à la discussion
Affichage des résultats 1 à 3 sur 3

Débutant en python à la recherche d'aide :)



  1. #1
    invite0cfc391c

    Unhappy Débutant en python à la recherche d'aide :)


    ------

    Bonjours, je suis débutant en python et je voudrais savoir comment s'y prendre pour crée le constructeur d'un arbre des suffixe par la methode décrite dans le td.
    J'y ai passer plus de 3 jours sans pouvoir arriver à quoi que ce soit J'ai commencer par utiliser une classe que j'avais déjà écrite mais sa ne ma avancer à rien malheureusement ..

    TD10-page-001.jpg
    TD10-page-002.jpg

    -----

  2. #2
    invite0cfc391c

    Re : Débutant en python à la recherche d'aide :)

    J'ai aussi accès à la correction de ce tp mais en le lisant c'est encore plus flou que lorsque je ne l'avais pas déjà lue..

    la voici :

    1) Nous allons adopter une solution qui se sert d'un tableau pour garder les
    arêtes étiquetés vers les fils. Au lieu d'exprimer les étiquettes explicitement,
    nous utiliserons la position d'une arête (= référence à un fils) dans le tableau
    des arêtes comme son étiquette implicite.
    On pourra utiliser le code ASCII d'un caractère comme indice du tableau des fils,
    ce qui est facile mais susceptible de gâcher beaucoup de mémoire, surtout si
    l'alphabet effectivement utilisé dans le texte est réduit par rapport aux 256
    caractères de la table ASCII étendue. Un autre problème est que si notre texte
    utilise des caractères Unicode, dont le code peut consister en un entier de 16 bits
    ou plus, on aurait besoin de tableaux trop grands. Une solution à ces deux problèmes
    consiste en créer au préalable un seul grand tableau contenant, aux positions qui
    correspondent aux caractères effectivement utilisés dans le texte, des nombres
    entiers progressifs, de 1 à N, une sorte de codage alternatif, qui seront utilisés
    comme indices pour accéder aux tableaux des fils.
    Voici les attributs de la classe ArbreSuff:
    - profondeur, de type entier : cela nous permet de stocker la profondeur d'un noeud,
    et donc d'éviter de la recalculer à chaque fois qu'on en a besoin ;
    - position, de type entier : position de début dans le texte du suffixe qui correspond
    au chemin de la racine à ce noeud ; on affectera la valeur 0 à la racine (chaine vide) ;
    - parent, une référence au noeud parent, de type ArbreSuff ;
    - fils[N], un tableau de références au sous-arbres, de type ArbreSuff

    Nous allons prévoir aussi un constructeur simple, qui prend comme argument
    une référence à un ArbreSuff parent, qui nous permettra de créer des nouveaux noeuds vides.

    Code:
    ArbreSuff(ArbreSuff p)
      parent <- p
      si parent != NULL
        profondeur <- parent.profondeur + 1
      sinon
        profondeur <- 0
      position <- 0
      pour i de 1 à  N
        fils[i] <- NULL
    2) Construction de l'arbre des suffixes

    Code:
    ArbreSuff(Texte t)
      self(NULL)                     # appel au constructeur simple, pour créer la racine
      ouvCour <- nouvelle Liste()   # liste des noeuds ouverts pour l'itération courante
      ouvCour.ajouter(self)         # au début, ouvCour ne contient que la racine
      pour i de 1 Ã  t.taille()
        c <- alphabet[t[i]]          # conversion ASCII -> code interne
        ouvSuiv <- nouvelle Liste()  # liste des noeuds ouverts pour l'itération suivante
        ouvSuiv.ajouter(self)        # la racine fait toujours partie des noeuds ouverts
        Itérateur ouverts <- ouvCour.itérateur()   # On utilise un itérateur pour parcourir la liste ouvCour
        tant que ouverts.hasNext()
          noeud <- ouverts.next()
          si noeud.fils[c] = NIL
            noeud.fils[c] <- nouveau ArbreSuff(noeud)
            noeud.fils[c].position <- i - noeud.profondeur
          ouvSuiv.ajouter(noeud.fils[c])
        ouvCour <- ouvSuiv           # on remplace par ouvSuiv la liste qui vient d'être parcourue
      # fin du constructeur, maintenant "self" est la racine de l'arbre des suffixes de t
    3) recherche d'un motif

    Code:
    entier rechercher(texte m)
      n <- self
      pour i de 1 à m.taille()
        c <- alphabet[m[i]]
        n <- fils[c]
        si n = NIL         # motif non trouvé
          renovoyer -1
      renvoyer n.position
      # remarque : si m.taille() = 0 (chaîne vide), la position renvoyée sera 0.
    Dernière modification par JPL ; 12/12/2015 à 23h37. Motif: Ajout de la balise Code (#)

  3. #3
    invite0cfc391c

    Re : Débutant en python à la recherche d'aide :)

    Et voilà jusqu'ou j'ai pus allez en trois jours J'ai essayer de passe par une classe d'arbre, que j'ai écrite puis je suis tout simplement restée bloquer :/
    Code:
    class ARBRE:
        def __init__(self, value=None,parent=None):
            self.value=value
            self.parent=parent
            self.children=list()
            try:
                parent.children.append(self)
            except AttributeError:
                pass
    
    
    class ARBRESUFF(ARBRE):
    
        def __init__(self, Texte):
            self.arbre=ARBRE("Racine",None)
            self.texte=set(Texte)
            for i in range(0,len(set(Texte))):
                ARBRE(Texte[i], self.arbre)
            
    
    
    
    
    test= ARBRESUFF("Banana")
    Dernière modification par JPL ; 12/12/2015 à 23h35. Motif: Ajout de la balise Code (#) pour garder l'indentation

Discussions similaires

  1. algorithme recherche d'égalité - python
    Par DavianThule95 dans le forum Programmation et langages, Algorithmique
    Réponses: 1
    Dernier message: 10/10/2015, 17h37
  2. Python (débutant)
    Par invitee0960580 dans le forum Programmation et langages, Algorithmique
    Réponses: 2
    Dernier message: 06/12/2012, 14h28
  3. Python débutant
    Par invitee0960580 dans le forum Programmation et langages, Algorithmique
    Réponses: 3
    Dernier message: 20/11/2012, 14h19
  4. Aide projet python
    Par invitef939ada6 dans le forum Programmation et langages, Algorithmique
    Réponses: 4
    Dernier message: 06/01/2012, 22h38
  5. Aide Python
    Par invitec93cd9c4 dans le forum Logiciel - Software - Open Source
    Réponses: 2
    Dernier message: 23/10/2006, 13h09