You are on page 1of 11

12/07/2015

Tcnicas Algortmicas

COMPANY
LOGO

Paradigma Algoritmo Voraz


Caractersticas

Algoritmos Voraces

COMPANY
LOGO

de los algoritmos voraces:

realizar

Paradigma algoritmo voraz

Algunos algoritmos voraces

Problema mochila 0-1 vs fraccional

Problema actividad - seleccin

Cdigo HuffmanProblema

D.A.I. A l g o r i t m i c a I I I

J. C. Carbajal L.

Algoritmo Voraz: Descripcin


Normalmente

optimizacin.

COMPANY
LOGO

una secuencia de elecciones


cada opcin es la que parece ser mejor hasta
ahora, slo depende de lo que se ha hecho hasta
ahora
la eleccin produce un problema ms pequeo
para ser resuelto
Para

la heurstica voraz resolver el


problema, es que la solucin ptima para el
problema grande contiene soluciones
ptimas a subproblemas
D.A.I. A l g o r i t m i c a I I I

Algoritmo Voraz: Forma general

J. C. Carbajal L.

COMPANY
LOGO

usados en problemas de

Dado

un conjunto de elementos de entrada


se van seleccionando o desechando estos
para formar un conjunto de elementos que
cumplan con la restricciones.

Un

algoritmo voraz no encuentra siempre


una solucin ptima, pero muchas veces la
logra.
D.A.I. A l g o r i t m i c a I I I

Algoritmo Voraz: Descripcin

J. C. Carbajal L.

COMPANY
LOGO

El algoritmo voraz arroja soluciones que estn muy cerca de las


soluciones exactas.

Rapidez en hallar una solucin, cuando la encuentran.

Moderado costo computacional.

De implementacin sencilla.

DESVENTAJAS

El enfoque que aplican es muy corto y toma decisiones


basndose en la informacin que tienen disponible de modo
inmediato, sin tener en cuenta los efectos que estas decisiones
puedan tener en el futuro.
Se estancan en ptimos locales de las funciones que pretenden
optimizar y quiz no analizan vecindades ms all del criterio,
por lo que pueden estar dejando de considerar al ptimo global.
D.A.I. A l g o r i t m i c a I I I

Diseando un algoritmo Voraz

J. C. Carbajal L.

COMPANY
LOGO

Repartir

VENTAJAS

D.A.I. A l g o r i t m i c a I I I

J. C. Carbajal L.

el problema para que hagamos una


eleccin codiciosa (localmente ptima) y
quedarnos con un subproblema
Demostrar que siempre hay una solucin
ptima (globalmente) para el problema
original que toma la decisin codiciosa
Demostrar que la eleccin junto con una
solucin ptima al subproblema da una
solucin ptima al problema original

D.A.I. A l g o r i t m i c a I I I

J. C. Carbajal L.

12/07/2015

Algunos algoritmos Voraces

COMPANY
LOGO

mochila fraccional
de Huffman
MST algoritmo de Kruskal
Algoritmo MST de Prim
SSSP algoritmo de Dijkstra
...

algoritmo mochila fraccional

algoritmo

Hay

cdigos

Artculo

D.A.I. A l g o r i t m i c a I I I

n diversos artculos en una tienda


i:
pesa libras
vale $
Un ladrn entra en la tienda
Puede transportar hasta W libras en su
mochila
Qu debe tomar para maximizar el valor de
su botn?
J. C. Carbajal L.

Mochila 0-1 vs Fraccional


Problema

COMPANY
LOGO

de la mochila 0-1:

de la mochila fraccional:

el

ladrn puede tomar los objetos parcialmente


por ejemplo, los artculos son lquidos o polvos
solucionable con un algoritmo voraz ...

J. C. Carbajal L.

COMPANY
LOGO

Algoritmo voraz mochila 0-1?


Se

Algoritmo voraz: mochila fraccional

J. C. Carbajal L.

COMPANY
LOGO

elementos en orden decreciente de


valor por libra
Mientras exista espacio en la mochila (lmite
de libras W) hacer

artculos no se pueden dividir


el ladrn debe tomar elemento completo o
dejarlo atrs

D.A.I. A l g o r i t m i c a I I I

D.A.I. A l g o r i t m i c a I I I

