Sunteți pe pagina 1din 14

MtodosdeCompresin

Notas sobre Compresin de Datos


Miguel Morales Sandoval
INAOE, 2003. mmorales@inaoep.mx Estas notas presentan algunos de los mtodos de compresin de datos ms utilizados. Se hace nfasis en los mtodos basados en diccionario para compresin de texto. Se proporcionabibliografaparaqueellectorprofundicesobretemasparticulares. METODOSDECOMPRESIN Informacinyentropa LaTeoradelaInformacin[Sha48]esladisciplinaqueseencargadelestudioycuantificacindelos procesosqueserealizansobrelainformacin.Lacantidaddeinformacinquenosproporcionaciertodatoes menor cuanto ms esperamos ese dato. La idea de la probabilidad de ocurrencia de cierto evento que nos da informacin puede modelarse por una variable aleatoria y su conjunto de mensajes y probabilidades asociadas.Alrecibirunmensajedeesavariablealeatoria(fuentedeinformacin),seobtieneunacantidadde informacin,quedependeslodelaprobabilidaddeemisindeesemensaje.Lacantidaddeinformacines una funcin creciente e inversa a la probabilidad, es decir, un menaje con menor probabilidad proporciona mayorcantidaddeinformacin.En1948,ClaudeShannonpropusounamedidaparalainformacin[Sha48].Si sesuponeunafuenteFdeinformacindenmensajesFi,cadaunoconprobabilidadpi,lainformacinalrecibir unmensajeestadadoporlaecuacin: I(F=Fi)=log(pi) LamedidamediadeinformacinoentropadeFestadadaporlaesperanzamatemticadelainformacinde cadasmbolo

Alutilizarlogaritmoenbase2,lamedidaestarenbits.Estamedidadaunacotasuperiortericade la cota de compresin que puede obtenerse de la informacin, no se puede tener ninguna codificacin que consiga una longitud en bits media por smbolo emitido menor que la entropa de la fuente sobre la que se realizalacodificacin.Loscompresoresactualesnolleganaestacotaperoquedanmuycerca. Compresindedatos Enlosltimosaossehadadounaumentotantodelacapacidaddealmacenamientodedatoscomo enlavelocidaddeprocesamientoenlascomputadoras.Juntoconesto,latendenciaesladisminucindecostos en memoria principal y secundaria as como tambin un aumento de velocidad de estos dispositivos de almacenamiento. Estos acontecimientos ponen en cuestionamiento la necesidad de compresin de datos. Sin embargo, el auge que ltimamente han tenido las redes de computadoras, demanda ms prestaciones que estn por encima de las posibilidades reales. El principal problema al que se enfrentan las redes de comunicacin es la velocidad de transferencia de datos. El cambio a mayores velocidades no es tarea fcil, bsicamente por razones como la no factibilidad de realizar cambios de infraestructura en las grandes

MtodosdeCompresin:Diciembrede2003

MtodosdeCompresin

compaas de redes WAN (cableado, tecnologas, etc.) as como la falta de tecnologa que acepte unas velocidadesmuyelevadasdetransmisin. Enesteentorno,paraconseguirmayoresprestacionesdevelocidad,sedeberecurriratcnicasqueles permitansuperardealgunamaneralasdeficienciasfsicasdelared.Latcnicamsimportanteenestesentido es la compresin de datos. La compresin de datos es beneficiosa en el sentido de que el proceso de compresintransmisindescompresin es ms rpido que el proceso de transmisin sin compresin. La compresindedatosnosloesparalatransmisindedatos,sinotambinparaelalmacenamientomasivo.La necesidad de almacenamiento tambin crece por encima de las posibilidades del crecimiento de los discos durosomemoria.Porejemplo,aplicacionesactualescomoelproyectodelGenomaHumanoolosservidores de vdeo en demanda, requieren de varios Gigabytes de almacenamiento. La motivacin para aplicar compresinalosdatoseslareduccindecostostantoenalmacenamiento(serequieremenosespacio)comoen latransmisindelosdatos(setransmitenmsrpidamenteempleandoelmismoanchodebanda).Elprecio que debe pagarse es cierto tiempo de cmputo para comprimir y descomprimir los datos [WMB99], tradicionalmente,haexistidouncompromisoentrelosbeneficiosdecompresinycostocomputacional[SH93] requerido. LacompresindedatoseslacodificacindeuncuerpodedatosDenuncuerpodedatosmspequeo D[FY94].Paracomprimirlosdatos,losmtodosdecompresinexaminanlosdatos,buscanredundanciaen ellos,eintentanremoverla.Unapartecentralenlacompresineslaredundanciaenlosdatos.Sololosdatos con redundancia pueden comprimirse aplicando un mtodo o algoritmo de compresin que elimine o remueva de alguna forma dicha redundancia. La redundancia depende del tipo de datos (texto, imgenes, sonido, etc), por tanto, no existe un mtodo de compresin universal que pueda ser ptimo para todos los tiposdedatos[S02]. Eldesempeodelosmtodosdecompresinsemideenbaseadoscriterios:larazndecompresin y el factor de compresin, siendo el segundo el inverso del primero. Las relaciones para determinar estas medidasestndadasporlasigualdadesdelafigura2.1.Entremayorredundanciaexistaenlosdatos,mejor razn(factor)decompresinserobtenido.

