Vous êtes sur la page 1sur 49

Compresin de Datos en las Comunicaciones

1 Introduccin


1.1 Para qu la compresin?

En Ios ILImos uos 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 ucompuu unu bujudu de Ios precIos de memorIu prIncIpuI y
secundurIu usi como LumbIn un uumenLo de veIocIdud de esLos dIsposILIvos.
EsLo nos Iuce pregunLurnos puru qu Iu compresIn?

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 compuius 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 LrunsmIsIn. Por ejempIo, podemos pensur que uI
usur cubIe de pur Lrenzudo puru eI LeIIono podriumos Lener unu veIo-
cIdud de LrunsIerencIu desde nuesLro mdem de, dIgumos, 1 Mbps.
sIn probIemus. EI probIemu vIene con Ius Iurgus dIsLuncIus. SI unu
compuiu de servIcIos LeIeInIcos quIere munLener sImuILuneumenLe
1ooo IIumudus InLernucIonuIes (Io cuuI no es un nmero muy dIspuru-
Ludo), eI cubIe (y Iu LecnoIogiu) deberiu permILIr 1ooo Mbps., Io cuuI
es unu veIocIdud Io suIIcIenLemenLe grunde como puru requerIr unu
InversIn 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 LcnIcus que Ies permILun
superur de uIgunu muneru Ius deIIcIencIus IisIcus de Iu red y de Ios equIpos de
conexIn (que Ies permILu, por ejempIo, oIrecer vIdeoconIerencIu u Lruvs de
mdems de 1q.qoo bps.)

u LcnIcu mus ImporLunLe en esLe senLIdo es Iu compresIn de duLos. u
compresIn de duLos es beneIIcIosu en eI senLIdo de que eI proceso de compre-
sIn-LrunsmIsIn-descompresIn es mus rupIdo que eI proceso de LrunsmIsIn
sIn compresIn. Podemos expresur Iu gununcIu de veIocIdud con unu IrmuIu
sencIIIu:


donde es Iu reIucIn enLre LIempo que se Lurduriu puru LrunsmILIr comprI-
mIendo y sIn comprImIr (en LunLo por uno), c es Iu veIocIdud de compresIn en
bps (se supone IguuI u Iu veIocIdud de descompresIn y depende deI uIgorIL-
mo), D es eI nmero 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 compresIn
deI uIgorILmo uLIIIzudo, que se puede escrIbIr como bits comprimidos J bits
totcles y se consIgue u Lruvs de unu medIdu empiricu.

u IrmuIu quedu sencIIIu LenIendo en cuenLu que en eI numerudor Le-
nemos eI LIempo que Iu LrunsmIsIn Lurdu en reuIIzurse sI uLIIIzumos compre-
sIn: eI proceso de comprImIr se reuIIzu dos veces (compresIn y
descompresIn) y Lurdu D,c segundos y Iu emIsIn se Iuce sobre unu IruccIn
de Ios duLos orIgInuIes dudu por r, que es rD bILs, u unu veIocIdud de LrunsmI-
sIn b: rD,b segundos.

En eI denomInudor Lenemos eI LIempo de LrunsmIsIn.

Vemos que en ILImo LrmIno Iu IrmuIu no depende de Iu cunLIdud de
duLos u LrunsIerIr, D, sIno de Ius dIsLInLus veIocIdudes de compresIn y emIsIn
(como cubriu esperur). SIempre que seu menor que 1, se conseguIru venLuju
en veIocIdud uI comprImIr Iu InIormucIn. SI suponemos que es o., eI LIem-
po de LrunsmIsIn uLIIIzundo compresIn es Iu mILud que sIn usurIu.

Puru un vuIor normuI de r = 1Jz, vemos que seru renLubIe comprImIr
cuundo < 1, es decIr, sI (zb + rc) ,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 InIormucIn yu esLu guurdudu en Iormu comprImI-
du, Iu LrunsmIsIn sImpIemenLe reduce su LIempo en un IucLor r.

Pero no sIo es puru Iu LrunsmIsIn puru Io que se usu Iu compresIn.
TumbIn puru eI uImucenumIenLo musIvo. u necesIdud de uImucenumIenLo
LumbIn 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 tdeo en demcndc con cIenLos o mIIes
de peIicuIus, ocupundo cudu unu vurIos GIgubyLes.

1.2 Concepto y modelo de Infor-
macin

u Teorc de lc Injormccin es Iu dIscIpIInu que se encurgu deI esLudIo y
cuunLIIIcucIn de Ios procesos que se reuIIzun sobre Iu injormccin.

Puru esLe esLudIo, es obvIo que necesILumos unu muneru de medir Iu in-
jormccin. Tenemos que pusur de nuesLru InLuIcIn u unu deIInIcIn muLemu-
LIcu que

u. esL de ucuerdo con nuesLru vIsIn InLuILIvu
b. nos permILu medIr y compurur Ios procesos sobre eIIu

Puru IIegur u unu medIdu de Iu InIormucIn, repusuremos Iu Ideu InLuILI-
vu que Lenemos de sLu. En prImer Iugur vemos que Iu cunLIdud de InIormucIn
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 InIormucIn, yu es Io que esLubumos esperundo con muyor
probubIIIdud. SI por eI conLrurIo nos dIcen que soIeudo, recIbImos mus In-
IormucIn, 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 injormccin. NuesLru Ideu de Iu probcbilidcd de
ocurrencic de cIerLo evenLo que nos du InIormucIn 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-
cin: unu IuenLe de InIormucIn puede ser modeIudu como unu vurIubIe uIeuLo-
rIu; uI recIbIr un mensuje de esu IuenLe, obLenemos unu cunLIdud de
InIormucIn, que depende slo de Iu probubIIIdud de emIsIn de ese mensuje;
udemus, Iu cunLIdud de InIormucIn es unu IuncIn crecIenLe con Iu Inversu de
Iu probubIIIdud (cuunLu menor probubIIIdud, muyor cunLIdud de InIormucIn
recIbImos, como vImos con eI ejempIo).

u cncncic de injormccin que experImenLumos, pues, uI recIbIr un
mensuje, se puede enLender como Iu reduccin de incertidumbre sobre el estc-
do de lc juente que experImenLumos Lrus recIbIr eI mensuje.

u ILImu consIderucIn que puede Iucerse es unu que, por un Iudo es
InLuILIvu y por oLro purece InLencIonudu puru IIegur u Iu cuunLIIIcucIn IInuI de
Iu injormccin. Se reIIere u que Iu cunLIdud de InIormucIn 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 IuncIn
IoguriLmIcu puru Iu cunLIdud de InIormucIn, yu que sI suponemos que Lenemos
dos IuenLes equIprobubIes de m y m
n
mensujes respecLIvumenLe, Iu InIormu-
cIn uI recIbIr n mensujes de Iu prImeru IuenLe es

n j(m)

donde j es Iu IuncIn crecIenLe, por uIoru sIn deLermInur (nLese que uI ser Iu
IuenLe equIprobubIe, Iu probubIIIdud de cuuIquIer mensuje es :,m. Pero j es
IuncIn de Iu intersc de Iu probubIIIdud, por Io que depende de m). Por oLro
Iudo, Iu recepcIn de un mensuje de Iu segundu IuenLe nos du unu InIormucIn

j(m
n
)

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

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

i i p F F I = =
TenIendo esLu medIdu, podemos IuIIur Iu medidc de injormccin medic
de Iu IuenLe de InIormucIn entropc de I IucIendo sImpIemenLe Iu esperun-
zu muLemuLIcu de Iu InIormucIn 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 compresIn. No se puede InvenLur nIn-
gunu codIIIcucIn que consIgu unu IongILud en bILs medIu por simboIo emILIdo
menor que Iu enLropiu de Iu IuenLe sobre Iu que se reuIIzu Iu codIIIcucIn. EsLo
es, sIn emburgo, unu coLu LerIcu. os compresores ucLuuIes no IIegun u esLu
coLu pero quedun muy cercu.

1.3 Tipos de compresin

Es muy dIIicII cIusIIIcur Ios dIsLInLos LIpos de compresIn de duLos que
exIsLen, debIdo u que, por un Iudo Lenemos mucIos uIgorILmos: Z;;, Z;8,
ZW, HuIImun, urILmLIcos, IrucLuIes, MPEG, JPEG, eLc.

Ademus, Iuy mucIus upIIcucIones que uLIIIzun Iu compresIn con dIsLIn-
Lus expecLuLIvus: compresIn de duLos, video y voz, compresIn 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), prdIdu minImu de InIormucIn (en eI cuso de Ios
uIgorILmos con prdIdu de InIormucIn, eLc.).

DebIdo u esLo, se Iu eIegIdo unu cIusIIIcucIn muy generuI Lomundo co-
mo curucLerisLIcu de dIvIsIn Iu reversIbIIIdud deI uIgorILmo. Asi, Ios uIgorILmos
de compresIn se pueden dIvIdIr en dos LIpos:

Compresores lossless o sIn prdIdus, en eI senLIdo de que guurdu ub-
soIuLumenLe Lodu Iu InIormucIn orIgInuI (es reversIbIe). Se uLIIIzun
puru Iu compresIn de duLos, en Ios que no se puede dur prdIdu de
InIormucIn.
Compresores lossg o con prdIdus. u compresIn Iuce que se pIer-
du InIormucIn de Iu IuenLe orIgInuI. SIn emburgo, esLu prdIdu es In-
sIgnIIIcunLe en compurucIn con Iu gununcIu en compresIn. Se uLIIIzu
sobre Lodo en Imugenes y sonIdo, donde se puede enguur u Ios sen-
LIdos, donde unu prdIdu de cuIIdud upenus es percIbIdu (pero ocu-
sIonu un rctio de compresIn mucIo muyor).

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




2 Compresin lossless

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


2.1 Tipos de compresin

Huy busIcumenLe dos LIpos de compresores J uIgorILmos de compresIn
IossIess:

Compresores estudisticos.
Compresores busudos en diccionurio sostitocionules.

No purece exLruo que IubIendo usudo unu medIdu de InIormucIn bu-
sudu en Ius probubIIIdudes nos enconLrurumos con compresores que uLIIIcen
Ius propIedudes esLudisLIcus de Iu IuenLe de InIormucIn puru mejorur Iu codIII-
cucIn (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 InIormucIn de n mensujes
b. Ius probubIIIdudes de upurIcIn 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 codijicccin puru Ios mensujes de Iu IuenLe. Unu
codijicccin es unu IuncIn que u cudu mensuje de Iu IuenLe usIgnu unu cudenu
de simboIos deI uIIubeLo de suIIdu. EsLu codIIIcucIn debe ser LuI que expIoLe Iu
redunduncIu en Iu InIormucIn dudu por Iu IuenLe puru producIr compresIn.
SI uLIIIzumos un uIIubeLo bInurIo, Iu esperunzu muLemuLIcu de Iu IongILud de Ius
cudenus de simboIos de Iu codIIIcucIn, Lomundo como probubIIIdudes Ius de
Ios mensujes u Ios que represenLun, se debe ucercur u Iu coLu LerIcu de SIun-
non. SI es IguuI, Iu compresIn 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 pequeos que Ius cudenus, se consIgue com-
presIn. OLru LcnIcu es uLIIIzur Iu propIu enLrudu como dIccIonurIo, y codIIIcur
Ius repeLIcIones como un suILo IucIu uLrus y unu IongILud de coIncIdencIu.
Mus sobre esLo despus.


2.2 Compresores estadsticos

En esLu seccIn exumInuremos Ios compresores que uLIIIzun Iu InIormu-
cIn de Ius probubIIIdudes de Ios mensujes de Iu IuenLe puru consLruIr unu codI-
IIcucIn.

Puru sImpIIIIcur, supondremos que nuesLrus IuenLes de InIormucIn son
IIcIeros ASC de 8 bILs y que cudu curucLer es un mensuje de Iu IuenLe (z6
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 codIIIcucIn se puede reuII-
zur sobre bIoques (uunque dependIendo deI Lumuo de Ios bIoques se puede
degrudur Iu eIIcIencIu o ucercumIenLo u Iu coLu de SIunnon) uLIIIzurse uIgo-
rILmos udupLuLIvos, que despus se comenLurun LumbIn.

EnLre Ios compresores esLudisLIcos podemos enconLrur vurIos LIpos:

Compresores deI LIpo HoIImun Shunnon-Iuno
Compresores uritmticos
Compresores predictivos

2.2.1 Compresores Huffman y Shannon-
Fano

Ambos uIgorILmos LermInun consLruyendo un urboI que represenLu Iu
codIIIcucIn 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 codIIIcucIn es
bInurIo. EsLo quIere decIr que de cudu nodo purLIrun dos rumus, unu puru eI o y
oLru puru eI 1. EI cdIgo puru cudu mensuje se consLruye sIguIendo eI cumIno
desde eI nodo ruiz IusLu Iu Ioju que represenLu eI mensuje.

NLese 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 decodIIIcucIn 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 codIIIcucIn resuILunLe de Iu upIIcucIn de esLos uIgorILmos
usIgnu IongILudes de codIIIcucIn inversumente proporcionules u Iu pro-
bubIIIdud de upurIcIn de cudu mensuje. Es decIr, eI mensuje que mus upurezcu
Lendru unu codIIIcucIn mus corLu, con Io que se uIorruru espucIo en Iu Lruns-
mIsIn. Recurdese que Ios mensujes con mus probubIIIdud son Ios que menos
InIormucIn dubun, por eso, usIgnumos menos simboIos deI uIIubeLo de suIIdu
en su codIIIcucIn.

Hemos IubIudo deI objeLIvo de umbos uIgorILmos: Iu consLruccIn deI
urboI de cdIgos que represenLu u Iu codIIIcucIn 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 ImpIemenLucIn 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 cdIgo C++ que reuIIzu Iu consLruccIn deI urboI podriu ser eI sIguIenLe:

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

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

// Cuando slo quede uno, ser el nodo que debajo contiene a todos
// los mensajes. El rbol ya est construdo. La raz 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 cdigos 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 codIIIcucIn seru menor. SIgue mus o menos eI mIsmo prIncIpIo, pero esLe
yu no es pLImo.

Un ejempIo de Iu consLruccIn 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/ \1 0/ \1
(1/4)B C(1/4) A
0/ \1
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
sIo 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 porcIn 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 sIo recIbe Ios cdIgos 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 compresIn de duLos se IIumu SQ, de RIcIurd GreenIuw. u soIucIn
que uqui se Ie dubu eru LrunsmILIr eI urboI de Iormu comprImIdu. Unu soIucIn
usi se encuenLru LumbIn en uno de Ios pusos deI uIgorILmo Implodin de PK-
ZIP :.x.

OLru soIucIn LumbIn 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 udupLucIn mus InLuILIvu es Iu sIguIenLe:

EI compresor purLe InIcIuImenLe de un urboI vucio, que sIo conLIene unu
Ioju vuciu (empt lecj), que sIempre esLuru presenLe en eI urboI, dIgumos, en Iu
posIcIn 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 cdIgo 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 LcnIcu eI recepLor yu no LIene que conocer u prIorI eI urboI nI Ius Ire-
cuencIus, yu que Ios duLos comprImIdos IIevun Iu InIormucIn suIIcIenLe puru
reconsLruIrIo. SIn emburgo, esLe mLodo no du Lun buenos resuILudos como eI
unLerIor, yu que Iuy un perIodo de uprendIzuje en eI que se emILen mucIos bILs
udIcIonuIes. Unu expIIcucIn mus deLuIIudu se encuenLru en |6|.

OLru cuesLIn prucLIcu que resoIviu LumbIn SQ es Iu IncIusIn de Ios c-
dIgos en puIubrus de 16 bILs. Como se Iu vIsLo, eI uIgorILmo no pone resLrIccIn
u Iu IongILud de Ios cdIgos generudos, pero unu posIbIe ImpIemenLucIn po-
driu resLrIngIr eI Lumuo muxImo de Ios cdIgos. SQ LruLu esLe probIemu
IucIendo eI urboI mus ucIuLudo, IucIendo Ius compurucIones de Ios nodos u
eIegIr no sIo sobre Iu probubIIIdud de cudu uno, sIno LumbIn sobre Iu proIun-
dIdud en eI urboI de cudu nodo. EsLo IImILu LumbIn Iu eIIcIencIu de Ios cdIgos
generudos.


2.2.2 Compresores aritmticos

AI IguuI que Ios unLerIores, Ios compresores urILmLIcos se busun en Ius
probubIIIdudes de ocurrencIu de Ios mensujes u Iu enLrudu. SIn emburgo, puru
producIr unu codIIIcucIn Lomun un esquemu LoLuImenLe dIIerenLe. Se busun
en Iu represenLucIn de un vuIor deI InLervuIo |o,1| con mus decImuIes (mus
precIsIn) cuunLo mus InIormucIn 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 cdIgo que emILImos, en bInurIo, es un n-
mero que cue en eI InLervuIo. Se eIegIru uqueI que uLIIIce menos bILs en su re-
presenLucIn. EsLe nmero represenLu u todu Iu enLrudu Con esLe nmero,
represenLudo por Ios bILs que necesILe, junLo con Iu InIormucIn deI nmero de
eIemenLos codIIIcudos y Iu probubIIIdud de cudu uno, eI descompresor puede
reconsLruIr Iu enLrudu. Un ejempIo de Iu codIIIcucIn de Lres mensujes con Iu
unLerIor dIsLrIbucIn 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 sIo Ios Lro-
zos de Iu LubIu que Ie seun necesurIos segn Iu enLrudu. Trus recIbIr, por ejem-
pIo, XXY, decIde que emILIru eI nmero J8 (en bInurIo .o11) en represenLucIn
de Iu enLrudu.

EI proceso que eI descompresor reuIIzuru uI recIbIr Ios duLos comprImI-
dos, eI nmero 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 nmero perLenece u Ios zJ InIerIores, Iuego eI prImer mensuje
que upurecI Iue unu X. Sube que en LoLuI son Lres, por Io que conLInu. Tum-
bIn cue denLro de Ios zJ InIerIores de |o, zJ|, es decIr, eI segundo mensuje
LumbIn 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 btes!

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 soIucIn LumbIn LIende uqui IucIu unu
modIIIcucIn 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-
mucIn u compresor y descompresor. EjempIos de eIIos son eI Dncmic
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, LumbIn probubIIIdudes). SI eI mensuje que se encuenLru u Iu en-
Lrudu coIncIde con eI predIcIo, su codIIIcucIn se podru Iucer con menos bILs.
SI no, su codIIIcucIn se Iuru con mus bILs, que permILIrun enLonces sIncronI-
zur uI descompresor puru que munLengu sus LubIus InLernus IdnLIcus 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 predIccIn que ge-
neruImenLe sueIe ser de cuIcuIo sencIIIo, son cupuces de dur unu uILu veIocIdud
de compresInJdescompresIn. 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 soIucIn
buruLu puru sIsLemus de compresIn LrunspurenLe en LIempo reuI, con unus re-
IucIones de compresIn ucepLubIes.

SIn emburgo, puru uIgunus upIIcucIones, no son Lun ucepLubIes Ius reIu-
cIones de compresIn. Ademus, su mejoru es susLuncIuImenLe dIIicII: Iu predIc-
cIn es muy escurrIdIzu en cuuIquIer umbILo. Unu Ideu seriu InLroducIr
InIormucIn udIcIonuI puru cudu LIpo de IIcIero que nos dIeru un puLrn 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 dIseudo 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 mLodo de predIccIn es sencIIIo: predIce eI sIguIenLe curucLer u purLIr
de Ios dos unLerIores de Iu enLrudu. Puru eIIo consLruye unu muLrIz de z6z6
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 InIormucIn, su predIccIn puru eI curucLer ucLuuI, pongumos
c, seru m|p1,pz|. SI ucIerLu, es decIr, sI c = m|p1,pz|, Iu suIIdu seru sIo 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-
nuucIn eI mensuje no predIcIo. Ademus, ucLuuIIzu Iu LubIu puru que Iu vez sI-
guIenLe seu cupuz de predecIr: m|p1,pz| = c. Con esLu InIormucIn es cupuz de
sIncronIzur uI descompresor de muneru que Iu LubIu que umbos poseen en me-
morIu es IdnLIcu.

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 posIcIn IndIcudu por Ios dos ILImos mensujes resuILudo de Iu
descompresIn reuIIzudu IusLu eI momenLo. SI recIbe un bIL u o, sube que Iu
sIguIenLe InIormucIn seru eI mensuje LuI cuuI, y podru ucLuuIIzur su LubIu uI
IguuI que eI compresor.

A conLInuucIn veremos un ejempIo de cmo queduriu Iu ImpIemenLu-
cIn 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 predIccIn. 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 cdIgo muesLru un ejempIo de Ius IuncIones de compresIn y
descompresIn:


// Comprime el stream de entrada en el de salida
int PREDICTORCompress(stream in,stream out)
{
char c; // Carcter actual a predecir
char p1 = \0; // ltimo carcter de la entrada
char p2 = \0; // Penltimo carcter de la entrada
// Inicialmente ambos se suponen \0
char matriz[256][256]; // Matriz de prediccin. Se supone
// inicializada a \0

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

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

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

// El carcter que era el ltimo pasa al penltimo
// 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; // Carcter actual
char p1 = \0; // ltimo carcter de la salida
char p2 = \0; // Penltimo carcter de la salida
// Inicialmente ambos se suponen \0
char matriz[256][256]; // Matriz de prediccin. Se supone
// inicializada a \0

// 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 carcter 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 compresIn y descompresIn se Iucen en LIempo reuI y,
como un ejempIo, se dIru que, por ejempIo, eI IIcIero COMMAND.COM de Iu
versIn MS-DOS 6.zo que ocupu en dIsco 6.q byLes quedu comprImIdo u
qq.818, es decIr, u uproxImudumenLe un ;q% de su Lumuo. EsLe resuILudo es
bueno, sobre Lodo LenIendo en cuenLu que esLe es un urcIIvo bInurIo de cdIgo,
con unu dIsLrIbucIn 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 pequeo, puru IdenLIIIcur un
seguIdor se pueden uLIIIzur menos bILs. EI Lrubujo deI compresor es uqui dIIicII,
yu que LIene que cuIcuIur eI Lumuo pLImo de Ios conjunLos de seguIdores de
muneru que no se pIerdun bILs InLIImenLe. EI probIemu uqui LumbIn es que
Ios conjunLos deben ser pusudos uI descompresor. Un ejempIo en pseudo-
cdIgo que muesLru Iu descompresIn y Iu codIIIcucIn 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 compresIn en
dos purLes, como Iu reuIIzu eI ReducIng, prImero comprImIendo Ios curucLe-
res consecuLIvos IguuIes uLIIIzundo unu vurIunLe de RE (Run-Lenth Enco-
din, que despus 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 uIgn 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 produccIn deI indIce en Iugur de Iu cudenu represenLu un uIorro de
InIormucIn, y por Io LunLo, compresIn.

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 Compresin RLE

EsLe es, quIzu, eI compresor mus sencIIIo que exIsLe. TumbIn es de Ios
mus IneIIcuces. AI oir por prImeru vez eI LrmIno compresIn de duLos, Iu mu-
yoriu pIensu en reducIr de uIgunu muneru un nmero de curucLeres repeLIdos,
con Iu sencIIIu susLILucIn de decIr eI curucLer X se repILe N veces. Asi es, esLe
es eI prIncIpuI objeLIvo deI uIgorILmo: reducIr Ius cudenus de curucLeres IdnLI-
cos u unu IndIcucIn deI curucLer y Iu IongILud de Iu repeLIcIn.

Se Iu IncIuIdo uI RE denLro de Ios compresores busudos en dIccIonurIo
porque se puede consIderur que uLIIIzu un dIccIonurIo desIIzunLe de Lumuo 1
byLe puru predecIr eI sIguIenLe curucLer u Iu enLrudu, uunque usi LumbIn podriu
ser cIusIIIcudo de predIcLIvo; pero Iu cuesLIn ImporLunLe no es su cIusIIIcucIn,
sIno su esLudIo.

Aunque eI uIgorILmo purLe de unu Ideu sencIIIu y es IucII de comprender
su modo de operucIn, su ImpIemenLucIn no sIempre esLu IIbre de Lrumpus.
En prImer Iugur, eI prImer curucLer no LIene predecesor. TumbIn 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-
mnmenLe DLE, que sIrvu puru IndIcur que se Iu producIdo unu repeLIcIn de
un curucLer. Puru IndIcur que eI curucLer es reuImenLe DE, se puede IndIcur
con Iu secuencIu DE,o (cero). He uqui un ejempIo: supongumos que uLIIIzu-
mos Iu codIIIcucIn

DE, nmero de repeLIcIones, curucLer repeLIdo

puru IndIcur unu repeLIcIn y

DE, o (cero)

puru IndIcur que se esLu LrunsmILIendo eIecLIvumenLe eI curucLer correspon-
dIenLe u DE. Vuse cmo nmero de repeLIcIones debe ser muyor o IguuI
que puru que Iu susLILucIn Lengu eI eIecLo de reducIr eI nmero de mensujes
u Iu suIIdu. Con esLu codIIIcucIn podemos represenLur repeLIcIones desde
IusLu z curucLeres de IongILud, dejundo IncIuso IIbres Ius codIIIcucIones
DE,o, DE,1 y DE,z puru oLros comeLIdos (como represenLur eI mIsmo
DE). Supongumos udemus Iu sIguIenLe enLrudu, Iu cuuI queremos comprImIr
usundo RE:

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

(se uLIIIzu noLucIn C. Todos Ios simboIos represenLun curucLeres ASC, menos
DE, que represenLu uI vuIor ASC de un curucLer eIegIdo, bIen uI uzur, bIen
con eI propsILo, por ejempIo, de sIncronIzur dos IuenLes sincronus). u codIII-
cucIn seriu

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

EsLe modo de codIIIcucIn represenLu eI probIemu de que se debe Iucer
LrunspurenLe uI curucLer DE uudIndoIe eI curucLer ASC de vuIor o. Unu
enLrudu que conLuvIeru mucIos curucLeres DE se veriu IevemenLe uIecLudu
por Iu compresIn debIdo u Iu sobrecurgu InLroducIdu por esLe curucLer.

OLru Iormu de upIIcur RE es uLIIIzundo eI mIsmo mLodo que Ius Imu-
genes PCX esLundur. En vez de uLIIIzur un curucLer de IdenLIIIcucIn de repeLI-
cIn uLIIIzun un curucLer de cenLIneIu. EsLe curucLer LIene un bIL que InIormu
sI Iu sIguIenLe InIormucIn es ucercu de unu repeLIcIn o son duLos sIn repeLI-
cIn. os resLunLes bILs deI byLe pueden ser consIderudos como eI nmero de
curucLeres sIguIenLes u Ios que uIecLu eI cenLIneIu. En cuso de ser repeLIcIn,
esLe nmero IndIcuru eI nmero de repeLIcIones (z IusLu 1z;), y seru seguIdo
deI curucLer que se repILe. En cuso de no repeLIcIn, IndIcu Iu posIcIn 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 repeLIcIn y con un 1 que si Iu Iuy, Iu unLerIor
secuencIu quedu uIoru comprImIdu como sIgue:

(cIur)6 '1` 'z` 'q` 'z` (cIur)DE 'A` (cIur)(ox8o + q) 'B` (cIur)(ox8o + q)
'C`

donde se Iun subruyudo Ios cenLIneIus. EI prImero LIene su bIL de repeLIcIn u
o. os demus Io LIenen u 1. ApurLe de suprImIr eI enmuscurumIenLo de DE's,
se Iu dIsmInuIdo Iu IongILud minImu de Iu repeLIcIn 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 combInucIn 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 uos 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. TumbIn, como veremos, pueden ser upIIcudus LcnIcus esLudisLIcus
en Ios compresores Z;8.

En esLu seccIn veremos eI represenLunLe mus Iumoso y sencIIIo de Iu
IumIIIu Z;8: ZW. EsLudIuremos su IuncIonumIenLo, Ios probIemus que en-
Lruu su ImpIemenLucIn y cmo se Iun resueILo por ImpIemenLucIones cono-
cIdus como Iu de Compress de UNIX. A conLInuucIn se veru Ius posIbIes
mejorus uI uIgorILmo, bIen dudus por Iu upIIcucIn de LcnIcus esLudisLIcus, bIen
por mejorus InLroducIdus en vurIucIones sobre Iu Ideu orIgInuI, como son AP de
Storer |q| o Iu codIIIcucIn MW o Iu Y |8|.

Terry A. WeIcI, de UNSYS, 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 propsILo 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 nmero) 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 cdIgo 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 codIIIcucIn.

u codIIIcucIn 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, z6 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 conLInu 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 cdIgo puru u, es de-
cIr, K, y se uude uK uI dIccIonurIo. AudIr Iu cudenu uI dIccIonurIo sIgnIIIcu
usIgnurIe un IdenLIIIcudor secuencIuI consecuLIvo u purLIr de Iu unLerIor cudenu.
Como uI prIncIpIo Ius prImerus z6 posIcIones esLun ocupudus eI sIguIenLe n-
mero u usIgnur es eI z;. EsLe nmero 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 pequeo eI
dIccIonurIo.

AI prIncIpIo, Lodus Ius cudenus de IongILud 1 LIenen usIgnudo un IdenLIII-
cudor. EsLe se uLIIIzu como represenLucIn de Iu cudenu, y se corresponde con
eI cdIgo ASC deI curucLer, pero con q bILs InIcIuImenLe. DurunLe eI proceso,
se vun uudIendo nuevus cudenus de IongILud muyor. AI IdenLIIIcurse cudenus
mus Iurgus con un nmero de vurIos bILs, Iu compresIn 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 cmo 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 descompresIn es mus sencIIIu, uunque LIene que consLruIr eI mIsmo
urboI. NLese sIn emburgo que eI descompresor recIbe InIcIuImenLe cdIgos de
q bILs que usuru como indIces en eI dIccIonurIo. MunLendru eI dIccIonurIo uc-
LuuIIzudo u purLIr de esu InIormucIn y uI recIbIr, por ejempIo, eI cdIgo z6, en
esu enLrudu, uI IguuI que en eI dIccIonurIo deI compresor, conLendru Iu cudenu
ES. EI uIgorILmo de descompresIn conLIene un cuso especIuI. EI compresor
puede InserLur eI cdIgo 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 uude uI dIccIonurIo XentreX. Como Io sIguIenLe que
consIderu es precIsumenLe XentreX y ucubu de ser uudIdu 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 cdIgo 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-cdIgo 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 ImpIemenLucIn. En prImer
Iugur, se Iu vIsLo que eI dIccIonurIo Ibu crecIendo u medIdu que se Ibun Inser-
Lundo nuevus cudenus en I. SIn emburgo, nIngn ordenudor LIene memorIu
InIInILu y debemos poner Lope u esLu InsercIn. 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 LumbIn Ius mus probubIes) se con-
seguIru unu codIIIcucIn 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
168q 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 decIsIn dIIicII y no Iuy
soIucIn pLImu nI mucIo menos. Se pueden ver uILernuLIvus en Ius dIIerenLes
ImpIemenLucIones: unus vuciun compIeLumenLe eI urboI, Io que resuILu menos
eIIcIenLe en LrmInos de compresIn; oLrus emILen cdIgos 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 opcIn es Iu que uLIIIzu eI uIgorILmo Shrinlin de PK-ZIP :.x |;| y
Compress puru UNX |1z|.

OLru de Ius cuesLIones u Lener en cuenLu es Iu orgunIzucIn 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 dIseo 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. TumbIn 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 sIo uIorrumos
espucIo, no LIempo. Puru eIIo, podemos usur un uIgorILmo de hcshin |11, sec.
6|, eI cuuI usIgnu un nmero u cudu cudenu u Lruvs de unu juncin hcsh. A
Lruvs de esLe nmero 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 codIIIcucIn) en eI momenLo de InLroducIr en eI dIccIonurIo Iu cude-
nu EST, u Iu que se Ie usIgnu eI cdIgo z61. ULIIIzundo eI preIIjo ES y eI cu-
rucLer T, Iu juncin 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 posIcIn cuIcuIudu de Iu LubIu hcsh conLendru un indIce deI dIccIo-
nurIo donde esLu Iu cudenu. Como no esLu en eI dIccIonurIo, en Iu posIcIn hcsh
se pone eI IdenLIIIcudor secuencIuI sIguIenLe, IguuI que se Ibun usIgnundo cdI-
gos u Ius nuevus cudenus que enLrubun en Iu LubIu.

