Utente:XDnl/Sandbox: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
XDnl (discussione | contributi)
Riga 254:
 
===Decompressione===
Inzialmente il dizionario del decoder è identico a quello dell'encoder (all'inizio del processo di compressione), che conterrà anch'egli solamente voci contenenti i simboli dell'alfabeto.<br />
Quindi, analogamente il dizionario si presenta:
{| class="wikitable"
!colspan="2"|Dizionario
|-
! Sequenza !! Codice
|-
| A || A
|-
| C || C
|-
| G || G
|-
| T || T
|}
Anche il buffer assume lo stesso stato iniziale del buffer dell'encoder, infatti è attualmente vuoto, ma verrà utilizzato sempre per il nuovo inserimento delle voci.
 
Il decoder comincia il processo di decompressione analizzando la stringa codificata, traducendo e convertendo ogni singolo simbolo. In questo caso:
 
<div style="text-align:center;font-size:15px">ACGT<math>\alpha_1\alpha_3\alpha_5</math></div>
 
i passaggi sono i seguenti:
{| class="wikitable"
! Iterazione !! Input !! Buffer corrente !! Simbolo in output !! Voce aggiunta nel dizionario
|-
| 1 || ACGT<math>\alpha_1\alpha_3\alpha_5</math> || (vuoto) || (nessuno) || (nessuna)
|-
| 2 || <span style="background-color: yellow">A</span>CGT<math>\alpha_1\alpha_3\alpha_5</math> || A || ||
|-
| 3 || <span style="background-color: yellow">AC</span>GT<math>\alpha_1\alpha_3\alpha_5</math> || AC || ||
|-
| 4 || A<span style="background-color: yellow">C</span>GT<math>\alpha_1\alpha_3\alpha_5</math> || C || A || AC ((<math>\alpha_1</math>))
|-
| 5 || A<span style="background-color: yellow">CG</span>T<math>\alpha_1\alpha_3\alpha_5</math> || CG || ||
|-
| 6 || AC<span style="background-color: yellow">G</span>T<math>\alpha_1\alpha_3\alpha_5</math> || G || C || CG ((<math>\alpha_2</math>))
|-
| 7 || AC<span style="background-color: yellow">GT</span><math>\alpha_1\alpha_3\alpha_5</math> || GT || ||
|-
| 8 || ACG<span style="background-color: yellow">T</span>ACGTACG || T || G || GT ((<math>\alpha_3</math>))
|}
<div style="float:right;clear:right">
{| class="wikitable"
!colspan="2"|Dizionario
|-
! Sequenza !! Codice
|-
| A || A
|-
| C || C
|-
| G || G
|-
| T || T
|-
| AC || <math>\alpha_1</math>
|-
| CG || <math>\alpha_2</math>
|-
| GT || <math>\alpha_3</math>
|}
Come si può notare, fino ad ora, il processo di decompressione segue un procedimento identico a quello della compressione, considerando il fatto che i primi simboli non sono stati compressi perchè ancora la stringa non compressa non conteneva nessuna sequenza che non sia presente nel dizionario, compresele due nuove voci appena inserite (nell'iterazione 4 e 6) allo stesso modo. Nella terza iterazione, il decoder esegue gli stessi passi dell'encoder, procedendo quindi allo stesso processo di inserimento delle nuove voci, sfruttando il buffer (è evidenziato di giallo nella tabella il suo contenuto).
Nell'iterazione successiva, viene letto il primo simbolo ''nuovo'' del dizionario; il decoder procede dunque all'identificazione della stringa compresssa associata a quel simbolo
 
==Implementazione==