Ordenar

los

Problema

COMPANY
LOGO

tienen 3 artculos:

considerar

el siguiente elemento de la lista


ordenada
tomar tanto como sea posible (todo lo que hay o
lo mucho que se ajuste a limite W)
O(n

log n) tiempo de funcionamiento (para


Ordenar)
D.A.I. A l g o r i t m i c a I I I

Problema de la mochila 0-1

J. C. Carbajal L.

COMPANY
LOGO

Tomar

artculo

1 pesa 10 libras, vale 60 ($ 6/lb)


artculo 2 pesa 20 libras, vale 100 ($ 5/lb)
artculo 3 pesa 30 libras, vale 120 ($ 4/lb)
La

mochila puede contener 50 libras


estrategia voraz:

el artculo 1 es un gran error


globalmente, aunque se ve bien a nivel local
Utilice programacin dinmica para resolver
esto en tiempo pseudo-polinomial

tomar

el artculo 1
el artculo 2
no hay espacio para el artculo 3
tomar

D.A.I. A l g o r i t m i c a I I I

J. C. Carbajal L.

D.A.I. A l g o r i t m i c a I I I

J. C. Carbajal L.

12/07/2015

Plantilla algoritmo voraz

COMPANY
LOGO

Voraz (entrada )
inicio
mientras que (la solucin no es completa) hacer
Seleccionar el mejor elemento x en la entrada restante ;
Ponga x en la siguiente salida;
Retire x de la entrada restante;
end mientras
fin

Ejemplo 2: Problema mochila 2


Segunda estrategia
seleccione el elemento relativamente ms valioso (max (

Esto conducir a la solucin ptima en el caso descrito anteriormente.


Sin embargo, esto no siempre es el caso!
Capacidad de la mochila: 50

g1
g2
g3

30
40
50

Valor
90
100
110

Objeto
g1
g2
g3
g4

3
2,5
2,2

La estrategia escoger g1
(valor 90)
Sin embargo, el ptimo sera
g3 (valor 110)

Los algoritmos voraces no siempre proporcionan la solucin ptima.


A cambio, ellos son mucho menos caros que la programacin dinmica.
La complejidad de la mochila-voraces: ()
D.A.I. A l g o r i t m i c a I I I

D.A.I. A l g o r i t m i c a I I I

D.A.I. A l g o r i t m i c a I I I

J. C. Carbajal L.

J. C. Carbajal L.

Algoritmo voraz

COMPANY
LOGO

Concepto principal

Divida el problema en varios pasos (sub-problemas)

Para cada paso tomar la mejor opcin en el momento


actual (ptimo local) (eleccin voraz)

Un algoritmo voraz siempre hace la eleccin que se


ve mejor en este momento

La esperanza: Una eleccin localmente ptima


conducir a una solucin ptima a nivel global

Para los problemas de optimizacin:

Para algunos problemas de optimizacin,


La programacin Dinmica es "excesiva"
La estrategia voraz es ms simple y ms eficiente.

COMPANY
LOGO

Problemas de optimizacin aparecen en tantas aplicaciones


Maximizar el nmero de puestos de trabajo mediante
un recurso [Problema Actividad-Seleccin]
Codificar los datos en un archivo para reducir al
mnimo su tamao [Problema Codificacin de Huffman]
Recoger el mximo valor de los bienes que se ajustan
en un cubo dado [Problema de la mochila]
Seleccione el peso ms pequeo de las aristas para
conectar todos los nodos en un grafo [Minimum
Spanning Tree]

El enfoque voraz puede


resolver estos problemas:
La programacin dinmica
puede resolver estos problemas

J. C. Carbajal L.

Problema con una funcin objetivo a cualquiera:


Maximizar algn beneficio
Minimizar algn costo

COMPANY
LOGO

2 tcnicas para resolver problemas de optimizacin:


1. Programacin dinmica
2. Algoritmo voraz (Estrategia Voraz)

elegir: g4; Valor: 9;


capacidad restante: 8
elegir: g4; Valor: 9;
capacidad restante: 1
y no es ptima

problema de optimizacin

J. C. Carbajal L.

Algoritmo voraz

Tamao Valor
3
3
4
5
6
8
7
9

D.A.I. A l g o r i t m i c a I I I

COMPANY
LOGO

( )
))
( )

