Compresión de Datos en las Comunicaciones

1 Introducción


1.1 ¿Para qué la compresión?

En Ios úILImos uños se Iu dudo un uumenLo especLucuIur LunLo de Iu cupucIdud
de uImucenumIenLo de Ios ordenudores como de Iu veIocIdud de proceso de és-
Los.

A esLo Io ucompuñu unu bujudu de Ios precIos de memorIu prIncIpuI y
secundurIu usi como LumbIén un uumenLo de veIocIdud de esLos dIsposILIvos.
EsLo nos Iuce pregunLurnos ¿puru qué Iu compresIón?

SIn emburgo, eI uuge que úILImumenLe Iun LenIdo Ius redes de ordenu-
dores Iuce que cudu vez mus usuurIos pIdun mus presLucIones u Iu red sobre Iu
que esLun conecLudos. PresLucIones que, como sIempre, esLun por encImu de Ius
posIbIIIdudes reuIes. Cuundo IubIumos de posIbIIIdudes nos reIerImos prIncI-
puImenLe u Iu veIocIdud de LrunsIerencIu de duLos. EsLe es eI prIncIpuI hcndi-
ccp uI que se enIrenLun Lodus Ius redes.

EI cumbIo u muyores veIocIdudes no es Lureu IucII. BusIcumenLe por Ios
sIguIenLes moLIvos:

• ¡us grundes compuñius de redes WAN son IenLus en cuunLo u cumbIos
se reIIere. EsLo se debe u su vez uI voIumen de cumbIo requerIdo, Le-
nIendo en cuenLu Iu cunLIdud de InIruesLrucLuru que debe ser modIII-
cudu (cubIeudo, LecnoIogius, eLc.)
• OLro probIemu es Iu IuILu de LecnoIogiu que ucepLe unus veIocIdudes
muy eIevudus de LrunsmIsIón. Por ejempIo, podemos pensur que uI
usur cubIe de pur Lrenzudo puru eI LeIéIono podriumos Lener unu veIo-
cIdud de LrunsIerencIu desde nuesLro módem de, dIgumos, 1 Mbps.
sIn probIemus. EI probIemu vIene con Ius Iurgus dIsLuncIus. SI unu
compuñiu de servIcIos LeIeIónIcos quIere munLener sImuILuneumenLe
1ooo IIumudus InLernucIonuIes (Io cuuI no es un número muy dIspuru-
Ludo), eI cubIe (y Iu LecnoIogiu) deberiu permILIr 1ooo Mbps., Io cuuI
es unu veIocIdud Io suIIcIenLemenLe grunde como puru requerIr unu
InversIón ImporLunLe, conLundo udemus con que se consIgu Iu Lecno-
Iogiu upropIudu.

En esLe enLorno, puru conseguIr muyores presLucIones de veIocIdud, Ios
ImpIemenLudores de Ios progrumus deben recurrIr u LécnIcus que Ies permILun
superur de uIgunu muneru Ius deIIcIencIus IisIcus de Iu red y de Ios equIpos de
conexIón (que Ies permILu, por ejempIo, oIrecer vIdeoconIerencIu u Lruvés de
módems de 1q.qoo bps.)

¡u LécnIcu mus ImporLunLe en esLe senLIdo es Iu compresIón de duLos. ¡u
compresIón de duLos es beneIIcIosu en eI senLIdo de que eI proceso de compre-
sIón-LrunsmIsIón-descompresIón es mus rupIdo que eI proceso de LrunsmIsIón
sIn compresIón. Podemos expresur Iu gununcIu de veIocIdud con unu IórmuIu
sencIIIu:


donde ρ es Iu reIucIón enLre LIempo que se Lurduriu puru LrunsmILIr comprI-
mIendo y sIn comprImIr (en LunLo por uno), c es Iu veIocIdud de compresIón en
bps (se supone IguuI u Iu veIocIdud de descompresIón y depende deI uIgorIL-
mo), D es eI número de bits que componen eI mensuje u LrunsmILIr, b es Iu ve-
IocIdud de LrunsIerencIu de Iu Iineu en bps y r es eI rctio medio de compresIón
deI uIgorILmo uLIIIzudo, que se puede escrIbIr como bits comprimidos J bits
totcles y se consIgue u Lruvés de unu medIdu empiricu.

¡u IórmuIu quedu sencIIIu LenIendo en cuenLu que en eI numerudor Le-
nemos eI LIempo que Iu LrunsmIsIón Lurdu en reuIIzurse sI uLIIIzumos compre-
sIón: eI proceso de comprImIr se reuIIzu dos veces (compresIón y
descompresIón) y Lurdu D,c segundos y Iu emIsIón se Iuce sobre unu IruccIón
de Ios duLos orIgInuIes dudu por r, que es r¨D bILs, u unu veIocIdud de LrunsmI-
sIón b: r¨D,b segundos.

En eI denomInudor Lenemos eI LIempo de LrunsmIsIón.

Vemos que en úILImo LérmIno Iu IórmuIu no depende de Iu cunLIdud de
duLos u LrunsIerIr, D, sIno de Ius dIsLInLus veIocIdudes de compresIón y emIsIón
(como cubriu esperur). SIempre que ρ seu menor que 1, se conseguIru venLuju
en veIocIdud uI comprImIr Iu InIormucIón. SI suponemos que ρ es o.¸, eI LIem-
po de LrunsmIsIón uLIIIzundo compresIón es Iu mILud que sIn usurIu.

Puru un vuIor normuI de r = 1Jz, vemos que seru renLubIe comprImIr
cuundo ρ < 1, es decIr, sI (z¨b + r¨c) ,c < :, es decIr, sI h < c,q.
c
c r b
b
D
b c
D c r D b
b
D
b
D r
c
D

+
=
+
=
+
= ρ

SI suponemos que Iu InIormucIón yu esLu guurdudu en Iormu comprImI-
du, Iu LrunsmIsIón sImpIemenLe reduce su LIempo en un IucLor r.

Pero no sóIo es puru Iu LrunsmIsIón puru Io que se usu Iu compresIón.
TumbIén puru eI uImucenumIenLo musIvo. ¡u necesIdud de uImucenumIenLo
LumbIén crece por encImu de Ius posIbIIIdudes deI crecImIenLo de Ios dIscos
duros o memorIu. Nos busLu pensur, por ejempIo, en eI proyecLo deI Genomc
Humcno ó en Ios grundes servIdores de tídeo en demcndc con cIenLos o mIIes
de peIicuIus, ocupundo cudu unu vurIos GIgubyLes.

1.2 Concepto y modelo de Infor-
mación

¡u Teoríc de lc Injormcción es Iu dIscIpIInu que se encurgu deI esLudIo y
cuunLIIIcucIón de Ios procesos que se reuIIzun sobre Iu injormcción.

Puru esLe esLudIo, es obvIo que necesILumos unu muneru de medir Iu in-
jormcción. Tenemos que pusur de nuesLru InLuIcIón u unu deIInIcIón muLemu-
LIcu que

u. esLé de ucuerdo con nuesLru vIsIón InLuILIvu
b. nos permILu medIr y compurur Ios procesos sobre eIIu

Puru IIegur u unu medIdu de Iu InIormucIón, repusuremos Iu Ideu InLuILI-
vu que Lenemos de ésLu. En prImer Iugur vemos que Iu cunLIdud de InIormucIón
que nos proporcIonu cIerLo duLo es menor cuunLo mus esperumos ese duLo. SI
unu personu nos comenLu eI LIempo que Iuce en ¡ondres, uI decIrnos ¨IIuvIoso¨
no obLenemos cusI InIormucIón, yu es Io que esLubumos esperundo con muyor
probubIIIdud. SI por eI conLrurIo nos dIcen que ¨soIeudo¨, recIbImos mus In-
IormucIón, yu que Iu probubIIIdud de que esLo ocurru es menor.

Podemos consIderur Ius InIormucIones ucercu deI LIempo en ¡ondres
como duLos que recIbImos de cIerLu vurIubIe uIeuLorIu que, cudu vez que Ie pre-
gunLumos, nos dIce eI LIempo que Iuce en ¡ondres. EsLu vurIubIe uIeuLorIu se
convIerLe en unu juente de injormcción. NuesLru Ideu de Iu probcbilidcd de
ocurrencic de cIerLo evenLo que nos du InIormucIón quedu uIoru modeIudu por
unu vurIubIe uIeuLorIu y su conjunLo de mensujes y probubIIIdudes usocIudus.
Puru eI cuso unLerIor, Lenemos, por ejempIo:

Tiempo Prohohi-
lidod
¡IuvIoso o.;o
SoIeudo o.¸o

Con esLe modeIo Lendremos uIgo mus concIsu nuesLru Ideu de injormc-
ción: unu IuenLe de InIormucIón puede ser modeIudu como unu vurIubIe uIeuLo-
rIu; uI recIbIr un mensuje de esu IuenLe, obLenemos unu cunLIdud de
InIormucIón, que depende sólo de Iu probubIIIdud de emIsIón de ese mensuje;
udemus, Iu cunLIdud de InIormucIón es unu IuncIón crecIenLe con Iu Inversu de
Iu probubIIIdud (cuunLu menor probubIIIdud, muyor cunLIdud de InIormucIón
recIbImos, como vImos con eI ejempIo).

¡u çcncncic de injormcción que experImenLumos, pues, uI recIbIr un
mensuje, se puede enLender como Iu reducción de incertidumbre sobre el estc-
do de lc juente que experImenLumos Lrus recIbIr eI mensuje.

¡u úILImu consIderucIón que puede Iucerse es unu que, por un Iudo es
InLuILIvu y por oLro purece InLencIonudu puru IIegur u Iu cuunLIIIcucIón IInuI de
Iu injormcción. Se reIIere u que Iu cunLIdud de InIormucIón que recIbImos con
n mensujes de unu IuenLe de m posIbIes mensujes debe ser Iu mIsmu que uI re-
cIbIr un mensuje de unu IuenLe con m
n
mensujes. EsLo nos sugIere unu IuncIón
IoguriLmIcu puru Iu cunLIdud de InIormucIón, yu que sI suponemos que Lenemos
dos IuenLes equIprobubIes de m y m
n
mensujes respecLIvumenLe, Iu InIormu-
cIón uI recIbIr n mensujes de Iu prImeru IuenLe es

n ¨ j(m)

donde j es Iu IuncIón crecIenLe, por uIoru sIn deLermInur (nóLese que uI ser Iu
IuenLe equIprobubIe, Iu probubIIIdud de cuuIquIer mensuje es :,m. Pero j es
IuncIón de Iu intersc de Iu probubIIIdud, por Io que depende de m). Por oLro
Iudo, Iu recepcIón de un mensuje de Iu segundu IuenLe nos du unu InIormucIón

j(m
n
)

AI Iucer Iu IguuIdud, Lenemos que n ¨ j(m) = j(m
n
), sugIrIendo como se dIjo
unu IuncIón IoguriLmIcu.

En 1qq8, Cluode Shunnon propuso unu medIdu puru Iu InIormucIón
que cumpIiu Lodus Iu expecLuLIvus unLerIores. SI suponemos unu IuenLe I de
InIormucIón de n mensujes Ii, cudu uno con probubIIIdud pi, Lenemos que Iu
InIormucIón uI recIbIr un mensuje quedu como:

i i p F F I − = =
TenIendo esLu medIdu, podemos IuIIur Iu medidc de injormcción medic
de Iu IuenLe de InIormucIón ó entropíc de I IucIendo sImpIemenLe Iu esperun-
zu muLemuLIcu de Iu InIormucIón de cudu simboIo:


SI uLIIIzumos IogurILmos en buse z, esLu medIdu esLuru en bits. SI uLIII-
zumos neperIunos, obLendremos ncts. Pero Io que ImporLu es que esLu medIdu
nos du unu coLu superIor de Iu coLu de compresIón. No se puede InvenLur nIn-
gunu codIIIcucIón que consIgu unu IongILud en bILs medIu por simboIo emILIdo
menor que Iu enLropiu de Iu IuenLe sobre Iu que se reuIIzu Iu codIIIcucIón. EsLo
es, sIn emburgo, unu coLu LeórIcu. ¡os compresores ucLuuIes no IIegun u esLu
coLu pero quedun muy cercu.

1.3 Tipos de compresión

Es muy dIIicII cIusIIIcur Ios dIsLInLos LIpos de compresIón de duLos que
exIsLen, debIdo u que, por un Iudo Lenemos mucIos uIgorILmos: ¡Z;;, ¡Z;8,
¡ZW, HuIImun, urILméLIcos, IrucLuIes, MPEG, JPEG, eLc.

Ademus, Iuy mucIus upIIcucIones que uLIIIzun Iu compresIón con dIsLIn-
Lus expecLuLIvus: compresIón de duLos, video y voz, compresIón en LIempo reuI,
eLc. A su vez, cudu uno de esLos usos requIere unus curucLerisLIcus de veIocIdud,
reversIbIIIdud (que eI uIgorILmo puedu ser upIIcudo de Iormu reversIbIe puru
obLener Ios duLos orIgInuIes), pérdIdu minImu de InIormucIón (en eI cuso de Ios
uIgorILmos con pérdIdu de InIormucIón, eLc.).

DebIdo u esLo, se Iu eIegIdo unu cIusIIIcucIón muy generuI Lomundo co-
mo curucLerisLIcu de dIvIsIón Iu reversIbIIIdud deI uIgorILmo. Asi, Ios uIgorILmos
de compresIón se pueden dIvIdIr en dos LIpos:

• Compresores lossless o sIn pérdIdus, en eI senLIdo de que guurdu ub-
soIuLumenLe Lodu Iu InIormucIón orIgInuI (es reversIbIe). Se uLIIIzun
puru Iu compresIón de duLos, en Ios que no se puede dur pérdIdu de
InIormucIón.
• Compresores lossg o con pérdIdus. ¡u compresIón Iuce que se pIer-
du InIormucIón de Iu IuenLe orIgInuI. SIn emburgo, esLu pérdIdu es In-
sIgnIIIcunLe en compurucIón con Iu gununcIu en compresIón. Se uLIIIzu
sobre Lodo en Imugenes y sonIdo, donde se puede ¨enguñur¨ u Ios sen-
LIdos, donde unu pérdIdu de cuIIdud upenus es percIbIdu (pero ocu-
sIonu un rctio de compresIón mucIo muyor).

= =
− = = =
n
i
i i
n
i
i i p p F F I p F H




2 Compresión lossless

En esLu seccIón se Iuru un repuso u Ios dIsLInLos LIpos de compresIón
lossless mus comunes. PosLerIormenLe se LruLuru Iu compresIón lossç. Se co-
menzuru exponIendo en Iineus generuIes cuuIes son Ios LIpos de compresIón
lossless mus conocIdos y uLIIIzudos, exponIendo uIgunos ejempIos de uIgorIL-
mos reuIes que upIIquen cudu LIpo de compresIón. ¡InuImenLe se comenLurun
posIbIes udupLucIones puru Ios uIgorILmos de muneru que puedun ser uLIIIzudos
en enLornos de compresIón en LIempo reuI. Como un úILImo punLo, se comen-
Luru cuuI puede ser eI IuLuro de Iu compresIón de duLos lossless.


2.1 Tipos de compresión

Huy busIcumenLe dos LIpos de compresores J uIgorILmos de compresIón
IossIess:

• Compresores estudisticos.
• Compresores busudos en diccionurio ó sostitocionules.

No purece exLruño que IubIendo usudo unu medIdu de InIormucIón bu-
sudu en Ius probubIIIdudes nos enconLrurumos con compresores que uLIIIcen
Ius propIedudes esLudisLIcus de Iu IuenLe de InIormucIón puru mejorur Iu codIII-
cucIón (eI conjunLo de simboIos de suIIdu usocIudos u cudu mensuje emILIdo por
Iu IuenLe) de Ios mensujes de Iu IuenLe. EsLos son Ios compresores estudisti-
cos.

EsLe LIpo de compresores purLen de:

u. unu IuenLe de InIormucIón de n mensujes
b. Ius probubIIIdudes de upurIcIón de cudu mensuje de Iu IuenLe (que
pueden ser exLruidus u prIorI de Iormu experImenLuI o pueden ser du-
dus y IIjus)
c. un cljcbeto de suIIdu que consLu de unu serIe de simboIos (por ejem-
pIo, eI uIIubeLo bInurIo consLu de Ios simboIos o y 1).

y su objeLIvo es usIgnur unu codijiccción puru Ios mensujes de Iu IuenLe. Unu
codijiccción es unu IuncIón que u cudu mensuje de Iu IuenLe usIgnu unu cudenu
de simboIos deI uIIubeLo de suIIdu. EsLu codIIIcucIón debe ser LuI que expIoLe Iu
redunduncIu en Iu InIormucIón dudu por Iu IuenLe puru producIr compresIón.
SI uLIIIzumos un uIIubeLo bInurIo, Iu esperunzu muLemuLIcu de Iu IongILud de Ius
cudenus de simboIos de Iu codIIIcucIón, Lomundo como probubIIIdudes Ius de
Ios mensujes u Ios que represenLun, se debe ucercur u Iu coLu LeórIcu de SIun-
non. SI es IguuI, Iu compresIón es perIecLu: Iuy unu muxImu eIIcIencIu.

Por su purLe, Ios compresores sostitocionules munLIenen un dIccIonu-
rIo de Ius cudenus de mensujes que Iun sIdo emILIdus unLerIormenLe por Iu
IuenLe. Cudu cudenu esLu represenLudu por un indIce en eI dIccIonurIo. AI pro-
cesur Ios mensujes de Iu IuenLe, sI unu cudenu yu Iu sIdo recIbIdu unLerIormen-
Le, se susLILuye en Iu suIIdu por eI indIce que ésLu ocupu en eI dIccIonurIo. Como
Ios indIces son normuImenLe mus pequeños que Ius cudenus, se consIgue com-
presIón. OLru LécnIcu es uLIIIzur Iu propIu enLrudu como dIccIonurIo, y codIIIcur
Ius repeLIcIones como un ¨suILo IucIu uLrus¨ y unu IongILud de coIncIdencIu.
Mus sobre esLo después.


2.2 Compresores estadísticos

En esLu seccIón exumInuremos Ios compresores que uLIIIzun Iu InIormu-
cIón de Ius probubIIIdudes de Ios mensujes de Iu IuenLe puru consLruIr unu codI-
IIcucIón.