Figura2.1Evaluacindelosmtodosde compresin Mtodosdecompresin Lacompresindedatospuededividirseendostiposprincipales:compresinconprdidaycompresin sinprdida.Encompresinsinprdida,esposiblereconstruirexactamentelosdatosoriginalesDdadoD.Al proceso de reconstruccin se le denomina descompresin. Por otra parte, en compresin con prdida, la descompresinproducesolamenteunaaproximacinD*alosdatosoriginalesD. Lacompresindedatossinprdidaescomnmenteusadaenaplicacionescomocompresindetexto, dondelaprdidadeunsolobitdeinformacinesinaceptable.Lacompresinconprdidaesusadaamenudo paraaplicacionesdecompresindeimgenesyaudio(video)destinadasalentretenimiento.Noeselcasoen aplicacionesdecompresindeimgenesmdicas(identificacindetumoresoanomalas)[FY94].Losmtodos de compresin con prdida logran mejores razones de compresin. El reto que siempre se persigue es

MtodosdeCompresin:Diciembrede2003

MtodosdeCompresin

conseguir un mtodo de compresin que emplee el tiempo ms corto, que sea posible comprimir la mayor cantidad de informacin, que el espacio de memoria sea lo ms mnimo posible y que no exista prdida de datos. Un mtodo de compresin no adaptable es rgido y no modifica su operacin o sus parmetros en respuestadelosdatosparticularesquesevanacomprimir.Unmtodoadaptableexaminalosdatosymodifica su operacin o parmetros de acuerdo a ellos. Un mtodo semiadaptableo de dos pasadas,lee losdatos que vanacomprimirseparadeterminarsusparmetrosdeoperacininternos(primerapasada)yacontinuacin realizalacompresin(segundapasada)deacuerdoalosparmetrosfijadosenlaprimerapasada[S02]. Losmtodosdecompresinsinprdidapuedenclasificarseendostipos:substitucionales(obasados endiccionario)yestadsticos.Laprincipaldistincinentreambosesqueenelcasodelosmtodosestadsticos, la codificacin de un smbolo se basa en el contexto en el que este ocurre, mientras que los mtodos substitucionalesagrupansmboloscreandountipodecontextoimplcito[WMC99].Engeneral,uncompresor estadstico logra mejores razones de compresin que un compresor substitucional pero la complejidad computacionalyrequerimientosdememoriaparaloscompresoresestadsticossonmuchomayoresqueenlos compresoressubstitucionales[JB95]. Mtodosestadsticos. Los mtodos de compresin estadsticos usan las propiedades estadsticas de los datos que van a comprimirseparaasignarcdigosdelongitudvariablealossmbolosindividualesenlosdatos.Existenvarios mtodosestadsticospropuestos,laprincipaldiferenciaentreelloseslaformaenlaquecadaunoobtienelas probabilidades de los smbolos [WMC99]. Los mtodos estadsticos emplean un modelo para obtener las probabilidades de los smbolos, la calidad de la compresin que se logra depende de que tan bueno sea ese modelo. Para obtener buena compresin, la estimacin de la probabilidad se basa en el contexto en el que ocurrenlossmbolos.Dadaslasprobabilidadesdelossmbolos,lacodificacinseencargadeconvertirdichas probabilidadesenunacadenadebitsparaobtenerlosdatosenformacomprimida.Losmtodosestadsticos mscomnmenteusadossonCodificacinHuffman,CodificacinAritmticayPPM. CodificacindeHuffman La codificacin de Huffman [H52] es un mtodo propuesto en 1952 por David Huffman. La idea detrs de la codificacin de Huffman es asignar cdigos binarios lo ms cortos posibles a aquellos smbolos que ocurren con mayor frecuencia en los datos. Los smbolos con poca frecuencia tendrn asignado cdigos binariosdelongitudmsgrande.Elptimodesempeodelalgoritmoseconsiguecuandoelnmerodebits asignadoacadacarcteresproporcionalallogaritmodelaprobabilidaddemismo. El algoritmo de Huffman construye un rbol binario mediante el cual, asigna los cdigos a los smbolosdeentrada.Serealizaunaprimerapasadasobrelosdatosacomprimirseparaobtenerlasestadsticas delossmbolos.Lossmbolossonordenadosenunalistadeacuerdoasuprobabilidad.Estalistaordenadade smbolossernlosnodosinicialesparalaconstruccindelrbol.Laconstruccindelrbolserealizadeforma iterativarepitiendolospasos14quesemuestranenlafigura2.2 1) Silalistacontieneunsolonodo,terminar 2) Losdosnodos(LyR)delalistaconlasprobabilidadesmspequeasseseleccionan. 3) Secreaunnodointermedio(F)yseconstruyeunsubrbolsiendoFelpadre,LyRloshijos izquierdoyderechorespectivamente.ElarcoentrelosnodosFyLseetiquetancomo0yel arcoentrelosnodosFyRseetiquetacomo1. 4) F es agregado a la lista ordenada con valor de probabilidad igual a la suma de las probabilidadesdeLyR. Figura2.2AlgoritmoparagenerarelrboldeHuffman
MtodosdeCompresin:Diciembrede2003

