LZW: diferència entre les revisions
Contingut suprimit Contingut afegit
Articles i puntuació. |
Cap resum de modificació |
||
Línia 1:
{{millorar redacció|data=març de 2014}}
'''
▲''' LZW (Lempel-Ziv-Welch) ''' és un [[algorisme]] de [[compressió de dades|compressió]] sense pèrdua desenvolupat per [[Terry Welch]] al [[1984]] com una versió millorada de l'algorisme [[LZ78]] desenvolupat per [[Abraham Lempel]] i [[Jacob Ziv]].
== Descripció de l'algorisme ==
La majoria dels mètodes de compressió es basen en una anàlisi inicial del text per identificar cadenes repetides per armar un diccionari d'equivalències, assignant codis breus a aquestes cadenes. En una segona etapa, es converteix el text utilitzant els codis equivalents per a les cadenes repetides. Això requereix dues etapes, una d'anàlisi i una segona de conversió i també requereix que el diccionari es trobi juntament amb el text codificat, incrementant la mida del fitxer de sortida.
La clau del mètode LZW
El diccionari comença precarregat amb 256 entrades, una per a cada caràcter (byte) i és possible més d'un codi predefinit per indicar el final d'arxiu. A aquesta taula se li van afegint successius codis numèrics per cada nou parell de caràcters consecutius que es llegeixin (això no és literalment cert, segons es descriu tot seguit), encara que
És en aquest detall on es troba la brillantor del mètode: en armar el diccionari sobre la marxa s'evita fer dues passades sobre el text, una analitzant i l'altra codificant.
Les entrades del diccionari poden representar seqüències de caràcters simples o seqüències de codis de tal manera que un codi pot representar dos caràcters o pot representar seqüències d'altres codis prèviament carregats que al seu torn representen, cada un d'ells, altres codis o caràcters simples, o sigui que un codi pot representar des d'un a un nombre indeterminat de caràcters. En realitat, l'algoritme no discrimina entre codis i caràcters simples, ja que el diccionari es carrega inicialment de codis que representen els primers 256 caràcters simples per la qual cosa aquests no són més que altres codis dins del mateix diccionari.
Cada vegada que es llegeix un nou caràcter es revisa el diccionari per veure si forma part d'alguna entrada prèvia. Tots els caràcters estan inicialment predefinits al diccionari així que sempre hi haurà almenys una coincidència, però
Una altra característica important de l'algorisme és que els codis a la sortida es representen per cadenes de bits variables. El diccionari conté inicialment 257 codis, 256 codis per als 256 caràcters simples possibles de 8 bits i un codi que representa la fi d'arxiu. Per això serien necessaris codis de 9 bits, la qual cosa vol dir que encara hi ha disponibles 255 codis de 9 bits per representar cadenes de caràcters. Quan s'omplen aquestes 255 entrades del diccionari, s'amplien els codis amb un nou bit, la qual cosa permet 512 noves entrades. Quan es completen aquestes 512 entrades, s'afegeix un bit i es disposen de 1.024 noves entrades i així successivament. A la pràctica, es verifica que les primeres entrades, corresponents a codis de 12 bits de longitud (4.096 entrades) s'omplen ràpidament pel que és habitual començar el procés no amb codis de 9 bits sinó directament amb codis de 12 bits.
Linha 20 ⟶ 19:
Al seu torn, s'ha comprovat empíricament que la informació en un fitxer presenta 'regionalitat', és a dir, que diferents regions d'un mateix arxiu presenten diferents regularitats, la qual cosa fa que el diccionari que s'hagués format per una regió d'un arxiu pugui no ser útil en una altra regió diferent. L'algoritme preveu que, quan una cadena fora a forçar l'ampliació del diccionari a 17 bits, el diccionari s'esborri del tot, s'inicialitzi novament amb els 256 codis inicials més el codi de fi d'arxiu i es reprengui el procés.
Observeu que donat aquest límit de codis de 16 bits, això vol dir que un diccionari mai no podrà contenir més de 65.536 entrades, cadascuna d'elles de 2 codis de 16 bits, és a dir quatre octets per entrada. El diccionari, llavors, s'arma com una taula on el codi és l'índex i les cadenes que representa són les entrades d'aquesta taula. Cal advertir que el codi
Que la mida dels índexs pugui ser
=== Un exemple simple de l'algoritme LZW de compressió ===
Linha 54 ⟶ 53:
El text original
Quan es comença a utilitzar 6 bits per codi, tots els codis s'emeten amb 6 bits, fins i tot els que originalment només usessin 5 bits, completant amb zeros per esquerra.
== Usos ==
El mètode va arribar a ser utilitzat de forma moderada, però en tota la seva amplitud en el programa ''
Es va usar àmpliament des que es va convertir en part del format gràfic [[GIF]]
La compressió LZW proporcionava una relació de compressió millor en moltes aplicacions que altres mètodes de compressió coneguts en aquesta època. Va arribar a convertir-se en el primer mètode de propòsit general de compressió de dades utilitzat àmpliament. En textos llargs, comprimeix aproximadament a la meitat de la mida original. Altres tipus de dades són també comprimits útilment en molts casos.
Linha 73 ⟶ 72:
Molts experts en lleis conclouen que la patent no cobreix dispositius que només descomprimim LZW i no puguin comprimir dades usant-lo, per aquesta raó el popular programa [[gzip]] pot llegir arxius. Z però no escriure'ls.
Es va informar a [http://www.debian.org/News/weekly/2002/45/Debian Weekly News] d'acord amb un fil de [http://groups.google.com/groups?&threadm=a5aa8dd0.0208271613.3cd18da6 % 40posting.google.com comp.compression thread], que la patent d'Unisys als EUA va expirar a [[desembre]] del [[2002]] - 17 anys i 10 dies després de ser patentat. No obstant això, la majoria de les fonts informen que va expirar el juny del [[2003]], 20 anys després de ser arxivada, perquè [http://www.law.cornell.edu/uscode/35/154.html 35 USC § 154 (c) (1)] especifica que les patents subsisteixen 20 anys després de l'[[Uruguai Round Agreements Act]].
D'acord amb una declaració a la web de Unisys, les patents de LZW al [[Regne Unit]], [[França]], [[Alemanya]], [[Itàlia]] i [[Japó]] han expirat en juny del [[2004]] i la patent canadenca en [[juliol]] del [[2004]]. La patent d'IBM als EUA va expirar l'agost del [[2006]].
== Lempel-Ziv-Welch vs. Ziv-Lempel-Welch ==
Tot i que l'[[acrònim]] LZW
== Enllaços externs ==
* [http://patft.uspto.gov/netacgi/nph-Parser?Sect1=PTO1&Sect2=HITOFF&d=PALL&p=1&u=/netahtml/srchnum.htm&r=1&f=G&l=50&s1=4, 558,302. WKU. & OS = PN/4.558.302 & RS = PN/4.558.302 United States Patent 4.558.302].
* [http://www.dogma.net/markn/articles/lzw/lzw.htm "LZW Data Compression", by Mark Nelson] (DDJ Article amb codi font).
* [http://www.kyz.uklinux.net/giflzw.php Sad day ... GIF patent dead at 20] (Article curt i possiblement amb una simplificació de la veritable història
* [http://software.newsforge.com/software/05/06/23/2150233.shtml?tid=130 '' Bringing back LZW compression '' per Nathan Willis].
* [http://www.compression-links.info/LZW List of LZW libraries, papers and other resources].
[[Categoria:Acrònims d'informàtica]]
|