Puru sImpIIIIcur, supondremos que nuesLrus IuenLes de InIormucIón son
IIcIeros ASC¡¡ de 8 bILs y que cudu curucLer es un mensuje de Iu IuenLe (z¸6
mensujes). EI conocer Ius probubIIIdudes de cudu mensuje ImpIIcu que eI com-
presor debe reuIIzur unu prImeru pusudu por eI IIcIero puru recuperur Ius Ire-
cuencIus (o probubIIIdudes, yu que son Inversus) de cudu mensuje (byLe ASC¡¡).
EsLo puede ser un probIemu, sobre Lodo puru dIsposILIvos de cInLu de unu soIu
pusudu. SIn emburgo, se puede urgumenLur que Iu codIIIcucIón se puede reuII-
zur sobre bIoques (uunque dependIendo deI Lumuño de Ios bIoques se puede
degrudur Iu eIIcIencIu o ucercumIenLo u Iu coLu de SIunnon) ó uLIIIzurse uIgo-
rILmos udupLuLIvos, que después se comenLurun LumbIén.

EnLre Ios compresores esLudisLIcos podemos enconLrur vurIos LIpos:

• Compresores deI LIpo HoIImun ó Shunnon-Iuno
• Compresores uritméticos
• Compresores predictivos

2.2.1 Compresores Huffman y Shannon-
Fano

Ambos uIgorILmos LermInun consLruyendo un urboI que represenLu Iu
codIIIcucIón que de Ios mensujes de Iu IuenLe se Iu reuIIzudo, de muneru que
Ios nodos Ioju conLIenen cudu uno de Ios mensujes emILIdos por Iu IuenLe. En
eI cuso mus sImpIe, eI uIIubeLo de suIIdu en eI que se reuIIzu Iu codIIIcucIón es
bInurIo. EsLo quIere decIr que de cudu nodo purLIrun dos rumus, unu puru eI o y
oLru puru eI 1. EI códIgo puru cudu mensuje se consLruye sIguIendo eI cumIno
desde eI nodo ruiz IusLu Iu Ioju que represenLu eI mensuje.

NóLese que esLe esquemu nos permILe que sI, u Iu Ioru de descomprImIr,
eI decodIIIcudor HuIImun o SIunnon-¡uno poseen eI mIsmo urboI que se IIzo
puru comprImIr, Iu decodIIIcucIón es Lun sencIIIu como Ieer bits de Iu IuenLe u
descomprImIr y seguIr eI cumIno desde Iu ruiz IucIu ubujo bIIurcundo IucIu un
Iudo o IucIu oLro dependIendo deI vuIor deI bIL. EvenLuuImenLe IIeguremos u
unu Ioju, que represenLu uI mensuje que se esLubu recIbIendo.

Pero esLo Loduviu no LIene nudu de purLIcuIur. ¡o verduderumenLe Impor-
LunLe es que Iu codIIIcucIón resuILunLe de Iu upIIcucIón de esLos uIgorILmos
usIgnu IongILudes de codIIIcucIón inversumente proporcionules u Iu pro-
bubIIIdud de upurIcIón de cudu mensuje. Es decIr, eI mensuje que mus upurezcu
Lendru unu codIIIcucIón mus corLu, con Io que se uIorruru espucIo en Iu Lruns-
mIsIón. Recuérdese que Ios mensujes con mus probubIIIdud son Ios que menos
InIormucIón dubun, por eso, usIgnumos menos simboIos deI uIIubeLo de suIIdu
en su codIIIcucIón.

Hemos IubIudo deI objeLIvo de umbos uIgorILmos: Iu consLruccIón deI
urboI de códIgos que represenLu u Iu codIIIcucIón obLenIdu. En donde dIIIeren
es en Iu muneru de conseguIr eI IIn. Ambos consLruyen eI urboI de muneru que
Ios mensujes con menor probubIIIdud quedun mus ubujo en eI urboI, sIn em-
burgo, HuIImun Io Iuce botton-up y SIunnon-¡uno top-doun.

En cudu puso, HuIImun recoge Ios dos nodos con menor probubilidud
deI urboI. ConsLruye enLonces un nodo pudre de umbos y se Iu usIgnu Iu probu-
bIIIdud sumu de umbos IIjos. EsLe proceso Iuce que eI urboI crezcu y Ios nodos
con menor probubIIIdud queden mus Iondo, LuI y como queriumos. Ademus, es
ópLImo y uIcunzu Iu muxImu eIIcIencIu cuundo Ius probubIIIdudes de Ios mensu-
jes son poLencIus exucLus de dos. ¡u ImpIemenLucIón de esLe uIgorILmo es muy
sencIIIu sI uLIIIzumos unu esLrucLuru de duLos conocIdu como hecp. Un hecp es
un urboI bInurIo compIeLo de LuI muneru que cuuIquIer nodo es menor que
cuuIquIeru de sus IIjos. En purLIcuIur Iu ruiz conLendru uI menor de Lodos. ¡us
InsercIones y exLruccIones de un hecp se Iucen umbus en O(Iogz n). Un ejem-
pIo de códIgo C++ que reuIIzu Iu consLruccIón deI urboI podriu ser eI sIguIenLe:

// Crear el heap que contendrá en principio los mensajes a codificar
heap<nodo> h(nMsg * 2); // mayor número de nodos del árbol

// Insertar en el heap los mensajes a codificar
for (i=0;i<nMsg;i++)
if (msg[i]->freq != 0) // Sólo los que hayan salido
h.insert(msg[i]);

// Cuando sólo quede uno, será el nodo que debajo contiene a todos
// los mensajes. El árbol ya está construído. La raíz será h.get().
while (h.numElem() != 1)
{
// Construir un nuevo nodo que será el padre de los dos nodos
// menores
nodoTmp = new nodo(0); // Nuevo nodo, frecuencia 0

// Recuperar el hijo izquierdo
tmpSon = h.get(); // Coger el menor
tmpSon->dad = nodoTmp; // Actualizar su padre
tmpSon->branch = 0; // Y su rama (para el camino)

nodoTmp->lson = tmpSon; // Actualizar el hijo izquierdo
nodoTmp->freq += tmpSon->freq;

// Recuperar el hijo derecho
tmpSon = h.get(); // Coger el menor
tmpSon->dad = nodoTmp; // Actualizar su padre
tmpSon->branch = 1; // Y su rama (para el camino)

nodoTmp->rson = tmpSon; // Actualizar el hijo derecho
nodoTmp->freq += tmpSon->freq;

// Insertar el nuevo nodo padre
h.insert(nodoTmp);
}

·
· // Procesar el árbol, es decir, construir los códigos para
· // cada mensaje y codificar la entrada.
·

delete h.get(); // Borra todos los nodos
}

AI conLrurIo, SIunnon-¡uno Lrubuju desde urrIbu IucIu ubujo. AI prIncI-
pIo consIderu Lodos Ios mensujes en un soIo conjunLo. En cudu puso, dIvIde eI
conjunLo en dos conjunLos que conLengun cusi lu mismu probubilidud (es
cIuro que en generuI Iu exucLILud no es posIbIe). A cudu uno de esLos dos con-
junLos Ies usIgnu un vuIor de bIL: o ó 1. EI proceso se repILe recursIvumenLe pu-
ru cudu conjunLo generudo. AI IInuI se IIeguru u conjunLos de un soIo eIemenLo,
Ios cuuIes represenLun cudu uno u un mensuje. EI urboI se consLruye usi top-
doun. AI Ir dIvIdIendo por conjunLos que Lengun probubIIIdud sImIIur, conLrI-
buImos u conseguIr conjunLos de menos eIemenLos cuunLu mus probubIIIdud
Lengun. CuunLos menos nodos Lengu un conjunLo, mus urrIbu queduru cudu uno
y su codIIIcucIón seru menor. SIgue mus o menos eI mIsmo prIncIpIo, pero esLe
yu no es ópLImo.

Un ejempIo de Iu consLruccIón de un urboI de HuIImun Io podemos ver
usi. Seun Ios mensujes y probubIIIdudes sIguIenLes

A (1/2) B (1/4) C (1/4)

eI uIgorILmo HuIImun seguIru Ios sIguIenLes pusos:

A (1/2) •(1/2) •
0/ 0/
(1/4)B C(1/4) A •
0/
B C