MtodosdeCompresin

a)

b)

c)

d)

e)

f)

g)

FiguraCreacindelrbolbinariodadaslasestadsticasdelossmbolosenelmensajeacomprimir. Elrbolresultantecontendrnhojasparansmbolosenlaentrada.Comoejemplo,supongamosque unmensajevaasercodificadoyqueunavezobtenidolasestadsticasdelossmbolosdeentradasetienenlas siguientesfrecuencias:66Fs,64Bs,32Cs,29As,23Gs,12Dsy9Es(figura2.3a).Lossmbolosconmnima

MtodosdeCompresin:Diciembrede2003

MtodosdeCompresin

frecuencia, D y E, se seleccionan, se crea un nuevo nodo N1 y se forma el subrbol segn el paso 3), N1 es agregadoalalistaconvalordefrecuencia21(figura2.3b).Ahora,GyN1sonseleccionados,secreaelnodoN2 y se forma el subrbol, N2 se agrega a la lista con valor de frecuencia 44 (figura 2.3c). Los nodos ahora seleccionadossonCyN2,secreaN3,seformaelsubrbol,etc. Enlafigura2.3semuestraelflujodeconstruccindelrboldeHuffmanparaelejemploanterior.Una vezquesetieneelrboldeHuffman(figura2.3g),serealizalaasignacindecdigosalossmbolosdeentrada recorriendo elrbol desde laraz hasta lashojas. En la tabla 2.1 se muestra los cdigos correspondientes al ejemplodelafigura2.3. Elrbolgeneradonoesnico,esdecir,puedenexistirdiferentesrbolesdeHuffmanparalosmismos smbolosdeentrada.Elcasodetenermsdeunrbolocurrecuandoexistenmsdedosnodosconlamisma mnimaprobabilidad,enestecaso,laseleccindetalesnodosparalaconstruccindelsubrbolconllevaraa rbolesfinalesdiferentes.Condiferentesrbolesposibles,setienendiferentescodificacionesparalossmbolos deentradaperoelnmeropromediodebitsporsmboloessiempreelmismo[S02].Enelejemploanterior,el nmerodebitspromedioporsmboloes(2+2+3+3+3+4+4)/7=3. Cuando ms de una posible codificacin es posible, se selecciona aquella representacin donde la varianza sea mnima [S02]. La varianza de un cdigo mide que tanto se desva el tamao de los cdigos individualesdesutamaopromedio.Porotraparte,auqueeltamaodelcdigodeunsmbolodependedela probabilidaddedichosmbolo,eltamaodelalfabetotambininfluyeenlalongituddeloscdigos.Paraun alfabetogrande,lasprobabilidadesdelossmbolossereducenyportantoloscdigosdeHuffmancrecen. Tabla2.1CdigosdeHuffman Smbolo Cdigo B 10 F 11 G 001 A 010 C 011 E 0000 D 0001 Procesodedescompresin El compresor determina los cdigos de los smbolos basndose en su probabilidad o frecuencia de ocurrencia en los datos. Estos cdigos se almacenan junto con los datos comprimidos para que el descompresor pueda reconstruir los datos originales. El descompresor construye el rbol de Huffman y comienzaladescompresinposicionndoseenlarazdelrbol.Eldescompresorleeelprimerbitdelosdatos comprimidos,si es cero, semueve al hijoderecho,si esuno, se mueve hacia el hijo izquierdo. El procesose repite,seleeelsiguientebitdelosdatoscomprimidosyseavanzahaciaelhijoderechosielbitledoesuncero oalizquierdosielbitledoesununo.Cuandosellegaaunahojaenelrbol,eldescompresorencuentrael cdigo original y regresa el valor del smbolo como dato descomprimido. El descompresor se coloca nuevamenteenlarazdelrbolyserepiteelmismoproceso. HuffmanAdaptable El mtodo original propuesto por Huffman, requiere dos pasadas sobre los datos para realizar la compresin,enlaprimera,seobtienenlasestadsticasdelossmbolos,enlasegundaserealizalacompresin. Entreambospasossecreaelrbolbinario.Elmtodosueleserlentodebidoaestasdospasadasyportanto, poco atractivo en aplicaciones de compresin de datos en tiempo real?. El mtodo usado en la prctica es Codificacin de Huffman Adaptable o Dinmica [CH83]. En este mtodo, el compresor y el descompresor

MtodosdeCompresin:Diciembrede2003

MtodosdeCompresin

