Pagina:Codifica numerica del segnale audio.djvu/108

90 Codifica numerica del segnale audio

Trascurando il problema di avere in ricezione simboli ordinati inversamente rispetto alla trasmissione (risolvibile tramite una struttura LIFO), l’algoritmo di decompressione presentato fallisce qualora la stringa d’ingresso contenga la sequenza KwKwK, dove Kw appare già nella tabella di compressione. Il compressore, infatti, individuata la stringa Kw, invia il codice relativo ed aggiunge la stringa KwK alla sua tabella; successivamente, individuata la stringa KwK, utilizzerà il codice appena inserito. Tale codice risulta indefinito al decompressore, che risulta in attesa dell’estensione K alla stringa precedente. Per evitare tale inconveniente, ogni volta che in fase di decodifica ci si trova di fronte ad un codice non definito, si deve ipotizzare che tale codice sia un’estensione della stringa precedente, utilizzando come il primo simbolo da emettere l’estensione della stringa stessa.

Dal punto di vista implementativo, risulta conveniente memorizzare le stringhe d’ingresso come coppie di un codice (relativo al prefisso w della stringa corrente) ed un simbolo (relativo all'estensione k). Ciò permette l’accesso in tabella tramite codici di dimensioni fisse, potendo quindi adottare tecniche di hashing.

L’LZ ha molti vantaggi rispetto ad algoritmi che permettono livelli di compressione paragonabili. Innanzitutto non è legato all'eliminazione della ridondanza di un particolare tipo di sorgente; inoltre, la semplicità dell’implementazione ne permette l’impiego run-time. Come ulteriore punto a favore di tale algoritmo, si ha che esso non introduce degradazione del segnale, e quindi è utilizzabile per la compressione di dati numerici. Tra gli svantaggi si hanno:

  • l’indeterminatezza delle dimensioni del flusso compresso (e quindi delle dimensioni della memoria di massa destinato a contenerlo o della banda necessario per trasmetterlo;
  • la propagazione di errori di trasmissione;
  • l’inefficienza della compressione per piccoli blocchi di dati;
  • la perdita di efficienza per blocchi di grandi dimensioni contenenti dati eterogenei (dovuta all'omogeneizzazione della probabilità dei simboli).

Il fattore di compressione ottenibile con I’LZ è, ovviamente, funzione del livello di strutturazione del flusso in ingresso. Tale rapporto, che per testi alfanumerici o dati formattati supera il 100%, è normalmente prossimo al 65%.