Tabla Hash Tabla Cadenas
| .... | | ............... |
ES (256) , T (84) | .... | | ............... |
---------+--------- | .... | | ............... |
| | .... | | ............... |
| | .... | | ............... |
| +-------------+ | .... | | ............... |
| | Funcin | | .... | | ............... |
+--+ 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 cdIgo hcsh, represenLudo en eI dIbujo por, , Io que se
IIumu unu colisin. EsLe probIemu no es LrIvIuI nI InsIgnIIIcunLe, yu que unu
muIu (IenLu) gesLIn 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 cloritmo 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 bsquedus 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 Lumuo es superIor uI necesurIo y udemus nmero prImo) de
muneru que Iu posIbIIIdud de coIIsIn se reduzcu. EsLo se consIgue upIIcundo
dos IuncIones hcsh. Puru mus InIormucIn vuse |11| y |1z|.

TumbIn u purLIr deI esLudIo de cmo 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 LumbIn en ||).

Unu posIbIe mejoru deI uIgorILmo ZW resIde en consIderur que Ios
IdenLIIIcudores son represenLudos por un nmero vurIubIe de bILs. TenIendo
esLo en menLe, podemos upIIcur LcnIcus 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 codIIIcucIn 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 sIo uudIr eI ILImo curucLer, uude 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 sIo 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 despus, yu que LumbIn son Lomudus u purLIr de Iu
enLrudu, es decIr, LumbIn 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 uude eI curucLer
Ieido. os de Iu IIsLu que no esLn en eI dIccIonurIo son uudIdos u esLe, y Ios
que si esLun conLInun puru eI sIguIenLe curucLer. Asi se uude mus de unu cu-
denu uI dIccIonurIo puru cudu curucLer.