inician con un rbol vaco y conforme se leen y procesan (comprimir/descomprimir) los smbolos, ambos modificaelrboldelamismaforma. Inicialmente,elcompresorleecadasmbolodeentradaysieslaprimeravezqueaparece,loescribe talcualalarchivodesalida,loagregaalrbolyleasignauncdigodesalida.Sielsmbolovuelveaocurrir,el actualcdigoasignadoalseescribeenelarchivodesalida,sufrecuenciaseincrementaenunoyseactualiza elrbolparamantenerlamejorcodificacindeacuerdoalasfrecuenciasdelossmbolos.Elcompresorrefleja losmismospasosqueelcompresor,cuandoleeunsmbolonocomprimido,loagregaalrbolyleasignaun cdigo.Cuandoleeuncdigocomprimido,utilizaelrbolquehaformadohastaelmomentoparaobtenerel smbolo asociado. El descompresor tambin reorganiza el rbol de la misma forma que el compresor. El descompresor necesita saber distinguir entre cdigos comprimidos y cdigos nocomprimidos. Para ello, utilizaunsmboloespecialdeescapequepuedevariaralolargodelprocesodedescompresin.Generalmente, elsmbolodeescapecorrespondealvalorcodificadodeunahojaenelrbolconocurrenciacero. El rbol es verificado por cada smbolo de entrada. El smbolo con mayor frecuencia de ocurrencia debeaparecerenlosprimerosnivelesdelrbolmientrasquelossmbolosmenosfrecuentesseencuentranel losltimosniveles.SeaXelnododelsmboloactualdeentrada,Fsufrecuenciadeocurrencia.Lasoperaciones paramodificarelrbolserealizanenunciclocomenzandoenelnodocorrespondientealsmbolodeentrada actual.Cadaiteracinsecomponedetresoperaciones: 1) CompararXconsussucesores,deizquierdaaderechaydeabajohaciaarriba.Sielsucesorinmediato tiene frecuencia F+1 o mayor, los nodos estn aun en orden y no se realiza ningn cambio. De lo contrario, algunos sucesores tienen frecuencia igual o ms pequea que X. En este caso, X debe intercambiarseconelltimodesussucesoresqueprobabilidadigualomenorexceptoconsupadre. 2) LafrecuenciadeXseincrementaen1ytambinlafrecuenciadetodossuspadres. 3) SiXeslarazdelrbol,elciclotermina,delocontrario,lospasos13serepitenahoraconelpadredel nodoX. CodificacinAritmtica Codificacinaritmtica[WNC87]esunatcnicaqueobtieneexcelenterazndecompresin,aunque esunmtodolentotaquerequiereporlomenosdeunamultiplicacinporcadasmbolodeentrada.Enteora, lacodificacinaritmticaasignaunnicocodewordacadaposibleconjuntodedatos.Lacompresinaritmtica sebasantambinenlasprobabilidadesdeocurrenciadelosmensajesemitidosporlafuentedeinformacin.Se basa en la representacin de un valor del intervalo [0,1] con ms decimales (ms precisin) cuanto ms informacin contengan los datos a comprimir. La codificacin aritmtica se realiza siguiendo los pasos siguientes: 1. Inicialmente,elintervaloactuales[L,H)=[0,1) 2. Paracadasmbolosenlaentradaserealizandosacciones: a. Elintervaloactualsesubdivideensubintervalos.Eltamaodelsubintervaloesproporcional alaprobabilidadestimadadelossmbolos. b. Seseleccionaelsubintervaloquecorrespondeas,esteintervaloesahoraelintervaloactual. 3. Cuandoelarchivosehaprocesado,lasalidafinalcomoresultadodelacompresinesunnmero dentrodelintervaloactual,generalmente,aquelqueocupemenosbits. Paracadasmboloprocesado,elintervalosehacemspequeoyrequieredemsbitspararepresentarlo. SupngasequesedeseacodificarlasecuenciadecaracteresABCBAA.Lasfrecuenciasdecadaunodelos smbolosson:3As,2Bsy1C.Lasprobabilidadesyvaloresdelasvariablesparacadaunodelossmbolosse muestranenlatabla2.2

MtodosdeCompresin:Diciembrede2003

MtodosdeCompresin

Tabla 2.2 Valores de las variables en la codificacin aritmtica Smbolo A B C Frecuencia 3 2 1 Probabilidad 3/6=(0.5) 2/6=0.33 1/6=0.16 Rango[L,H] [0.00,0.50) [0.50,0.83) [0.83,1.00) LR 0.00 0.50 0.83 HR 0.50 0.83 1.00

