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 :

decompression lzw


Sujet :

Algorithmes et structures de données

  1. #1
    Nouveau membre du Club
    Inscrit en
    Avril 2004
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 5
    Par défaut decompression lzw
    bonjour a tous
    j'aurai une petite question a poser. dans un algorithme lzw pour la decompression on transmet le dictionnaire et lorsque la sequence est superieure a 255 c'est qu'elle est preente dans le dico c bien ca? merci de votre aide

  2. #2
    Membre éprouvé
    Inscrit en
    Novembre 2002
    Messages
    120
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 120
    Par défaut
    on transmet le dictionnaire
    Dans LZW, il n'y a pas de "dictionnaire" (c'est d'ailleurs ça le principal avantage).

  3. #3
    Nouveau membre du Club
    Inscrit en
    Avril 2004
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 5
    Par défaut
    alors quel interet d'enregistrer les sequences dans un dico au moment de la compression? comment la compression est elle faite alors?

  4. #4
    Membre éprouvé Avatar de kaisse
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 100
    Par défaut
    Citation Envoyé par ShootDX
    on transmet le dictionnaire
    Dans LZW, il n'y a pas de "dictionnaire" (c'est d'ailleurs ça le principal avantage).
    Si il y a bien un dictionnaire en LZW, mais plutot que d'être fixé au départ (ce qui obligerait à le transmettre, et donc à alourdir les données à transmettre) il se construit au fur et à mesure de la compression et de la décompression. Peut-être ne parlons nous pas de la même chose par dictionnaire.

    Citation Envoyé par shaka_64-fra
    dans un algorithme lzw pour la decompression on transmet le dictionnaire et lorsque la sequence est superieure a 255 c'est qu'elle est preente dans le dico c bien ca?
    Les séquences de 0 à 255 sont connus, puisqu'elles correspondent aux caractères de base ASCII. Les sequences associées aux valeurs supérieures à 255 sont des chaînes de 2 caractères ou plus, construites lors de la décompression. Si tu les rencontres lors de la décompression, tu as du déjà les avoir construits avants et donc pouvoir les décompresser. Donc soit tu construits un dictionnaire au début de la décompression, dont tu remplis les 255 premières places par les caractères associées. Soit tu précises juste dans ton algo, que si la valeur décodée est inférieure ou égale à 255 alors il suffit de remplacer par le char correspondant.

    Note: il existe un unique cas ou une chaîne est encodée avec une valeur associée à aucune chaîne au moment de la décompression. Si celà arrive, il s'agit toujours de la dernière chaîne décodée à laquelle on ajoute la première lettre de cette même chaîne.

    Ca se démontre, mais si vous voulez illustrer simplement, essayez de chiffrer, puis de déchiffrer, avec LZW, la chaîne suivante:

    aaaaaaaaaa

    ou bien

    abababab

  5. #5
    Nouveau membre du Club
    Inscrit en
    Avril 2004
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 5
    Par défaut
    merci de ces petites précisions. cependant la construction d'un dictionnaire est elle vraiment interessante si on ne le transmet pas pour la decompression?

  6. #6
    Membre éprouvé Avatar de kaisse
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 100
    Par défaut
    Citation Envoyé par black_night_leader
    merci de ces petites précisions. cependant la construction d'un dictionnaire est elle vraiment interessante si on ne le transmet pas pour la decompression?
    Comme je l'ai déjà dit ca dépend ce que tu appeles "dictionnaire".
    En pratique, le LZW fonctionne comme ca:

    A la compression, on crée un espace mémoire suffisant pour acceuillir toutes les combinaisons de 12 bits (ou plus selon la version employée) qu'on remplit avec d'abord les 256 caractères, puis en compressant, on le remplit. On peut l'agrandir si il s'agit d'un LZW à taille variable, mais le procédé reste le même. Par contre le dico n'est pas sauvegardé dans le fichier ce qui est l'avantage, que dis-je, la raison d'être de LZW: on pourra le reconstruire à la décompression sans rien, à partir du texte déjà décodé (au départ de la décompression on connait les 256 caractères).

    Donc décodage pareil: on crée de l'espace pour les chaînes de 12 bits, on remplit d'abord avec les caractères, puis avec les chaînes rencontrées.

    Tu peux utiliser des astuces pour optimiser la mémoire allouée:

    Génerer 256 espaces mémoires de moins, sachant que les 256 premières chaines seront associés aux caractères. Leger comme gain, mais ca peut servir

    Utiliser un arbre pour les chaînes de dictionnaire: il dispose de 256 entrées (les caractères). Chaque noeud correspond à un caractère et un codage. Si la chaine codée est connue on regarde si le noeud courant à un fils dont le cartatcère associée est le prochain caractère à ajouter à la chaine. Si oui, on continue comme ca, sinon, on crée ce noeud avec ce caractère et un nouveau codage (on a donc une nouvelle chaine), et on encode avec le codage du dernier noeud rencontré.
    Double-avantage: mémoire occupée proportionnelle aux nombres de chaînes "enregistrées", gain de temps dans la recherche des chaînes.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. algorithme lzw
    Par star_light dans le forum Algorithmes et structures de données
    Réponses: 7
    Dernier message: 06/06/2004, 15h02
  2. decompression gzip
    Par ma2th dans le forum Autres éditeurs
    Réponses: 2
    Dernier message: 11/05/2004, 13h23
  3. algorithme lzw
    Par black_night_leader dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 03/05/2004, 19h58
  4. Compresser et decompresser un ensemble de fichier
    Par Walm dans le forum C++Builder
    Réponses: 2
    Dernier message: 12/01/2004, 16h23
  5. Compression LZW
    Par BenderJay dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 29/05/2003, 21h04

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