2.3.3 LZ77

En Z;; es donde reuImenLe se concenLru eI InLers ucLuuI. EsLos uIgorILmos
LIenen LunLus decIsIones de dIseo 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 InLers.

us vurIunLes de Z;; LumbIn 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
(despus se comenLuru esLu decIsIn), 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,
lonitud) ocupun menos que Iu cudenu que coIncIdI, se obLIene compresIn.
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
lonitud 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 LZRWc, 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, lonitud), sIo 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
ImpIemenLucIn 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 posIcIn
en cudu uvunce de Iu venLunu, y unu usocIucIn (tclor_hcsh, posicin) no es
posIbIe. EsLe no es un probIemu sencIIIo. En || se oIrece unu soIucIn con cr-
boles de Pctricic que esLu puLenLudu. u soIucIn udopLudu en || es Iu que co-
menLuremos uqui.

En prImer Iugur, se consIderu Iu enLrudu dIvIdIdu en bIoques de IongILud n
(Lumuo de Iu venLunu). u enLrudu se munLIene IIju con respecLo u Ios IimILes
de Ios buIIers en Iu codIIIcucIn 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 posIcIn 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 IuncIn sobre eI InIcIo de Iu enLrudu que se
encuenLru en Iu posIcIn n deI buIIer. EI prImer curucLer, en Iu posIcIn 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 codIIIcucIn deI bIoque deI
Lumuo de Iu venLunu. EI sIguIenLe dIbujo esquemuLIzu Iu orgunIzucIn:

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


