Répondre à la discussion
Affichage des résultats 1 à 1 sur 1

codage huffman



  1. #1
    StuartL

    codage huffman

    bonjour à tous,

    Je travaille actuellement sur le codage de Huffman.
    J'ai réussi à obtenir un arbre mais en revanche, je ne parviens pas à donner le code binaore pour chaque lettre.
    ci-dessous les fonctions déjà créées :


    Code:
    def table_frequences (texte):
        # Renvoie la liste des caractères suivis de leur fréquence respective
        table =[]
        texteinit=[]
        for caractere in texte :
            if caractere not in table :
                frequence = texte.count(caractere)
                table.append(caractere)
                table.append(frequence)
                texteinit.append(caractere)
        return table
                
    def noeud_arbre (table):
        # créer les noeuds pour l'arbre
        noeud=[]
        while len(table)>0:
            noeud.append(table[0:2])
            table=table[2:]
        return noeud
    
    def echange (tab,k,l):
        tabtemp=tab[k]
        tab[k]=tab[l]
        tab[l]=tabtemp
        return (tab)
        
    def tri_noeud (table):
        # cette fonction permet de trier un tableau
        for i in range (1,len(table)):
    
            p=0
            
            while p != len(table)-i :
                
                if table[p][1]>table[p+1][1]:
                    echange(table,p,p+1)
                    p=p+1
                else :
                    p=p+1
        return (table)
    
    
    def arbre_huffman (table):
        # créer l'arbre de Huffman avec les lettres
        tri_noeud(table)
        feuille=[]
        code=[]
        
        for i in range (1,len(table)):
            nouveau_caractere=[table[0]]+[table[1]]
            feuille=[nouveau_caractere,table[0][1]+table[1][1]]
            code=feuille
            code[0][0][1]="0"
            code[0][1][1]="1"
            print('la nouvelle feuille !   ', feuille)
            print('le code est ',code)
            
            tablex=[feuille]
            
            for j in range(2,len(table)):
                tablex= tablex + [table[j]]
                          
            table=tablex
            
            print('Etape ', i, '  ', table)
            
            tri_noeud(table)    
            
        return (table)
    
    
    def arbre_huffman_texte(texte):
        # l'arbre mais avec le texte en entrée
        t1=table_frequences (texte)
        t2=noeud_arbre(t1)
        t3=tri_noeud(t2)
        tdefinitif=arbre_huffman(t3)
        print(tdefinitif)

    pourriez-vous m'aider svp ?
    merci

    -----

    Dernière modification par Antoane ; 21/08/2019 à 10h38. Motif: Ajout des balises code

Sur le même thème :

Discussions similaires

  1. codage de huffman
    Par ricc_bal dans le forum Programmation et langages, Algorithmique
    Réponses: 3
    Dernier message: 21/02/2019, 09h30
  2. Implémentation codage huffman (python)
    Par coco011 dans le forum Programmation et langages, Algorithmique
    Réponses: 7
    Dernier message: 05/12/2018, 18h32
  3. TPE sur le pixels, codage binaire, codage hexadécimal..
    Par rachid84 dans le forum TPE / TIPE et autres travaux
    Réponses: 0
    Dernier message: 09/11/2012, 16h16
  4. la quantification et le codage huffman
    Par kadjuv dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 12/11/2009, 10h33
  5. Compression des données ( Codage Huffman )
    Par NuxVsTheWorld dans le forum Logiciel - Software - Open Source
    Réponses: 14
    Dernier message: 22/04/2009, 14h12