Compresión de datos en comunicaciones

Anuncio
Compresión de Datos en las Comunicaciones
1 Introducción
!
"
#
$ %
&
'
%
%
#
# %
(
(
(
(
%
)%
*
• +
, $
(
# /
(
.
#
• 0
#
(
(
&
$
#
(
(
#
(
1
333
/#
.
/
.
(
1
3332
#12
"
%
#
#
%
#
#
(
4
.
(
#(
#
1
5533
+
(
/
%
+
(
% %
&
4
(
*
ρ=
ρ
+
+
=
+
=
.
/#
.
/#
#
(
$
#
6
+ (
$
*
$
.
$
/
(
#
#
*
7
(
( ##
/ "
.
ρ
(
1
#
"
$
&
ρ ;1
#
#
91
6:#
#
%
#
ρ
%
38#
"
(
%
(
#
(
&
<
+
-
#
#
#
=
+!
(
"#
$
&
#
#
<
#
(
&
(
%
#
(
%
(
+
%
>
#
"
(
#
>
?
#
%
#
&
(
+
#
#
#
&
"
?
#
#
+
(
#
*
$
+
"
3@
3
3A3
'
*
B
(
%
(
#
(
(
#
#
B
%#
(
(
#
.
#
(
/
+ $
#
#
4
#
#
#
4
+
#
(
"
#
(
(
(
(
(
(
(
#
(
#
(
(
#
(
#
(
(
#
.
#
&
/ &
(
#
#
(
#
#
#
%#
#
(
1
C5D#
4
(
(
"
#
#
*
=
=−
(
(
#
<
(
$
#
#
(
%
(
=
*
=
=−
=
"
=
$
$
:#
&
#
%
"
(
(
#
$
#
(
4
#
+E,#F (
(
(
#
#
* +E@
@
#+E@D#
#(
#2& =#G& =#
%#
*
$
#
.
4
(
+
#
#
#
(
/#
(
H
$
$
#
(
#
.
/
#
(
#
*
• '
#
(
.
/ "
$
#
(
• '
(
(
+
"
(
%
#
#
>
#
/
"
?
.
$
2 Compresión lossless
%
%
$%4
%
&
%
$
& "
#4
I
%
$
'
%
#
(
F
%
*
6
• '
• '
-
4
(
%
(
(
(
.
(
/
(
*
(
(
(
4
(
( /
#
# (
.
3 1
/
(
#
#
(
(
.
4
J
(
(
4
(
"
$
(
"
(
%
#
#
(
#
&
(
$
#
(
"
*
%4
(
#
'
%
(
#
#
'
%
0
#
$
>
#
(
%?
2%
4
$
(
(
(
&
( #
"'K
K D
(
(
(
%
(
.:8L
/
$
(
.
#
#
"
/
.
#
$
(
"'K
K
/
(
.
(
"
#
/
$
%
*
• '
• '
• '
!
"#
$
%
(
(
%
#
$
(
#
(
(
$
%
#
3
1
$
-
#
(
F(
(
#
"
(
I
#
$
%
(
$
(
#
&
+
(
(
#
%
(
%
%
#
$
%
M
%
(
#
#
(
(
F
*
%
(
(
(
%
%
#F (
(
"
%
I
#
'
#F (
(
%
'
%
%(
$
%4
$
#
%#
(
4
+
$
J
%
$
4
'NN
%
+
0.
$
%
:
/ J
*
// Crear el heap que contendrá en principio los mensajes a codificar
heap<nodo> h(nMsg * 2);
// mayor número de nodos del árbol
// Insertar en el heap los mensajes a codificar
for (i=0;i<nMsg;i++)
if (msg[i]->freq != 0)
// Sólo los que hayan salido
h.insert(msg[i]);
// Cuando sólo quede uno, será el nodo que debajo contiene a todos
// los mensajes. El árbol ya está construído. La raíz será h.get().
while (h.numElem() != 1)
{
// Construir un nuevo nodo que será el padre de los dos nodos
// menores
nodoTmp = new nodo(0);
// Nuevo nodo, frecuencia 0
// Recuperar el hijo izquierdo
tmpSon = h.get();
// Coger el menor
tmpSon->dad = nodoTmp;
// Actualizar su padre
tmpSon->branch = 0;
// Y su rama (para el camino)
nodoTmp->lson = tmpSon;
// Actualizar el hijo izquierdo
nodoTmp->freq += tmpSon->freq;
// Recuperar el hijo derecho
tmpSon = h.get();
// Coger el menor
tmpSon->dad = nodoTmp;
// Actualizar su padre
tmpSon->branch = 1;
// Y su rama (para el camino)
nodoTmp->rson = tmpSon;
// Actualizar el hijo derecho
nodoTmp->freq += tmpSon->freq;
// Insertar el nuevo nodo padre
h.insert(nodoTmp);
}
·
·
·
·
// Procesar el árbol, es decir, construir los códigos para
// cada mensaje y codificar la entrada.
delete h.get();
// Borra todos los nodos
}
#"
I
#
.
4
/
*3 1
(
%
#
%
#
'
%
'
# %
%
(
%
"
%
#
J
"
%
A (1/2)
F(
(
A (1/2)
B (1/4)
F(
(
C (1/4)
%
*
•(1/2)
0/ \1
(1/4)B C(1/4)
•
0/ \1
A
•
0/ \1
B
C
) '
%
( * 93#)91
3 '91
1.
. D
6
#18
P#)P 'P/
$
(
$
/
(
.
/
#
O
#
(
'
/
.
#
%
(
#
#
#
J
"Q#
%
M
(
%
=
R+
J
"
$
()
*"
(+
,
0
#
%
%
%
F
&
$
%
%
*
%
.
%
&
%
#
'
%
%
(
#
% #
'
%
#/#
%
%
#
#
%
%
%
%
F(
(
(
#
(
"
(
#
#
$
J
4
%
0
%
1
L
S
LT
"Q
'
#
#
%4
%
%>
"Q
?
#
#
(
%
(
#
"
(
%
(
S
3#
1
T
/
(
(
.U/ 9:6A
"
. %
"
#U V#
%
.V/ 91
6A
U#
(
#
#
S
3#
1
T
:6A
<
S
3#:6AT
( #
V#
#
S
:6A#1
T
:6A (
( #
"
#
#
%
'
#
#
(
#
(
J
#
(
*
1
+-----------+-----------+-----------+
|
|8/9 YY
| Detail
|<|
+-----------+-----------+<|
Y
|
| too small |<|2/3
|
YX
| for text |<+-----------+-----------+-----------+
31/32
15/16
14/16
6/8
Codewords
/-----\
.11111
.1111
.1110
.110
|
|
|16/27 XYY |<|
|
+-----------+
|
|
XY
|
|
|
|
|
XYX
|<|
|4/9
|
|
|
+-----------+-----------+
|
|
|
|
|
X
|
|
XXY
|<|
|
|8/27
|
|
|
+-----------+
|
|
XX
|
|
|
|
|
|<|
|
|
XXX
|
|
|
|
|
|0
|
|
|
+-----------+-----------+-----------+
+
>'
R
?
(
%
.1010
4/8
.100
3/8
.011
1/4
.01
-./
0
(
(
%
$
#UUV#
10/16
<
31
1
/
A6D.
#
$%
#
#
%
%
*
31
1
#
:6A (
(
(
U"
:6A (
U#
#
#
<
S
3#:6AT
#
#
UU "
#A6D. 31
1
/
S
3#56CT
#
I
&
+
%
V
UUV W
'
(
X
(
#
#
#
+
(
>
?+
.
$
/
%
(
&
1 2
1
$
((13.(
(
1
$/#
(
%
+
#
#
&
.
(
"
$
#
#
/ "
(
%
#
#
%
(
%
%
%
4
&
*
#
$
%
$
#
6
7
$
#
#
$
%
#
#
#
"
#
#
%#
( *
$
%
(
(
/
Q $
%
1
CD@
<
S
1
ATI
Y
&&& &
(6 (
J
J':
.
."
(
$
% %
"
Y
G ZZ <
#
J
1
CCA
[<
#
'
&
Y.
( *66
(
4
33 4 / %
M
"
*
%
$ :8L\
:8L
&
S#T
"'K
K
'
#
#
1 : '
(
# % S1
#:T"
#
1 (
#
#
Y
#(
< Z# I
#
K
6
%
#
9 S1
#:T
#
.
/#
#
%
#
"
#
%
$
*
3#
%#
$
S1
#:T9 '
$
$
(
$
#
1
#
$
(
"
#
%
%
3#
$
&
%
#
$
$
%#
*
#
$
(
(
"'K
K3
$
4
$
$
(
*
// Comprime el stream de entrada en el de salida
int
PREDICTORCompress(stream in,stream out)
{
char c;
// Carácter actual a predecir
char p1 = ‘\0’;
// Último carácter de la entrada
char p2 = ‘\0’;
// Penúltimo carácter de la entrada
// Inicialmente ambos se suponen ‘\0’
char matriz[256][256]; // Matriz de predicción. Se supone
// inicializada a ‘\0’
// Procesar toda la entrada
while (!in.eof())
{
// c es el carácter a predecir
c = in.getNextChar();
// ¿Se predice?
if (c != matriz[p1][p2])
{
// No, la salida es un bit a 0 y el carácter
out.putBit(0);
out.putChar(c);
// La siguiente vez irá mejor
matriz[p1][p2] = c;
}
else
{
// Se ha predicho. Sólo se saca un bit
out.putBit(1);
}
//
//
p2
p1
El carácter que era el último pasa al penúltimo
y el último es el c
= p1;
= c;
}
// Todo bien
return 0;
}
// Descomprime el stream de entrada en el de salida
int
PREDICTORDecompress(stream in, stream out)
{
char c;
// Carácter actual
char p1 = ‘\0’;
// Último carácter de la
char p2 = ‘\0’;
// Penúltimo carácter de
// Inicialmente ambos se
char matriz[256][256]; // Matriz de predicción.
// inicializada a ‘\0’
salida
la salida
suponen ‘\0’
Se supone
// Procesar toda la entrada
while (!in.eof())
{
// Se ha predicho
if (in.getNextBit())
c = matriz[p1][p2];
else // No predicho
{
c = in.getNextChar();
// Ajustar la matriz para sincronizar
matriz[p1][p2] = c;
}
// Salida: el carácter actual
out.putChar(c);
// Rotar
p2 = p1
p1 = c;
}
// Todo bien
return 0;
}
'
#
(
>
%
+
#
?"
#
(
#
%
#
# (
'022 -H'02
2"H0"L:3
55D1
D#
#
4
#
8L8AC
@
C]
#
#
F
>M
%
.#
() *"
( +
,
'
/
%
%
#
'
?
'
(
$
( #
J
(
S
@T
&
#
#
&
>M
$
$
$#
?
#
M+ .4
5 $ 6
/
&
J
(
(
"
(
.
"'K
K
%
/
%
(
%
#
%
#
%
(
<
#
(
#
K
#
456#
1
#
+E@D
5*7
+E@@ 7
'()
#
%
$
%#
%
$
(
4
<
#
#
>
%
U
-
?
#
*
%
"
M+
$
$
%
(
1
#
B
(
(
%
%
<
#
#
%
%
"
2
#
%
#
$
B
#
2
%
%
(
#
4
%
+
%
#
%
%# %
#
W
(
X
# %
56#
&
H+ #
3.
(
H+ #
H+ #3.
#
(
#
%
%
#
H+ #
/ F
*
# %
/
$
$
%
(
H+ 7
?
A
(
'
(
:88
H+ #
3#H+ #
1 H+ #
:
H+ / "
%
M+ *
^
1
P
^
:P
^
5P
^
:P
.
.
$
H+ #
/
A
#
(
.
#
^P
^
)P
^
)P
^
)P
^
)P
^
)P
^
)P
^
)P
^
)P
^
)P
^
'P
^
'P
^
'P
^
'P
'<
"'K
K
#
.
%
>
^
1
P^
:P^
5P
^
:P.
/5^
'P
>
%
#
$
.
/3 ^P.
/
#
(
/
(
%
H+
?
"'K
K
#
$#
/ +
(
.
%
/C ^
)P.
/
"'K
K
3J
(
H+
%
0 (
&'U %
$
M+
$
>
%
$
$
%
%
?
(
%
(
(
+
(
#
%
.:
%
1
:@/#
%
#
"
$
1
3
%
(
#
*
.
/L^
1
P^
:P^
5P^
:P.
/H+ ^P.
/.34D3NC/ ^
)P.
/.34D3N5/
^
'P
3+
%
1
(
#
H+ _#
#
$
(*+,-(*.
$
+
(
+
#
(
Z E
%
(
%
%
%
#
+E@@ +E@D
+E@@
#
#
1
C@
@ 1
C@
DB
<
#
#
+E@
D
+E@
D* +E,
G
$
%(
#
(
3
#
+
%
89"
:
#
&
#
S
5T
;
<
(
,
#
2,
VS
DT
# J-K
"V"#
S
DT S
:T
.
/
+E@
D
+E,
S
C#1
3T
(
.
/
(
#
%
#
%
#
4
+
#
(
%
.
(
/#
*
%
1
#
"'K
K
/
.
$
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
#:8L
*
'
#
%
%
'
' %9"
5&
') %)#
% #)<
#
' %)
')<
%))<
#
'#
(
%
#)#
')
(
'
:8L
%
:8@
.
D
/
(
C
%
(
#
$
"'K
K
#
1
(
#
%
#
C
H
#
(
%
'
#
(
(
#
>6;!6=6;!6>
*
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í
-
#
> "<?
#
#
(
#
(
+
-
%
C
:L1"
%
%
$
(
#
2
#
%
#
#
#
:8L#
%
> "?
:
:
:
%
:
4
*:
:#
(
:
(
(
.:
: '
:
:
+
4
:/ /#
#
#
:
.
#
(
.:
/#
#
#
4
%
#
#
(
J
*
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
F
%
(
#
"
#
(
#
%
$%
.
%
#
(
.
1
LAD5
%#
(
%
1
:
1
5
#
%
/# %
#
%
/
J
$
53CL
&
>
?
%
!
(
"
*
(
(
%
#
B
$
%
>
?
#
#
$
>;
2 $>
$
() *"
( +
, S
@
T
J-K
US
1
:T
3
0
$
%
#
#
#
#
#
<
53CL
(
#
%
<
"
#
#
(
#
#
.
%
4
1
L
/
%
#
%
4
#
53CL
#
LT
#
A:
A:
#
&
"
#
$S
1
1
#
#
/
%
%
.
$
(
.
/
.
/
>6;!>
#
%
>!?
# #
:L1J
$
( >6;>
$
$%
(
+
%
(
'
%
#
%
#
Tabla Hash
| .... |
|
ES (256) , T (84)
| .... |
|
---------+--------| .... |
|
|
| .... |
|
|
| .... |
|
| +-------------+
| .... |
|
| |
Función
|
| .... |
|
+--+
Hash
+-----> yyy | 261 -+----+
|
+-------------+
| .... |
|
|
| .... |
+->261|
| .... |
|
Tabla Cadenas
...............
...............
...............
...............
...............
...............
...............
...............
...............
(256 << 8) + 84
...............
|
|
|
|
|
|
|
|
|
|
|
(261 es la siguiente entrada consecutiva en el diccionario ^)
&
$*
#
#&&&#
(
.
#
/
+
4
S
1
1
T
(
3
$
$
$
$
(
#
+#
.
%
(
&
%
/
$
S
1
1
TS
1
:T
(
<
%
%
J
H
.
#
$
%
&
#(
S
AT
/
J
(
+E,
<
#
%
%
(
S
DT
.
+E,*
/#2, .
;
2
,
(
/ V
+E,#
#
2,#
(
%
$
%
%
#
'
%
#
#&
&
$
#
(
'
$
#
%
#
#
#
%
+E,
$
?
>
&
>
&
%
#
(
#
%
#
+
%
%
%
%
(*++
+E@
@
%
(
H
+
+E@
@
#
4
+E@D &
#
#
#
Y
Y
Y
Y
#
(
Y
(
(
## @
(
Y+
Y 2
$
#
%
Y
Y"
(
.
%
Y
$
/#
$
% '
%Y
.
/
Y
Y
#
A
#
"
&
#
$
.
#
$
$
Y
#
$
/
%
$
Y+
(
*
(p-n)
actually here | (p)
+-------------------------------------|--------------------+
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+-------------------------------------|--------------------+
|
|
|
|<------- History = n bytes --------->|<-lookahead->|
|
|
(bytes already processed)
|<----Still to go--->|
|<---------------------- INPUT DATA ---------------------->|
!
5*47B 04
9+7
+
#
#
%
#
%(
.
A
0 $
/#
Y
##
Y
%
$
A
#
4
+E@D#
%
#
$
$
$
*
#
#
&
%
.
C
S
AT
%
(
/
0
(
D
+
S
8T
#
.
/ +
(
(
(
%
(
(
(
(
$
+
"
&
(
(
S
3#. 1
/T
+ S#
.: 1
/T
$
(
.
$
$
(
(
(
%
#
S
1
#T+
%
$
/
#
#
#
$
#
(
(
(
$
$
*
buffer:
+----------------------------+---------------------------+
|
|||||||||||||||||||||||||||||
+----------------------------+---------------------------+
0
n
2n-1
|<-------- Ventana --------->|<--- Bloque de Entrada --->|
|<------------------------- 2n ------------------------->|
'
%
.
A
/#
$
#
$
'
1
/T
/
$
$
%
'
.S#.:
#
(
#
(
(#
F
(
#
(
(
(
(
(
%
%
2
+
$
%
2
.
%
#
2
$ %
/
.
(
#
#
%
/
(
*
%
%
$
%
%
A
#
0 $
"
.
/
"
$
#
$
&
#
%
(
(
Y
+
Y
#
%
%
#
(
(
+
!
%
(
#
(
&
%
#
#
$
(
(
#
#
$
#
#
$
(
( &
#
#
%
"( #
+
$
H
$
*
// Se calcula el hash de la cadena a la entrada
$
"(
nHash = funcionHash(pInPos);
// La primera posición para encontrar una coincidencia es la cabeza
// de la lista de las cadenas con hash 'nHash'
comparePos = head[ nHash ];
while (comparePos != NIL && inWindow( comparePos ) )
{
obtenerLongitudCoincidencia( pInPos , comparePos );
// Ir al siguiente elemento de la lista para comparar
// la siguiente cadena
comparePos = prev[ comparePos mod n ]; (*)
}
$
%
+
#
#
#
.
$
/
&
#
(
(#
!+
.
#
/#
A
#
#
.\
/#
$
4
E
(
(*
..
/
X*
#
/ W
&
4
%
#
#
+
$
'
&
4
"
#
%
,
#
(
(#
#
#
*
prev[ x mod n ] = head[ nHash ];
head[ nHash ] = x;
Q
$
<
(
"
#
(
#
.
#
$
&
# %
#
#
$
(
(/
(
%
$
(
(
F
$
$#
%#
#
$
#
%
# +
.
$
-K
+/ '
(
$
(
(
<
$
%
%
#
(
#
"
%
0
> A
&
S
8T
?
$
"
(
%
%
.
4
%
# / '
S
1
5T
6
;
M ,
+E@@ +
..4F#() *"
(#4.4#
$
5*47
$
%/
5*47B
&
#
H
B
#
#
%
;
#
(
%
$
(
#
(
-
H
Y
(
Y
#
%
%4
#
%
$
(
.
(
A
#
0 $
/
#
A
%
#
%
#
%
#
%
(
"
%
%
#
A
.
%
%
(
/
(
A
%#
#
%
$
A
(
5
J
53CL
%
4
.
A
.1
8
1
:
/
B
%
4
!
/#
$
1
D#
1
L
"
#
A
%#
(
$
#
$
(
(
( $
+
(
$
#
(
%
/
#&
%
(
+E@
@
(
7
(
/
.
.
A
/#
0 $
(
(
#
+
(
F(
(
"
I
(
+E@
@
*
#
(
'
#
( #
$
.F (
(
$
"
S
1
8T
I
/
#
$
$
%
(
+E@
@#
(
F(
(
% %
<
#
%
$
2
F (
(
.
$
#
#
##
%
$
#
2
%
/
0
$ %
#
>
?S
1
LT
(
*
• "#$% "&+E@@NF (
(
%
• '(
)*+&+E@@N"
I .K
/#≈+E, ." Z /
• '(
) ,+ !- &+E@
@NF (
(
%
F(
(
%
.H ( /
•
"&&&2'.2
2 Z
5`
#
#
/
• . ,&+E@@NF (
(
% N
>
$#
?+
(
."
(
/
'
%
$ %
#
•
*
0
•
•
•
*
#
#
K
& L/#
EK
& =E
#
#
(
/ #
%
,
R -<#12 %
.
#
J 4#
#
&
•
3
)
• (
4
.
,
#
)
"
(
R
/
)
#
#
#
%
%
J
%
&
$
+E@@#
% %
5*47
%
0)
J
$ %*
(
-
#
$
+
"
"
#
#
%
# %
#
#
&
4
#
'
#
%
%
&
%
#
2& = :#
#
1(6
'H#
&
B#
#
$
D 1
3 Compresión lossy
$
(
+
#
( $
<
#
#
#
(
(
(
#
&
#
# %
(
/
%
(
(
R
#
/
(
(
#
#
$.
.
%
R
H
#
(
#
2
(
&
(
%
#
(
#
#
+
'
(
#
#
(
%
#
J
(
6
#
#
(
#
(
#
#
#
4
(
(
>
?.
?.
>
'
4
/ "
/ +
#
#
(
+
*
+
#
#
(
(
(
(
(
(
#
"
(
#
/
.
#
#
M+ .M
/ a
(
$
#
#
%
"
#
#
(
( // &
*
+
.
%
.
A1
8333333333333D58D@1
1
1
1
1
1
1
1
1
1
1
1
1
LA85L@53333333333333333333333
L8
"
#
(
*
A1
8 31
:D58D@ 1
1
A1
LA85L@5 3::L8
M+
+
#
#
(
#
#
(
<
(
(
&
(
#
b
2
Q b
(
.'
+ ZJ <
4
%
/ '
#
%
(
(
::5 (
%
(
( "
J (
@
LD
#
#
#
:8L
$
:8L
M=)
4
M=)
(
(
(
(
'+J<
M=)
A
4
%
+
(
(
(
%.
/
#
.
+
2
(
/
#
(
.H (
(
(
(
(
&
'
/
(
4
(
%
+
#
(
(
%
(
(
(
-
J
(
+
(
(
%
(
J
(
(
2
(
H #
N1
c1
*
(
<
J
(
#
%(
%
H
(
(
'
#
#
(
4
# (
(
I
(
#
H
#
#
#
(
+
(
+
(
"
%
5× 5
$
(
"
(
$
#
4
(
(
(
#
&
5
(
(
5
c@ N@
3 :88
.cD/
D
(
J
(
H'<.H
'
%
<
(
#
/
#
(
(
G
A
#
% H'<
"
(
$
/#
%
#
%
/
(
%
.
"
%
.
2/ '
%
%
#
(
%
.
%
# %
%
$
%
.
/#
%
'
#
#
J
%
$
%
+
331
3::3A::33533
(
'
(
(
"
$
'+J< &
<
+
$
(
+
#
(
.
/
(
4
+
+
$
(
0
$
#
(
(
.
.
/
4
)
/
1
%
2 )3
G& = .G
&
%
.
(
4
( /(
(
%
(
#
%
(
#2& =#
%
#
(
%
G& =
=
#
1
3C1
D
4
%
1
M=)
(
&
:5
4
/
4
K
<J#K
"0 K '
4
#
%
(
G& =
4
G& = % (
%
#
&
(
%
#
G& =
% (
M=)
(
(
#
4 #
.
/
:5
(
%
G& =
G& =
%
(
M=)
#
2%
J
.
%
/
#
(
7
#K Q.
$
+
%
(
#V#
(
*
#
-<"'/#
V93AMN38C=N31
1
)
K93L3Mc 3:D=c 3A:)
Q93:1
Mc 38:=N3A1
)
&
& +#
J
(
"' 2
7
"
3 :88 H
4
A:3× :53
K Q
#
(
3
D× D +
#
:
$V
G& =
@
:33
(
(
#
#
$D× D
(
-<"' & +
V#K Q#
H
(
1
:D
I
5D33
(
#
B
H'<
%
#
(
+
H'<.3#
3/
$
1
:33
H'<
#
+
%
H'<
(
%
#
%
#
(
(
#.3#
3/#
%
#
(
J
#
(
D× D
$
(
/
.
# (
J
$
H'<#
H'<
A
G& =#
$
(
"
1
#
&
$H'<
(
%
%
(
#
(
+
$
#
%
H'<
$
G& = '
5
$
/
.3#
3/
.
(
$
%
'
#
#
(
(
8
+
H'B
$
L5
%
#
#
AD
'
M
M+
$
$
(
.3#
3/
$ $
$ $ #
AD
(
(
.
(
/
L
(
G& =
(
F(
(
#
:3*1
(
#
G& =
#G& =
H
(
*
(
(
H'<#
(
$
/
&
(
#
2& =
)
I
&
%
.
1
4 )3
#
4
$
=
%
/ a
%
#2& =
B
%
2& = .2
%
1
CCA '
#
%
#
%
1
1
1
@:/ H
.A8: × :53
%
2& =
(
$ ( 2& = 1.
-<"'/
%
1: 2
5@: 2
#
#
'
1: 2
2& = 1
$
2& = 1
(
'H M02 'H 7
%
(
2& = ( 2& = : . %
1
AD1
D/#
(
(
5 L2 #
-<"' & + 2%
#2& = ( 4
#
FH<7
2& = 5
(
.1
3(
6 /
.L5Z /
(
- MH"K) '
%
%2& = D
%
#
4
0
2& = A
FH<7#
FH<7 2& = :
+
%
(
2& = 1
#
(
&
2& = 1 2& = :
4
#2& = :
#(
2& = 1
%
(
%
(
#
K
"0
4
#
(
#
'H
M02
2& = :
2& = 1
2& = 1
+
(
"
2& = :
*
#
%
#
#
$
C3[F$
(
(
AA
#
:5
(
$
2& =
#
+
551ZF$ 5DZF$ &
/ "
(
A: ZF$
#
#
.
/#
$
4
.
%
#
%
:
'H M02
$
#
.
#
%
H'' +
+
(
#
/ +
$
1
A
"
(
#
$
+
F(
(
(
$
2& =
'H
(
#
&
ZP
CLZ
Z^
1
:DZ
#
Z^
.
%
/
+
I
(
%
(
(
(
(
A:
#
'
#
(
2& = 1
4
A: Z
55DZ
%
*
2& = 1 4
2& = 1
(
4
(
#
$
$
G& =
H
D 1
32
$
"
%
#
(
$
#
A 5
(
#
#
%
(
/ H
+
(
.
@
8(
(
(
(
G& =
&
%
#
(
(
$
4
#
H
(
(
#
(
2& =B
+
(
%
(
G& =
%
#
(
+
(
G& = 2& =
(
2& = 1
1I
K.K
/* K %
: I
(
AI
&.&
/* H (
) .)
*
%
(
G& =
/* H (
(
5I
%
H .H'
/* 2
+ (
K
%
%
$
$
&
(
%
G& =#
(
#2& = 1
%
#
K
"
(
(
(
(
#
"
(
(
<
#
#
(
#
(
#
(
K
#
(
(
&
$
+ (
#
(
&#
#
#
D× D
(
(
J
K
(
(
1
L× 1
L 4
J
(
%
&
(
(
% 4
(
"
(
(
(
(
+
#
%
#
(
%
2& = 1
(
&
#
#
#
(
(
( ±∆,
#
,
+
(
±∆&
& &
$
%
#
H
&
%
"
%
#
#
(
#
(
(
(
.
(
(
M+
H'<#
(
F(
(
#
.
"
(
'
$
(
G& =#
$
G& =
%
/#
F(
(
/
#
(
#
(
K
#
J
(
$%
&
"
#
>
$
2& = 1 4
(
(
#
4
(
$
?
#
2& = 1 %
(
(
G& =
G& =
(
(
(
(
H
( 2& = 1
(
%
G& = H
(
(
(
(
(
(
(
(
(
+ (
)
(
(
(
#
(
(
H
(
( (
(
K
&
(
&#4
#
&
(
(
%
(
(
)#
$
*
(
(
#
)
#
+ (
H
$ %
2& = 1
(
H
(
H
(
%
F
(
)+ (
$
F
(
% %
%
#
%
(
$
'
(
#
(
#
(
2& = 1
#
%
2& = : +
(
(
2& = 1
# (
K
#&
H
<
#
(
1
3× 1
3
D× D#
83
%
(
#
'
2& = :
(
'H M02#
%
#
$ #
2& = 1
<
(
%
#2& = :
*
.A8: × :53/#
.
/ .@
:3× 5D3/#
1
553.1
553× 1
1
8:/#
.1
C:3× 1
3D3/ +
7'M
%
2& = 1+
(
-<"' +
FH<7
%
#2& = :
( '
( %
%
( %
.
/
#
%
$
(
(
#4
4
(
)#
(R
(
(
%(
% +
%
(
(
(
(
FH<7
2& = :
2& = 1 H (
#
$
'
a
FH<7 +
)#
(
%
(
%
%
(
(
A2
1
332
A 52
4
#
#
#
J
(
+
"
/ '
#
(
&"
A3
#
#
+
4
'M'
&"
"
$
4
#
#
+
2& = 1
+
& " .& Z $
( #
#
2& = :
.
+
(
2& = :
"
+
"
/
(
4
( .1
DD
/#
%(
%
<
-
(
(
G& =
(
%
(
2& =#
#
J
4
(
%
(
.
H'<#
.
%
(
/
/
"
%
#
(
$
#
(
Z
4 Bibliografía
1.8
K
<
:
.$
3
<
3
& #1
CDD
=
H1
!
#
#
9
8=
"# A *
#[ JR M
L5
#
3
+
I
'
& "
# M#=
#G
#HF#
#'
.
(
/
Z#"#)V< #2
#M
),
#G
1
CC1
() *"
(+
,& +
,
0 G
#H
G
CGE d
.+E@
D/
#
- ,"/
+
, 8 A I+
, 2 Z
K 2
Z
@.((9=!6+
!:!
D ?
)
.
'
7
'2 A:#
5.1
CDC/
(
5
"
3
#E G#+
#:A# A#1
C@@.+E@
@
/
; G
-./ G
+
A
'
#
K(
$ #
#K
<
&
J
?
K(
<
$>
# :5#1
C@D
1
3 .!
'
G #
$ ( #
#1
@# L#G 1
CD5 .+E,/
1
16 G
[
#H
1
: 3
H
#[
$
#
! , 3
K(
1
5-
5*47
1
8
1
CDC
#
+K +"
"
"
H
3
#<
#
& LG
+
L5
"
, <
#G 0 #H
8 , M+ 0#
< Z R Z#G
,
1
A(
' (
,
3
&
$M
#1
CD@
M
& 5*47B +M
.$
1
L .
'
# ;
(
1
@3
1
CCL
9 ' 2 +!
+
<
#G# '2
#1
CC1
5
3
1
CDD# %
6
#<
-,
# 5.43
& !
'2#
#G 2 [ #"
2 Z#1
CC1
F
Z 0Z
H
#
, G
CCL
R" <
&
F
Descargar