Lossmbolosyfrecuenciasdelatabla2.2seescribenenelarchivodesalidaantesdequeinicielacompresin delarchivo.LacodificacininiciadefiniendodosvariablesL=0yH=1formandoelintervaloinicial[0,1). Conformeloscaracteresacodificarincrementan,elclculosevuelvemscomplicado.Lanaturalezade realizarclculossobrenmerosflotantesimplicamayortiempodeprocesamientohaciendoalmtodolento respectoaotros.OtradelasventajasdelacodificacinaritmticafrentealacodificacindeHuffmanesquela representacinsecalculaalvuelo,esdecir,serequieredemenosmemoria[WMB99]. PrediccinmedianteMatchingParcial(PPM) En 1984, Cleary y Witten introdujeron el algoritmo PPM [CW84]. Este algoritmo calcula las estadsticas de los smbolos en contextos que han aparecido anteriormente. En este algoritmo se emplea un codificador aritmtico para asignar cdigos a los smbolos. La desventaja de PPM es que son lentos en la ejecucin y requieren mayor memoria para almacenar las estadsticas de los smbolos. El algoritmo PPM obtienelasmejoresrazonesdecompresindentrodelgrupodealgoritmosdecompresinsinprdida.Subaja velocidaddeejecucinylosrequerimientosdememorialimitansuusoenlaprctica. Mtodossubstitucionalesobasadosendiccionario. Losmtodosbasadosendiccionariousanelprincipioderemplazarcadenasdedatosconcodewords que identifican a esa cadena dentro de un diccionario [WMB99]. El diccionario contiene una lista de subcadenas y codewords asociados a cadauna de ellas. El diccionario que contiene las cadenas desmbolos puede ser esttico o adaptable (dinmico). Los mtodos basados en diccionario, a diferencia de los mtodos estadsticos,usancodewordsdelongitudfijaynorequierendelasestadsticasdelossmbolospararealizarla compresin.Prcticamente,todoslosmtodosdecompresinsustitucionalesestnbasadosenlosmtodosde compresin desarrollado por Jacob Ziv y Abraham Lempel en los 70s, los mtodos LZ77 y LZ78. En ambos mtodosunasubcadenaesremplazadaporunapuntadoradondedichacadenahayaocurridopreviamenteen eldiccionario,elcual,secreadinmicamente.Lasprincipalesdiferenciasentrelosmtodossustitucionalesson encomolosapuntadoressonrepresentadosyenlaslimitacionesqueimponensobreloquelosapuntadores puedenrepresentar. LZ77 El mtodo LZ77 [ZL77] usa como diccionario parte de la informacin previamente leda. El codificador mantiene una ventana al archivo de entrada y recorre la entrada en esa ventana de derecha a izquierdatantasvecescomocadenasdesmbolossoncodificadas.Laventanasedivideendospartes,laparte delaizquierdasellamabufferdebsquedayeseldiccionarioactual;lapartedeladerechasellamabuffer haciaelfrenteycontienesmbolosaunnocodificados(figura2.4).Elalgoritmoparalacodificacinsemuestra enlafigura2.5.Inicialmente,elbufferdebsquedapuederellenarseconalgnsmboloinicialmientrasqueel bufferhaciaelfrenteserellenaconlosprimerossmbolosdelarchivodeentrada.Enlaprctica,elbufferde bsquedaesdealgunoscientosdebytesmientrasqueelbufferhaciaelfrenteesdedecenasdebytes.

MtodosdeCompresin:Diciembrede2003

MtodosdeCompresin

Bufferdebsqueda Bufferhaciaelfrente Archivodeentrada a1a2...akak+1ak+2...ak+nak+n+1 ak+n+2 ak+n+m ak+n+m+1 Smboloscodificados Smbolosacodificar Figura2.4DiccionarioenelmtodoLZ77 Eldecodificadoresmssimplequeelcodificador.Eldecodificadordebemantenerunaventanade igualtamaoquelaventanadebsquedaempleadaenelcodifcador.Inicialmente,estebufferesrellenadocon el mismo smbolo empleado para rellenar el buffer inicialmente en el codificador. Los pasos para realizar la descompresinselistanenlafigura2.6. 1. El codificador busca la subcadena ms grande en el buffer de bsqueda (de derecha a izquierda) queseaelprefijodelbufferhaciaelfrente. a. Sitalsubcadenaexiste,lacodificacinconsistedeunatripletaT=(O,L,C),dondeOesla distanciaensmbolosdesdeiniciodelasubcadenaencontradahastaelfinaldelbufferde bsqueda, L es la longitud de la subcadena encontrada y C es el smbolo siguiente a la subcadenaencontradaenelbufferhaciaelfrente. b. Silacadenanoexiste,OyLsonpuestosaceroyCeselprimersmbolodelbufferhaciael frente(enlafigura2.4,elsmboloak+n+1). AmbosbuffersserecorrenhacialaizquierdaL+1posiciones.

2.

Figura2.5AlgoritmodecodificacinenLZ77 ElmtodoLZ77norequieredelasfrecuenciasdeocurrenciadelossmbolospresentesenlosdatos quesevanacomprimir.Elmtodosolobuscapatronesdesubcadenaenelbufferdebsquedaqueocurranen el buffer hacia el frente, suponiendo que dichos patrones ocurren continuamente, al menos dentro de la subcadena que engloban ambos buffers. Si esta suposicin se cumple en el conjunto de datos que se va a comprimir, el mtodo logra buenas razones de compresin. El mtodo LZ77 ha sido mejorado desde su invencin,entrelasmejorasdestacanlautilizacindecamposOyLdelongitudvariableyelusodediferentes tamaos de diccionario (longitud de la ventana). La utilizacin de una ventana ms grande implica mayor tiempodebsquedadelospatronesyobligaalautilizacindemejoresestructurasdedatospararealizarla implementacin. Por otra parte, el utilizar una ventana ms grande implica el uso de campos O y L ms grandesconloquelarazndecompresinseveafectada.Otrofactoraconsiderarseeslaposibleexpansin delarchivoenvezdelareduccindeseada.Debidoaqueserequiereuncodeworddetrescampos,estopuede producirlaexpansindelarchivodesalidaparaloscasosdondelasubcadenaencontradaseadelongitud1o 2. Una posible solucin es escribir al archivo de salida codewords cuando la cadena encontrada sea de longitudmayora3yescribirlossmbolossincomprimircuandolacadenaencontradaseadelongitudmenor o igual a 3. Esto implica el uso de un smbolo especial que permita diferenciar al decodificador entre codewordsydatosnocomprimidos.

