Utente:XDnl/Sandbox: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
Riga 390:
Questa situazione accade ogni volta che l'encoder incontra input sotto la forma cScSc, dove c è un singolo carattere ed S è una stringa; cS è già all'interno del dizionario, ma cSc no. L'encoder emette il codice per cS, inserendo un nuovo codice per cSc nel dizionario. Dopo individua la presenza di cSc nell'input (partendo dalla seconda c di cScSc) ed emette il nuovo codice appena inserito.
Anche se l'input sotto tale forma è un caso raro, questo schema diventa piuttosto comune quando il flusso di input è caratterizzato da significanti ripetizioni. In particolare, lunghe stringhe di un singolo carattere (che sono comuni in vari tipi di immagini la quale l'LZW spesso comprime) generano ripetutamente schemi di questo genere.
Per rendere chiaro il processo utilizzato in tale caso speciale, si consideri il seguente esempio:
<div style="text-align:center;font-size:15px">"CCC"</div>
Anche questo è un caso speciale nella forma cScSc (per la precisione cS, che è pur sempre un derivato della forma del caso speciale).
Il processo di compressione di tale stringa avviene regolarmente, come è mostrato nella seguente tabella:
<div style="float:left">
{| class="wikitable"
! Iterazione !! Input !! Buffer corrente !! Simbolo in output !! Voce aggiunta nel dizionario
|-
| 1 || CCC || (vuoto) || (nessuno) || (nessuna)
|-
| 2 || <span style="background-color: yellow">C</span>CC || C || ||
|-
| 3 || <span style="background-color: yellow">CC</span>C || CC || ||
|-
| 4 || C<span style="background-color: yellow">C</span>C || C || C || CC ((<math>\alpha_1</math>))
|-
| 5 || C<span style="background-color: yellow">CC</span> || CC || ||
|-
| 6 || CCC || || <math>\alpha_1</math> ||
|}
</div>
<div style="float:right;clear:right">
{| class="wikitable"
!colspan="2"|Dizionario
|-
! Sequenza !! Codice
|-
| C || C
|-
| CC || <math>\alpha_1</math>
|}
==Implementazione==
|