COMPANY
LOGO

2 posibles estrategias voraces


Primera estrategia
seleccione el elemento ms valioso en cada paso que todava
cabe en la mochila: la capacidad de la mochila: 15

J. C. Carbajal L.

D.A.I. A l g o r i t m i c a I I I

Objeto Tamao

Ejemplo 1: Problema mochila 1

Para algunos problemas, funciona. Para otros, no es as

D.A.I. A l g o r i t m i c a I I I

J. C. Carbajal L.

12/07/2015

Mochila 0-1

Los elementos no pueden ser divididos


Lo tomas o lo dejas

Mochila 0-1
La estrategia voraz no funciona

COMPANY
LOGO

COMPANY
LOGO

Ejm 1:
30 $120

Item 3

50

Item 2

50

50
20 $100

hallar

x i tal que para todo x i = {0, 1},

If Xi = 1, then item i se tomar

i = 1, 2, .., n
wi x i W y

If Xi = 0, then item i se omitir

x i vi es mximo

Mochila 0-1 Fraccional

10

$60

$100

$6/libra

$5/libra

$160

$220

No ptimo

J. C. Carbajal L.

Mochila 0-1 Fraccional


La estrategia voraz trabaja

$100

$60

D.A.I. A l g o r i t m i c a I I I

COMPANY
LOGO

Los items pueden ser divididos


Puede tomar parte de ella, segn sea necesario

$120

20

$4/libra

Eleccin voraz:
Calcula el beneficio por libra
Ordena los items basado en estos valores

J. C. Carbajal L.

D.A.I. A l g o r i t m i c a I I I

20

10

30

Item 1

COMPANY
LOGO

Ejm 1:
2/3
de
30

Item 3

50

Item 2

$80
+

50
20 $100

hallar x i tal que para todo 0 <= x i <= 1,

i = 1, 2, .., n

Item 1

$60

If Xi > 0, then Xi fraction of item i se tomar

x i vi es mximo

$6/libra

J. C. Carbajal L.

D.A.I. A l g o r i t m i c a I I I

Ejemplo

COMPANY
LOGO

Item:
1
Beneficio: 5
Peso:
7
B/P:
0.71

2
8
8
1

3
3
4
0.75

4
5
2
7
10 4
0.2 1.75

6
9
6
1.5

7
4
4
1

Capacidad de la mochila mximo de 22 libras


I5 (restante 18)
I6 (restante 12)
I2 (restante 4)
I7 (restante 0)

$100
$5/libra

$120

$60
$240

$4/libra

Eleccin voraz:
Optimo
Calcula el beneficio por libra
Ordena los items basado en estos valores
Tome lo ms que pueda de los mejores items de la lista
J. C. Carbajal L.

Problema Actividad - Seleccin

10

D.A.I. A l g o r i t m i c a I I I

10

If Xi = 0, then item i se omitir

wi x i W y

30
20

COMPANY
LOGO

Dado un conjunto de actividades A1, A2, ... An (por ejemplo, charlas o


conferencias)
Cada actividad tiene una hora de inicio (S) y hora de finalizacin (E)
Cada Ai tiene (Si, Ei)
Las actividades deben utilizar un recurso comn (por ejemplo, sala
de conferencias)
Objetivo: Maximizar el nmero de actividades "compatibles" que
utilizan el recurso
No se puede tener dos actividades que se solapan
A3
A1

A7
A5

A2

A8
A4

A6
Dimensin Tiempo

D.A.I. A l g o r i t m i c a I I I

J. C. Carbajal L.

D.A.I. A l g o r i t m i c a I I I

J. C. Carbajal L.

12/07/2015

Ejemplo de actividades compatibles

Algoritmo voraz

COMPANY
LOGO

Seleccione la actividad que termina primero (el


ms pequeo tiempo final)
Intuicin: deja el mayor espacio vaco posible
para ms actividades

Conjunto de actividades A = {A1, A2, ., An}

Cada Ai = (Si, Ei)

Ejemplos de actividades compatibles:


{A1, A3, A8}
{A1, A4, A5, A7}
{A2, A5, A8}
.

A3
A1

Una vez seleccionada una actividad