Como sIo 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 orgunIzucIn esLu cIuro que cuuIquIer posIcIn 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 Lumuo 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 codIIIcucIn 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 despus se co-
menLuru esLu decIsIn). 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, lonitud) correspondIenLe. SI no, Iu suIIdu es eI IILeruI u Iu enLrudu.
En umbos cusos se uude 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 IuncIn hcsh. os indIces de esLe urruy serun
Ios posIbIes vuIores de Iu IuncIn hcsh, y eI vuIor usocIudo u cudu indIce seru Iu
posIcIn 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 ImpIemenLucIn, yu que Lodus Ius IIsLus correspon-
dIenLes u Ius cudenus que poseen Ios mIsmos vuIores de Iu IuncIn 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 posIcIn, Iuego unu posI-
cIn deI buIIer corresponde u unu nIcu IIsLu enIuzudu. En eI urruy de IIsLus,
cudu indIce, por ejempIo eI i, guurdu Iu posIcIn de Iu cudenu unLerIor cuyo vu-
Ior hcsh coIncIde con Iu cudenu que comIenzu en Iu posIcIn 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 posIcIn puru compurur es Iu dudu por Iu cubezu
de Iu IIsLu puru Ius cudenus con eI mIsmo hcsh que Iu que comIenzu en pInPos.
Despus se sIgue Iu IIsLu puru obLener Iu coIncIdencIu de muyor IongILud. EI sI-
guIenLe cdIgo esquemuLIzu Iu bsquedu:

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

// La primera posicin 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 compurucIn se guurdu Iu IongILud de Iu coIncIdencIu y Iu posIcIn pu-
ru Iu que se uIcunz. EI resuILudo deI cdIgo unLerIor son Ios vuIores de Iu coIn-
cIdencIu mus Iurgu y su posIcIn. u condIcIn de purudu es que, bIen se ucube
Iu IIsLu, o bIen Iu posIcIn u compurur suIgu de Iu venLunu, con Io que pIerde In-
Lers (recurdese 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, cmo es que eI prImero LIene IongILud n y eI segundo
zn? u respuesLu es que sIo 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 seuIudu con usLerIsco (), Iu IndexucIn so-
bre pret se reuIIzu mdulo tcmco de lc tentcnc. EsLo nos Iuce que un indIce
i en pret correspondu u dos posIcIones deI buIIer: i e ((i+n) mdulo 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 posIcIn de Iu enLrudu debe ser regIsLrudu en eI urruy de IIsLus
dependIendo de su vuIor hcsh. Puru conseguIr que Ius IIsLus esLn ordenudus
por proxImIdud, Iu posIcIn ucLuuI seru Iu que se InserLe en Iu cubeceru de Iu
IIsLu. SI suponemos que nos enconLrumos en eI punLo x deI buIIer, Iu IncIusIn
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 ImugInucIn 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 codIIIcucIn 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 posIcIn de Iu derecIu. PurLe de Iu InIormu-
cIn 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 codIIIcucIn de oLro buI-
Ier.

EI probIemu de esLu ImpIemenLucIn son Ios grundes espucIos de curucLeres
IdnLIcos. Todus Ius cudenus que comIenzun en cudu posIcIn Lendrun eI mIsmo
hcsh y provocurun que se compuren con Iu cudenu ucLuuI, provocundo unu
compurucIn de cudenus por cudu byLe deI espucIo Iormudo por Ios curucLeres
IdnLIcos. EsLo Io Iuce muy IenLo, y es unu sILuucIn que Iuy que evILur. Se sue-
Ie Iucer resLrIngIendo eI nmero de compurucIones por cudu byLe purundo Iu
bsquedu en eI momenLo en eI que Iu coIncIdencIu mus Iurgu seu muyor que un
cIerLo vuIor.

OLru mejoru que se Ie uude u esLu ImpIemenLucIn || es Io que se denomInu
lcz etcluction mctches o evuIuucIn 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 dIseudos por
Ross WIIIIums |1q|. EsLos son LZRW:c y LZRWc. EI prImero es unu soIucIn
purecIdu u Iu unLerIor que sIo uLIIIzu eI urruy hecd. Por eIIo, sIo dIspone de
unu cudenu cuyo hcsh coIncIdI con Iu ucLuuI. Dudu su sImpIIcIdud, es muy ru-
pIdo; y un usi, su eIecLIvIdud es muy buenu. EI segundo uLIIIzu un esquemu
mus eIuborudo, pero en eI Iondo, unu sImpIIIIcucIn deI vIsLo unLerIormenLe.

No ucubun uqui Ius consIderucIones ucercu deI uIgorILmo. Dejumos puru des-
pus 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 nmero de bILs que deben ser uLI-
IIzudos puru codIIIcur Ios pures (desplczcmiento, lonitud). En prImer Iugur, y
puru uprovecIur Iu codIIIcucIn bInurIu, eI Lumuo 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 Lumuo de Iu venLunu, es cIuro que cuunLo mus grunde seu sLu,
muyor seru Iu compresIn uI ser muyor LumbIn Iu IIsLorIu sobre Iu que se bus-
cun posIbIes coIncIdencIus, con mus probubIIIdud de enconLrur unu coIncIden-
cIu mus Iurgu. SIn emburgo, un Lumuo 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
codIIIcucIn deberiu uIorrur mucIos bILs en Iu codIIIcucIn de Ios vuIores de
desplczcmiento y lonitud de Ius coIncIdencIus mus probubIes. EsLo resLrInge
eI Lumuo de Iu venLunu u uno LuI que Iugu que desplczcmiento quepu en po-
cos bILs. EsLos dos probIemus enIrenLudos Iucen que eI Lumuo de Iu venLunu
seu unu consIderucIn ImporLunLe. Un Lumuo LipIco es eI que usIgnu 1z bILs
puru eI desplczcmiento (venLunu de qoq6 byLes) y unu lonitud 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 dIseo se guiu IucIu esLe punLo en Ios compresores en LIempo
reuI que despus veremos.

EI sIguIenLe puso es IIevur Iu codIIIcucIn de Ios despIuzumIenLos, IongILudes y
IILeruIes IucIu unu eIIcIencIu muyor upIIcundo LcnIcus esLudisLIcus u Iu suIIdu.
EsLus Ideus se esLudIurun en eI sIguIenLe punLo.

2.3.4 Compresores hbridos o de dos fases

EsLu seccIn cuImInuru Iu codIIIcucIn Z;; con Iu InLroduccIn 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, lonitud), bIen lite-
rcles) eru de sumu ImporLuncIu. EI ILImo puso es IIevur esu codIIIcucIn usun-
do de unu Iormu modIIIcudu Ios uIgorILmos esLudisLIcos que vImos
unLerIormenLe, LunLo HuIImun como SIunnon-uno como Ios compresores
urILmLIcos. u operucIn 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 codIIIcucIn IndependIenLemenLe puru cudu uno de esLos LIpos de vuIores.

EsLo sIgnIIIcu, segn eI LIpo de compresor esLudisLIco uLIIIzudo, Lener un urboI
puru cudu LIpo de duLo (HuIImun SIunnon-uno) o unu LubIu de IrecuencIus
en Iu compresIn urILmLIcu. En |1| podemos ver un pequeo esLudIo ucercu
de Iu convenIencIu de uLIIIzur compresores esLudisLIcos u Iu suIIdu de un com-
presor Z;;, en eI que se IIegu u Iu concIusIn de que eI uso de HuIImun es cusI
Lun eIIcIenLe que eI uso de un compresor urILmLIco uunque mucIo mus rupIdo.
TumbIn se pruebun vurIus uILernuLIvus u Iu Ioru de consLruIr Ios cdIgos puru
cudu LIpo de duLo, como son urboIes HuIImun precuIcuIudos o consIderur sIo
Ios l bILs uILos deI despIuzumIenLo (Lnguse 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 sIo Ios l bILs uILos reduce Iu vurIubIIIdud y Iu mugnILud deI
urboI) y Ios resLunLes terbctim.

OLru uILernuLIvu es uLIIIzur urboIes de cdIgos 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, compresIn urIL-
mLIcu)
LC: Z;; + HuIImun esLuLIco + Io que eIIos IIumun shcred dictionc-
ries cmon jiles. o que sIgnIIIcu sIo Io suben uIIi en AIP Detelop-
ment.


2.4 Compresores en tiempo real

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

En cuunLo u Ios usos, Lenemos Ios sIguIenLes:

compresIn de dIsco en LIempo reuI: Stucker, SoperStor, oobleS-
puce [ riveSpuce, sIsLemu de IIcIeros de WIndows NT, NTIS,
compresIn LrunspurenLe en comunIcucIones (no muy upIIcudu, por cIer-
Lo, nI en Pv6),
soporLe de .ZP 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 {PI) de Adobe SysLems,
IormuLos de video comprImIdos (de Iormu lossless) puru juegos, presen-
LucIones, eLc.

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


2.5 El futuro de la compresin 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-
sIn. os compresores busudos en dIccIonurIo yu esLun busLunLe cercu de Iu co-
Lu de SIunnon, pero son superudos por Ios urILmLIcos, mus IenLos.

SIn emburgo, eI InLers ucLuuI se desviu u Ios compresores loss dudo eI uuge
que Ius LcnIcus muILImedIu Iun experImenLudo. Con Iu venIdu de Iu LeIevIsIn
dIgILuI, por ejempIo, Iu bsquedu de uIgorILmos de compresIn 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 compuius de LeIevIsIn en sus
enIuces por suLIILe, y Io que se denomInu MPEG lcer , uLIIIzudo en compre-
sIn de sonIdo de cuIIdud CD, con unu reduccIn normuI de 8 u 1.


3 Compresin lossy

3.1 Introduccin

Es obvIo que LrunsmILIr muLerIuI muILImedIu sIn comprImIr es ImpensubIe. u
nIcu esperunzu es que Iu compresIn musIvu seu posIbIe. AIorLunudumenLe,
un grun esIuerzo de InvesLIgucIn durunLe Ius pusudus dcudus Iu IIevudo u
mucIus LcnIcus y uIgorILmos que Iucen Iu compresIn muILImedIu posIbIe.

Todos Ios sIsLemus de compresIn 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 codIIIcucIn y
decodIIIcucIn, 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 sIo 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
codIIIcucIn eI ser IenLo y requerIr Iurdwure curo sIempre que eI uIgorILmo de
decodIIIcucIn seu rupIdo y no requIeru Iurdwure curo. Despus 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 compresIn IIegun u
Iucer Iu decodIIIcucIn rupIdu y sImpIe, IncIuso uI precIo de Iucer Iu codIIIcu-
cIn IenLu y compIIcudu.
Por oLro Iudo, puru muILImedIu en LIempo reuI, como vIdeoconIerencIu,
Iu codIIIcucIn IenLu es InucepLubIe. u codIIIcucIn 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 compresIn.
Unu segundu usImeLriu es que eI proceso de codIIIcucInJdecodIIIcucIn
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 seuI 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 prdIdus (Iossy). SI Iu enLrudu y Iu suIIdu son IdnLIcus, eI sIsLe-
mu es sIn prdIdus (IossIess). os sIsLemus con prdIdus son ImporLunLes
porque ucepLur unu pequeu cunLIdud de prdIdu de InIormucIn puede dur
unu enorme gununcIu en LrmInos de posIbIIIdud de ruLIo de compresIn.

3.1.1 Codificacin por entropa

os esquemus de compresIn pueden ser dIvIdIdos en dos cuLegorius ge-
neruIes: codIIIcucIn por enLropiu y codIIIcucIn de Iu IuenLe.
u codIIIcucIn por enLropiu sIo munIpuIu Ius cudenus de bILs sIn suber
Io que sIgnIIIcun Ios bILs. Es unu LcnIcu LoLuImenLe reversIbIe, sIn prdIdus y
generuI, upIIcubIe u Lodos Ios duLos. Se dun Lres ejempIos
EI prImer ejempIo de codIIIcucIn por enLropiu es RE (Run engLI En-
codIng). En mucIos LIpos de duLos, son comunes Ius cudenus de simboIos repe-
LIdos (bILs, nmeros, eLc.). sLos pueden ser reempIuzudos por un murcudor
especIuI no permILIdo de oLru Iormu en Ios duLos, seguIdo por un simboIo que
IndIcu Iu repeLIcIn, 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:

1oooooooooooo8q8;11111111111116q6;qoooooooooooooooooooooo
6

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

1Ao1z8q8;A1116q6;qAozz6

Aqui eI RE 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 codIIIcucIn por enLropiu es Iu codIIIcucIn esLu-
disLIcu. Por esLo se enLIende usur un cdIgo corLo puru represenLur simboIos
comunes y Iurgo puru represenLur Ios InIrecuenLes. EI cdIgo Morse usu esLe
prIncIpIo, sIendo Iu E y Iu Q --- y usi sucesIvumenLe.
EI Lercer ejempIo de Iu codIIIcucIn por enLropiu es codIIIcucIn CUT
(CoIor ook Up TubIe). ConsIderur unu Imugen usundo codIIIcucIn 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 sIo z6 vuIores de coIor son usudos
ucLuuImenLe. Un IucLor de compresIn de cusI Lres puede ser uIcunzudo cons-
Lruyendo unu LubIu de ;68 byLes IIsLundo Ios vuIores RGB de Ios z6 coIores
usudos ucLuuImenLe, y despus represenLundo cudu pIxeI por eI indIce de su
vuIor RGB en Iu LubIu. Aqui se ve un ejempIo cIuro donde Iu codIIIcucIn es mus
IenLu que Iu decodIIIcucIn porque codIIIcur requIere buscur en Iu LubIu mIen-
Lrus que se puede decodIIIcur con unu soIu operucIn de IndexucIn.

3.1.2 Codificacin de la fuente

u codIIIcucIn de Iu IuenLe se beneIIcIu de Ius propIedudes de Ios duLos
puru producIr mus (usuuImenLe con perdIdus) compresIn. Aqui LumbIn se
IIusLru Iu Ideu con Lres ejempIos. EI prImer ejempIo es Iu codIIIcucIn 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 moduIucIn dIIerencIuI por puIsos (DIIIerenLIuI PuIse Code
ModuIuLIon) es un ejempIo de esLu LcnIcu. Es con perdIdus porque Iu seuI
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 InIormucIn se perderu.
u codIIIcucIn dIIerencIuI es un LIpo de codIIIcucIn de Iu IuenLe porque
se uprovecIu Iu propIedud de que suILos grundes enLre duLos consecuLIvos son
ImprobubIes. No Lodus Ius secuencIus de nmeros LIenen esLu propIedud. Un
ejempIo de curencIu de esLu propIedud es unu IIsLu generudu por ordenudor de
nmeros de LeIIono uIeuLorIos usudu por Ios pubIIcIsLus puru moIesLur u Iu
genLe durunLe Iu cenu. us dIIerencIus enLre nmeros de LeIIono consecuLIvos
en Iu IIsLu usuru LunLos bILs como puru represenLur Ios nmeros de LeIIono.
Un cuso purLIcuIur de Iu codIIIcucIn dIIerencIuI es Iu ModuIucIn DeILu,
en Iu que se requIere que cudu vuIor sumpIeudo dIIIeru de su predecesor en +1
-1:




EI segundo ejempIo de codIIIcucIn de Iu IuenLe consIsLe en LrunsIormu-
cIones. TrunsIormundo Ius seuIes de un domInIo u oLro, Iu compresIn puede
Iucerse mucIo mus IucII. ConsIdrese, por ejempIo, unu LrunsIormudu de ou-
rIer. Unu IuncIn deI LIempo es represenLudu como unu IIsLu de umpIILudes.
Dudos Ios vuIores exucLos de Lodus Ius umpIILudes, Iu IuncIn orIgInuI puede ser
reconsLruIdu perIecLumenLe. De cuuIquIer modo, dundo sIo Ios vuIores de Ius
prImerus, por ejempIo, ocIo umpIILudes redondeudus u dos decImuIes, puede
Loduviu ser posIbIe reconsLruIr Iu seuI de Iormu que eI que escucIu no puedu
decIr sI se Iu perdIdo uIgunu InIormucIn. u gununcIu es que LrunsmILIr ocIo
umpIILudes requIere mucIos menos bILs que LrunsmILIr Iu ondu sumpIeudu.

us LrunsIormucIones son LumbIn 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 LrunsIormucIn podriu ser LII sI
se usu codIIIcucIn de IongILud vurIubIe. Por ejempIo, Ios vuIores enLre -; y +;
podriun ser codIIIcudos con nmeros de q bILs y Ios vuIores enLre o y z po-
driun ser codIIIcudos con un cdIgo especIuI de q bILs (-8) seguIdo por un n-
mero de 8 bILs.



Aunque esLu sImpIe LrunsIormucIn es sIn prdIdus, oLrus, mus LIIes, no.
Unu LrunsIormucIn espucIuI bIdImensIonuI especIuImenLe ImporLunLe es Iu
DCT (DIscreLe CosIne TrunsIormuLIon). EsLu LrunsIormucIn LIene Iu propIedud
de que puru Imugenes sIn dIsconLInuIdudes muy pronuncIudus, cusI Lodo eI es-
pecLro de poLencIu esLu en Ios prImeros LrmInos, permILIendo Ignorur Ios I-
LImos sIn mucIu prdIdu de InIormucIn. Se voIveru uI DCT denLro de poco.
EI Lercer ejempIo de codIIIcucIn de Iu IuenLe es Iu cuunLIzucIn de vecLo-
res (tector qucntizction), que es LumbIn dIrecLumenLe upIIcubIe u duLos de
Imugenes. Aqui Iu Imugen se dIvIde en recLunguIos de Lumuo IIjo. Ademus de
Iu Imugen mIsmu, LumbIn se necesILu unu LubIu de recLunguIos deI mIsmo Lu-
muo que Ios recLunguIos de Iu Imugen (posIbIemenLe consLruIdos u purLIr de
Iu Imugen). EsLu LubIu se IIumu IIbro de cdIgos (code bool). Cudu recLunguIo es
LrunsmILIdo buscundoIo en eI IIbro de cdIgos y mundundo eI indIce en vez deI
recLunguIo. SI eI IIbro de cdIgos es creudo dInumIcumenLe (u purLIr de Iu Imu-
gen), debe ser LrunsmILIdo LumbIn. CIurumenLe, sI un pequeo nmero de rec-
LunguIos domInu Iu Imugen, grundes uIorros en uncIo de bundu serun posIbIes
uqui.
Un ejempIo de cuunLIzucIn de vecLores se enseu en Ius sIguIenLes IIgu-
rus. En Iu prImeru se LIene unu rejIIIu de recLunguIos de Lumuo sIn especIIIcur.
En Iu segundu se LIene eI IIbro de cdIgos. u suIIdu es sIo Iu IIsLu de enLeros
oo1ozzozzooqoo de Iu Lerceru IIguru. Cudu uno represenLu unu enLrudu deI
IIbro de cdIgos.



Se podriu pensur que Iu cuunLIzucIn de vecLores es sIo unu generuIIzu-
cIn bIdImensIonuI de CUT. Pero Iu dIIerencIu reuI es Io que pusu sI no se en-
cuenLrun coIncIdencIus. Tres esLruLegIus son posIbIes. u prImeru es sIo usur
Iu mejor coIncIdencIu. u segundu es usur Iu mejor coIncIdencIu, y uudIr uIgu-
nu InIormucIn sobre cmo mejorur Iu coIncIdencIu (p.e. uudIr eI vuIor me-
dIo). EI Lercero es usur Iu mejor coIncIdencIu y uudIr Lodo uqueIIo que seu
necesurIo puru permILIr uI decodIIIcudor reconsLruIr Ios duLos exucLumenLe. us
prImerus esLruLegIus son con prdIdus pero se uIcunzu mucIu compresIn. u
Lerceru es sIn prdIdus pero menos eIecLIvu como uIgorILmo de compresIn.
OLru vez, se ve que codIIIcur (coIncIdencIu de puLrones) consume mucIo mus
que decodIIIcur (Indexur en unu LubIu).

3.2 El estndar 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 uproxImucIn, eI esLundur muI-
LImedIu puru Imugenes en movImIenLo, MPEG, es sIo Iu codIIIcucIn JPEG de
cudu IoLogrumu sepurudumenLe, udemus de uIgunus curucLerisLIcus exLru puru
compresIn enLre IoLogrumus y deLeccIn 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 sIo uIgorILmo. Puru nuesLros propsILos, sIn emburgo, sIo
eI modo secuencIuI con prdIdus 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 codIIIcucIn de unu Imugen con JPEG es Iu prepurucIn 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 compresIn. EsLos vuIores son oLru
Iormu de expresur Ios vuIores RGB de unu Imugen. EI ojo es mucIo mus sensI-
bIe u Iu seuI de IumInuncIu que u Ius seuIes de cromInuncIu, usi que no Iuce
IuILu LunLu precIsIn en esLus ILImus. EsLo LumbIn permILe compuLIbIIIzur Ius
LrunsmIsIones de LeIevIsIn puru recepLores en bIunco y negro y coIor. us dos
seuIes de cromInuncIu se LrunsmILen en esLrecIus bundus u mus uILus Irecuen-
cIus. VoIvIendo u Iu compresIn, prImero se compuLu Iu IumInuncIu, Y, y Ius dos
cromInuncIus, y Q (puru NTSC), de ucuerdo u Ius sIguIenLes IrmuIus:

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. Despus, se Iuce Iu medIu de bIoques cuudrudos de
cuuLro pixeIes en Ius muLrIces y Q puru reducIrIus u zo zqo. EsLu reduccIn
es con prdIdus, 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 LrunsIormucIn 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 prdIdus, pero en Iu prucLIcu,
usundo nmeros en comu IIoLunLe sIempre se InLroduce uIgo de error de re-
dondeo que resuILu en unu prdIdu de InIormucIn. 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-
cIn, en eI cuuI Ios coeIIcIenLes DCT menos ImporLunLes se quILun. EsLu Lruns-
IormucIn (con prdIdus) 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-
cIn 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 cuunLIzucIn, y eI resuILudo obLenIdo dIvIdIendo cudu eIemenLo DCT de Iu
IIguru unLerIor por eI correspondIenLe eIemenLo de Iu LubIu de cuunLIzucIn.
os vuIores de Iu LubIu de cuunLIzucIn no son purLe deI esLundur JPEG. Cudu
upIIcucIn debe Lener su LubIu, permILIendo conLroIur Iu compresIn con prdI-
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 pequeos. 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 RE 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 puLrn de recorrIdo en zIg-zug, mosLrudo en Iu IIguru. En
esLe ejempIo, eI puLrn 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 nmeros que represenLun Iu Imugen (en eI es-
pucIo LrunsIormudo). EI puso 6 codIIIcu por HuIImun Ios nmeros puru uImu-
cenumIenLo o LrunsmIsIn.
EI JPEG puede purecer compIIcudo, pero es porque es compIIcudo. Aun-
que como oIrece unu compresIn de zo:1 o mejor, es umpIIumenLe usudo. De-
codIIIcur unu Imugen JPEG requIere ejecuLur eI uIgorILmo uI revs. A dIIerencIu
de oLros uIgorILmos vIsLos, JPEG es muy sImLrIco: 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 geomLrIcus (p.e. roLu-
cIn de Imugen) dIrecLumenLe en Iu muLrIz LrunsIormudu, sIn regenerur Iu Imu-
gen orIgInuI. PropIedudes sImIIures LumbIn se upIIcun uI uudIo MPEG
comprImIdo.

3.3 El estndar MPEG

InuImenLe, IIegumos uI coruzn 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 LumbIn conLIene mus redun-
duncIu que uI uudIo, nos cenLruremos en Iu compresIn 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 resoIucIn. MPEG-1 puede ser LrunsmILIdo
por Iineus de LrunsmIsIn de pur Lrenzudo puru pequeus dIsLuncIus. MPEG-1
LumbIn 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 1818), que Iue orIgInuImenLe dIseudo puru comprImIr video con
cuIIdud de dIIusIn en q u 6 Mbps, puru que pudIeru cuber en un cunuI de dIIu-
sIn NTSC o PA. Mus Lurde, MPEG Iue expundIdo puru soporLur mus uILus
resoIucIones, IncIuyendo HDTV.
MPEG-q es puru vIdeoconIerencIu de medIu resoIucIn 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 numerucIn, 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 uproxImucIn, MPEG-z es un supercon-
junLo de MPEG-1, con curucLerisLIcus udIcIonuIes, IormuLos de IoLogrumu, y
opcIones de codIIIcucIn. 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 despus 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 cmo 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 compresIn de uudIo MPEG se Iuce sumpIeundo Iu ondu u z kHz,
qq.1 kHz q8 kHz. Puede munejur mono, esLreo dIsjunLo (cudu cunuI com-
prImIdo sepurudumenLe), o esLreo junLo (se expIoLu Iu redunduncIu InLercu-
nuI). Se orgunIzu como Lres cupus, cudu unu de eIIus upIIcundo opLImIzucIones
udIcIonuIes puru conseguIr mus compresIn (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 uude uI esquemu busIco IocuIIzucIn de bILs udIcIonuI. Se usu
puru uudIo en CD-ROM y bundus sonorus de peIicuIus. u cupu uude IIILros
IibrIdos, cuunLIzucIn no unIIorme, codIIIcucIn HuIImun y oLrus LcnIcus
uvunzudus.
EI uudIo MPEG puede comprImIr un CD de rock `n roII en q6 kbps sIn
prdIdu de cuIIdud percepLIbIe, IncIuso puru Ios Iuns deI rock 'n roII sIn prdIdu
de oido. Puru un concIerLo de pIuno, se necesILun uI menos 1z8 kbps. EsLu dIIe-
rencIu es porque Iu reIucIn seuI-ruIdo deI rock 'n roII es mucIo mus uILu que
Iu deI concIerLo de pIuno (en eI senLIdo de Iu IngenIeriu).
u compresIn de uudIo se IIevu u cubo IucIendo unu LrunsIormudu rupI-
du de ourIer en Iu seuI 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 esLreo, Iu redunduncIu InIerenLe de Lener dos IuenLes de uudIo uILu-
menLe superpuesLus LumbIn se expIoLu. EI uudIo MPEG-1 resuILunLe es ujusLu-
bIe desde z kbps IusLu qq8 kbps.
AIoru se uborduru Iu compresIn 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 uproxImucIn se usu u veces,
especIuImenLe cuundo se necesILu ucceso uIeuLorIo u cudu IoLogrumu, como en
edIcIn de produccIones de video. De esLe modo, es uIcunzubIe un uncIo de
bundu comprImIdo de 8 u 1o Mbps.
Se puede uIcunzur compresIn udIcIonuI uprovecIundose deI IecIo de
que dos IoLogrumus consecuLIvos son u menudo cusI IdnLIcos. EsLe eIecLo es
mus pequeo 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 reduccIn 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 IdnLIcos 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 LcnIcu 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 sIo Imugenes esLuLIcus codIIIcudus usundo JPEG,
LumbIn usundo IumInuncIu de resoIucIn pIenu y cromInuncIu de resoIucIn
medIu sobre cudu eje. Es necesurIo que upurezcun IoLogrumus perIdIcumenLe
por Lres ruzones. PrImero, MPEG-1 puede ser usudo puru unu LrunsmIsIn 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 sIo 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 posIcIn de un mueco. os mucrobIoques que conLIenen Iu escenu de
Iondo concordurun exucLumenLe, pero Ios mucrobIoques que conLIenen uI mu-
eco Lendrun unu dIIerencIu de posIcIn y Iubru que durIes un seguImIenLo.


EI esLundur MPEG-1 no especIIIcu cmo buscur, cmo de Iejos buscur, o
cmo de buenu debe ser unu coIncIdencIu puru conLur. EsLo se deju puru cudu
ImpIemenLucIn. Por ejempIo, unu ImpIemenLucIn puede buscur un mucro-
bIoque en Iu posIcIn ucLuuI en eI IoLogrumu unLerIor y en Lodus Ius demus po-
sIcIones con un oIIseL x en Iu dIreccIn x y en Iu dIreccIn . Puru cudu
posIcIn, eI nmero de coIncIdencIus en Iu muLrIz de IumInuncIus podriu ser
compuLudo. u posIcIn con Iu mus uILu punLuucIn seriu decIurudu gunudoru,
IubIendo deIInIdo prevIumenLe un umbruI. De oLro modo, se dIriu que eI mu-
crobIoque se Iu perdIdo. Por supuesLo, LumbIn 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, cuunLIzucIn,
codIIIcucIn RE y codIIIcucIn 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 dIreccIn), seguIdo por Iu IIsLu de nmeros 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 usImLrIco. Unu ImpIemenLucIn
es IIbre puru probur cudu posIcIn pIuusIbIe en eI IoLogrumu unLerIor sI quIere,
en un InLenLo desesperudo de IocuIIzur cudu ILImo mucrobIoque. EsLu uproxI-
mucIn mInImIzuru Iu suIIdu MPEG-1 u expensus de unu codIIIcucIn muy Ien-
Lu. Podriu ser buenu puru Iu codIIIcucIn unu nIcu vez de unu bIbIIoLecu de
peIicuIus pero seriu LerrIbIe puru vIdeoconIerencIu en LIempo reuI.
SImIIurmenLe, cudu ImpIemenLucIn 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 bsquedu se use, Iu
suIIdu IInuI es Iu codIIIcucIn JPEG deI mucrobIoque ucLuuI o Iu codIIIcucIn
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 compensucIn de movImIenLo udIcIonuI, y
LumbIn 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 compresIn, no Ios soporLun Lodus Ius
ImpIemenLucIones.
os IoLogrumus D se usun sIo puru Iucer posIbIe mosLrur unu Imugen de
buju resoIucIn cuundo se rebobInu o se uvunzu rupIdo. Hucer Iu decodIIIcucIn
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 resoIucIn. Cudu enLrudu de
IoLogrumu D es eI vuIor medIo de un bIoque, sIn mus codIIIcucIn, 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 codIIIcucIn
es IundumenLuImenLe sImIIur u Iu codIIIcucIn MPEG-1, con IoLogrumus , P y
B. os IoLogrumus D no se soporLun. TumbIn, Iu LrunsIormucIn 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 dIIusIn de LeIevI-
sIn y puru upIIcucIones CD-ROM, soporLu umbus Imugenes, Ius progresIvus y
Ius enLreIuzudus, mIenLrus que MPEG-1 sIo soporLu progresIvus. TumbIn Iuy
oLrus dIIerencIus en deLuIIes enLre Ios dos esLundures.
En Iugur de soporLur un sIo nIveI de resoIucIn, MPEG-z soporLu cuu-
Lro: buju (z zqo), medIu (muIn) (;zo q8o), uILu-1qqo (1qqo 11z), y uILu
(1qzo 1o8o). u buju resoIucIn es puru VCRs y compuLIbIIIdud IucIu uLrus
con MPEG-1. u medIu es Iu normuI puru dIIusIn NTSC. us oLrus dos son pu-
ru HDTV.
Ademus de Lener cuuLro nIveIes de resoIucIn, MPEG-z LumbIn soporLu
cInco perIIIes. Cudu perIII esLu dedIcudo u un ureu de upIIcucIn. EI perIII mus
ImporLunLe (muIn) es puru uso de propsILo generuI, y probubIemenLe Iu muyo-
riu de Ios cIIps esLurun opLImIzudos puru eI perIII muIn y eI nIveI de resoIucIn
muIn. EI perIII sImpIe es sImIIur uI muIn, excepLo que excIuye eI uso de IoLo-
grumus B, puru Iucer eI soILwure de codIIIcucIn y decodIIIcucIn mus IucII. os
demus perIIIes LruLun Iu escuIubIIIdud y HDTV. os perIIIes dIIIeren en LrmI-
nos de Iu presencIu o uusencIu de IoLogrumus B, resoIucIn de cromInuncIu y
escuIubIIIdud de Iu cudenu de bILs u oLros IormuLos.
EI ruLIo de duLos comprImIdos puru cudu combInucIn de resoIucIn 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 nmero IIImILudo de cudenus eIemenLuIes, IncIuyendo vi-
deo y uudIo, pero LumbIn IncIuyendo cudenus de duLos que deben ser sIncro-
nIzudos con eI uudIo y eI video, por ejempIo, subLiLuIos en mILIpIes IdIomus.
Cudu unu de Ius cudenus se empuqueLu con murcus de LIempo. Un sImpIe
ejempIo de dos cudenus se enseu 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 encrIpLucIn, 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 LrunsmIsIn. 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 comn 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 comn. os puqueLes de Iu cudenu de LrunsporLe son de IongILud
IIju (188 byLes), puru Iucer mus IucII eI IImILur eI eIecLo de Ios puqueLes duu-
dos o perdIdos durunLe Iu LrunsmIsIn.
Todos Ios esquemus de codIIIcucIn que se Iun dIscuLIdo esLun busudos
en eI modeIo de codIIIcucIn con prdIdus seguIdu de LrunsmIsIn sIn prdIdus.
NI eI JPEG nI eI MPEG, por ejempIo, pueden recuperurse bIen de Iu prdIdu o
duo de puqueLes. Unu uproxImucIn dIIerenLe u Iu LrunsmIsIn de Imugenes es
LrunsIormur Ius Imugenes de Iormu que se sepure Iu InIormucIn ImporLunLe de
Iu menos ImporLunLe (como Iuce DCT, por ejempIo). EnLonces uudIr unu con-
sIderubIe cunLIdud de redunduncIu (IncIuso dupIIcur puqueLes) u Iu InIormu-
cIn ImporLunLe y nudu u Iu menos ImporLunLe. SI uIgunos puqueLes se pIerden
o duun, puede ser Loduviu posIbIe mosLrur Imugenes ruzonubIes sIn reLruns-
mIsIn. EsLus Ideus son especIuImenLe upIIcubIes u LrunsmIsIones muILIcusL,
donde eI Ieedbuck desde cudu recepLor es ImposIbIe de cuuIquIer modo.



4 Bibliografa

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

z. comp.compression IAQ. Jeun-Ioup GuIIIy. (ApurIcIn 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 distribucin de PK-ZIP :.x z.x.

8. Ycbbc, pcquete con cdio juente documentccin 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 Hih Perjormcnce Dctc Compression. WeIcI, Terry A.,
CompuLer, 1;, no. 6, June 1q8q. (ZW)

11. Esquemcs clortmicos jundcmentcles. Vol. III: ordenccin bsquedc.
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 LZRWc. Ross N. WIIIIums, 1qq1.

1. Dctc Compression Alorithms 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.

Vous aimerez peut-être aussi