MtodosdeCompresin:Diciembrede2003

MtodosdeCompresin

1. EldecodificadorleecadatripletaT=(O,L,C).SedandoscasosparaL: a. Lesigualacero: i. Cseescribealarchivodesalida ii. ElbufferserecorrealaizquierdaunaposicinyserellenaconC b. Lesdiferentedecero: i. La subcadena S en el buffer iniciando en la posicin O (contando de derecha a izquierda)ydelongitudLsecopiaalarchivodesalida. ii. Cseescribealarchivodesalida iii. ElbufferserecorreLposicionesalaizquierda,serellenaconlasubcadenaL. iv. Elbufferserecorre1posicinalaizquierdayserellenaconelsmboloC. Figura2.6AlgoritmodedecodificacinenLZ77 LZ78 El mtodo LZ78 [ZL78] no utiliza una ventana sobre los datos a comprimirse como en el caso del LZ77.Setieneundiccionarioquecontienelascadenasquehanocurridopreviamente.Eldiccionarioestavaco inicialmenteysutamaoestalimitadoporlamemoriadisponible.Parailustrarlaformaenlaqueelmtodo funciona, considrese un diccionario (arreglo lineal) de N localidades con la capacidad de almacenar una cadena se smbolos en cada una de ellas. . El diccionario se inicializa guardando en la posicin cero del diccionariolacadenavaca.Elalgoritmodecodificacinsemuestraenlafigura2.7. 1. Mientrasexistansmbolosalaentrada a. S=Null,Pos=0 b. X=siguientesmbolodeentrada,S=SX c. MientrasSexistaeneldiccionario i. Pos=Pos(S) ii. X=siguientesmbolodeentrada,S=SX d. Salida:(Pos,X) e. GuardarSeneldiccionario Figura2.6AlgoritmodecodificacinenLZ78 Elprocesoesiterativoyterminacuandoyanoexistenmssmbolosalaentradaparacodificar.En cadaiteracinSseinicializaaNull(S=Nullindicaunacadenavacaquesiempreseencuentraenlaposicin cerodeldiccionario).ElsmboloXdelarchivodeentradaseleeysebuscalacadenaSX(concatenacindeSy X)eneldiccionario,silacadenaSXseencuentraeneldiccionario,SesahoraSXyseleeunnuevosmboloX. Nuevamente, se busca SX en el diccionario y si la cadena se encuentra, se vuelve a leer otro smbolo de entradayelprocesoserepitebuscandonuevamenteSXeneldiccionario.SilacadenaSXnoseencuentraen eldiccionario,seguardalacadenaSXenunaposicindisponibleeneldiccionarioyseescribealarchivode salidalaposicindeSdentrodeldiccionarioyelsmboloX. A diferencia del mtodo LZ77, ahora los codewords se componen solo de dos campos, un campo apuntadorondicequeidentificalaposicindeunacadenadentrodeldiccionarioyuncampoquecontieneel ltimo smbolo que se ha ledo de la entrada. Entre ms grande sea el diccionario, mas cadenas son almacenadasysetienenconcordanciasdecadenasmsgrandesquemejoranlarazndecompresin,perose requierenapuntadoresmsgrandesyeltiempodebsquedaseincrementa.Larepresentacindeldiccionario puedeserunaestructuraderbolllamadatrie.Enestecaso,inicialmente,elrbolsecomponenicamentede una nodo raz que representa la cadena vaca. Todos las cadenas que comienzan con la cadena vaca se agreganalrbolcomohijosdelaraz.Cadaunodelossmbolosquesonhijosdelarazseconviertenahoraen larazdeunsubrbolparatodoslascadenasquecomienzanconesesmbolo.Enlatabla2.3yfigura2.7se

MtodosdeCompresin:Diciembrede2003

MtodosdeCompresin

muestranlasrepresentacionesdeldiccionarioenformalinealyderbolrespectivamentedelacodificacinde lacadenaabacabacabamedianteelmtodoLZ78. Tabla 2.3 Diccionario lineal en LZ78 Diccionario Codeword 0 Null 1 a (0,a) 2 b (0,b) 3 ac (1,c) 4 ab (1,b) 5 aca (3,a) 6 ba (2,a) Null a b c b a a Figura2.7DiccionarioLZ78comounrbol La representacin de rbol tiene dos ventajas principales: la asignacin de memoria se realiza conforme nuevos smbolos se agreguen al rbol y la bsqueda de cadenas se realiza ms rpido. Cuando el espacio de memoria asignado se agota, las nuevas cadenas ya no se agregan pero el rbol an sirve para continuarconlacodificacin.Elrbolpuedevaciarseporcompletoyreiniciarellaconstruccinconlosnuevos smbolosdeentradaobien,sepuedeneliminardelrbolsoloaquellascadenasqueseanmenosutilizadas.En este ltimo caso, no existe un buen algoritmo que decida que nodos deben eliminarse y de que forma debe realizarse tal eliminacin [S02]. La codificacin en LZ78 es ms rpida que la realizada en LZ77 pero el decodificadorenLZ78esmscomplejoqueenLZ77.Eldecodificadordebeconstruirymantenereldiccionario delamismaformaquelorealizelcodificador. LZW ElmtodoLZW[W84]esunavariantedelmtodoLZ78.Elcodewordconsisteahoradenicamente una referencia a la posicin en el diccionario dela cadena encontrada.En el casode codificar smbolos de 8 bits, las primeras 256 posiciones del diccionario se inicializan con los 256 smbolos antes de iniciar la codificacin. Este paso inicial asegura que cualquier smbolo ledo de la entrada siempre se localizar en el diccionarioconloqueesposiblemanejarnicamenteunapuntadoralaposicindeldiccionariocomocdigo de salida. El codificador lee cada smbolo de la entrada y los acumula en una cadena S. Cada vez que un smbolo X es ledo de la entrada, el smbolo se concatena con S y la cadena resultante se busca en el diccionario.Siemprequelaconcatenacinesencontradaeneldiccionario,unnuevosmboloXesledodela entrada,seconcatenaaSyserealizalabsquedadelanuevacadenaSX.CuandolaconcatenacinSXnose encuentraeneldiccionario(SseencuentraeneldiccionarioperoSXnoseencuentra),elcodificadorescribea lasalidalaposicineneldiccionariodelacadenaS,guardaSXenunalocalidaddisponibleeneldiccionarioe inicializaSconelsmboloX.ElalgoritmodelcodificadorLZWsemuestraenlafigura2.8.

