Professional Documents
Culture Documents
Tcnicas Algortmicas
COMPANY
LOGO
Algoritmos Voraces
COMPANY
LOGO
realizar
Cdigo HuffmanProblema
D.A.I. A l g o r i t m i c a I I I
J. C. Carbajal L.
optimizacin.
COMPANY
LOGO
J. C. Carbajal L.
COMPANY
LOGO
usados en problemas de
Dado
Un
J. C. Carbajal L.
COMPANY
LOGO
De implementacin sencilla.
DESVENTAJAS
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.
D.A.I. A l g o r i t m i c a I I I
J. C. Carbajal L.
12/07/2015
COMPANY
LOGO
mochila fraccional
de Huffman
MST algoritmo de Kruskal
Algoritmo MST de Prim
SSSP algoritmo de Dijkstra
...
algoritmo
Hay
cdigos
Artculo
D.A.I. A l g o r i t m i c a I I I
COMPANY
LOGO
de la mochila 0-1:
de la mochila fraccional:
el
J. C. Carbajal L.
COMPANY
LOGO
J. C. Carbajal L.
COMPANY
LOGO
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
J. C. Carbajal L.
COMPANY
LOGO
Tomar
artculo
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
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
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)
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
COMPANY
LOGO
J. C. Carbajal L.
COMPANY
LOGO
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
J. C. Carbajal L.
D.A.I. A l g o r i t m i c a I I I
Objeto Tamao
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
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
i = 1, 2, .., n
wi x i W y
x i vi es mximo
10
$60
$100
$6/libra
$5/libra
$160
$220
No ptimo
J. C. Carbajal L.
$100
$60
D.A.I. A l g o r i t m i c a I I I
COMPANY
LOGO
$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
i = 1, 2, .., n
Item 1
$60
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
$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.
10
D.A.I. A l g o r i t m i c a I I I
10
wi x i W y
30
20
COMPANY
LOGO
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
Algoritmo voraz
COMPANY
LOGO
A3
A1
A7
A5
A2
A4
A6
A8
Dimensin Tiempo
D.A.I. A l g o r i t m i c a I I I
Algoritmo voraz
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
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?
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
A3
A1
Idea:
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
J. C. Carbajal L.
12/07/2015
Solucin recursiva
Solucin iterativa
COMPANY
LOGO
COMPANY
LOGO
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
D.A.I. A l g o r i t m i c a I I I
Subestructura ptima
D.A.I. A l g o r i t m i c a I I I
Cdigos de Huffman
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.
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
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
300,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.
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
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
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
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
100
J. C. Carbajal L.
Cdigo Huffman
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)
D.A.I. A l g o r i t m i c a I I I
Cdigo Huffman
COMPANY
LOGO
entrada:
J. C. Carbajal L.
COMPANY
LOGO
Idea:
archivo
de datos de caracteres y
nmero de ocurrencias de cada caracter
salida:
una
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
COMPANY
LOGO
Con
dividirse
101111110100
b
aa
J. C. Carbajal L.
D.A.I. A l g o r i t m i c a I I I
COMPANY
LOGO
1 0
1 0
b c
d e
J. C. Carbajal L.
D.A.I. A l g o r i t m i c a I I I
COMPANY
LOGO
Dado
1
Cdigo de longitud variable
a 0
b 0
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:
COMPANY
LOGO
Char Fr eq.
k
1
.
1
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
COMPANY
LOGO
2
E
1
i
1
E
1
2
y
1
k
1
J. C. Carbajal L.
E
1
2
y
1
i
1
l
1
k
1
COMPANY
LOGO
.
1
J. C. Carbajal L.
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
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
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
COMPANY
LOGO
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.
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
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
J. C. Carbajal L.
D.A.I. A l g o r i t m i c a I I I
COMPANY
LOGO
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
J. C. Carbajal L.
10
12/07/2015
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
COMPANY
LOGO
+
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.
COMPANY
LOGO
J. C. Carbajal L.
COMPANY
LOGO
Analiza
el archivo codificado
Generar el
archivo original
Debe
Archivo entrada:
l
1
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
J. C. Carbajal L.
Atravesar el rbol
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