Eliminar todas las actividades no compatibles
Ellos no se pueden seleccionar

A7
A5

A2
A4

A6

A8

Repita el algoritmo para el resto de actividades


Ya sea utilizando iteraciones o recursin

Dimensin Tiempo

D.A.I. A l g o r i t m i c a I I I

Algoritmo voraz

Seleccione la actividad que termina


primero (el ms pequeo tiempo final)

Intuicin: deja el mayor espacio vaco


posible para ms actividades

COMPANY
LOGO

J. C. Carbajal L.

J. C. Carbajal L.

D.A.I. A l g o r i t m i c a I I I

Ejemplo

COMPANY
LOGO

COMPANY
LOGO

A3

A7

A1

Seleccin voraz:
Selecciona la prxima
mejor actividad
(ptimo Local)

A5

A2

A8

A6

A4

Time dimension

Una vez seleccionada una actividad

Eliminar todas las actividades no


compatibles

Ellos no se pueden seleccionar


Repita el algoritmo para el resto de
actividades

Ya sea utilizando iteraciones o


recursin

A:
Sub-problema: Creamos
un sub-problema para
resolver
(Encuentra el plan ptimo
despus de la actividad
seleccionada)

2 3

Si
Ei

1
4

2 7
9 15

5
8

10
18

16
17

21
27

23
30

Eso es una
respuesta ptima ??
Podemos encontrar
un conjunto ms
amplio?

El algoritmo voras seleccionar:


{A1, A4, A6, A7}

Esperemos que cuando fusionamos el ptimo local + la solucin al sub-problema


ptimo obtenemos un ptimo global
D.A.I. A l g o r i t m i c a I I I

Solucin ptima

J. C. Carbajal L.

J. C. Carbajal L.

D.A.I. A l g o r i t m i c a I I I

Ejemplo

COMPANY
LOGO

El Algoritmo voraz conduce a la solucin ptima

A3
A1

Podemos convertir cualquier otra solucin ptima