MtodosdeCompresin:Diciembrede2003

MtodosdeCompresin

1. Parai=0hasta255 a. Pos(i) Si 2. S=Cadenavaca 3. Mientrasexistansmbolosenlaentrada a. X=siguientesmbolodeentrada b. MientrasSXseencuentreeneldiccionario i. S SX ii. X=siguientesmbolodeentrada c. EscribiralasalidaPosicindeSeneldiccionario d. GuardarSXeneldiccionario e. S X Figura2.8AlgoritmodecodificacinenLZW EltamaodeldiccionarioenLZWdebesermayorde256localidades.LasimplementacionesdeLZW amenudousanapuntadoresde9a16bits(diccionariode512a64Kb).Cuandoeldiccionariosellena,sedeben tomarencuentalasmedidasnecesarias,delamismaformaqueenLZ78.AligualqueeLZ78,undiccionario grande implica mejor razn de compresin a costa de mayor tiempo para realizar la compresin. LZW se adaptalentamentealaentradadelosdatosyaquelaconstruccindelascadenasofrasesserealizadecarcter encarcter. La decodificacin en LZW se realiza de la siguiente forma: El diccionario se construye con las 256 primeras posiciones con los 256 smbolos. El decodificador lee el archivo comprimido, el cual consiste de apuntadoresaldiccionario.Cadaapuntadorindicalaposicineneldiccionariodedondeserecuperaranelo los smbolos no comprimidos para escribirlos al archivo de salida. El decodificador tambin construye el diccionariodelamismaformaqueelcodificadorconformenuevossmbolossonrecuperadosdeldiccionario. Cuando se lee el primer apuntador del archivo comprimido, se recupera el smbolo X almacenado en esa posicin en el diccionario y se asigna a S (S X). S se escribe al archivo de salida y se lee el siguiente apuntador. El contenido del apuntador se almacena en una variable T y tambin se escribe en el archivo de salida, el primer smbolo S1 de T se concatena con S para formar la cadena SS1, si SS1 no existe en el diccionario entonces se agrega. S es ahora T, se lee el siguiente apuntador y se repiten los mismos pasos. El algoritmo de decodificacin se muestra en la figura 2.9. En la tabla 2.4 se muestra el diccionario despus de aplicar el algoritmo de codificacin LZW a la cadena de entrada abacabaca. En la figura 2.10 se muestra los pasosdedecodificacinsegnelalgoritmodelafigura2.8paraelejemplodelatabla2.4. 1. P Primerapuntadorenarchivocomprimido 2. S Pos(P).EscribiralarchivodesalidaS. 3. P Siguienteapuntadorenelarchivocomprimido 4. T Pos(P).EscribiralarchivodesalidaT. 5. S1 primersmbolodeT 6. AgregarSS1eneldiccionario,sidichacadenanoseencuentra. 7. S T.Regresaralpaso3. Figura2.9AlgoritmodedecodificacinenLZW

MtodosdeCompresin:Diciembrede2003

MtodosdeCompresin

Tabla2.4DiccionariodespusdeaplicarelalgoritmodecodificacinLZW Pos 0 1 2 3 4 5 6 7 8 9 Frase a b c ab ba ac ca aba aca a(eof) CdigodeSalida 0 1 0 2 3 5 0

Figura2.10DecodificacinenLZWparaelejemplodelatabla2.4

MtodosdeCompresin:Diciembrede2003

MtodosdeCompresin