en donde prImero se ugrupun B y C en un únIco nodo de probubIIIdud ½ y pos-
LerIormenLe se consLruye eI urboI IInuI: A = o, B = 1o y C = 11 (en bInurIo) es
decIr, 1.¸ bILs de medIu por mensuje (no 8 bILs J byLe como en un IIcIero con
sóIo A`s, B`s y C`s).

EI prIncIpuI probIemu de esLos uIgorILmos es que LIenen que eI compre-
sor debe reuIIzur prImero un recorrIdo deI IIcIero (o de Iu porcIón deI mIsmo,
sI se reuIIzu por bIoques) u comprImIr puru reunIr Ius IrecuencIus (o probubIII-
dudes, como gusLe) de Ios mensujes de Iu enLrudu. Como eI descompresor no
LIene esu posIbIIIdud, yu que sóIo recIbe Ios códIgos usIgnudos u Ios mensujes,
eI urboI yu procesudo o Ius IrecuencIus de cudu mensuje, junLo con Ios duLos,
deben ser pusudos uI descompresor. EsLo InLroduce unu sobrecurgu que Iuy
que evILur de uIgunu muneru. Uno de Ios progrumus mus unLIguos que yo Ie
vIsLo de compresIón de duLos se IIumu SQ, de RIcIurd GreenIuw. ¡u soIucIón
que uqui se Ie dubu eru LrunsmILIr eI urboI de Iormu comprImIdu. Unu soIucIón
usi se encuenLru LumbIén en uno de Ios pusos deI uIgorILmo Implodinç de PK-
ZIP :.x.

OLru soIucIón LumbIén es Iu de Iucer esLos uIgorILmos cdcptctitos, en eI
senLIdo de que se vu consLruyendo eI urboI de muneru dInumIcu LunLo por eI
compresor como por eI descompresor. Asi eI urboI no LIene que pusurse uI des-
compresor. Huy vurIus udupLucIones de esLos uIgorILmos puru converLIrIos en
udupLuLIvos. Pero quIzus Iu udupLucIón mus InLuILIvu es Iu sIguIenLe:

EI compresor purLe InIcIuImenLe de un urboI vucio, que sóIo conLIene unu
Ioju vuciu (emptç lecj), que sIempre esLuru presenLe en eI urboI, dIgumos, en Iu
posIcIón mus urrIbu y mus u Iu derecIu posIbIe deI mIsmo. Cuundo eI compre-
sor Iee un curucLer que no esLu en eI urboI, su suIIdu es eI códIgo de Iu Ioju vu-
ciu, seguIdo deI curucLer que no perLenece uI urboI. AcLo seguIdo InserLu eI
nuevo simboIo modIIIcundo eI urboI puru que sIgu sIendo un urboI HuIImun.
Con esLu LécnIcu eI recepLor yu no LIene que conocer u prIorI eI urboI nI Ius Ire-
cuencIus, yu que Ios duLos comprImIdos IIevun Iu InIormucIón suIIcIenLe puru
reconsLruIrIo. SIn emburgo, esLe méLodo no du Lun buenos resuILudos como eI
unLerIor, yu que Iuy un perIodo de uprendIzuje en eI que se emILen mucIos bILs
udIcIonuIes. Unu expIIcucIón mus deLuIIudu se encuenLru en |6|.

OLru cuesLIón prucLIcu que resoIviu LumbIén SQ es Iu IncIusIón de Ios có-
dIgos en puIubrus de 16 bILs. Como se Iu vIsLo, eI uIgorILmo no pone resLrIccIón
u Iu IongILud de Ios códIgos generudos, pero unu posIbIe ImpIemenLucIón po-
driu resLrIngIr eI Lumuño muxImo de Ios códIgos. SQ LruLu esLe probIemu
IucIendo eI urboI mus ¨ucIuLudo¨, IucIendo Ius compurucIones de Ios nodos u
eIegIr no sóIo sobre Iu probubIIIdud de cudu uno, sIno LumbIén sobre Iu proIun-
dIdud en eI urboI de cudu nodo. EsLo IImILu LumbIén Iu eIIcIencIu de Ios códIgos
generudos.


2.2.2 Compresores aritméticos

AI IguuI que Ios unLerIores, Ios compresores urILméLIcos se busun en Ius
probubIIIdudes de ocurrencIu de Ios mensujes u Iu enLrudu. SIn emburgo, puru
producIr unu codIIIcucIón Lomun un esquemu LoLuImenLe dIIerenLe. Se busun
en Iu represenLucIón de un vuIor deI InLervuIo |o,1| con mus decImuIes (mus
precIsIón) cuunLo mus InIormucIón conLengun Ios duLos u comprImIr. Supon-
gumos que queremos codIIIcur unu enLrudu que consLu de dos simboIos, X e Y,
con probubIIIdudes p(X) = zJ¸ y p(Y) = 1J¸.

AI recIbIr unu X, dIvIdImos eI InLervuIo |o,1| y nos quedumos con Ios zJ¸
InIerIores, por ejempIo. Tendremos enLonces eI InLervuIo |o, zJ¸|. En cuso de
Iuber recIbIdo unu Y, Iubriumos cogIdo eI InLervuIo deI LercIo InIerIor, es decIr,
|zJ¸, 1|. En cudu puso, dIvIdImos por Ios zJ¸ InIerIores o eI LercIo superIor eI
InLervuIo que Lengumos. AI IInuI, eI códIgo que emILImos, en bInurIo, es un nú-
mero que cue en eI InLervuIo. Se eIegIru uqueI que uLIIIce menos bILs en su re-
presenLucIón. EsLe número represenLu u todu Iu enLrudu Con esLe número,
represenLudo por Ios bILs que necesILe, junLo con Iu InIormucIón deI número de
eIemenLos codIIIcudos y Iu probubIIIdud de cudu uno, eI descompresor puede
reconsLruIr Iu enLrudu. Un ejempIo de Iu codIIIcucIón de Lres mensujes con Iu
unLerIor dIsLrIbucIón de probubIIIdud puede ser Iu sIguIenLe:

1 Codewords
+-----------+-----------+-----------+ /-----\
| |8/9 YY | Detail |<- 31/32 .11111
| +-----------+-----------+<- 15/16 .1111
| Y | | too small |<- 14/16 .1110
|2/3 | YX | for text |<- 6/8 .110
+-----------+-----------+-----------+
| | |16/27 XYY |<- 10/16 .1010
| | +-----------+
| | XY | |
| | | XYX |<- 4/8 .100
| |4/9 | |
| +-----------+-----------+
| | | |
| X | | XXY |<- 3/8 .011
| | |8/27 |
| | +-----------+
| | XX | |
| | | |<- 1/4 .01
| | | XXX |
| | | |
|0 | | |
+-----------+-----------+-----------+
comp.compression IAQ (pcrte z), Peter Gutmcnn

En Iu coIumnu ¨Codewords¨ se especIIIcu qué IIIeru de bILs represenLu u
cudu grupo de Lres mensujes de Iu IuenLe. EI compresor consLruIru sóIo Ios Lro-
zos de Iu LubIu que Ie seun necesurIos según Iu enLrudu. Trus recIbIr, por ejem-
pIo, XXY, decIde que emILIru eI número ¸J8 (en bInurIo .o11) en represenLucIón
de Iu enLrudu.

EI proceso que eI descompresor reuIIzuru uI recIbIr Ios duLos comprImI-
dos, eI número de mensujes de que consLu y Ius probubIIIdudes de cudu mensu-
je, procederu como sIgue: sI suponemos que se recIbe .o11, eI descompresor
veru que esLe número perLenece u Ios zJ¸ InIerIores, Iuego eI prImer mensuje
que upurecIó Iue unu X. Sube que en LoLuI son Lres, por Io que conLInúu. Tum-
bIén cue denLro de Ios zJ¸ InIerIores de |o, zJ¸|, es decIr, eI segundo mensuje
LumbIén Iue unu X, IusLu uIoru XX. SIn emburgo, ¸J8 (.o11) esLu en eI LercIo
superIor deI InLervuIo |o, qJq|, por Io que eI Lercer mensuje es unu Y. Erun Lres
mensujes. ¡In. ¡u secuencIu orIgInuI eru XXY. ICon Lres bits Iemos codIIIcudo
Lres bçtes!

EsLe uIgorILmo es muy eIIcIenLe, y no deju de ser curIoso e IngenIoso. EI
probIemu resIde, uI IguuI que Ios uIgorILmos unLerIores, en que Ius probubIIIdu-
des deben ser dudus uI recepLor. ¡u soIucIón LumbIén LIende uqui IucIu unu
modIIIcucIón ¨udupLuLIvu con Iu enLrudu¨. ¡os modeIos que vun dIvIdIendo Ios
InLervuIos se convIerLen uIoru en modeIos udupLuLIvos (cumbIunLes dInumIcu-
menLe con Iu enLrudu) y que son cupuces de sIncronIzur con Iu minImu InIor-
mucIón u compresor y descompresor. EjempIos de eIIos son eI Dçncmic
Mcrlot Modelinç o eI PPMC (Pcrticl Predictite Mctchinç), Io suIIcIenLemen-
Le compIejos como puru no LruLurIos uqui.

2.2.3 Compresores predictivos

¡os compresores predIcLIvos son, uI conLrurIo que Ios unLerIores, LoLuI-
menLe udupLuLIvos. Procurun predecir eI sIguIenLe mensuje de Iu enLrudu Lo-
mundo como buse de conocImIenLo Iu enLrudu procesudu IusLu ese momenLo
(en eI Iondo, LumbIén probubIIIdudes). SI eI mensuje que se encuenLru u Iu en-
Lrudu coIncIde con eI predIcIo, su codIIIcucIón se podru Iucer con menos bILs.
SI no, su codIIIcucIón se Iuru con mus bILs, que permILIrun enLonces sIncronI-
zur uI descompresor puru que munLengu sus LubIus InLernus IdénLIcus u Ius deI
compresor sIn pusurseIus expIicILumenLe.

Poseen cIerLus venLujus sobre Ios unLerIores uIgorILmos, enLre eIIus su ve-
IocIdud: uI ucLuur sobre un mensuje cudu vez y reuIIzur unu predIccIón que ge-
neruImenLe sueIe ser de cuIcuIo sencIIIo, son cupuces de dur unu uILu veIocIdud
de compresIónJdescompresIón. VeIocIdud y sencIIIez son dos concepLos que
generuImenLe vun unIdos, por Io que esLos uIgorILmos, u Iu vez que rupIdos, re-
suILun sencIIIos de progrumur, por Io que se pueden converLIr en unu soIucIón
buruLu puru sIsLemus de compresIón LrunspurenLe en LIempo reuI, con unus re-
IucIones de compresIón ucepLubIes.

SIn emburgo, puru uIgunus upIIcucIones, no son Lun ucepLubIes Ius reIu-
cIones de compresIón. Ademus, su mejoru es susLuncIuImenLe dIIicII: Iu predIc-
cIón es muy escurrIdIzu en cuuIquIer umbILo. Unu Ideu seriu InLroducIr
InIormucIón udIcIonuI puru cudu LIpo de IIcIero que nos dIeru un puLrón con eI
que predecIr en mejores condIcIones. En esLe senLIdo (uunque no uLIIIzundo
uIgorILmos predIcLIvos) se mueve eI compresor UCz de AIP Detelopment.

QuIzu eI compresor mus rupIdo que se Iuyu dIseñudo nuncu perLenece uI
grupo de Ios compresores predIcLIvos. Se IIumu "predIcLor", y Iue InvenLudo en
1q8; por TImo RuILu y Jukku TeuIoIu, de Iu UnIversIdud de Turku, en ¡InIun-
dIu |1¸|. ¡ue puLenLudo en 1qq¸ por K. TIomus, y se usu en eI drcjt de ¡nLerneL
"PPP PredIcLor CompressIon ProLocoI" (ver ILp:JJveneru.IsI.eduJInLerneL-
druILsJdruIL-IeLI-pppexL-predIcLor-oo.LxL). Nos servIru puru mosLrur un ejem-
pIo de esLe LIpo de compresores.

Su méLodo de predIccIón es sencIIIo: predIce eI sIguIenLe curucLer u purLIr
de Ios dos unLerIores de Iu enLrudu. Puru eIIo consLruye unu muLrIz de z¸6¯z¸6
que guurdu en cudu cusIIIu m|I,j| eI byLe que unLerIormenLe sIguIó u dos enLru-
dus consecuLIvus de vuIores ASC¡¡ I y j. Cuundo se vu procesundo Iu enLrudu, eI
uIgorILmo sIempre sube qué dos mensujes precedIeron uI ucLuuI (suIvo puru Ios
dos prImeros mensujes de Iu enLrudu, pero esLo no es probIemu), por ejempIo
p1 y pz. Con esLu InIormucIón, su predIccIón puru eI curucLer ucLuuI, pongumos
c, seru m|p1,pz|. SI ucIerLu, es decIr, sI c = m|p1,pz|, Iu suIIdu seru sóIo un bIL,
que, puesLo u 1 InIormu de que se Iu Iogrudo predecIr eI mensuje ucLuuI. SI no
ucIerLu, su suIIdu seru un bIL puesLo u o, IndIcundo que no se predIjo y u conLI-
nuucIón eI mensuje no predIcIo. Ademus, ucLuuIIzu Iu LubIu puru que Iu vez sI-
guIenLe seu cupuz de predecIr: m|p1,pz| = c. Con esLu InIormucIón es cupuz de
sIncronIzur uI descompresor de muneru que Iu LubIu que umbos poseen en me-
morIu es IdénLIcu.

EI descompresor purLe de Iu LubIu vuciu InIcIuI, IguuI que eI compresor. AI
recIbIr un bIL u 1, sube que eI mensuje que se LrunsmILIó es eI que se encuenLru
en Iu LubIu en Iu posIcIón IndIcudu por Ios dos úILImos mensujes resuILudo de Iu
descompresIón reuIIzudu IusLu eI momenLo. SI recIbe un bIL u o, sube que Iu
sIguIenLe InIormucIón seru eI mensuje LuI cuuI, y podru ucLuuIIzur su LubIu uI
IguuI que eI compresor.

A conLInuucIón veremos un ejempIo de cómo queduriu Iu ImpIemenLu-
cIón deI compresor y eI descompresor. Pero unLes consIderuremos Iu muLrIz
InIcIuI. EsLu cIuro que umbos, compresor y descompresor deben comenzur con
Iu mIsmu muLrIz de predIccIón. Ademus, Ios vuIores presenLes en esLu muLrIz c
priori vun u condIcIonur grun purLe deI proceso. NormuImenLe es InIcIuIIzudu u
un vuIor que es muy probubIe: en IIcIeros de LexLo se puede InIcIuIIzur Lodu u
espucIos, y en IIcIeros bInurIos uI ASC¡¡ o.

EI sIguIenLe códIgo muesLru un ejempIo de Ius IuncIones de compresIón y
descompresIón:


// Comprime el stream de entrada en el de salida
int PREDICTORCompress(stream in,stream out)
{
char c; // Carácter actual a predecir
char p1 = ‘###BOT_TEXT###’; // Último carácter de la entrada
char p2 = ‘###BOT_TEXT###’; // Penúltimo carácter de la entrada
// Inicialmente ambos se suponen ‘###BOT_TEXT###’
char matriz[256][256]; // Matriz de predicción. Se supone
// inicializada a ‘###BOT_TEXT###’

// Procesar toda la entrada
while (!in.eof())
{
// c es el carácter a predecir
c = in.getNextChar();

// ¿Se predice?
if (c != matriz[p1][p2])
{
// No, la salida es un bit a 0 y el carácter
out.putBit(0);
out.putChar(c);

// La siguiente vez irá mejor
matriz[p1][p2] = c;
}
else
{
// Se ha predicho. Sólo se saca un bit
out.putBit(1);
}

// El carácter que era el último pasa al penúltimo
// y el último es el c
p2 = p1;
p1 = c;
}

// Todo bien
return 0;
}


// Descomprime el stream de entrada en el de salida
int PREDICTORDecompress(stream in, stream out)
{
char c; // Carácter actual
char p1 = ‘###BOT_TEXT###’; // Último carácter de la salida
char p2 = ‘###BOT_TEXT###’; // Penúltimo carácter de la salida
// Inicialmente ambos se suponen ‘###BOT_TEXT###’
char matriz[256][256]; // Matriz de predicción. Se supone
// inicializada a ‘###BOT_TEXT###’

// Procesar toda la entrada
while (!in.eof())
{
// Se ha predicho
if (in.getNextBit())
c = matriz[p1][p2];
else // No predicho
{
c = in.getNextChar();

// Ajustar la matriz para sincronizar
matriz[p1][p2] = c;
}

// Salida: el carácter actual
out.putChar(c);

// Rotar
p2 = p1
p1 = c;
}

// Todo bien
return 0;
}

Como úILImo punLo, puede purecer u sImpIe vIsLu que esLe esquemu es
¨demusIudo sencIIIo puru IuncIonur¨. SIn emburgo, en reuIIdud IuncIonu bIen y
busLunLe rupIdo. ¡u compresIón y descompresIón se Iucen en LIempo reuI y,
como un ejempIo, se dIru que, por ejempIo, eI IIcIero COMMAND.COM de Iu
versIón MS-DOS 6.zo que ocupu en dIsco ¸6.¸¸q byLes quedu comprImIdo u
qq.818, es decIr, u uproxImudumenLe un ;q% de su Lumuño. EsLe resuILudo es
bueno, sobre Lodo LenIendo en cuenLu que esLe es un urcIIvo bInurIo de códIgo,
con unu dIsLrIbucIón que generuImenLe LIene pocu redunduncIu.

No es esLe eI únIco ejempIo de compresores predIcLIvos. Huy oLrus uILer-
nuLIvus, como Iu que se IncIuye en PK-ZIP :.x con eI uIgorILmo ¨ReducIng¨.
ConsIsLe en consIderur un conjunLo de seguIdores de cudu curucLer (jollouer
sets) que guurdun Ios curucLeres que Iun seguIdo con mus probubIIIdud u un
curucLer dudo. Como eI conjunLo de seguIdores es pequeño, puru IdenLIIIcur un
seguIdor se pueden uLIIIzur menos bILs. EI Lrubujo deI compresor es uqui dIIicII,
yu que LIene que cuIcuIur eI Lumuño ópLImo de Ios conjunLos de seguIdores de
muneru que no se pIerdun bILs InúLIImenLe. EI probIemu uqui LumbIén es que
Ios conjunLos deben ser pusudos uI descompresor. Un ejempIo en pseudo-
códIgo que muesLru Iu descompresIón y Iu codIIIcucIón que deI conjunLo de se-
guIdores se Iuce se puede enconLrur en |;|.

Por úILImo, esLos uIgorILmos son muIos u Iu Ioru de conLroIur grundes
espucIos de curucLeres IguuIes. Por eIIo es convenIenLe Iucer Iu compresIón en
dos purLes, como Iu reuIIzu eI ¨ReducIng¨, prImero comprImIendo Ios curucLe-
res consecuLIvos IguuIes uLIIIzundo unu vurIunLe de R¡E (Run-Lençth Enco-
dinç, que después veremos) y u Iu suIIdu eI compresor predIcLIvo.


2.3 Compresores basados en dic-
cionario

Un enIoque dIIerenLe u Ios uIgorILmos unLerIores es eI que presenLun Ios
compresores busudos en dIccIonurIo. Su Ideu es consLruIr un dIccIonurIo Lo-
mundo como reIerencIu Iu enLrudu procesudu IusLu ese momenLo. EI dIccIonu-
rIo conLIene Ius cudenus de mensujes (en nuesLro ejempIo prucLIco Ius cudenus
de curucLeres ASC¡¡ o byLes). EsLus cudenus esLun IdenLIIIcudus por un indIce,
de muneru que indIce y cudenu son de correspondencIu bIunivocu. EI resuILudo
prucLIco u Lodo esLo es que sI en uIgún momenLo Iu enLrudu que se esLu proce-
sundo ucLuuImenLe es unu cudenu que esLu presenLe en eI dIccIonurIo, eI com-
presor puede dur como suIIdu eI indIce que IdenLIIIcu esu cudenu en eI
dIccIonurIo. TenIendo en cuenLu que Ius cudenus pueden ser urbILrurIumenLe
Iurgus, Iu produccIón deI indIce en Iugur de Iu cudenu represenLu un uIorro de
InIormucIón, y por Io LunLo, compresIón.

¡ncIuIdos denLro de esLe grupo consIderuremos u Ios uIgorILmos RLE,
que puede ser consIderudo como poseyendo un dIccIonurIo de IongILud 1 byLe,
eI LZW y oLros derIvudos de ¡Z;8 y Ius vurIunLes de ¡Z;;. Veremos Lodos eIIos
en orden.

2.3.1 Compresión RLE

EsLe es, quIzu, eI compresor mus sencIIIo que exIsLe. TumbIén es de Ios
mus IneIIcuces. AI oir por prImeru vez eI LérmIno compresIón de duLos, Iu mu-
yoriu pIensu en reducIr de uIgunu muneru un número de curucLeres repeLIdos,
con Iu sencIIIu susLILucIón de decIr ¨eI curucLer X se repILe N veces¨. Asi es, esLe
es eI prIncIpuI objeLIvo deI uIgorILmo: reducIr Ius cudenus de curucLeres IdénLI-
cos u unu IndIcucIón deI curucLer y Iu IongILud de Iu repeLIcIón.

Se Iu IncIuIdo uI R¡E denLro de Ios compresores busudos en dIccIonurIo
porque se puede consIderur que uLIIIzu un dIccIonurIo desIIzunLe de Lumuño 1
byLe puru predecIr eI sIguIenLe curucLer u Iu enLrudu, uunque usi LumbIén podriu
ser cIusIIIcudo de predIcLIvo; pero Iu cuesLIón ImporLunLe no es su cIusIIIcucIón,
sIno su esLudIo.

Aunque eI uIgorILmo purLe de unu Ideu sencIIIu y es IucII de comprender
su modo de operucIón, su ImpIemenLucIón no sIempre esLu IIbre de Lrumpus.
En prImer Iugur, eI prImer curucLer no LIene predecesor. TumbIén debemos IIe-
vur un curucLer de udeIunLo ó loolchecd puru compururIo con eI ucLuuI. SI son
IguuIes, es eI comIenzo de unu cudenu de repeLIcIones; sI no, Iu suIIdu debe ser
eI curucLer ucLuuI y eI loolchecd pusu uIoru u ser eI ucLuuI. EI munejo de un
curucLer de udeIunLo requIere enLonces que eI úILImo curucLer se procese de
Iormu especIuI, uI no Iuber mus posIbIIIdud de udeIunLo.

ExIsLe, udemus, mus de unu muneru de ImpIemenLurIo, y Lodus eIIus es-
Lun puLenLudus, usi que IcuIdudo!

¡u prImeru Iormu, mus IneIIcIenLe, es uLIIIzur un curucLer, IIumudo co-
múnmenLe DLE, que sIrvu puru IndIcur que se Iu producIdo unu repeLIcIón de
un curucLer. Puru IndIcur que eI curucLer es reuImenLe D¡E, se puede IndIcur
con Iu secuencIu D¡E,o (cero). He uqui un ejempIo: supongumos que uLIIIzu-
mos Iu codIIIcucIón

D¡E, número de repeLIcIones, curucLer repeLIdo

puru IndIcur unu repeLIcIón y

D¡E, o (cero)

puru IndIcur que se esLu LrunsmILIendo eIecLIvumenLe eI curucLer correspon-
dIenLe u D¡E. Véuse cómo ¨número de repeLIcIones¨ debe ser muyor o IguuI
que ¸ puru que Iu susLILucIón Lengu eI eIecLo de reducIr eI número de mensujes
u Iu suIIdu. Con esLu codIIIcucIón podemos represenLur repeLIcIones desde ¸
IusLu z¸¸ curucLeres de IongILud, dejundo IncIuso IIbres Ius codIIIcucIones
D¡E,o, D¡E,1 y D¡E,z puru oLros comeLIdos (como represenLur eI mIsmo
D¡E). Supongumos udemus Iu sIguIenLe enLrudu, Iu cuuI queremos comprImIr
usundo R¡E:

'1` 'z` 'q` 'z` (cIur)ÐLI 'A` 'B` 'B` 'B` 'B` 'B` 'B` 'B` 'B` 'B` 'C` 'C` 'C` 'C`

(se uLIIIzu noLucIón C. Todos Ios simboIos represenLun curucLeres ASC¡¡, menos
D¡E, que represenLu uI vuIor ASC¡¡ de un curucLer eIegIdo, bIen uI uzur, bIen
con eI propósILo, por ejempIo, de sIncronIzur dos IuenLes sincronus). ¡u codIII-
cucIón seriu

'1` 'z` 'q`'z` (cIur)ÐLI (cIur)o 'A` (cIur)ÐLI (cIur)q 'B` (cIur)ÐLI
(cIur)q 'C`

EsLe modo de codIIIcucIón represenLu eI probIemu de que se debe Iucer
¨LrunspurenLe¨ uI curucLer D¡E uñudIéndoIe eI curucLer ASC¡¡ de vuIor o. Unu
enLrudu que conLuvIeru mucIos curucLeres D¡E se veriu IevemenLe uIecLudu
por Iu compresIón debIdo u Iu sobrecurgu InLroducIdu por esLe curucLer.

OLru Iormu de upIIcur R¡E es uLIIIzundo eI mIsmo méLodo que Ius Imu-
genes PCX esLundur. En vez de uLIIIzur un curucLer de IdenLIIIcucIón de repeLI-
cIón uLIIIzun un curucLer de ¨cenLIneIu¨. EsLe curucLer LIene un bIL que InIormu
sI Iu sIguIenLe InIormucIón es ucercu de unu repeLIcIón o son duLos sIn repeLI-
cIón. ¡os resLunLes bILs deI byLe pueden ser consIderudos como eI número de
curucLeres sIguIenLes u Ios que uIecLu eI cenLIneIu. En cuso de ser repeLIcIón,
esLe número IndIcuru eI número de repeLIcIones (z IusLu 1z;), y seru seguIdo
deI curucLer que se repILe. En cuso de no repeLIcIón, IndIcu Iu posIcIón deI sI-
guIenLe cenLIneIu y que se LIenen que copIur u Iu suIIdu Ios sIguIenLes byLes Ius-
Lu eI cenLIneIu. SI suponemos que eI cenLIneIu uLIIIzu su bIL mus sIgnIIIcuLIvo
puru IndIcur con un o que no Iuy repeLIcIón y con un 1 que si Iu Iuy, Iu unLerIor
secuencIu quedu uIoru comprImIdu como sIgue:

(cIur)6 '1` 'z` 'q` 'z` (cIur)D¡E 'A` (cIur)(ox8o + q) 'B` (cIur)(ox8o + q)
'C`

donde se Iun subruyudo Ios cenLIneIus. EI prImero LIene su bIL de repeLIcIón u
o. ¡os demus Io LIenen u 1. ApurLe de suprImIr eI enmuscurumIenLo de D¡E's,
se Iu dIsmInuIdo Iu IongILud minImu de Iu repeLIcIón u codIIIcur u dos, en vez
de Lres, como unLes.

2.3.2 LZ78: LZW

¡os compresores busudos en dIccIonurIo son, con mucIo, Ios mus uLIII-
zudos. NormuImenLe se usun en combInucIón con compresores esLudisLIcos en
dos Iuses. ¡us dos IumIIIus mus ImporLunLes de compresores busudos en dIc-
cIonurIo nucIeron de Ios Lrubujos de dos muLemuLIcos, AbruIum ¡empeI y Ju-
kob ZIv en Ios uños 1q;; y 1q;8; esLus son ¡Z;; y ¡Z;8. AcLuuImenLe se uLIIIzun
mus Ios compresores derIvudos de ¡Z;;, junLo con un compresor esLudisLIco u
Iu suIIdu. TumbIén, como veremos, pueden ser upIIcudus LécnIcus esLudisLIcus
en Ios compresores ¡Z;8.

En esLu seccIón veremos eI represenLunLe mus Iumoso y sencIIIo de Iu
IumIIIu ¡Z;8: ¡ZW. EsLudIuremos su IuncIonumIenLo, Ios probIemus que en-
Lruñu su ImpIemenLucIón y cómo se Iun resueILo por ImpIemenLucIones cono-
cIdus como Iu de Compress de UNIX. A conLInuucIón se veru Ius posIbIes
mejorus uI uIgorILmo, bIen dudus por Iu upIIcucIón de LécnIcus esLudisLIcus, bIen
por mejorus InLroducIdus en vurIucIones sobre Iu Ideu orIgInuI, como son AP de
Storer |q| o Iu codIIIcucIón MW o Iu Y |8|.

Terry A. WeIcI, de UN¡SYS, InLrodujo y puLenLó (un Lerreno cenugoso eI
de Ius puLenLes, ver |8| y |z| por ejempIo) unu vurIunLe de ¡Z;8 IIumudu ¡ZW
|q, 1o|. EI propósILo deI uIgorILmo es consLruIr un dIccIonurIo en eI que se
guurdun Lodus Ius cudenus que Iun upurecIdo en Iu enLrudu. A cudu cudenu se Ie
usIgnu un IdenLIIIcudor (un número) que Iu represenLu. AI Ir codIIIcundo Iu en-
Lrudu, sI nos enconLrumos con unu cudenu que yu esLu en eI dIccIonurIo, Iu suII-
du deI uIgorILmo seru eI códIgo de Iu cudenu en eI dIccIonurIo. EI descompresor
debe Ir consLruyendo eI mIsmo dIccIonurIo que eI compresor, pero ésLe no LIe-
ne que pusurse expIicILumenLe, sIno que esLu ImpIicILo en Iu codIIIcucIón.

¡u codIIIcucIón es sencIIIu (uI menos Iu Ideu), y se puede resumIr como
sIgue: uI prIncIpIo eI compresor purLe de un dIccIonurIo en eI que se Iun InLro-
ducIdo Lodus Ius cudenus de IongILud 1, es decIr, z¸6 cudenus que consLun de
un soIo curucLer (Ios curucLeres ASC¡¡). EI uIgorILmo puru comprImIr Iu enLrudu
y munLener ucLuuIIzudo eI dIccIonurIo es eI sIguIenLe:

set w = NIL
loop
read a character K
if wK exists in the dictionary
w = wK
else
output the code for w
add wK to the string table
w = K
endloop

Como podemos ver, se vu Ieyendo cudu curucLer de Iu enLrudu secuen-
cIuImenLe y se vu consLruyendo en u Iu cudenu que se buscuru en eI dIccIonu-
rIo. AI prIncIpIo uK = K, yu que u = NIL. Por Io LunLo, se conLInúu y u = K. uI
IIegur eI sIguIenLe curucLer, K' se buscu en eI dIccIonurIo Iu cudenu uK' = KK', Iu
cuuI no esLu en eI dIccIonurIo. En esLe cuso Iu suIIdu es eI códIgo puru u, es de-
cIr, K, y se uñude uK uI dIccIonurIo. AñudIr Iu cudenu uI dIccIonurIo sIgnIIIcu
usIgnurIe un IdenLIIIcudor secuencIuI consecuLIvo u purLIr de Iu unLerIor cudenu.
Como uI prIncIpIo Ius prImerus z¸6 posIcIones esLun ocupudus eI sIguIenLe nú-
mero u usIgnur es eI z¸;. EsLe número yu no cube en 8 bILs, por Io que Ius suII-
dus (Ios IdenLIIIcudores de Ius cudenus reconocIdus) deI uIgorILmo son uI
prIncIpIo de q bILs e Irun uumenLundo conIorme se vuyu quedundo pequeño eI
dIccIonurIo.

AI prIncIpIo, Lodus Ius cudenus de IongILud 1 LIenen usIgnudo un IdenLIII-
cudor. EsLe se uLIIIzu como represenLucIón de Iu cudenu, y se corresponde con
eI códIgo ASC¡¡ deI curucLer, pero con q bILs InIcIuImenLe. DurunLe eI proceso,
se vun uñudIendo nuevus cudenus de IongILud muyor. AI IdenLIIIcurse cudenus
mus Iurgus con un número de vurIos bILs, Iu compresIón resuILu busLunLe eIecLI-
vu. Como un ejempIo de enLrudu podemos ver eI sIguIenLe, que ejempIIIIcu eI
comporLumIenLo deI uIgorILmo puru Iu cudenu ¨ESTEDESTE¨:

K wK existe diccionario salida (9 bits)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
E E Sí - -
S ES No ES (256) 069 (E)
T ST No ST (257) 083 (S)
E TE No TE (258) 084 (T)
O EO No EO (259) 069 (E)
E OE No OE (260) 079 (O)
S ES Sí - -
T EST No EST(261) 256 (ES)
E TE Sí - -

En esLu enLrudu, uunque es corLu, podemos ver cómo se Iu IIegudo u
consLruIr Iu cudenu ¨EST¨, represenLudu con eI IdenLIIIcudor z61. SI posLerIor-
menLe en Iu enLrudu se encuenLru uIgunu cudenu de Ius presenLes en eI dIccIo-
nurIo, ésLu se susLILuye en Iu suIIdu por su IdenLIIIcudor.

¡u descompresIón es mus sencIIIu, uunque LIene que consLruIr eI mIsmo
urboI. NóLese sIn emburgo que eI descompresor recIbe InIcIuImenLe códIgos de
q bILs que usuru como indIces en eI dIccIonurIo. MunLendru eI dIccIonurIo uc-
LuuIIzudo u purLIr de esu InIormucIón y uI recIbIr, por ejempIo, eI códIgo z¸6, en
esu enLrudu, uI IguuI que en eI dIccIonurIo deI compresor, conLendru Iu cudenu
¨ES¨. EI uIgorILmo de descompresIón conLIene un cuso especIuI. EI compresor
puede InserLur eI códIgo de Iu cudenu unLes de que eI descompresor puedu
consLruIrIu. EsLe es eI cuso de unu enLrudu deI LIpo XentreXentreX en Iu que
Xentre esLu en eI dIccIonurIo. EI compresor reconoce Iu prImeru purLe: Xentre
como exIsLenLe en eI dIccIonurIo. AI consIderur Iu sIguIenLe X, Iu suIIdu es eI
IdenLIIIcudor de Xentre y uñude uI dIccIonurIo XentreX. Como Io sIguIenLe que
consIderu es precIsumenLe XentreX y ucubu de ser uñudIdu uI dIccIonurIo, su
IdenLIIIcudor es expuIsudo. ¡u suIIdu es enLonces ( IdenLIIIcudor(Xentre), Iden-
LIIIcudor(XentreX) ), en donde esLe úILImo no puede ser reconsLruIdo por eI
descompresor. No obsLunLe, eI descompresor, uI recIbIr un códIgo que no exIsLe
en eI dIccIonurIo, sube que es eI cuso especIuI, por Io que Iu cudenu de suIIdu es
Iu cudenu de suIIdu unLerIor junLo con eI prImer curucLer de esu mIsmu cudenu,
InLroducIendo Iu cudenu uumenLudu uI dIccIonurIo. En eI cuso normuI, eI uIgo-
rILmo Lrubuju de Iormu Inversu uI unLerIor. Un ejempIo en pseudo-códIgo po-
driu ser:

Read OLD_CODE
output OLD_CODE

WHILE there are still input characters DO
Read New_CODE

// ¿Caso especial?
IF NEW_CODE is not in the dictionary THEN
STRING = get string of OLD_CODE
STRING = STRING+CHARACTER
ELSE
STRING = get string of NEW_CODE
ENDIF

output STRING
CHARACTER = first character in STRING

add OLD_CODE+CHARACTER to dictionary

OLD_CODE = NEW_CODE
END WHILE

Huy vurIos uspecLos que se pueden comenLur deI uIgorILmo que esLurun
reIucIonudos LunLo con su eIIcIencIu como con su ImpIemenLucIón. En prImer
Iugur, se Iu vIsLo que eI dIccIonurIo Ibu crecIendo u medIdu que se Ibun Inser-
Lundo nuevus cudenus en éI. SIn emburgo, nIngún ordenudor LIene memorIu
InIInILu y debemos poner Lope u esLu InsercIón. Ademus, u medIdu que eI dIc-
cIonurIo vuyu crecIendo, se uLIIIzurun mus bILs puru IdenLIIIcur u cudu cudenu,
con Io que puru Ius cudenus corLus (que son LumbIén Ius mus probubIes) se con-
seguIru unu codIIIcucIón pobre en eI senLIdo de que uIorru pocos bILs. Unu vez
que Iemos puesLo un Lope (dIgumos de 1z u 1q bILs, es decIr, enLre qoq6 y
16¸8q cudenus), esLu cIuro que eI dIccIonurIo se IIenuru y Iubru que eIImInur
Ius cudenus que guurdu. Pero ¿debemos desecIur Lodus Ius cudenus deI dIccIo-
nurIo y ¨vucIurIo por compIeLo¨ o podemos uprovecIur Ius cudenus que mus se
Iun usudo y dejurIus en eI dIccIonurIo?. EsLu es unu decIsIón dIIicII y no Iuy
soIucIón ópLImu nI mucIo menos. Se pueden ver uILernuLIvus en Ius dIIerenLes
ImpIemenLucIones: unus vuciun compIeLumenLe eI urboI, Io que resuILu menos
eIIcIenLe en LérmInos de compresIón; oLrus emILen códIgos especIuIes puru sIn-
cronIzur uI compresor y descompresor con Ios que IndIcun que eI urboI debe ser
¨IImpIudo¨, es decIr, que se deben eIImInur Ius cudenus menos uLIIIzudus. EsLu
úILImu opcIón es Iu que uLIIIzu eI uIgorILmo ¨Shrinlinç¨ de PK-ZIP :.x |;| y
Compress puru UN¡X |1z|.

OLru de Ius cuesLIones u Lener en cuenLu es Iu orgunIzucIón deI dIccIonu-
rIo. En eI proceso de cudu curucLer, bIen se Iuce un ucceso uI dIccIonurIo puru
Ieer, bIen se Iuce puru escrIbIr, por Io que eI dIseño de esLu esLrucLuru, que con-
LIene u Ius cudenus, es un punLo ImporLunLisImo. TenIendo en cuenLu que eI
dIccIonurIo puede IIegur u conLener como minImo qoq6 cudenus de curucLeres,
un enIoque en eI que puru cudu curucLer se busque secuencIuImenLe en Lodo eI
dIccIonurIo es proIIbILIvo en LIempo. TumbIén en espucIo, yu que guurdur Lun-
Lus cudenus es ImprucLIcubIe.

SIn emburgo, sI nos IIjumos en Iu muneru en que se consLruyen Ius cudenus
vemos que se unen, por un Iudo, unu cudenu en eI dIccIonurIo (que puede ser
represenLudu por un indIce de como muxImo 16 bILs) junLo con un nuevo curuc-
Ler u Iu enLrudu. EsLo Iuce que unu nuevu cudenu puede ser represenLudu, como
muxImo, por un enLero de ¸z bILs. EI dIccIonurIo usi quedu como unu LubIu de
qoq6 enLrudus de enLeros de ¸z bILs. SIn emburgo, con esLo sóIo uIorrumos
espucIo, no LIempo. Puru eIIo, podemos usur un uIgorILmo de hcshinç |11, sec.
6|, eI cuuI usIgnu un número u cudu cudenu u Lruvés de unu junción hcsh. A
Lruvés de esLe número podemos comprobur rupIdumenLe (mIrundo en Iu LubIu
hcsh) sI esLu cudenu yu Iu upurecIdo (yu esLu en eI dIccIonurIo). EI sIguIenLe
dIbujo esquemuLIzu eI proceso que eI compresor Iuriu (Lomundo eI ejempIo de
Iu unLerIor codIIIcucIón) en eI momenLo de InLroducIr en eI dIccIonurIo Iu cude-
nu ¨EST¨, u Iu que se Ie usIgnu eI códIgo z61. ULIIIzundo eI preIIjo ¨ES¨ y eI cu-
rucLer ¨T¨, Iu junción hcsh cuIcuIu un vuIor que uLIIIzuru puru IndIzur Iu tcblc
hcsh. EsLu LubIu es un mupu enLre IdenLIIIcucIones hcsh y enLrudus en eI dIc-
cIonurIo. ¡u posIcIón cuIcuIudu de Iu LubIu hcsh conLendru un indIce deI dIccIo-
nurIo donde esLu Iu cudenu. Como no esLu en eI dIccIonurIo, en Iu posIcIón hcsh
se pone eI IdenLIIIcudor secuencIuI sIguIenLe, IguuI que se Ibun usIgnundo códI-
gos u Ius nuevus cudenus que enLrubun en Iu LubIu.

Tabla Hash Tabla Cadenas
| .... | | ............... |
ES (256) , T (84) | .... | | ............... |
---------+--------- | .... | | ............... |
| | .... | | ............... |
| | .... | | ............... |
| +-------------+ | .... | | ............... |
| | Función | | .... | | ............... |
+--+ Hash +-----> yyy | 261 -+----+ | ............... |
+-------------+ | .... | | | ............... |
| .... | +->261| (256 << 8) + 84 |
| .... | | ............... |

(261 es la siguiente entrada consecutiva en el diccionario ^)

Pero Iuy un probIemu con Ios uIgorILmos de hcshinç: dos cudenus pue-
den recIbIr eI mIsmo códIgo hcsh, represenLudo en eI dIbujo por, ççç, Io que se
IIumu unu colisión. EsLe probIemu no es LrIvIuI nI InsIgnIIIcunLe, yu que unu
muIu (IenLu) gesLIón de Ius coIIsIones nos Iuce Lener un uIgorILmo ImprucLIcu-
bIe en LIempo. ¡os dIsLInLos uIgorILmos expuesLos en |11| LruLun de muneru dI-
IerenLe Ius coIIsIones. EI que se Iu eIegIdo en Compress es eI clçoritmo D ó
direccioncmiento cbierto con doble hcshinç (open cddressinç double hcs-
hinç). Es eI que mejores resuILudos du en sILuucIones en Ius que Ius InsercIones
y búsquedus en Iu LubIu domInun uI borrudo de eIemenLos de Iu mIsmu. A dIIe-
rencIu de oLros uIgorILmos, como eI ¡, LruLu de dIspersur Ius coIIsIones en unu
LubIu hcsh (cuyo Lumuño es superIor uI necesurIo y udemus número prImo) de
muneru que Iu posIbIIIdud de coIIsIón se reduzcu. EsLo se consIgue upIIcundo
dos IuncIones hcsh. Puru mus InIormucIón véuse |11| y |1z|.

TumbIén u purLIr deI esLudIo de cómo Ius cudenus son InserLudus en eI
dIccIonurIo se puede deducIr que Iu esLrucLuru de urboI resuILu upropIudu. Un
urboI que represenLu cudenus es denomInudo un trie. DIversus esLrucLurus trie
pueden upIIcurse uqui (como por ejempIo Ios urboIes de PuLrIcIu, Pctricic
trees, uLIIIzudos LumbIén en |¸|).

Unu posIbIe mejoru deI uIgorILmo ¡ZW resIde en consIderur que Ios
IdenLIIIcudores son represenLudos por un número vurIubIe de bILs. TenIendo
esLo en menLe, podemos upIIcur LécnIcus esLudisLIcus que nos represenLen con
mus bILs Ios IdenLIIIcudores que menos se vun usundo y con menos bILs Ios que
mus se usun.

En |8| se IncIuyen Lres uIgorILmos que resuILun de mejorus u ¡ZW: AP
(puLenLudo por Storer), MW (de MIIIer y Wegmun) e Y.

En eI ejempIo de codIIIcucIón ¡ZW, se vIo que Ius cudenus que se cons-
Lruiun erun muy corLus, yu que en cudu puso se Ie ugregubu un soIo curucLer.
MW, en vez de sóIo uñudIr eI úILImo curucLer, uñude Ius dos úILImus cudenus
puru Iormur unu cudenu mus Iurgu. Con esLo se consLruyen cudenus mus Iurgus
desde eI prIncIpIo que, en eI ejempIo unLerIor Iubriun reducIdo u Iu mILud Iu
suIIdu. Por su purLe, AP represenLu unu mejoru suLII deI unLerIor. En que en vez
de InLroducIr sóIo Iu cudenu nuevu uI dIccIonurIo, se InLroducen Lodus Ius que
resuILun de unIr Iu cudenu que unLerIormenLe coIncIdIó con Lodos Ios preIIjos
de Iu cudenu que Iu coIncIdIdo uIoru. Con eIIo se consLruyen mus cudenus que
posIbIemenLe upurezcun después, yu que LumbIén son Lomudus u purLIr de Iu
enLrudu, es decIr, LumbIén es udupLuLIvo con Iu enLrudu, y que son mus Iurgus
que Ius consLruIdus por ¡ZW.

Y es unu mezcIu de umbos. Puru cudu curucLer de Iu enLrudu, consLruye
unu IIsLu de ¨mctches¨ o preIIjos de coIncIdencIu, u Ios que uñude eI curucLer
Ieido. ¡os de Iu IIsLu que no esLén en eI dIccIonurIo son uñudIdos u esLe, y Ios
que si esLun conLInúun puru eI sIguIenLe curucLer. Asi se uñude mus de unu cu-
denu uI dIccIonurIo puru cudu curucLer.

2.3.3 LZ77

En ¡Z;; es donde reuImenLe se concenLru eI InLerés ucLuuI. EsLos uIgorILmos
LIenen LunLus decIsIones de dIseño que cudu uno ImpIemenLudo es dIsLInLo u Ios
demus. EsLo Iuce que no se puedun puLenLur o que se puedun suILur de unu
Iormu u oLru Ius puLenLes ucLuuIes. De uIi eI InLerés.

¡us vurIunLes de ¡Z;; LumbIén munLIenen un regIsLro de Ios úILImos curucLeres
procesudos de Iu enLrudu, IguuI que Ius ¡Z;8. Pero uI conLrurIo que esLus, no
consLruyen un dIccIonurIo expIicILo. En cudu momenLo, eI uIgorILmo se encuen-
Lru procesundo en un punLo de Iu enLrudu, Ios n curucLeres unLerIores Iormun Iu
"IIsLorIu" deI uIgorILmo ó "venLunu", Io que equIvuIe uI "dIccIonurIo". ¡os cu-
rucLeres posLerIores uI punLo ucLuuI Iormun Io que se denomInu eI "loolchecd
bujjer" ó buIIer de udeIunLumIenLo. En cudu puso, Iu cudenu que comIenzu en eI
punLo ucLuuI de Iu enLrudu se buscu IucIu uLrus en Iu "IIsLorIu". SI se encuenLru
unu coIncIdencIu que seu Io suIIcIenLemenLe Iurgu como puru LenerIu en cuenLu
(después se comenLuru esLu decIsIón), u Iu suIIdu se susLILuye Iu cudenu coIncI-
denLe por un pur que IndIcu eI "despIuzumIenLo IucIu uLrus" y Iu "IongILud" de
Iu coIncIdencIu con Iu cudenu IucIu uLrus. Como Ios pures (desplczcmiento,
lonçitud) ocupun menos que Iu cudenu que coIncIdIó, se obLIene compresIón.
SI no se encuenLru unu coIncIdencIu, Iu suIIdu es unu copIu litercl de Iu enLrudu.
PosLerIormenLe se uvunzu Iu venLunu (es decIr, se uvunzu en Iu enLrudu) bIen
lonçitud sI Iubo coIncIdencIu, bIen un curucLer sI no Iu Iubo.

EI IecIo de Ir despIuzundo Iu venLunu sobre Iu enLrudu Iuce que esLos uIgorIL-
mos seun IIumudos de "venLunu desIIzunLe". ¡u sIguIenLe IIguru IIusLru eI proce-
so deI uIgorILmo:

(p-n) actually here | (p)
+-------------------------------------|--------------------+
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+-------------------------------------|--------------------+
| | |
|<------- History = n bytes --------->|<-lookahead->| |
| (bytes already processed) |<----Still to go--->|
|<---------------------- INPUT DATA ---------------------->|
Tomcdo en pcrte de LZRW¸c, Ross N. Willicms.

EsLu Ideu Lun sencIIIu, que posLerIormenLe Iu Ido Lomundo cuerpo con oLrus
mejorus, es Iu buse de Iu muyoriu de Ios compresores ucLuuIes mus conocIdos y
poLenLes. EI descompresor es sorprendenLemenLe sencIIIo, yu que su "venLunu"
esLu Iormudu por Ios duLos que Iu descomprImIdo unLerIormenLe, y, cuundo
recIbe un pur (desplczcmiento, lonçitud), sóIo LIene que copIur u Iu suIIdu lon-
çitud byLes que esLun desplczcmiento byLes unLes. En eI cuso de recIbIr un lite-
rcl, esLe es copIudo LuI cuuI u Iu suIIdu.

ExIsLen mucIus consIderucIones ucercu de esLe uIgorILmo que Iucen que su
ImpIemenLucIón y esLudIo seun muy InLeresunLes. AI IguuI que ocurriu con Ios
compresores ¡Z;8, en cudu curucLer de Iu enLrudu se LIene que buscur unu co-
IncIdencIu en Iu enLrudu unLerIormenLe procesudu. EsLo nos Iuce pensur en un
esquemu purecIdo uI que InLrodujImos, uLIIIzundo LubIus hcsh. Pero uqui Iuy
un probIemu udIcIonuI: Iu venLunu se vu despIuzundo en cudu curucLer procesu-
do, por Io que Ius cudenus puru Ius que uLIIIzumos eI hcsh cumbIun de posIcIón
en cudu uvunce de Iu venLunu, y unu usocIucIón (tclor_hcsh, posición) no es
posIbIe. EsLe no es un probIemu sencIIIo. En |¸| se oIrece unu soIucIón con cr-
boles de Pctricic que esLu puLenLudu. ¡u soIucIón udopLudu en |¸| es Iu que co-
menLuremos uqui.

En prImer Iugur, se consIderu Iu enLrudu dIvIdIdu en bIoques de IongILud n
(Lumuño de Iu venLunu). ¡u enLrudu se munLIene IIju con respecLo u Ios IimILes
de Ios buIIers en Iu codIIIcucIón de cudu bIoque de n byLes. Se munLIene ude-
mus en eI buIIer uI menos n curucLeres que Iormun Iu IIsLorIu. Puru eIIo se pue-
de uLIIIzur un buIIer de zn curucLeres y comenzur u codIIIcur por Iu posIcIón n.
¡os curucLeres |o, (n-1)| son Iu venLunu o IIsLorIu (InIcIuImenLe vuciu) deI uIgo-
rILmo. ¡os |n,(zn-1)| son Iu enLrudu u procesur deI bIoque ucLuuI.

EI uIgorILmo comIenzu u reuIIzur su IuncIón sobre eI InIcIo de Iu enLrudu que se
encuenLru en Iu posIcIón n deI buIIer. EI prImer curucLer, en Iu posIcIón n, nun-
cu puede ser coIncIdencIu, pues Iu IIsLorIu esLu vuciu, Iuego Iu venLunu uvunzu
IucIu |1,n|. ¡u venLunu Iu uvunzudo, pero Ius posIcIones reIuLIvus de Ius cude-
nus con respecLo uI buIIer se munLIenen durunLe Iu codIIIcucIón deI bIoque deI
Lumuño de Iu venLunu. EI sIguIenLe dIbujo esquemuLIzu Iu orgunIzucIón:

buffer:
+----------------------------+---------------------------+
| |||||||||||||||||||||||||||||
+----------------------------+---------------------------+
0 n 2n-1
|<-------- Ventana --------->|<--- Bloque de Entrada --->|
|<------------------------- 2n ------------------------->|


Como sóIo esLun permILIdos vuIores puru desplczcmiento que cuIgun denLro de
Iu venLunu (n u Io sumo), u medIdu que ésLu se vu despIuzundo IucIu Iu derecIu,
Ios curucLeres que quedun u su IzquIerdu no LIenen yu vuIor puru eI uIgorILmo.
Con esLu orgunIzucIón esLu cIuro que cuuIquIer posIcIón de Iu enLrudu (|n, (zn-
1)|) LIene u su IzquIerdu unu IIsLorIu o venLunu de uI menos n curucLeres, como
eI uIgorILmo requIere. Cuundo se Iu codIIIcudo eI prImer bIoque de Lumuño n,
esLe es copIudo u Ius prImerus n posIcIones deI buIIer, con Io que pusun u ser Iu
IIsLorIu deI sIguIenLe bIoque de n curucLeres.

HusLu uqui Iemos deIInIdo un murco sobre eI que Lrubujur, yu que uIoru Ius
cudenus quedun en posIcIones IIjus con respecLo u Ios IimILes deI buIIer durunLe
Iu codIIIcucIón de un bIoque. EI sIguIenLe puso es Ideur unus esLrucLurus de du-
Los que nos permILun de Iormu rupIdu enconLrur Iu cudenu mus Iurgu en Iu ven-
Lunu que coIncIdu con Iu enLrudu pendIenLe de procesur en eI loolchecd.

¡u Ideu es consLruIr IIsLus enIuzudus puru Ius cudenus de curucLeres de Iu venLu-
nu que poseun eI mIsmo vuIor hcsh. EsLe vuIor se cuIcuIuru u purLIr de Ios prI-
meros l curucLeres de cudu cudenu, donde l corresponde u Iu IongILud minImu
de unu posIbIe coIncIdencIu (unu vez mus Iuy que ucIurur que después se co-
menLuru esLu decIsIón). Asi obLenemos unu grun probubIIIdud de que se consI-
gu uI menos unu coIncIdencIu de IongILud minImu (no es seguro yu que es
posIbIe que dos cudenus dIIerenLes Lengun eI mIsmo hcsh, es decIr, Ius IuncIo-
nes hcsh no son InyecLIvus en generuI). EI proceso enLonces seru sencIIIo: se
cuIcuIuru eI hcsh u Iu cudenu InmedIuLumenLe sIguIenLe en Iu enLrudu y se se-
guIru Iu IIsLu enIuzudu de cudenus con eI mIsmo vuIor IucIu uLrus compurundo
cudu cudenu con Iu que esLu en eI punLo ucLuuI de Iu enLrudu. SI se consIgue unu
coIncIdencIu, Iu cudenu coIncIdenLe es susLILuIdu u Iu suIIdu por eI pur (desplc-
zcmiento, lonçitud) correspondIenLe. SI no, Iu suIIdu es eI IILeruI u Iu enLrudu.
En umbos cusos se uñude como cubezu de Iu IIsLu de cudenus u Iu cudenu ucLuuI
y se uvunzu Iu venLunu.

Puru conseguIr Ius IIsLus, se usuru un urruy de "cubecerus de IIsLus", unu cubece-
ru puru cudu vuIor posIbIe de Iu IuncIón hcsh. ¡os indIces de esLe urruy serun
Ios posIbIes vuIores de Iu IuncIón hcsh, y eI vuIor usocIudo u cudu indIce seru Iu
posIcIón en eI buIIer de Iu úILImu cudenu cuyo vuIor hcsh coIncIde con eI indIce.
¡us IIsLus pueden ser munLenIdus en un ónico urruy de longitod n. EsLu es
Iu purLe mus dIIicII de Iu ImpIemenLucIón, yu que Lodus Ius IIsLus correspon-
dIenLes u Ius cudenus que poseen Ios mIsmos vuIores de Iu IuncIón hcsh se In-
Lroducen en un únIco urruy.

Puru ver esLo un poco mus cIuro, sI esLudIumos un poco Ius curucLerisLIcus de
Ius IIsLus, vemos que cudu cudenu comIenzu en unu posIcIón, Iuego unu posI-
cIón deI buIIer corresponde u unu únIcu IIsLu enIuzudu. En eI urruy de IIsLus,
cudu indIce, por ejempIo eI i, guurdu Iu posIcIón de Iu cudenu unLerIor cuyo vu-
Ior hcsh coIncIde con Iu cudenu que comIenzu en Iu posIcIón i deI buIIer. Puru
IIusLrur Lodo esLo, supongumos que eI urruy de cubecerus se IIumu hecd, que Iu
cudenu sIguIenLe en Iu enLrudu esLu en eI punLero pInPos, y que eI urruy de IIs-
Lus se IIumu pret. ¡u prImeru posIcIón puru compurur es Iu dudu por Iu cubezu
de Iu IIsLu puru Ius cudenus con eI mIsmo hcsh que Iu que comIenzu en pInPos.
Después se sIgue Iu IIsLu puru obLener Iu coIncIdencIu de muyor IongILud. EI sI-
guIenLe códIgo esquemuLIzu Iu búsquedu:

// Se calcula el hash de la cadena a la entrada
nHash = funcionHash(pInPos);

// La primera posición para encontrar una coincidencia es la cabeza
// de la lista de las cadenas con hash 'nHash'
comparePos = head[ nHash ];

while (comparePos != NIL && inWindow( comparePos ) )
{
obtenerLongitudCoincidencia( pInPos , comparePos );

// Ir al siguiente elemento de la lista para comparar
// la siguiente cadena
comparePos = prev[ comparePos mod n ]; (*)
}

En cudu compurucIón se guurdu Iu IongILud de Iu coIncIdencIu y Iu posIcIón pu-
ru Iu que se uIcunzó. EI resuILudo deI códIgo unLerIor son Ios vuIores de Iu coIn-
cIdencIu mus Iurgu y su posIcIón. ¡u condIcIón de purudu es que, bIen se ucube
Iu IIsLu, o bIen Iu posIcIón u compurur suIgu de Iu venLunu, con Io que pIerde In-
Lerés (recuérdese que Iu venLunu se vu despIuzundo IucIu Iu derecIu y mucIus
posIcIones quedun obsoIeLus).

Pero, sI Iuy unu correspondencIu dIrecLu enLre posIcIones deI urruy de IIsLus y
posIcIones deI buIIer, ¿cómo es que eI prImero LIene IongILud n y eI segundo
zn? ¡u respuesLu es que sóIo nos InLeresun n posIcIones deI urruy de IIsLus (Ius
que cuen denLro de unu venLunu y, por ende, Ios vuIores posIbIes puru eI des-
plczcmiento), por eso, en Iu Iineu señuIudu con usLerIsco (¯), Iu IndexucIón so-
bre pret se reuIIzu módulo tcmcño de lc tentcnc. EsLo nos Iuce que un indIce
i en pret correspondu u dos posIcIones deI buIIer: i e ((i+n) módulo zn). IPero
esLus posIcIones LIenen unu curucLerisLIcu especIuI!: dIsLun exucLumenLe n cu-
rucLeres, con Io que esLun jusLo en eI IimILe de Iu venLunu y, por Io que respecLu
uI uIgorILmo, no se soIupun.

¡us IIsLus se pueden Ir consLruyendo u medIdu que uvunzu eI uIgorILmo. Cudu
cudenu en cudu posIcIón de Iu enLrudu debe ser regIsLrudu en eI urruy de IIsLus
dependIendo de su vuIor hcsh. Puru conseguIr que Ius IIsLus esLén ordenudus
por proxImIdud, Iu posIcIón ucLuuI seru Iu que se InserLe en Iu cubeceru de Iu
IIsLu. SI suponemos que nos enconLrumos en eI punLo x deI buIIer, Iu IncIusIón
de Iu cudenu ucLuuI, con vuIor hcsh nHcsh, uI IguuI que en eI ejempIo unLerIor,
es como sIgue:

prev[ x mod n ] = head[ nHash ];
head[ nHash ] = x;

Quedu u Iu ImugInucIón y Iu perIcIu deI IecLor eI comprobur que esLus ucLuuIIzu-
cIones munLIenen en buen esLudo Ius IIsLus de cudenus.

Todos esLos pusos nos IIevuriun u unu codIIIcucIón suLIsIucLorIu de un bIoque de
enLrudu de n curucLeres. SIn emburgo, uI LermInur eI bIoque ucLuuI, yu se co-
menLó que ésLe debe pusur u ser uIoru Iu venLunu (Iu purLe IzquIerdu deI buIIer)
y oLro bIoque nuevo debe ocupur Iu posIcIón de Iu derecIu. PurLe de Iu InIormu-
cIón en umbos urruys, es decIr, en Ius IIsLus de cudenus, seru uIoru InvuIIdu. En
purLIcuIur, Ius cudenus que comIenzun en Iu purLe IzquIerdu deI buIIer. Ademus,
uIoru sI se Iun movIdo reuImenLe Ius cudenus IucIu Iu IzquIerdu. Huy que uc-
LuuIIzur, pues, Ios urruys hecd y pret. A cudu eIemenLo debemos resLur Ius po-
sIcIones que Iu venLunu se Iu desIIzudo, esLo es, n. ¡os vuIores en umbos urruys
que queden neguLIvos serun eIImInudos (converLIdos en N¡¡). Con esLo Len-
dremos oLru vez IIsLos umbos urruys puru comenzur Iu codIIIcucIón de oLro buI-
Ier.

EI probIemu de esLu ImpIemenLucIón son Ios grundes espucIos de curucLeres
IdénLIcos. Todus Ius cudenus que comIenzun en cudu posIcIón Lendrun eI mIsmo
hcsh y provocurun que se compuren con Iu cudenu ucLuuI, provocundo unu
compurucIón de cudenus por cudu byLe deI espucIo Iormudo por Ios curucLeres
IdénLIcos. EsLo Io Iuce muy IenLo, y es unu sILuucIón que Iuy que evILur. Se sue-
Ie Iucer resLrIngIendo eI número de compurucIones por cudu byLe ó purundo Iu
búsquedu en eI momenLo en eI que Iu coIncIdencIu mus Iurgu seu muyor que un
cIerLo vuIor.

OLru mejoru que se Ie uñude u esLu ImpIemenLucIón |¸| es Io que se denomInu
¨lczç etcluction mctches¨ o evuIuucIón perezosu de Ius coIncIdencIus. Se reIIe-
re u que unu coIncIdencIu no se produce sI eI sIguIenLe curucLer de Iu enLrudu
produce unu coIncIdencIu que es mus Iurgu (uI menos dos curucLeres mus) que
Iu ucLuuI.

ExIsLen muILILud de ImpIemenLucIones de Iu Ideu ¡Z;;. ¡u muyoriu de Ios
compresores mus conocIdos Iu uLIIIzun (AR1, PK-ZIP, RAR, DoubleSpc-
ceJDriteSpcce, eLc.). Cube desLucur unu serIe de uIgorILmos dIseñudos por
Ross WIIIIums |1q|. EsLos son LZRW:c y LZRW¸c. EI prImero es unu soIucIón
purecIdu u Iu unLerIor que sóIo uLIIIzu eI urruy hecd. Por eIIo, sóIo dIspone de
unu cudenu cuyo hcsh coIncIdIó con Iu ucLuuI. Dudu su sImpIIcIdud, es muy ru-
pIdo; y uún usi, su eIecLIvIdud es muy buenu. EI segundo uLIIIzu un esquemu
mus eIuborudo, pero en eI Iondo, unu sImpIIIIcucIón deI vIsLo unLerIormenLe.

No ucubun uqui Ius consIderucIones ucercu deI uIgorILmo. Dejumos puru des-
pués en dos ocusIones eI LruLumIenLo de Iu "coIncIdencIu de IongILud minImu",
y eIIo Iue porque esLe vuIor esLu muy reIucIonudo con oLros, como son eI Lumu-
ño de Iu venLunu y Iu IongILud muxImu udmILIdu en unu coIncIdencIu. EsLos dos
úILImos purumeLros es cIuro que deIImILun eI número de bILs que deben ser uLI-
IIzudos puru codIIIcur Ios pures (desplczcmiento, lonçitud). En prImer Iugur, y
puru uprovecIur Iu codIIIcucIón bInurIu, eI Lumuño de Iu venLunu LIene que ser
unu poLencIu de dos. Asi Lodos Ios posIbIes vuIores de desplczcmiento serun
posIbIes y no se desuprovecIu nInguno.

AI consIderur eI Lumuño de Iu venLunu, es cIuro que cuunLo mus grunde seu ésLu,
muyor seru Iu compresIón uI ser muyor LumbIén Iu IIsLorIu sobre Iu que se bus-
cun posIbIes coIncIdencIus, con mus probubIIIdud de enconLrur unu coIncIden-
cIu mus Iurgu. SIn emburgo, un Lumuño de venLunu grunde Iuce que puru
codIIIcur Ios vuIores de desplczcmiento uLIIIcemos mus bILs. Ademus, Ius coIn-
cIdencIus mus corLus (dos o Lres curucLeres) son Ius mus probubIes, y unu buenu
codIIIcucIón deberiu uIorrur mucIos bILs en Iu codIIIcucIón de Ios vuIores de
desplczcmiento y lonçitud de Ius coIncIdencIus mus probubIes. EsLo resLrInge
eI Lumuño de Iu venLunu u uno LuI que Iugu que desplczcmiento quepu en po-
cos bILs. EsLos dos probIemus enIrenLudos Iucen que eI Lumuño de Iu venLunu
seu unu consIderucIón ImporLunLe. Un Lumuño LipIco es eI que usIgnu 1z bILs
puru eI desplczcmiento (venLunu de qoq6 byLes) y unu lonçitud con un muxI-
mo de q bILs (1¸ byLes de coIncIdencIu muxImu; en reuIIdud 18, ¿por qué?), Io
que Iuce un LoLuI de 16 bILs puru eI pur y unu coIncIdencIu minImu de ¸ byLes.

Se pueden upIIcur, udemus, codIIIcucIones de IongILud vurIubIe dependIendo de
Iu IongILud de Iu coIncIdencIu y de su despIuzumIenLo, pero que u su vez requIe-
ren bILs udIcIonuIes. EsLus codIIIcucIones son Lun ImporLunLes que pueden dur
unu dIIerencIu noLubIe enLre dos compresores deI mIsmo LIpo. ¡u muyor purLe
deI esIuerzo de dIseño se guiu IucIu esLe punLo en Ios compresores en LIempo
reuI que después veremos.

EI sIguIenLe puso es IIevur Iu codIIIcucIón de Ios despIuzumIenLos, IongILudes y
IILeruIes IucIu unu eIIcIencIu muyor upIIcundo LécnIcus esLudisLIcus u Iu suIIdu.
EsLus Ideus se esLudIurun en eI sIguIenLe punLo.

2.3.4 Compresores híbridos o de dos fases

EsLu seccIón cuImInuru Iu codIIIcucIón ¡Z;; con Iu InLroduccIón de codIIIcucIo-
nes udIcIonuIes u Iu suIIdu de esLe LIpo de uIgorILmos. VImos que eI modo de
codIIIcur Ios duLos u Iu suIIdu (bIen pures (desplczcmiento, lonçitud), bIen lite-
rcles) eru de sumu ImporLuncIu. EI úILImo puso es IIevur esu codIIIcucIón usun-
do de unu Iormu modIIIcudu Ios uIgorILmos esLudisLIcos que vImos
unLerIormenLe, LunLo HuIImun como SIunnon-¡uno como Ios compresores
urILméLIcos. ¡u operucIón consIsLe en IIevur Lres esLudisLIcus de IrecuencIus se-
purudus puru cudu uno de Ios duLos u Iu suIIdu deI uIgorILmo ¡Z;;: despIuzu-
mIenLos, IongILudes y IILeruIes. Con esLos duLos esLudisLIcos, podemos reuIIzur
Iu codIIIcucIón IndependIenLemenLe puru cudu uno de esLos LIpos de vuIores.

EsLo sIgnIIIcu, según eI LIpo de compresor esLudisLIco uLIIIzudo, Lener un urboI
puru cudu LIpo de duLo (HuIImun ó SIunnon-¡uno) o unu LubIu de IrecuencIus
en Iu compresIón urILméLIcu. En |1¸| podemos ver un pequeño esLudIo ucercu
de Iu convenIencIu de uLIIIzur compresores esLudisLIcos u Iu suIIdu de un com-
presor ¡Z;;, en eI que se IIegu u Iu concIusIón de que eI uso de HuIImun es cusI
Lun eIIcIenLe que eI uso de un compresor urILméLIco uunque mucIo mus rupIdo.
TumbIén se pruebun vurIus uILernuLIvus u Iu Ioru de consLruIr Ios códIgos puru
cudu LIpo de duLo, como son urboIes HuIImun precuIcuIudos o consIderur sóIo
Ios l bILs uILos deI despIuzumIenLo (Lénguse en cuenLu que, por un Iudo, Iuy
mucIos vuIores posIbIes puru eI despIuzumIenLo y eI urboI seriu muy grunde, y,
por oLro, es obvIo que Iu vurIubIIIdud de cudu despIuzumIenLo es cusI ImprevI-
sIbIe. EI consIderur sóIo Ios l bILs uILos reduce Iu vurIubIIIdud y Iu mugnILud deI
urboI) y Ios resLunLes terbctim.

OLru uILernuLIvu es uLIIIzur urboIes de códIgos udupLuLIvos, como Ios ¨splcç
trees¨ |16|.

EjempIos de compresores Iumosos de esLe esLIIo son:

• ARJ, LHA: ¡Z;; + HuIImun esLuLIco u bIoques
• ZIP 1.x: ¡Z;; + SIunnon-¡uno (¡mpIodIng), ≈¡ZW (SIrInkIng)
• ZIP ±.x y gzip: ¡Z;; + HuIImun dInumIco ó HuIImun esLuLIco u bIo-
ques (DeIIuLe)
• HA: PPMC (ModeIo de Murkov de qº orden, es decIr, compresIón urIL-
méLIcu)
• LC±: ¡Z;; + HuIImun esLuLIco + Io que eIIos IIumun ¨shcred dictionc-
ries cmonç jiles¨. ¡o que sIgnIIIcu sóIo Io suben uIIi en AIP Detelop-
ment.


2.4 Compresores en tiempo real

Con eI uumenLo de veIocIdud de Ios ordenudores Iu compresIón se esLu upII-
cundo cudu vez mus u enLornos en LIempo reuI o de compresIón LrunspurenLe.
En esLu seccIón comenLuremos Ius curucLerisLIcus y usos de esLe LIpo de com-
presIón.

En cuunLo u Ios usos, Lenemos Ios sIguIenLes:

• compresIón de dIsco en LIempo reuI: Stucker, SoperStor, ÐoobleS-
puce [ ÐriveSpuce, sIsLemu de IIcIeros de WIndows NT, NTIS,
• compresIón LrunspurenLe en comunIcucIones (no muy upIIcudu, por cIer-
Lo, nI en ¡Pv6),
• soporLe de .Z¡P y .GZ dIrecLo en UnIx,
• LruLumIenLo, en uIgunos sIsLemus operuLIvos, de Ios urcIIvos comprImI-
dos como dIrecLorIos,
• sIsLemus de uyudu comprImIdos como Ios .HLP de WIndows o Ios Por-
tuble Ðocoment Iormut {PÐI) de Adobe SysLems,
• IormuLos de video comprImIdos (de Iormu lossless) puru juegos, presen-
LucIones, eLc.

En cuunLo u Ius curucLerisLIcus, se dIru que Iu compresIón y descompresIón de-
be ser muy rupIdu y con unus necesIdudes de memorIu reducIdus. Por eso uqui
LumbIén Ios mus uLIIIzudos son vurIunLes de ¡Z;;, como LZRW:c comenLudo
unLerIormenLe. Unu curucLerisLIcu ImporLunLe de esLe LIpo de uIgorILmos es que
Iu descompresIón es LunLo mus rupIdu cuunLo mus se Iuyu comprImIdo eI orI-
gInuI.


2.5 El futuro de la compresión de
datos

Unu vez mus: es dIIicII predecIr. No obsLunLe, uI Ir uumenLundo Iu veIocIdud de
Ios ordenudores, uIgorILmos que unLes no se podiun consIderur de LIempo reuI
pueden ser uLIIIzudos en esLos enLornos, dundo unu medIu superIor de compre-
sIón. ¡os compresores busudos en dIccIonurIo yu esLun busLunLe cercu de Iu co-
Lu de SIunnon, pero son superudos por Ios urILméLIcos, mus IenLos.

SIn emburgo, eI InLerés ucLuuI se desviu u Ios compresores lossç dudo eI uuge
que Ius LécnIcus muILImedIu Iun experImenLudo. Con Iu venIdu de Iu LeIevIsIón
dIgILuI, por ejempIo, Iu búsquedu de uIgorILmos de compresIón de Imugenes y
sonIdo pusu u prImer pIuno. En eI sIguIenLe punLo se LruLurun Ios compresores
lossç. EjempIos de Ios uvunces en esLe LIpo de compresores son, por ejempIo, eI
esLundur MPEG-z, usudo ucLuuImenLe por Ius compuñius de LeIevIsIón en sus
enIuces por suLéIILe, y Io que se denomInu MPEG lcçer ¸, uLIIIzudo en compre-
sIón de sonIdo de cuIIdud CD, con unu reduccIón normuI de 8 u 1.


3 Compresión lossy

3.1 Introducción

Es obvIo que LrunsmILIr muLerIuI muILImedIu sIn comprImIr es ImpensubIe. ¡u
únIcu esperunzu es que Iu compresIón musIvu seu posIbIe. AIorLunudumenLe,
un grun esIuerzo de InvesLIgucIón durunLe Ius pusudus décudus Iu IIevudo u
mucIus LécnIcus y uIgorILmos que Iucen Iu compresIón muILImedIu posIbIe.

Todos Ios sIsLemus de compresIón requIeren dos uIgorILmos, uno puru com-
prImIr Ios duLos en eI orIgen, y oLro puru descomprImIrIos en eI desLIno. En Iu
IILeruLuru, esLos uIgorILmos son reIerIdos como uIgorILmos de codIIIcucIón y
decodIIIcucIón, respecLIvumenLe.
EsLos uIgorILmos LIenen cIerLus usImeLrius que son ImporLunLes de com-
prender. PrImerumenLe, puru mucIus upIIcucIones, un documenLo muILImedIu,
por ejempIo, unu peIicuIu, seru codIIIcudu sóIo unu vez (cuundo es guurdudu en
eI servIdor muILImedIu) pero seru decodIIIcudu mIIes de veces (cuundo es vIsLu
por Ios cIIenLes). EsLu usImeLriu sIgnIIIcu que es ucepLubIe puru eI uIgorILmo de
codIIIcucIón eI ser IenLo y requerIr Iurdwure curo sIempre que eI uIgorILmo de
decodIIIcucIón seu rupIdo y no requIeru Iurdwure curo. Después de Lodo, eI
operudor de un servIdor muILImedIu puede uIquIIur un superordenudor puruIe-
Io por un pur de semunus puru codIIIcur su bIbIIoLecu de video enLeru, pero
Iucer que Ios consumIdores uIquIIen un superordenudor por dos Iorus puru
ver un video no es muy buenu Ideu. MucIos sIsLemus de compresIón IIegun u
Iucer Iu decodIIIcucIón rupIdu y sImpIe, IncIuso uI precIo de Iucer Iu codIIIcu-
cIón IenLu y compIIcudu.
Por oLro Iudo, puru muILImedIu en LIempo reuI, como vIdeoconIerencIu,
Iu codIIIcucIón IenLu es InucepLubIe. ¡u codIIIcucIón debe ocurrIr uI InsLunLe, en
LIempo reuI. ConsecuenLemenLe, en muILImedIu en LIempo reuI se usun dIIeren-
Les uIgorILmos o purumeLros que uI uImucenur videos en dIsco, u menudo con
uprecIubIemenLe menor compresIón.
Unu segundu usImeLriu es que eI proceso de codIIIcucIónJdecodIIIcucIón
no necesILu ser reversIbIe. EsLo es, cuundo se comprIme un IIcIero, se LrunsmI-
Le, y cuundo de descomprIme, eI usuurIo esperu conseguIr eI orIgInuI, IguuI Ius-
Lu eI úILImo bIL. En muILImedIu, esLe requerImIenLo no exIsLe. Es usuuImenLe
ucepLubIe que Iu señuI de video seu IIgerumenLe dIIerenLe de Iu orIgInuI. Cuundo
Iu suIIdu decodIIIcudu no es exucLumenLe IguuI u Iu enLrudu orIgInuI, eI sIsLemu
se IIumu ¨con pérdIdus¨ (Iossy). SI Iu enLrudu y Iu suIIdu son IdénLIcus, eI sIsLe-
mu es ¨sIn pérdIdus¨ (IossIess). ¡os sIsLemus con pérdIdus son ImporLunLes
porque ucepLur unu pequeñu cunLIdud de pérdIdu de InIormucIón puede dur
unu enorme gununcIu en LérmInos de posIbIIIdud de ruLIo de compresIón.

3.1.1 Codificación por entropía

¡os esquemus de compresIón pueden ser dIvIdIdos en dos cuLegorius ge-
neruIes: codIIIcucIón por enLropiu y codIIIcucIón de Iu IuenLe.
¡u codIIIcucIón por enLropiu sóIo munIpuIu Ius cudenus de bILs sIn suber
Io que sIgnIIIcun Ios bILs. Es unu LécnIcu LoLuImenLe reversIbIe, sIn pérdIdus y
generuI, upIIcubIe u Lodos Ios duLos. Se dun Lres ejempIos
EI prImer ejempIo de codIIIcucIón por enLropiu es R¡E (Run ¡engLI En-
codIng). En mucIos LIpos de duLos, son comunes Ius cudenus de simboIos repe-
LIdos (bILs, números, eLc.). ÉsLos pueden ser reempIuzudos por un murcudor
especIuI no permILIdo de oLru Iormu en Ios duLos, seguIdo por un simboIo que
IndIcu Iu repeLIcIón, y seguIdo por cuunLus veces Iu ocurrIdo. SI eI mIsmo mur-
cudor especIuI suIe en Ios duLos, se dupIIcu (como en reIIeno de curucLer (cIu-
rucLer sLuIIIng)). Por ejempIo, sI se consIderu Iu sIguIenLe cudenu de digILos
decImuIes:

¸1¸oooooooooooo8q¸8;11111111111116¸¸q6;qoooooooooooooooooooooo


SI uIoru se InLroduce A como eI murcudor y se usun números de dos digILos
puru Iu cuenLu de repeLIcIones, se puede codIIIcur Iu cudenu de digILos de urrIbu
como:

¸1¸Ao1z8q¸8;A11¸16¸¸q6;qAozz6¸

Aqui eI R¡E Iu ucorLudo Iu cudenu de duLos u Iu mILud.
¡us repeLIcIones son comunes en muILImedIu. En uudIo, eI sIIencIo es u
menudo represenLudo por repeLIcIones de ceros. En video, Ius repeLIcIones deI
mIsmo coIor ocurren en enIoques uI cIeIo, muros, y mucIus oLrus superIIcIes
pIunus. Todus esLus repeLIcIones se pueden comprImIr mucIo.
EI segundo ejempIo de codIIIcucIón por enLropiu es Iu codIIIcucIón esLu-
disLIcu. Por esLo se enLIende usur un códIgo corLo puru represenLur simboIos
comunes y Iurgo puru represenLur Ios InIrecuenLes. EI códIgo Morse usu esLe
prIncIpIo, sIendo Iu E · y Iu Q --·- y usi sucesIvumenLe.
EI Lercer ejempIo de Iu codIIIcucIón por enLropiu es codIIIcucIón C¡UT
(CoIor ¡ook Up TubIe). ConsIderur unu Imugen usundo codIIIcucIón RGB con ¸
byLes por pIxeI. En Leoriu, Iu Imugen puede conLener IusLu z
zq
dIIerenLes vuIo-
res de coIor. En Iu prucLIcu conLendru normuImenLe mucIos menos vuIores,
especIuImenLe sI Iu Imugen es un dIbujo unImudo o generudo por ordenudor,
mus que unu IoLogruIiu. Se supone que sóIo z¸6 vuIores de coIor son usudos
ucLuuImenLe. Un IucLor de compresIón de cusI Lres puede ser uIcunzudo cons-
Lruyendo unu LubIu de ;68 byLes IIsLundo Ios vuIores RGB de Ios z¸6 coIores
usudos ucLuuImenLe, y después represenLundo cudu pIxeI por eI indIce de su
vuIor RGB en Iu LubIu. Aqui se ve un ejempIo cIuro donde Iu codIIIcucIón es mus
IenLu que Iu decodIIIcucIón porque codIIIcur requIere buscur en Iu LubIu mIen-
Lrus que se puede decodIIIcur con unu soIu operucIón de IndexucIón.

3.1.2 Codificación de la fuente

¡u codIIIcucIón de Iu IuenLe se beneIIcIu de Ius propIedudes de Ios duLos
puru producIr mus (usuuImenLe con perdIdus) compresIón. Aqui LumbIén se
IIusLru Iu Ideu con Lres ejempIos. EI prImer ejempIo es Iu codIIIcucIón dIIeren-
cIuI, en Iu cuuI unu secuencIu de vuIores (p.e., sumpIes de uudIo) son codIIIcu-
dos represenLundo cudu uno de Ios vuIores como Iu dIIerencIu respecLo u un
vuIor prevIo. ¡u moduIucIón dIIerencIuI por puIsos (DIIIerenLIuI PuIse Code
ModuIuLIon) es un ejempIo de esLu LécnIcu. Es con perdIdus porque Iu señuI
puede suILur LunLo enLre dos vuIores consecuLIvos que Iu dIIerencIu no cube en
eI cumpo proporcIonudo puru expresur Ius dIIerencIus, usi que uI menos un vu-
Ior IncorrecLo seru grubudo y uIgunu InIormucIón se perderu.
¡u codIIIcucIón dIIerencIuI es un LIpo de codIIIcucIón de Iu IuenLe porque
se uprovecIu Iu propIedud de que suILos grundes enLre duLos consecuLIvos son
ImprobubIes. No Lodus Ius secuencIus de números LIenen esLu propIedud. Un
ejempIo de curencIu de esLu propIedud es unu IIsLu generudu por ordenudor de
números de LeIéIono uIeuLorIos usudu por Ios pubIIcIsLus puru moIesLur u Iu
genLe durunLe Iu cenu. ¡us dIIerencIus enLre números de LeIéIono consecuLIvos
en Iu IIsLu usuru LunLos bILs como puru represenLur Ios números de LeIéIono.
Un cuso purLIcuIur de Iu codIIIcucIón dIIerencIuI es Iu ModuIucIón DeILu,
en Iu que se requIere que cudu vuIor sumpIeudo dIIIeru de su predecesor en +1 ó
-1:




EI segundo ejempIo de codIIIcucIón de Iu IuenLe consIsLe en LrunsIormu-
cIones. TrunsIormundo Ius señuIes de un domInIo u oLro, Iu compresIón puede
Iucerse mucIo mus IucII. ConsIdérese, por ejempIo, unu LrunsIormudu de ¡ou-
rIer. Unu IuncIón deI LIempo es represenLudu como unu IIsLu de umpIILudes.
Dudos Ios vuIores exucLos de Lodus Ius umpIILudes, Iu IuncIón orIgInuI puede ser
reconsLruIdu perIecLumenLe. De cuuIquIer modo, dundo sóIo Ios vuIores de Ius
prImerus, por ejempIo, ocIo umpIILudes redondeudus u dos decImuIes, puede
Loduviu ser posIbIe reconsLruIr Iu señuI de Iormu que eI que escucIu no puedu
decIr sI se Iu perdIdo uIgunu InIormucIón. ¡u gununcIu es que LrunsmILIr ocIo
umpIILudes requIere mucIos menos bILs que LrunsmILIr Iu ondu sumpIeudu.

¡us LrunsIormucIones son LumbIén upIIcubIes u duLos de Imugenes bIdI-
mensIonuIes. Suponer que Iu muLrIz de q × q de Iu IIguru represenLu Ios vuIores
de escuIu de grIses de unu Imugen monocromu.. Se puede LrunsIormur esos du-
Los resLundo eI vuIor de Iu esquInu superIor IzquIerdu u Lodos Ios eIemenLos ex-
cepLo u éI mIsmo, como en Iu oLru IIguru. EsLu LrunsIormucIón podriu ser úLII sI
se usu codIIIcucIón de IongILud vurIubIe. Por ejempIo, Ios vuIores enLre -; y +;
podriun ser codIIIcudos con números de q bILs y Ios vuIores enLre o y z¸¸ po-
driun ser codIIIcudos con un códIgo especIuI de q bILs (-8) seguIdo por un nú-
mero de 8 bILs.



Aunque esLu sImpIe LrunsIormucIón es sIn pérdIdus, oLrus, mus úLIIes, no.
Unu LrunsIormucIón espucIuI bIdImensIonuI especIuImenLe ImporLunLe es Iu
DCT (DIscreLe CosIne TrunsIormuLIon). EsLu LrunsIormucIón LIene Iu propIedud
de que puru Imugenes sIn dIsconLInuIdudes muy pronuncIudus, cusI Lodo eI es-
pecLro de poLencIu esLu en Ios prImeros LérmInos, permILIendo Ignorur Ios úI-
LImos sIn mucIu pérdIdu de InIormucIón. Se voIveru uI DCT denLro de poco.
EI Lercer ejempIo de codIIIcucIón de Iu IuenLe es Iu cuunLIzucIón de vecLo-
res (tector qucntizction), que es LumbIén dIrecLumenLe upIIcubIe u duLos de
Imugenes. Aqui Iu Imugen se dIvIde en recLunguIos de Lumuño IIjo. Ademus de
Iu Imugen mIsmu, LumbIén se necesILu unu LubIu de recLunguIos deI mIsmo Lu-
muño que Ios recLunguIos de Iu Imugen (posIbIemenLe consLruIdos u purLIr de
Iu Imugen). EsLu LubIu se IIumu IIbro de códIgos (code bool). Cudu recLunguIo es
LrunsmILIdo buscundoIo en eI IIbro de códIgos y mundundo eI indIce en vez deI
recLunguIo. SI eI IIbro de códIgos es creudo dInumIcumenLe (u purLIr de Iu Imu-
gen), debe ser LrunsmILIdo LumbIén. CIurumenLe, sI un pequeño número de rec-
LunguIos domInu Iu Imugen, grundes uIorros en uncIo de bundu serun posIbIes
uqui.
Un ejempIo de cuunLIzucIón de vecLores se enseñu en Ius sIguIenLes IIgu-
rus. En Iu prImeru se LIene unu rejIIIu de recLunguIos de Lumuño sIn especIIIcur.
En Iu segundu se LIene eI IIbro de códIgos. ¡u suIIdu es sóIo Iu IIsLu de enLeros
oo1ozzo¸zzooqoo de Iu Lerceru IIguru. Cudu uno represenLu unu enLrudu deI
IIbro de códIgos.



Se podriu pensur que Iu cuunLIzucIón de vecLores es sóIo unu generuIIzu-
cIón bIdImensIonuI de C¡UT. Pero Iu dIIerencIu reuI es Io que pusu sI no se en-
cuenLrun coIncIdencIus. Tres esLruLegIus son posIbIes. ¡u prImeru es sóIo usur
Iu mejor coIncIdencIu. ¡u segundu es usur Iu mejor coIncIdencIu, y uñudIr uIgu-
nu InIormucIón sobre cómo mejorur Iu coIncIdencIu (p.e. uñudIr eI vuIor me-
dIo). EI Lercero es usur Iu mejor coIncIdencIu y uñudIr Lodo uqueIIo que seu
necesurIo puru permILIr uI decodIIIcudor reconsLruIr Ios duLos exucLumenLe. ¡us
prImerus esLruLegIus son con pérdIdus pero se uIcunzu mucIu compresIón. ¡u
Lerceru es sIn pérdIdus pero menos eIecLIvu como uIgorILmo de compresIón.
OLru vez, se ve que codIIIcur (coIncIdencIu de puLrones) consume mucIo mus
que decodIIIcur (Indexur en unu LubIu).

3.2 El estándar JPEG

EI esLundur JPEG (JoInL PIoLogrupIIc ExperLs Group) puru comprImIr
Imugenes de Lonos conLInuos (p.e. IoLogruIius) Iue desurroIIudo por experLos
IoLogruIIcos Lrubujundo junLos bujo Ios uuspIcIos de ¡TU, ¡SO e ¡EC. Es Impor-
LunLe puru muILImedIu porque, en unu prImeru uproxImucIón, eI esLundur muI-
LImedIu puru Imugenes en movImIenLo, MPEG, es sóIo Iu codIIIcucIón JPEG de
cudu IoLogrumu sepurudumenLe, udemus de uIgunus curucLerisLIcus exLru puru
compresIón enLre IoLogrumus y deLeccIón de movImIenLo. JPEG esLu deIInIdo
en eI esLundur InLernucIonuI 1oq18.
JPEG LIene cuuLro modos y mucIus opcIones. Es mus como unu IIsLu de
Iu compru que un sóIo uIgorILmo. Puru nuesLros propósILos, sIn emburgo, sóIo
eI modo secuencIuI con pérdIdus es reIevunLe, y es eI IIusLrudo en Iu IIguru. Mus
udeIunLe, se expIIcuru Iu Iormu en Iu que eI JPEG es normuImenLe usudo puru
codIIIcur Imugenes de video RGB de zq bILs y se dejurun uIgunos de Ios deLuIIes
por sImpIIcIdud.


EI puso 1 de Iu codIIIcucIón de unu Imugen con JPEG es Iu prepurucIón de
bIoques. Por especIIIcIdud, se usumIru que Iu enLrudu JPEG es unu Imugen
RGB con zq bIL por pixeI, como se ve en Iu IIguru. Usundo Iu IumInuncIu (brIIIo)
y Iu cromInuncIu (coIor) se consIgue mejor compresIón. EsLos vuIores son oLru
Iormu de expresur Ios vuIores RGB de unu Imugen. EI ojo es mucIo mus sensI-
bIe u Iu señuI de IumInuncIu que u Ius señuIes de cromInuncIu, usi que no Iuce
IuILu LunLu precIsIón en esLus úILImus. EsLo LumbIén permILe compuLIbIIIzur Ius
LrunsmIsIones de LeIevIsIón puru recepLores en bIunco y negro y coIor. ¡us dos
señuIes de cromInuncIu se LrunsmILen en esLrecIus bundus u mus uILus Irecuen-
cIus. VoIvIendo u Iu compresIón, prImero se compuLu Iu IumInuncIu, Y, y Ius dos
cromInuncIus, ¡ y Q (puru NTSC), de ucuerdo u Ius sIguIenLes IórmuIus:

Y = o.¸R + o.¸qG + o.11B
¡ = o.6oR - o.z8G - o.¸zB
Q = o.z1R - o.¸zG + o.¸1B

Puru PA¡, Ius cromInuncIus se IIumun U y V y Ios coeIIcIenLes son dIIerenLes,
pero Iu Ideu es Iu mIsmu. SECAM es dIIerenLe u NTSC y PA¡.
Se consLruyen muLrIces sepurudus puru Iu Y, ¡ y Q, cudu unu con eIemen-
Los en eI rungo de o u z¸¸. Después, se Iuce Iu medIu de bIoques cuudrudos de
cuuLro pixeIes en Ius muLrIces ¡ y Q puru reducIrIus u ¸zo × zqo. EsLu reduccIón
es con pérdIdus, pero eI ojo cusI no Io noLu, yu que eI ojo responde mus u Iu Iu-
mInuncIu que u Iu cromInuncIu. De cuuIquIer Iormu, esLo comprIme Ios duLos
por un IucLor de dos. AIoru se Ie resLu 1z8 u cudu eIemenLo de Ius Lres muLrIces
puru poner un o en medIo deI rungo. ¡InuImenLe, cudu muLrIz se dIvIde en bIo-
ques de 8 × 8. ¡u muLrIz Y LIene q8oo bIoques; Ius oLrus dos LIenen 1zoo bIo-
ques cudu unu, como se observu en Iu IIguru..




EI puso z de JPEG es upIIcur unu LrunsIormucIón dIscreLu de cosenos u
cudu uno de Ios ;zoo bIoques sepurudumenLe. ¡u suIIdu de cudu DCT es unu
muLrIz 8 × 8 de coeIIcIenLes DCT. EI eIemenLo DCT (o,o) es Iu medIu deI bIo-
que. ¡os oLros eIemenLos dIcen cuunLu poLencIu especLruI esLu presenLe en cudu
IrecuencIu espucIuI. En Leoriu un DCT es sIn pérdIdus, pero en Iu prucLIcu,
usundo números en comu IIoLunLe sIempre se InLroduce uIgo de error de re-
dondeo que resuILu en unu pérdIdu de InIormucIón. NormuImenLe, esLos eIe-
menLos decuen rupIdumenLe con Iu dIsLuncIu uI orIgen, (o,o), como se ve en Iu
IIguru.


Unu vez compIeLudo eI DCT, IIegu eI puso ¸ deI JPEG, IIumudo cuunLIzu-
cIón, en eI cuuI Ios coeIIcIenLes DCT menos ImporLunLes se quILun. EsLu Lruns-
IormucIón (con pérdIdus) se Iuce dIvIdIendo cudu coeIIcIenLe en Iu muLrIz DCT
8 × 8 por un peso cogIdo de unu LubIu. SI Lodos Ios pesos son 1, Iu LrunsIormu-
cIón no Iuce nudu. Pero sI Ios pesos se IncremenLun rupIdumenLe desde eI orI-
gen, Ius IrecuencIus espucIuIes mus uILus son se desecIun enseguIdu.
Un ejempIo de esLe puso se du en Iu IIguru sIguIenLe. Aqui se ve Iu LubIu
de cuunLIzucIón, y eI resuILudo obLenIdo dIvIdIendo cudu eIemenLo DCT de Iu
IIguru unLerIor por eI correspondIenLe eIemenLo de Iu LubIu de cuunLIzucIón.
¡os vuIores de Iu LubIu de cuunLIzucIón no son purLe deI esLundur JPEG. Cudu
upIIcucIón debe Lener su LubIu, permILIendo conLroIur Iu compresIón con pérdI-
dus.


EI puso q reduce eI vuIor (o,o) de cudu bIoque (eI de Iu esquInu superIor
IzquIerdu) reempIuzundoIo por Iu cunLIdud en que dIIIere deI eIemenLo corres-
pondIenLe en eI bIoque prevIo. Como esLos eIemenLos son Iu medIu de sus res-
pecLIvos bIoques, deberiun cumbIur IenLumenLe, usi que Lomur Ios vuIores
dIIerencIuIes deberiu reducIr Iu muyoriu de eIIos u vuIores pequeños. No se
compuLun dIIerencIuIes de Ios oLros vuIores. ¡os vuIores (o,o) son reIerIdos
como Ius componenLes DC; Ios oLros vuIores son Ios componenLes AC.
EI puso ¸ IIneurIzu Ios 6q eIemenLos y upIIcu R¡E u Iu IIsLu. Recorrer eI
bIoque de IzquIerdu u derecIu y de urrIbu ubujo no concenLruru Ios ceros jun-
Los, usi que se usu un puLrón de recorrIdo en zIg-zug, mosLrudo en Iu IIguru. En
esLe ejempIo, eI puLrón en zIg-zug produce ¸8 ceros consecuLIvos uI IInuI de Iu
muLrIz. EsLu cudenu puede ser reducIdu u unu únIcu cuenLu dIcIendo que Iuy
¸8 ceros.



AIoru se LIene unu IIsLu de números que represenLun Iu Imugen (en eI es-
pucIo LrunsIormudo). EI puso 6 codIIIcu por HuIImun Ios números puru uImu-
cenumIenLo o LrunsmIsIón.
EI JPEG puede purecer compIIcudo, pero es porque es compIIcudo. Aun-
que como oIrece unu compresIón de zo:1 o mejor, es umpIIumenLe usudo. De-
codIIIcur unu Imugen JPEG requIere ejecuLur eI uIgorILmo uI revés. A dIIerencIu
de oLros uIgorILmos vIsLos, JPEG es muy sIméLrIco: decodIIIcur IIevu LunLo co-
mo codIIIcur.
Es busLunLe InLeresunLe que debIdo u Ius propIedudes muLemuLIcus de Iu
DCT, es posIbIe IIevur u cubo cIerLus LrunsIormucIones geoméLrIcus (p.e. roLu-
cIón de Imugen) dIrecLumenLe en Iu muLrIz LrunsIormudu, sIn regenerur Iu Imu-
gen orIgInuI. PropIedudes sImIIures LumbIén se upIIcun uI uudIo MPEG
comprImIdo.

3.3 El estándar MPEG

¡InuImenLe, IIegumos uI coruzón deI usunLo; Ios esLundures MPEG (Mo-
LIon PIcLure ExperLs Group). ÉsLos son Ios uIgorILmos mus ImporLunLes puru
comprImIr videos y son un esLundur InLernucIonuI desde 1qq¸. Como Ius peIi-
cuIus conLIenen Imugenes y sonIdo, MPEG puede comprImIr uudIo y video, pe-
ro como eI video necesILu mus uncIo de bundu y LumbIén conLIene mus redun-
duncIu que uI uudIo, nos cenLruremos en Iu compresIón de video MPEG.
EI prImer esLundur que se IInuIIzó Iue MPEG-1 (esLundur InLernucIonuI
111;z). DesLucubu por producIr unu suIIdu con cuIIdud de grubudor de video
(¸¸z × zqo puru NTSC) usundo un bIL ruLe de 1.z Mbps. Como eI video sIn
comprImIr puede necesILur IusLu q;z Mbps, dejurIo en 1.z Mbps no es enLeru-
menLe LrIvIuI, IncIuso u esLu buju resoIucIón. MPEG-1 puede ser LrunsmILIdo
por Iineus de LrunsmIsIón de pur Lrenzudo puru pequeñus dIsLuncIus. MPEG-1
LumbIén se usu puru guurdur peIicuIus en IormuLo CD-ROM y CD-Video.
EI sIguIenLe esLundur en Iu IumIIIu MPEG Iue MPEG-z (esLundur InLer-
nucIonuI 1¸818), que Iue orIgInuImenLe dIseñudo puru comprImIr video con
cuIIdud de dIIusIón en q u 6 Mbps, puru que pudIeru cuber en un cunuI de dIIu-
sIón NTSC o PA¡. Mus Lurde, MPEG Iue expundIdo puru soporLur mus uILus
resoIucIones, IncIuyendo HDTV.
MPEG-q es puru vIdeoconIerencIu de medIu resoIucIón con bujos Irume
ruLes (1o IrumesJs) y en bujos uncIos de bundu (6q kbps). EsLo permILe mun-
Lener vIdeoconIerencIus en un soIo cunuI N-RDS¡ B. Con esLu numerucIón, se
podriu pensur que eI sIguIenLe esLundur seru MPEG-8. AcLuuImenLe ¡SO Ios
esLu numerundo IIneuImenLe, no exponencIuImenLe. OrIgInuImenLe exIsLIó
MPEG-¸. EsLubu desLInudo u HDTV, pero se cunceIó eI proyecLo y se IncIuyó
HDTV u MPEG-z.


¡os prIncIpIos busIcos de MPEG-1 y MPEG-z son sImIIures, pero Ios de-
LuIIes son dIIerenLes. En unu prImeru uproxImucIón, MPEG-z es un supercon-
junLo de MPEG-1, con curucLerisLIcus udIcIonuIes, IormuLos de IoLogrumu, y
opcIones de codIIIcucIón. Purece que MPEG-1 domInuru en Ius peIicuIus en CD-
ROM y MPEG-z en LrunsmIsIones de video de Iurgu dIsLuncIu. Se dIscuLIru
prImero MPEG-1 y después MPEG-z.
MPEG-1 LIene Lres purLes: uudIo, video y sIsLemu, que InLegru Ius oLrus
dos. ¡os codIIIcudores de uudIo y de video Lrubujun IndependIenLemenLe, Io
que IncremenLu eI probIemu de cómo Ius dos IuenLes se sIncronIzun en eI re-
cepLor. EsLe probIemu se soIucIonu LenIendo un reIoj de sIsLemu de qo KHz que
sumInIsLru eI vuIor ucLuuI de LIempo u umbos codIIIcudores. EsLos vuIores son
de ¸¸ bILs, puru permILIr u Ius peIicuIus correr durunLe zq Iorus. ¡us murcus de
LIempo se IncIuyen en Iu suIIdu codIIIcudu y se propugun Lodo en cumIno IusLu
en recepLor, que Ios usu puru sIncronIzur Ius IuenLes de uudIo y video.
¡u compresIón de uudIo MPEG se Iuce sumpIeundo Iu ondu u ¸z kHz,
qq.1 kHz ó q8 kHz. Puede munejur mono, esLéreo dIsjunLo (cudu cunuI com-
prImIdo sepurudumenLe), o esLéreo junLo (se expIoLu Iu redunduncIu InLercu-
nuI). Se orgunIzu como Lres cupus, cudu unu de eIIus upIIcundo opLImIzucIones
udIcIonuIes puru conseguIr mus compresIón (y u muyor cosLo). ¡u cupu 1 es eI
esquemu busIco. EsLu cupu se usu, por ejempIo, en eI sIsLemu de cInLu dIgILuI
DCC. ¡u cupu z uñude uI esquemu busIco IocuIIzucIón de bILs udIcIonuI. Se usu
puru uudIo en CD-ROM y bundus sonorus de peIicuIus. ¡u cupu ¸ uñude IIILros
IibrIdos, cuunLIzucIón no unIIorme, codIIIcucIón HuIImun y oLrus LécnIcus
uvunzudus.
EI uudIo MPEG puede comprImIr un CD de rock `n roII en q6 kbps sIn
pérdIdu de cuIIdud percepLIbIe, IncIuso puru Ios Iuns deI rock 'n roII sIn pérdIdu
de oido. Puru un concIerLo de pIuno, se necesILun uI menos 1z8 kbps. EsLu dIIe-
rencIu es porque Iu reIucIón señuI-ruIdo deI rock 'n roII es mucIo mus uILu que
Iu deI concIerLo de pIuno (en eI senLIdo de Iu IngenIeriu).
¡u compresIón de uudIo se IIevu u cubo IucIendo unu LrunsIormudu rupI-
du de ¡ourIer en Iu señuI de uudIo puru LrunsIormurIu deI domInIo deI LIempo
uI domInIo de Iu IrecuencIu. EI especLro resuILunLe se dIvIde en ¸z bundus de
IrecuencIu, y cudu unu es procesudu sepurudumenLe. Cuundo Iuy presenLes dos
cunuIes esLéreo, Iu redunduncIu InIerenLe de Lener dos IuenLes de uudIo uILu-
menLe superpuesLus LumbIén se expIoLu. EI uudIo MPEG-1 resuILunLe es ujusLu-
bIe desde ¸z kbps IusLu qq8 kbps.
AIoru se uborduru Iu compresIón de video MPEG-1. ExIsLen dos LIpos de
redunduncIu en Ius peIicuIus: espucIuI y LemporuI. MPEG-1 usu Ios dos. ¡u re-
dunduncIu espucIuI puede ser uLIIIzudu sImpIemenLe codIIIcundo cudu IoLo-
grumu sepurudumenLe con JPEG. EsLu uproxImucIón se usu u veces,
especIuImenLe cuundo se necesILu ucceso uIeuLorIo u cudu IoLogrumu, como en
edIcIón de produccIones de video. De esLe modo, es uIcunzubIe un uncIo de
bundu comprImIdo de 8 u 1o Mbps.
Se puede uIcunzur compresIón udIcIonuI uprovecIundose deI IecIo de
que dos IoLogrumus consecuLIvos son u menudo cusI IdénLIcos. EsLe eIecLo es
mus pequeño de Io que podriu purecer uI prIncIpIo, yu que mucIos reuIIzudores
corLun enLre escenus cudu ¸ ó q segundos (cronomeLrur unu peIicuIu y conLur
Ius escenus). De cuuIquIer Iormu, IncIuso unu secuencIu de ;¸ IoLogrumus uI-
LumenLe sImIIures oIrece eI poLencIuI de unu grun reduccIón superIor u sIm-
pIemenLe codIIIcur cudu IoLogrumu sepurudumenLe con JPEG.
Puru escenus donde Iu cumuru y eI Iondo son esLucIonurIos y uno o dos
ucLores se mueven IenLumenLe, cusI Lodos Ios pixeIes serun IdénLIcos de IoLo-
grumu u IoLogrumu. Aqui, resLur cudu IoLogrumu uI unLerIor y upIIcur JPEG u Iu
dIIerencIu esLuriu bIen. De cuuIquIer Iormu, puru escenus donde Iu cumuru Iuce
zoom o se mueve, esLu LécnIcu IuIIu esLrepILosumenLe. ¡o que se necesILu es uI-
gunu Iormu de compensur esLe movImIenLo. EsLo es precIsumenLe Io que Iuce
MPEG; esLu es Iu muyor dIIerencIu enLre JPEG y MPEG.
¡u suIIdu MPEG-1 consIsLe en cuuLro LIpos de IoLogrumus:

1. ¡oLogrumus ¡ (¡nLrucoded): ¡mugenes esLuLIcus codIIIcudus con JPEG
y uuLoconLenIdus.
z. ¡oLogrumus P (PredIcLIve): DIIerencIu bIoque u bIoque con eI úILImo
IoLogrumu.
¸. ¡oLogrumus B (BIdIrecLIonuI): DIIerencIus con eI úILImo y con eI sI-
guIenLe IoLogrumu.
q. ¡oLogrumus D (DC-coded): MedIus de bIoques usudus puru uvunce
rupIdo.

¡os IoLogrumus ¡ son sóIo Imugenes esLuLIcus codIIIcudus usundo JPEG,
LumbIén usundo IumInuncIu de resoIucIón pIenu y cromInuncIu de resoIucIón
medIu sobre cudu eje. Es necesurIo que upurezcun IoLogrumus ¡ perIódIcumenLe
por Lres ruzones. PrImero, MPEG-1 puede ser usudo puru unu LrunsmIsIón muI-
LIcusL, con especLudores conecLundose cuundo quIerun. SI Lodos Ios IoLogrumus
dependIesen de sus predecesores IusLu eI prImer IoLogrumu, cuuIquIeru que
perdIeru eI prImer IoLogrumu nuncu podriu decodIIIcur Ios IoLogrumus subse-
cuenLes. Segundo, sI se recIbIeru un IoLogrumu con error, no se podriu seguIr
decodIIIcundo. Tercero, sIn Ios IoLogrumus ¡, mIenLrus se Iuce un uvunce o re-
Lroceso rupIdo, eI decodIIIcudor Lendriu que cuIcuIur cudu IoLogrumu sobre eI
que se Iu pusudo puru suber eI vuIor inLegro deI IoLogrumu sobre eI cuuI se Iu
purudo. Por esLus ruzones, Ios IoLogrumus ¡ se InserLun en Iu suIIdu unu o dos
veces por segundo.
¡os IoLogrumus P, en conLrusLe, codIIIcun dIIerencIus InLerIoLogrumu. Se
busun en Iu Ideu de Ios mucrobIoques, que cubren 16 × 16 pixeIes en eI espucIo
de Iu IumInuncIu y 8 × 8 en eI espucIo de Iu cromInuncIu. Un mucrobIoque se
codIIIcu buscundo su IoLogrumu prevIo o uIgo sóIo IIgerumenLe dIIerenLe de
eIIo.
Un ejempIo donde Ios IoLogrumus P seriun úLIIes se du en Iu IIguru. Aqui
se ven dos IoLogrumus consecuLIvos que LIenen eI mIsmo Iondo, pero que dIIIe-
ren en Iu posIcIón de un muñeco. ¡os mucrobIoques que conLIenen Iu escenu de
Iondo concordurun exucLumenLe, pero Ios mucrobIoques que conLIenen uI mu-
ñeco Lendrun unu dIIerencIu de posIcIón y Iubru que durIes un seguImIenLo.


EI esLundur MPEG-1 no especIIIcu cómo buscur, cómo de Iejos buscur, o
cómo de buenu debe ser unu coIncIdencIu puru conLur. EsLo se deju puru cudu
ImpIemenLucIón. Por ejempIo, unu ImpIemenLucIón puede buscur un mucro-
bIoque en Iu posIcIón ucLuuI en eI IoLogrumu unLerIor y en Lodus Ius demus po-
sIcIones con un oIIseL ±∆x en Iu dIreccIón x y ±∆ç en Iu dIreccIón ç. Puru cudu
posIcIón, eI número de coIncIdencIus en Iu muLrIz de IumInuncIus podriu ser
compuLudo. ¡u posIcIón con Iu mus uILu punLuucIón seriu decIurudu gunudoru,
IubIendo deIInIdo prevIumenLe un umbruI. De oLro modo, se dIriu que eI mu-
crobIoque se Iu perdIdo. Por supuesLo, LumbIén son posIbIes uIgorILmos mu-
cIo mus soIIsLIcudos.
SI se encuenLru un mucrobIoque, se codIIIcu cogIendo Iu dIIerencIu con
su vuIor en eI IoLogrumu unLerIor (puru Iu IumInuncIu y Ius dos cromInuncIus).
EsLus muLrIces de dIIerencIus son enLonces objeLo de unu DCT, cuunLIzucIón,
codIIIcucIón R¡E y codIIIcucIón HuIImun, como en JPEG. EI vuIor deI mucro-
bIoque en Iu suIIdu es eI vecLor de movImIenLo (cuunLo se Iu movIdo eI mucro-
bIoque en cudu dIreccIón), seguIdo por Iu IIsLu de números codIIIcudu con
HuIImun. SI eI mucrobIoque no se IocuIIzu en eI IoLogrumu unLerIor, eI vuIor
ucLuuI se codIIIcu con JPEG, como en un IoLogrumu ¡.
CIurumenLe, eI uIgorILmo es uILumenLe usIméLrIco. Unu ImpIemenLucIón
es IIbre puru probur cudu posIcIón pIuusIbIe en eI IoLogrumu unLerIor sI quIere,
en un InLenLo desesperudo de IocuIIzur cudu úILImo mucrobIoque. EsLu uproxI-
mucIón mInImIzuru Iu suIIdu MPEG-1 u expensus de unu codIIIcucIón muy Ien-
Lu. Podriu ser buenu puru Iu codIIIcucIón unu únIcu vez de unu bIbIIoLecu de
peIicuIus pero seriu LerrIbIe puru vIdeoconIerencIu en LIempo reuI.
SImIIurmenLe, cudu ImpIemenLucIón es IIbre puru decIdIr Io que consLI-
Luye un mucrobIoque ¨enconLrudo¨. EsLu IIberLud permILe u Ios ImpIemenLudo-
res compeLIr en Iu cuIIdud y veIocIdud de sus uIgorILmos, pero producIendo
sIempre MPEG-1 esLundur. No ImporLu qué uIgorILmo de búsquedu se use, Iu
suIIdu IInuI es Iu codIIIcucIón JPEG deI mucrobIoque ucLuuI o Iu codIIIcucIón
JPEG de Iu dIIerencIu enLre eI mucrobIoque ucLuuI y uno en eI IoLogrumu unLe-
rIor en un oIIseL especIIIcudo desde eI ucLuuI.
DecodIIIcur MPEG-1 es sIempre IucIu udeIunLe. DecodIIIcur IoLogrumus ¡
es Io mIsmo que decodIIIcur Imugenes JPEG. DecodIIIcur IoLogrumus P requIe-
re que eI decodIIIcudor Lengu en un buIIer eI IoLogrumu unLerIor y enLonces
consLruIr eI nuevo en segundo buIIer busudo en mucrobIoques LoLuImenLe codI-
IIcudos y mucrobIoques que conLIenen Ius dIIerencIus con eI IoLogrumu unLe-
rIor. EI nuevo IoLogrumu se ensumbIu mucrobIoque u mucrobIoque.
¡os IoLogrumus B son sImIIures u Ios IoLogrumus P, excepLo que permILen
que eI mucrobIoque de reIerencIu esLé en un IoLogrumu prevIo o en uno posLe-
rIor. EsLu IIberLud udIcIonuI permILe compensucIón de movImIenLo udIcIonuI, y
LumbIén es úLII cuundo pusun objeLos deIunLe o deLrus de oLros objeLos. Puru
codIIIcur IoLogrumus B, eI codIIIcudor necesILu Lener Lres IoLogrumus decodIII-
cudos en memorIu u Iu vez: eI unLerIor, eI ucLuuI y eI sIguIenLe. Aunque Ios IoLo-
grumus B dun Iu mejor compresIón, no Ios soporLun Lodus Ius
ImpIemenLucIones.
¡os IoLogrumus D se usun sóIo puru Iucer posIbIe mosLrur unu Imugen de
buju resoIucIón cuundo se rebobInu o se uvunzu rupIdo. Hucer Iu decodIIIcucIón
MPEG-1 en LIempo reuI es suIIcIenLemenLe compIIcudo. Esperur que eI decodI-
IIcudor Io Iugu dIez veces mus rupIdo es demusIudo. En vez de eso, Ios IoLo-
grumus D se usun puru producIr Imugenes de buju resoIucIón. Cudu enLrudu de
IoLogrumu D es eI vuIor medIo de un bIoque, sIn mus codIIIcucIón, IucIendo
IucII mosLrurIo en LIempo reuI. EsLu IucIIIdud es ImporLunLe puru permILIr que
Iu genLe ojee un video u uILu veIocIdud buscundo unu escenu en purLIcuIur.
HubIendo yu LruLudo eI MPEG-1, se seguIru con MPEG-z. ¡u codIIIcucIón
es IundumenLuImenLe sImIIur u Iu codIIIcucIón MPEG-1, con IoLogrumus ¡, P y
B. ¡os IoLogrumus D no se soporLun. TumbIén, Iu LrunsIormucIón dIscreLu de
cosenos es de 1o × 1o en Iugur de 8 × 8, puru dur un ¸o por cIenLo mus de coeII-
cIenLes, puru mejor cuIIdud. Como eI MPEG-z se pensó puru dIIusIón de LeIevI-
sIón y puru upIIcucIones CD-ROM, soporLu umbus Imugenes, Ius progresIvus y
Ius enLreIuzudus, mIenLrus que MPEG-1 sóIo soporLu progresIvus. TumbIén Iuy
oLrus dIIerencIus en deLuIIes enLre Ios dos esLundures.
En Iugur de soporLur un sóIo nIveI de resoIucIón, MPEG-z soporLu cuu-
Lro: buju (¸¸z × zqo), medIu (muIn) (;zo × q8o), uILu-1qqo (1qqo × 11¸z), y uILu
(1qzo × 1o8o). ¡u buju resoIucIón es puru VCRs y compuLIbIIIdud IucIu uLrus
con MPEG-1. ¡u medIu es Iu normuI puru dIIusIón NTSC. ¡us oLrus dos son pu-
ru HDTV.
Ademus de Lener cuuLro nIveIes de resoIucIón, MPEG-z LumbIén soporLu
cInco perIIIes. Cudu perIII esLu dedIcudo u un ureu de upIIcucIón. EI perIII mus
ImporLunLe (muIn) es puru uso de propósILo generuI, y probubIemenLe Iu muyo-
riu de Ios cIIps esLurun opLImIzudos puru eI perIII muIn y eI nIveI de resoIucIón
muIn. EI perIII sImpIe es sImIIur uI muIn, excepLo que excIuye eI uso de IoLo-
grumus B, puru Iucer eI soILwure de codIIIcucIón y decodIIIcucIón mus IucII. ¡os
demus perIIIes LruLun Iu escuIubIIIdud y HDTV. ¡os perIIIes dIIIeren en LérmI-
nos de Iu presencIu o uusencIu de IoLogrumus B, resoIucIón de cromInuncIu y
escuIubIIIdud de Iu cudenu de bILs u oLros IormuLos.
EI ruLIo de duLos comprImIdos puru cudu combInucIón de resoIucIón y
perIII es dIIerenLe. ÉsLos vuriun desde mus o menos ¸ Mbps IusLu 1oo Mbps
puru HDTV. EI cuso normuI es mus o menos ¸ ó q Mbps.
MPEG-z LIene unu Iormu mus generuI de muILIpIexur uudIo y video que
MPEG-1. DeIIne un número IIImILudo de cudenus eIemenLuIes, IncIuyendo vi-
deo y uudIo, pero LumbIén IncIuyendo cudenus de duLos que deben ser sIncro-
nIzudos con eI uudIo y eI video, por ejempIo, subLiLuIos en múILIpIes IdIomus.
Cudu unu de Ius cudenus se empuqueLu con murcus de LIempo. Un sImpIe
ejempIo de dos cudenus se enseñu en Iu IIguru.




¡u suIIdu de cudu empuqueLudor es un PES (PuckeLIzed EIemenLury
SLreum). Cudu puqueLe PES LIene unos ¸o cumpos y IIugs, IncIuyendo IongILu-
des, IdenLIIIcudores de cudenu, conLroI de encrIpLucIón, esLuLus de copyrIgIL,
murcus de LIempo, y un CRC.
¡us cudenus de PES puru uudIo, video y posIbIemenLe duLos son enLonces
muILIpIexudos junLos en unu soIu cudenu de suIIdu puru LrunsmIsIón. Se deII-
nen dos LIpos de cudenus. ¡u cudenu de progrumu de MPEG-z es sImIIur u Iu
cudenu de sIsLemu de MPEG-1 de Iuce Lres IIgurus. Se usu puru muILIpIexur
junLus cudenus eIemenLuIes que LIenen unu buse de LIempos común y LIenen
que ser mosLrudos sIncronIzudos. ¡u cudenu de progrumu usu Iurgos puqueLes
de IongILud vurIubIe.
¡u oLru cudenu MPEG-z es Iu cudenu de LrunsporLe. Se usu puru muILI-
pIexur cudenus junLus (IncIuyendo cudenus de progrumu) que no usun unu buse
de LIempos común. ¡os puqueLes de Iu cudenu de LrunsporLe son de IongILud
IIju (188 byLes), puru Iucer mus IucII eI IImILur eI eIecLo de Ios puqueLes duñu-
dos o perdIdos durunLe Iu LrunsmIsIón.
Todos Ios esquemus de codIIIcucIón que se Iun dIscuLIdo esLun busudos
en eI modeIo de codIIIcucIón con pérdIdus seguIdu de LrunsmIsIón sIn pérdIdus.
NI eI JPEG nI eI MPEG, por ejempIo, pueden recuperurse bIen de Iu pérdIdu o
duño de puqueLes. Unu uproxImucIón dIIerenLe u Iu LrunsmIsIón de Imugenes es
LrunsIormur Ius Imugenes de Iormu que se sepure Iu InIormucIón ImporLunLe de
Iu menos ImporLunLe (como Iuce DCT, por ejempIo). EnLonces uñudIr unu con-
sIderubIe cunLIdud de redunduncIu (IncIuso dupIIcur puqueLes) u Iu InIormu-
cIón ImporLunLe y nudu u Iu menos ImporLunLe. SI uIgunos puqueLes se pIerden
o duñun, puede ser Loduviu posIbIe mosLrur Imugenes ruzonubIes sIn reLruns-
mIsIón. EsLus Ideus son especIuImenLe upIIcubIes u LrunsmIsIones muILIcusL,
donde eI Ieedbuck desde cudu recepLor es ImposIbIe de cuuIquIer modo.



4 Bibliografía

1. A Uniterscl Alçorithm jor Sequenticl Dctc Compression, ZIv J., ¡empeI A.,
¡EEE TrunsucLIons on ¡nIormuLIon TIeory, z¸, no. ¸, 1q;; (¡Z;;)

z. comp.compression IAQ. Jeun-Ioup GuIIIy. (ApurIcIón mensuuI en NEWS).

¸. Dctc Compression uith Iinite Windous. ¡IuIu, E.R., Greene, D.H.,
CommunIcuLIons oI LIe ACM ¸z,q (1q8q).

q. Dctc Compression: Methods cnd Theorç. SLorer, Jumes A., CompuLer
ScIence Press, 1q88.
EsLe es uno de Ios mejores IIbros, uunque yo Loduviu no Ie podIdo IeerIo (Io
pedi u Iu bIbIIoLecu = nudu de nudu, no soy proIesor).

¸. Iuentes del Injozip Zip z.x , Unzip ¸.x. Murk AdIer, RIcIurd B. WuIes, Jeun-
Ioup GuIIIy, KuI Uwe RommeI e ¡gor MundrIcIenko.

6. Lossless Dctc Compression, ApIkI, S., BYTE, MurcI 1qq1.

;. APPNDTE.TXT de lc distribución de PK-ZIP :.x ç z.x.

8. Ycbbc, pcquete con códiço juente ç documentcción sobre ¨Y codinç¨.
BernsLeIn, DunIeI J.

q. J. ZIv & A. ¡empeI, ¡EEE TrunsucLIons on ¡nIormuLIon TIeory, zq, 1q;8
(¡Z;8)

1o. A Technique jor Hiçh Perjormcnce Dctc Compression. WeIcI, Terry A.,
CompuLer, 1;, no. 6, June 1q8q. (¡ZW)

11. Esquemcs clçorítmicos jundcmentcles. Vol. III: ordencción ç búsquedc.
KnuLI, DonuId E., sec. 6.q.

1z. Compress pcrc Unix (.:z, juentes. Spencer W. TIomus, JIm McKIe, SLeve
DuvIes, Ken TurkowskI, Jumes A. Woods, Joe OrosL, Duve Muck, 1qq1.

1¸. Predictite Text Compression bç Hcshinç. RuILu, T. y TeuIoIu, J., ACM
ConIerence on ¡nIormuLIon ReLrIevuI, 1q8;.

1q. Iuentes de LZRW:c ç LZRW¸c. Ross N. WIIIIums, 1qq1.

1¸. Dctc Compression Alçorithms oj LARC cnd LHcrc. HuruIIko Okumuru,
1q8q.

16. Applicction oj Splcç Trees to Dctc Compression. DougIus W. Jones.
CommunIcuLIons oI LIe ACM, AugusL 1q88, pugInu qq6.

1;. Computer Netuorls. Third Edition. Andrew S. Tunenbuum. PrenLIce-HuII.
1qq6.