(S') a la solucin algoritmo voraz (S)

Idea:

Comparacin de las actividades en S'y S de izquierda


a derecha
Si coinciden en la actividad seleccionada saltar
Si no coinciden
Podemos sustituir la actividad en S'por aquel en S
debido a que el que est en S termina primero

D.A.I. A l g o r i t m i c a I I I

J. C. Carbajal L.

A8

A6

A4

Cmo probarlo

A7
A5

A2

COMPANY
LOGO

Time dimension

A:

2 3

Si
Ei

1
4

2 7
9 15

5
8

10
18

16
17

7
21
27

8
23
30

Solucin voraz S = {A1, A4, A6, A7}


Otra solucin S = {A1, A4, A5, A8}
A5 en S puede ser reemplazado por A6 de S (termina antes)
A8 en S puede ser reemplazado por A7 de S (termina antes)

Por estos reemplazos, ahorramos tiempo.


As, la solucin voraz debe ser al menos tan buena como
cualquier otra solucin ptima
D.A.I. A l g o r i t m i c a I I I

J. C. Carbajal L.

12/07/2015

Solucin recursiva

Solucin iterativa

COMPANY
LOGO

COMPANY
LOGO

Dos arrays que contienen las horas de inicio y fin


(Supuesto: se ordenan en base a los tiempos finales)

Dos arrays que contienen las horas de inicio y fin


(Supuesto: se ordenan en base a los tiempos finales)

La actividad elegida
en la ltima llamada

Actividad-Seleccion-Iterativa(S, E)
n = S.Length
Lista = {A1}
ultimaSeleccion = 1

El tamao del
problema

Actividad-Seleccion-Recursiva(S, E, k, n)
m = k +1
Encuentra la siguiente actividad
While (m <= n) && ( S[m] < E[k])
de partida despus del final de k
m++;
If (m <= n)
return {Am} U Actividad-Seleccion-Recursiva(S, E, m, n)
Else
return

For (i = 2 to n)
if (S[i] >= E[ultimaSeleccion])
Lista = List U {Ai}
ultimaSeleccion = i
End If
End Loop

Complejidad tiempo: O(n)


(Suponiendo que los arrays ya estn ordenados, de lo contrario
le sumamos O(n log n)
J. C. Carbajal L.

D.A.I. A l g o r i t m i c a I I I

Elementos de un algoritmo voraz

En cada paso, hacemos una eleccin voraz (ptimo


local)

La eleccin voraz se hace generalmente


independiente de los sub-problemas
Usualmente se realiza "antes de" resolver el subproblema

Subestructura ptima

La solucin ptima global puede estar compuesta de


la ptima local de los sub-problemas

D.A.I. A l g o r i t m i c a I I I

Cdigos de Huffman

J. C. Carbajal L.

Para la compresin de datos (secuencia de caracteres)


Ampliamente utilizado
Muy eficiente (ahorro de 20-90%)
Use una tabla para mantener las frecuencias de
ocurrencia de caracteres.
Cadena binaria de salida.

Probando que una solucin voraz es ptimo

Recuerde: No todos los problemas tienen solucin ptima voraz


Si lo hace, tendr que demostrarlo

Por lo general, la prueba incluye el mapeo o la conversin de


cualquier otra solucin ptima a la solucin voraz
Mapeamos S' a S y
demostramos que S es an
mejor

Solucin voraz S = {A1, A4, A6, A7}


Otra solucin S = {A1, A4, A5, A8}
A5 en S 'puede ser reemplazado por A6 de S (termina antes)
A8 en S 'puede ser reemplazado por A7 desde S (termina antes)

D.A.I. A l g o r i t m i c a I I I

001 0110 0 0 100


1000 1110

J. C. Carbajal L.

J. C. Carbajal L.

D.A.I. A l g o r i t m i c a I I I

Cdigo Huffman
Ejemplo:

Frecuencia

Todays
weather is nice

COMPANY
LOGO

Elementos de un algoritmo voraz

COMPANY
LOGO

Cdigos de Huffman

J. C. Carbajal L.

D.A.I. A l g o r i t m i c a I I I

Solucin Top-Down

COMPANY
LOGO

Propiedad Eleccin-Voraz

Return Lista

Un archivo de 100,000
caracteres. Conteniendo
solo a hasta f

a
b
c
d
e
f

45000
13000
12000
16000
9000
5000

COMPANY
LOGO

Longitud-Fija LongitudVariable
cdigo word
cdigo word
000
0
001
101
010
100
011
111
100
1101
101
1100

eg. abc = 000001010

ejm. abc = 0101100

300,000 bits

1*45000 + 3*13000 + 3*12000 +


3*16000 + 4*9000 + 4*5000
= 224,000 bits

D.A.I. A l g o r i t m i c a I I I

J. C. Carbajal L.

12/07/2015

Cdigo Huffman
Un archivo de
100,000 caracteres.

Los esquemas de codificacin pueden ser


representados por rboles:
Frecuencia
Longitud-Fija
(en miles)
cdigo word
a
a
45
000
b
b
13
001
c
c
12
010
d
d
16
011
e
e
9
100
f
f
5
101
No es un
rbol binario
completo

86

0
28

1
b:13

14

1
d:16

0
c:12

Frecuencia Longitud-Variable
(en miles)
cdigoword
45
0
13
101
12
100
16
111
9
1101
5
1100
0
a:45

14

58

0
a:45

100

100

0
b:13

cada nodo no hoja


tiene dos hijos

55

1
30

1
c:12
0
e:9

1
f:5

e:9

c:12

1
55

0
b:13

30

1
c:12

d:16

14

b:13

25

c:12

b:13

e:9

30

a:45

e:9

a:45

14
f:5

a:45

c:12

d:16

e:9

b:13

a:45

f:5

e:9

b:13

30
c:12

d:16

14
e:9

D.A.I. A l g o r i t m i c a I I I

Encontrar el cdigo ptimo

c:12

b:13

a:45

e:9

COMPANY
LOGO

14
f:5

e:9

d:16

a:45

d:16

a:45

25
c:12

b:13

55

25

d:16

14

d:16

14

e:9

b:13

100
30

b:13

a:45

25
c:12

55

25

d:16

14
f:5

d:16

14
f:5

f:5

Q: Una cola min-prioridad


c:12

a:45

J. C. Carbajal L.

Cdigo Huffman

f:5
c:12

1
d:16

1
f:5

D.A.I. A l g o r i t m i c a I I I

COMPANY
LOGO

b:13

25

COMPANY
LOGO

Para encontrar un cdigo ptimo para un archivo:


1. La codificacin debe ser inequvoca.
Considerar los cdigos en los que no es Codeword
tambin un prefijo de otro Codeword. => Cdigos de
prefijo
Cdigos prefijos son inequvocos.
Una vez que los Codeword son decididos, es fcil de
comprimir (codificar) y descomprimir (recepcin).
2. Tamao del archivo debe ser ms pequeo.
=> Puede ser representado por un A.B. completo.
=> Por lo general, los caracteres menos frecuentes
estn en el fondo
Sea C el alfabeto (ej. C = {'a', 'b', 'c', 'd', 'e', 'f'})
Para cada carcter c, nro. de bits para codificar todas
las ocurrencias de c = freqc*depthc
Tamao Archivo B(T) = cCfreqc*depthc

Ejm. abc es codificado


como 0101100

Cdigo Huffman (1952) fue inventado para resolverlo.


Por un enfoque Greedy.
f:5

100

J. C. Carbajal L.

Cdigo Huffman

Q: Una cola min-prioridad

0
a:45

0
e:9

1
d:16

0
14

D.A.I. A l g o r i t m i c a I I I

Cmo encontramos el
cdigo ptimo prefijo?

Frecuencia Codeword
45000
0
13000
101
12000
100
16000
111
9000
1101
5000
1100

a
b
c
d
e
f

A. B. completo

25

1
f:5

0
e:9

Cdigo Huffman

COMPANY
LOGO

f:5

J. C. Carbajal L.

HUFFMAN(C)
1 Construir Q desde C
2 For i = 1 to |C|-1
3 Asignar un nuevo nodo de z
4 z.left = x = EXTRACT_MIN(Q)
5 z.right = y = EXTRACT_MIN(Q)
6 z.freq = x.freq + y.freq
7 Inserte z en Q en la posicin correcta.
8 Return EXTRACT_MIN(Q)

"Construir Q de C" es O (n)


"EXTRACT_MIN(Q)" es O(log n)
"Insertar z en Q" es O (log n)
Huffman (C) es O (n log n)
Cmo es "voraz"?

D.A.I. A l g o r i t m i c a I I I

Cdigo Huffman

COMPANY
LOGO

entrada:

Si Q se implementa como un minheap binario,

J. C. Carbajal L.

COMPANY
LOGO

Idea:

usar cdigos cortos para los


caracteres ms frecuentes y cdigos largos
para menos frecuente

archivo

de datos de caracteres y
nmero de ocurrencias de cada caracter
salida:
una

codificacin binaria de cada carcter de


manera que el archivo de datos puede ser
representado tan eficientemente como sea
posible
"cdigo ptimo"

D.A.I. A l g o r i t m i c a I I I

J. C. Carbajal L.

D.A.I. A l g o r i t m i c a I I I

J. C. Carbajal L.

12/07/2015

Voraz

COMPANY
LOGO

Representacin rbol binario

el cdigo de longitud fija, fcil:


en 3, por ejemplo,
Para el cdigo de longitud variable,
asegrese de que el nro del cdigo del
carcter es el prefijo de otro
ninguna ambigedad

COMPANY
LOGO

Con

dividirse

Cdigo de longitud fija

101111110100
b

aa

J. C. Carbajal L.

D.A.I. A l g o r i t m i c a I I I

Representacin rbol binario

COMPANY
LOGO

1 0

1 0

b c

d e

costo de cdigo es la suma,


sobre todos los caracteres c,
de nmero de ocurrencias
de c veces la profundidad de
c en el rbol

J. C. Carbajal L.

D.A.I. A l g o r i t m i c a I I I

Algoritmo para construir el rbol de


Representacin del Cdigo Huffman

COMPANY
LOGO

Dado

1
Cdigo de longitud variable

a 0

b 0

costo de cdigo es la suma,


sobre todos los caracteres c,
de nmero de ocurrencias
de c veces la profundidad de
c en el rbol

1
d

J. C. Carbajal L.

D.A.I. A l g o r i t m i c a I I I

Ejemplo
Char Fr eq.
E
1
e
8
r
2
i
1
space 4

Char Fr eq.
y
1
s
2
n
2
a
2
l
1

COMPANY
LOGO

el conjunto C de n caracteres, c
ocurre f[c] veces
inserte cada c en la cola de prioridad Q
utilizando f[c] como clave
para i: = 1 hasta n-1 hacer
x:

= extract-min (Q)
= extract-min (Q)
hacer un nuevo nodo w/ hijo izquierdo de
(borde etiqueta 0), hijo derecho (borde
etiqueta 1), y [] = [] + []
inserte en Q
y:

Encuentra las dos frecuencias ms


pequeas ... Reemplcelas con su padre

COMPANY
LOGO

Char Fr eq.
k
1
.
1

Cada char. tiene


un nodo hoja con
su frecuencia

2
E
1

D.A.I. A l g o r i t m i c a I I I

J. C. Carbajal L.

D.A.I. A l g o r i t m i c a I I I

J. C. Carbajal L.

i
1

D.A.I. A l g o r i t m i c a I I I

J. C. Carbajal L.

12/07/2015

Encuentra las dos frecuencias ms


pequeas ... Reemplcelas con su padre

COMPANY
LOGO

2
E
1

Encuentra las dos frecuencias ms


pequeas ... Reemplcelas con su padre

i
1

E
1

2
y
1

k
1

J. C. Carbajal L.

Encuentra las dos frecuencias ms


pequeas ... Reemplcelas con su padre

E
1

2
y
1

i
1

l
1

k
1

COMPANY
LOGO

.
1

J. C. Carbajal L.

Encuentra las dos frecuencias ms


pequeas ... Reemplcelas con su padre

COMPANY
LOGO

4
E
1

.
1

i
1

y
1

k
1

l
1

.
1

r
2

s
2

4
n
2

s
2

J. C. Carbajal L.

D.A.I. A l g o r i t m i c a I I I

Encuentra las dos frecuencias ms


pequeas ... Reemplcelas con su padre

y
1

l
1

k
1

i
1

i
1

l
1

D.A.I. A l g o r i t m i c a I I I

E
1

y
1

2
l
1

D.A.I. A l g o r i t m i c a I I I

r
2

COMPANY
LOGO

.
1

COMPANY
LOGO

Encuentra las dos frecuencias ms


pequeas ... Reemplcelas con su padre

s
2

n
2

a
2

8
r
2

J. C. Carbajal L.

D.A.I. A l g o r i t m i c a I I I

a
2

4
k
1

r
2

.
1

4
s
2

n
2

a
2

D.A.I. A l g o r i t m i c a I I I

i
1

i
1

2
y
1

l
1

2
E
1

2
E
1

COMPANY
LOGO

2
y
1

2
k
1

l
1

J. C. Carbajal L.

D.A.I. A l g o r i t m i c a I I I

.
1

J. C. Carbajal L.

12/07/2015

Encuentra las dos frecuencias ms


pequeas ... Reemplcelas con su padre

COMPANY
LOGO

Encuentra las dos frecuencias ms


pequeas ... Reemplcelas con su padre

4
r
2

n
2

s
2

4
2

a
2
E
1

i
1

E
1

.
1

i
1

4
n
2

s
2

a
2

E
1

J. C. Carbajal L.

Encuentra las dos frecuencias ms


pequeas ... Reemplcelas con su padre

COMPANY
LOGO

i
1

2
l
1

y
1

k
1

a
2

J. C. Carbajal L.

D.A.I. A l g o r i t m i c a I I I

Encuentra las dos frecuencias ms


pequeas ... Reemplcelas con su padre

n
2

s
2

a
2

16

E
1

i
1

2
l
1

y
1

k
1

16

.
1

E
1

i
1

e
8

2
l
1

y
1

k
1

n
2

.
1
r
2

COMPANY
LOGO

10
4

4
r
2

s
2

n
2

s
2

.
1

10

r
2

r
2

D.A.I. A l g o r i t m i c a I I I

e
8

.
1

10

r
2

k
1

l
1

y
1

k
1

l
1

y
1

COMPANY
LOGO

s
2

n
2

a
2

a
2

J. C. Carbajal L.

D.A.I. A l g o r i t m i c a I I I

Ahora tenemos una sola raz ... Este es el


rbol de Huffman

J. C. Carbajal L.

D.A.I. A l g o r i t m i c a I I I

COMPANY
LOGO

Vamos a analizar Huffman rbol

COMPANY
LOGO

26
16

10

26
4

16

10
4

2
E
1

i
1

e
8

2
y
1

2
l
1

k
1

4
.
1

E
1

r
2

s
2

n
2

a
2

D.A.I. A l g o r i t m i c a I I I

J. C. Carbajal L.

i
1

e
8

2
y
1

2
l
1

k
1

.
1

4
r
2

s
2

n
2

a
2

Todos los caracteres estn en los nodos hoja


El nmero en la raz = # de los caracteres en el archivo
Caracteres de alta frecuencia (por ejemplo, la "e") estn cerca de la
raz
Caracteres de baja frecuencia estn lejos de la raz
D.A.I. A l g o r i t m i c a I I I

J. C. Carbajal L.

10

12/07/2015

Vamos a asignar cdigos

Vamos a asignar cdigos

COMPANY
LOGO

26

26

0
16

10

4
2
E
1

i
1

e
8

6
2

2
l
1

y
1

k
1

.
1

r
2

s
2

n
2

0
E
1

a
2

Atravesar el rbol

Atravesar el rbol

A toda arista izquierda aadir etiqueta 0


A toda arista derecha aadir etiqueta 1
El cdigo de cada carcter es su secuencia de etiqueta-raz a hojas

COMPANY
LOGO

Paso 3: Codificar (Comprimir)

Eerie eyes seen near lake.


Tabla de codificacin

+
Generar el archivo
codificado
0000 10 1100 000110

Char
E
i
y
l
k
.
space
e
r
s
n
a

Code
0000
0001
0010
0011
0100
0101
011
10
1100
1101
1110
1111

D.A.I. A l g o r i t m i c a I I I

J. C. Carbajal L.

.
1

1
4

0
r
2

s
2

0
n
2

1
a
2

J. C. Carbajal L.

Elaborar un rbol Huffman-cdigo (rbol binario)


Recorrer el rbol para asignar cdigos

Paso 3: Codificar (Comprimir)

COMPANY
LOGO

Paso 2: Elaborar cdigos de rboles y Asignar

Analiza el archivo de nuevo y vuelva a colocar cada


carcter por su cdigo

Paso 4: Decodificar (Descomprimir)

rbol de Huffman es la clave para descomprimir el


archivo
D.A.I. A l g o r i t m i c a I I I

Paso 4: Decodificar (Descomprimir)

J. C. Carbajal L.

COMPANY
LOGO

tener el archivo codificado + el rbol de codificacin

Analiza

el archivo codificado

Para cada 0 mover hacia la izquierda en el rbol


Por cada 1 mover hacia la derecha
Hasta llegar a un nodo hoja Emitir ese carcter y volver a la raz

0000 10 1100 000110

Generar el
archivo original

Note que el cdigo no es prefijo de cualquier otro


cdigo Asegura que la decodificacin ser nica

Analiza el archivo a comprimir y contar la aparicin de cada


caracter
Clasificar los caracteres en funcin de su frecuencia

Debe

Archivo entrada:

l
1

Paso 1: Obtener Frecuencias

J. C. Carbajal L.

D.A.I. A l g o r i t m i c a I I I

y
1

0
k
1

Algoritmo Huffman

COMPANY
LOGO

Code
0000
0001
0010
0011
0100
0101
011
10
1100
1101
1110
1111

e
8

D.A.I. A l g o r i t m i c a I I I

Tabla de codificacin
Char
E
i
y
l
k
.
space
e
r
s
n
a

A toda arista izquierda aadir etiqueta 0


A toda arista derecha aadir etiqueta 1
El cdigo de cada carcter es su secuencia de etiqueta-raz a hojas

J. C. Carbajal L.

Vamos a asignar cdigos

Atravesar el rbol

A toda arista izquierda aadir etiqueta 0


A toda arista derecha aadir etiqueta 1
El cdigo de cada carcter es su secuencia de etiqueta-raz a hojas
D.A.I. A l g o r i t m i c a I I I

i
1

1
16

10

COMPANY
LOGO

Eerie

D.A.I. A l g o r i t m i c a I I I

J. C. Carbajal L.

11

You might also like