EldiccionarioenLZWpuedeimplementarse,aligualqueenLZ78,pormediodeuntrie.Cadanuevacadena agregadaaldiccionarioesdiferentenicamenteenunsmbolorespectoaotracadenayaexistente(loqueenel trieseraunacadenapadre).Elproblemaconestarepresentacinsonlasmltiplesramasqueunnodopuede contener. OtrosmtodosdecompresinsinprdidabasadosendiccionariossonLZS,LZSS,RunLengthyXMatch. Comparacinentrelosmtodosdecompresin Laseleccindeunmtododecompresindentrodelosqueexistennoessencilla.Unmtodopuede ser ms rpido que otro, otros pueden lograr mejores razones de compresin, otros pueden requerir mayor memoria de trabajo. Las implementaciones de los mtodos de compresin estn siendo mejoradas continuamente por lo que resulta difcil dar resultados definitivos. El desempeo de los mtodos de compresindependedetipodedatoquesevaacomprimir.Paramedireldesempeodelosprogramas,en este trabajo, se utiliza el corpus de Canterbury [CB] como benchmark. El corpus se compone de 11 archivos quefueronseleccionadosconelpropsitodeprobarsistemasdecompresin.Lastresmtricasaconsiderarse son:razndecompresin,tiempodeejecucinyrecursosdememoria.Lavelocidaddeejecucinesdifcilde estableceryaquedependedevariosfactorescomoquetanbienfueimplementadoelmtodo,laarquitectura delamquinasobrelaqueseejecutelprogramayquetanbuenofueelcompiladorempleado. Comentariosfinales Enlaprctica,encuantoacompresinestadsticaserefiere,espreferiblecodificacindeHuffmanya queobtienerazndecompresincercanaalaptima(entropadelafuente)yesmsrpidoquecodificacin aritmtica y requiere menos recursos que PPM. La codificacin en LZ78 es ms rpida que la realizada en LZ77,yaquenoserealizanlascomparacionesbuscandomatchdesubcadenasperoeldecodificadorenLZ78 esmscomplejoqueenLZ77yaqueeldiccionariodebeconstruirsedelamismaformaqueenelcodificador. LZW,queesunamejoraalmtodoLZ78,seadaptalentamentealaentradadelosdatosyaquelaconstruccin de las cadenas o frases se realiza de carcter en carcter (es ineficiente para casos donde existe un mismo smbolo repetido varias veces). Los compresores estadsticos logran mejor razn de compresin que los compresores sustitucionales pero la complejidad computacional y requerimientos de memoria para los compresoresestadsticossonmuchomayoresqueenloscompresoressustitucionales(porejemplo,LZrequiere decenas de kilobytes mientras que PPM por ejemplo requiere de cientos o miles de kilobytes). Adems, la decodificacin es ms simple y ms rpida en los mtodos sustitucionales que en los mtodos estadsticos. Todos los mtodos de compresin adaptables, que son los mtodos que ofrecen mejores razones de compresin,requierenunacantidadsignificativadememoriadurantelacompresinydescompresin. Referencias
[S02]

Salomon,D,AGudetoDataCompresinMethods,NewYork,SpringerVerlag,2002. Witten. I.H., Moffat, A. and Bell, T.C., Managing Gigabytes: Compressing and Indexing Documents and Images,SecondEdition,SanFrancisco,CA,AcademicPress,1999. Weiss,J.andSchremp,D.Puttingdataondiet.IEEESpectrum,August1993. Stauffer, L.M., and Hirschberg, D.S. Parallel Text Compression. Technical Report 9144, Unuversity of California,Irvine.January1993. Cleary,J.G.andWitten,I.H.DataCompressionusingadaptivecodingandpartialstingmatching,IEEE TransactionsonCommunications,32(4),396402.1984. ung,B.andBurleson.W.P.RealTimeVLSIcompressionforhighspeedwirelesslocalareanetworks,inData J CompressionConference,March1995. owler,J.andYagel,R.(1994)LosslessCompressionofVolumeData,SymposiumonVolume F Visualization,pp.4350,Oct.1994.

[WMB99]

[WS93]

[SH93]

[CW84]

[JB95]

[FY94]

MtodosdeCompresin:Diciembrede2003

MtodosdeCompresin

[H52]

uffman,D.,AMethodfortheConstructionofMinimumRedundancyCodes,ProceedingsofdeIRE40(9): H 10981101. itten,I.H.,Neal,R.M.,Cleary,J.G.,ArithmeticCodingforDataCompression,Communicationofthe W ACM,Vol30,No.6,pp.520540,June1987 ormack,G.V.,andHorspool,R.N.AlgorithmsforAdaptiveHuffmanCodes.Inf.ProcessingLetters C 18,3(March1983),pp.159166. Shannon,C.E.,Amathematicaltheoryofcommunication,inKeyPapersintheDevelopmentof InformationTheory(D.Slepian,ed.),pp.518,NewYork:IEEEPress,1948. iv,J.andLempel,A.,AUniversalAlgorithmforSecuentialDataCompression,IEEETrans. Z InformationTheory,vol.23,pp.337343,May1977. iv,J.andLempel,A.,CompressionofIndividualSecuencesviaVariableRateCoding,IEEE Z TransactionsonInformationTheory,vol.24,pp.530536,1978. Welch,T.,ATechniqueforHighPerformanceDataCompression,IEEEComputer,vol.17,pp.819, June1984. CanterburyCorpus.Disponibleenhttp://corpus.canterbury.ac.nz

[WNC87]

[CH83]

[Sha48]

[ZL77]

[ZL78]

[W84]

[CB]

MtodosdeCompresin:Diciembrede2003

S-ar putea să vă placă și