Documentos de Académico
Documentos de Profesional
Documentos de Cultura
a b c d e f
Frecuencia 45 13 12 16 9 5
( en miles )
1
Esta tcnica de codificacin se denomina cdigo
prefijo.
Codificacin : Basta con concatenar el cdigo
de cada uno de los caracteres.
Ejemplo :
aabacd 001010100111 001010100111
2
Este sera el rbol binario de la codificacin de
longitud fija:
0 100 1
86 14
0 1 0
58 28 14
0 1 0 1 0 1
0 100 1
55
a:45 0 1
25 30
0 1 0 1
f:5 e:9
3
Dado T el rbol binario que corresponde a una
codificacin prefijo, es fcil averiguar el nmero de
bits necesarios para codificar el fichero :
Para cada carcter c diferente del alfabeto C que
aparece en el fichero,
sea f(c) la frecuencia de c en la entrada,
sea dT(c)la profundidad de la hoja c en el rbol
T, entonces el nmero de bits requeridos es :
Algoritmo Greedy
Huffman invent un algoritmo voraz que construye
una codificacin prefijo ptima.
Construye un rbol binario de cdigos de
longitud variable de manera ascendente de
modo que [MIN] B(T).
Ejemplo de funcionamiento
Fase 1. : Caracteres colocados en orden creciente de
frecuencia.
4
c:12 b:13 14 d:16 a:45
0 1
f:5 e:9
14 d:16 25 a:45
0 1 0 1
f:5 e:9 c:12 b:13
25 30 a:45
0 1 0 1
c:12 b:13 14 d:16
0 1
f:5 e:9
5
a:45 55
0 1
25 30
0 1 0 1
c:12 b:13 14 d:16
0 1
f:5 e:9
0 100 1
a:45 55
0 1
25 30
0 1 0 1
6
Implementacin del algoritmo
Se usa una cola de prioridad, Q, con clave la
frecuencia lo que permite seleccionar los dos objetos
de la cola con la frecuencia ms baja.
El resultado de fusionar dos objetos es un nuevo
objeto cuya frecuencia es la suma de frecuencias de
los dos objetos fusionados.
7
Demostracin de optimalidad del criterio
Sea T un rbol binario de codificacin ptimo.
Sean b y c dos hojas hermanas en T que se
encuentran a profundidad mxima.
Sean x e y dos hojas de T tales que son los 2
caracteres del alfabeto C con la frecuencia ms
baja.
rbol T
b c
8
Podemos suponer que f[b] f[c] y que f[x] f[y].
Adems, se puede deducir que f[x] f[b] y f[y]
f[c].
Se puede construir un nuevo rbol, T, en el que se
intercambia la posicin que ocupan en T las hojas b
y x.
rbol T
x c
= f[x].dT(x) + f[b].dT(b)
f[x].dT(x) f[b].dT(b) =
= f[x].dT(x) + f[b].dT(b)
9
f[x].dT (b) f[b].dT (x) =
rbol T
b
x y
10
Sea T un rbol binario que representa un cdigo
prefijo ptimo para un alfabeto C. Consideremos 2
hojas hermanas, x e y, de T y sea z el padre de
ambas. Consideremos que la frecuencia de z es f[z]
= f[x] + f[y].
11
CAMINOS MINIMOS
Shortest-paths problem
Definiciones
Sea G=(V,E) un grafo dirigido y etiquetado con valores
naturales.
Se define el peso del camino p, con p=<v0,v1,v2, ...,vk>,
como la suma de los valores de las aristas que lo
componen.
k
MIN{ peso(p) : u v }
si hay camino de u a v
(u,v) =
en otro caso
12
Encontrar el camino ms corto entre un vrtice fijado,
source, y todos los vrtices restantes del grafo.
14
dev ( D )
ffuncin
Coste
Demostracin:
Sea u un vrtice tal que uVVISTOS.
Supongamos que D[u] contiene informacin cierta, es
decir, contiene la distancia mnima entre el vrtice
inicial y u siguiendo por un camino que slo contiene
vrtices que pertenecen a VISTOS.
Si u es el vrtice con el valor de D ms pequeo, el
criterio de seleccin lo elegir como candidato e
inmediatamente pasar a formar parte de VISTOS y
15
se considerar que su D[u] es una distancia
definitiva.
Ejemplo de funcionamiento
0 2 1 1
5 1
1 4
2 2 2 1
6
3 5
D: 0 1 2 3 4 5 VISTOS
0 2 5 2 {0}
0 2 3 2 3 {0,1}
0 2 3 2 3 8 {0,1,3}
16
0 2 3 2 3 5 {0,1,3,2}
0 2 3 2 3 4 {0,1,3,2,4}
0 2 3 2 3 4 {0,1,3, 2,4,5}
17
]
{ Post : La misma de Dijkstra y u : uV: CAMINO[u]
contiene el otro vrtice de la ltima arista del camino
mnimo de v_ini a u}
dev ( D, CAMINO )
ffuncin
18