Você está na página 1de 16

ALGORITMOS VORACES

RESUMEN

Dentro del mbito de solucin para problemas de optimizacin tenemos presente


tpicamente a los algoritmos voraces o esquema algortmico de resolucin voraz o
avariciosa (greedy), ya que estos son sencillos de disear, codificar y principalmente
son eficientes al funcionar.
El objetivo del esquema voraz es obtener una solucin ptimo global tomando
soluciones localmente ptimas.
Estos algoritmos tratan de hallar una solucin de forma ptima, disponiendo de un
conjunto vaco inicialmente, mediante el avance del algoritmo propuesto se acumulan
dos conjuntos de candidatos considerados (seleccionados y rechazados), se tienen
funciones que: hallan un conjunto que es una posible solucin, hallan si un conjunto es
factible. Tambin se tiene una funcin de seleccin que indica el candidato ms
prometedor de los candidatos restantes, finalmente se tiene una funcin objetivo que da
el valor a la solucin que hemos hallado.
La estructura de un algoritmo voraz se puede utilizar para construir procedimientos
heursticos, es decir, se habla de heursticas voraces. La heurstica Voraz busca obtener
buenas soluciones en un tiempo de ejecucin corto.
Dentro de la resolucin de problemas que se ajustan al esquema voraz tenemos: El
problema del agente viajante (se debe encontrar el recorrido de longitud mnima para el
viajante que tiene que visitar varias ciudades y volver al punto de partida), Cdigos de
Huffman (utiliza una tabla de frecuencias de aparicin de cada carcter para construir
una forma ptima de representar los caracteres con cdigos binarios), El problema del
cambio(se trata de devolver una cantidad de dinero con el menor nmero posible de
monedas), rbol de extensin mnima (dado un grafo no dirigido con peso, hay que
encontrar un conjunto de arcos que conecten todos los vrtices de manera que la suma
de sus pesos sea mnima), el problema de la minimizacin del tiempo de espera (un
servidor tiene que atender un nmero de clientes que llegan todos juntos al sistema).
Como aplicacin se tiene el problema de la mochila donde el objetivo es llenar la
mochila de manera que se maximice el beneficio total. Para su resolucin se presentan
tres resultados, obtenidos de algoritmos voraces. Con la primera solucin se elige el
objeto con mayor beneficio total, con la segunda solucin se elige el objeto con menos
peso, y finalmente se elige el objeto con mayor beneficio por unidad de peso.
Culminando se elige la solucin donde se maximice el beneficio total, que este caso es
la tercera solucin, la cual es la ms ptima.

-1-
ABSTRACT

Inside the environment of solutions for optimization problems, we have normally:


Voracious algorithms or algorithm scheme of voracious resolution, because of the easily
of designing, codifying, and mostly they are efficient in their chores.

The Objective of the voracious scheme is getting a solution the best global having
the best in the context solutions.

This algorithms try to find the best solutions of all, starting with an empty set, with the
advance of the algorithm we accumulate two sets of candidates( selected and refused),
and fuvitons that: find a set that could be the possible Solution, find if the set is
practicable. Even we have a function of selecting, that indicates the best candidate of
all, and finally we have and objective function that returns the value of the solution that
we find.

The Structure of the voracious algorithm can be used by developing heuristic


procedures, in other words, we talk about voracious heuristic. The voracious heuristic
try to get good solutions with a little executing time.

Inside the resolution of problems that adapt to this scheme we have : the salesman agent
problems( we have to find the smallest road for the salesman that have to visit several
cities and return to the starting point), Huffman Codes( uses a frequency table that each
character appears, and develop an optimum way of representing the binaries code), the
changes problem( we have to return money with the least possible number of coins),
minimum extension tree( with a not-directing grapho with weight, we have to find an
arch set that connect all the vertex, but including that the addition of the weight be the
least), waiting time minimizing problem( a server has to assist a number of people that
arrive all together to the system).
As Application we have the backpack problem, with the objective of filling all the
backpack with maximizing the benefit. For its resolution we consider three results ,
getting by voracious algorithm. Whit the first solution we choose the object with the
most total benefit, whit the second one we choose the object with least weight, and
finally we choose the object with the higher quotient (benefit/weight). Finally we chose
the solution where the total benefit is maximum, that in this case is the last choose,
which is the most best.

-2-
INTRODUCCIN

En el siguiente trabajo pretendemos presentar una serie de conceptos y definiciones


propios del estudio de los Algoritmos Voraces o codiciosos as como una aplicacin de
la misma.

En el mismo podremos encontrar los conceptos de los Algoritmos Voraces, las


caractersticas de l, los principios en los que se basa su funcionamiento. Tambin
veremos el esquema voraz que se tiene que seguir para lograr resolver los diferentes
problemas que se planten. En ese mismo orden encontraremos conceptos de la
heurstica voraz y el objetivo que se persigue al hacer uso de l.

De igual forma y en aras de lograr un mejor y fcil entendimiento del tema voraz
podremos ver diferentes problemas resueltos aplicndose en ellos el esquema voraz y
logrando la resolucin de los diferentes problemas planteados. Contribuyendo as a
asimilar mejor el tema del trabajo presentado ya que si bien es cierto en la prctica se
aprende ms que en la teora, claro esta que sin la teora no podramos recurrir a la
prctica a lo que se suma el carcter netamente prctico de los algoritmos.

Finalmente veremos la aplicacin del esquema voraz con cada uno de los pasos que se
han de seguir hasta lograr la solucin ptima para nuestra aplicacin, para el cul
haremos un anlisis previo de posibles candidatos a solucionar nuestro problema para
que a partir de los resultados obtenidos se proceda a la eleccin del candidato ms
optimo y que se ajuste a los requerimientos del problema.

-3-
MARCO TERICO

ALGORITMOS VORACES

1. CONCEPTO
Un algoritmo Voraz segn su nombre lo indica, destruye o consume rpidamente el
problema que se nos presente al momento de construir un algoritmo. Los algoritmos
voraces se emplean sobre todo para resolver problemas de optimizacin, es decir,
hay que encontrar un conjunto de candidatos que optimiza la funcin objetivo o
encontrar la secuencia ptima para procesar un conjunto de tareas por un
computador.

2. FUNCIONAMIENTO
Un algoritmo voraz funciona seleccionando la tarea, que parezca ms prometedora
en un determinado instante; nunca reconsidera su decisin, sea cual fuere la
situacin que pudiera surgir ms adelante. No hay necesidad de evaluar alternativas,
ni de emplear sofisticados procedimientos de seguimiento que permitan deshacer las
decisiones anteriores, es decir, el algoritmo escoge el mejor "pedazo" que es capaz
de "comer" sin preocuparse del futuro. El enfoque que aplica un algoritmo voraz es
muy corto, y toman 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. Por tal razn resultan fciles de inventar, fciles de implementar y, cuando
funcionan, suelen ser eficaces, pero no eficientes.

3. CARACTERISTICAS DE LOS ALGORITMOS VORACES


Los algoritmos voraces como ya se dijo anteriormente, se utilizan tpicamente en la
solucin de problemas de optimizacin y se caracterizan por ser:
Sencillos de disear y codificar.
Miopes porque toman decisiones con la informacin que tienen disponible de
forma inmediata, sin tener en cuenta sus efectos futuros.
Eficientes (cuando funcionan)

4. ELEMENTOS DEL ESQUEMA VORAZ


Generalmente, los algoritmos voraces y los problemas que stos resuelven se
caracterizan por la mayora de las propiedades siguientes:
Tratan de resolver problemas de forma ptima.
Disponemos de un conjunto (o lista) de candidatos que inicialmente es un
conjunto vaco, por ejemplo (tareas a procesar, vrtices del grafo, etc);
A medida que avanza el algoritmo vamos acumulando dos conjuntos:
1. A: candidatos considerados y seleccionados.
2. B: candidatos considerados y rechazados.
Existe una funcin que comprueba si un cierto conjunto de candidatos
constituye una solucin de nuestro problema, ignorando si es ptima o no por
el momento.
Existe una funcin que comprueba si un cierto conjunto de candidatos es
factible, esto es, si es posible o no completar el conjunto aadiendo otros
candidatos para obtener al menos una solucin al problema. Una vez ms, no
nos importa si la solucin es ptima o no. Normalmente se espera que al

-4-
menos se pueda obtener una solucin a partir de los candidatos disponibles
inicialmente.
Existe una funcin de seleccin que indica cul es el ms prometedor de los
candidatos restantes no considerados an.
Implcitamente est presente una funcin objetivo que da el valor a la solucin
que hemos hallado (valor que estamos tratando de optimizar).

5. EL ESQUEMA VORAZ
Un algoritmo voraz es correcto si la solucin as encontrada es siempre ptima. El
esquema genrico del algoritmo voraz es:

funcin voraz(C:conjunto)
devuelve conjunto
{C es el conjunto de todos los candidatos}
inicio
S:=; {S es el conjunto en el que se construye la solucin}
mientras que solucin(S) C hacer
x:=elemento de C que
maximiza o minimiza seleccionar(x);
C:=C-{x};
si factible(S {x})
entonces S:=S {x}
fin si
fin mientras que
si solucin(S)
entonces devuelve S
sino devuelve no hay solucin
fin si
fin

En esencia la estrategia de estos algoritmos es bsicamente iterativa y el presentado


es uno de los esquemas ms simples y al mismo tiempo de los ms utilizados.

6. HEURSTICAS VORACES

6.1. DEFINICIN
Es una tcnica algortmica en la cual un problema de la optimizacin es
solucionado encontrando soluciones ptimas.

6.2. OBJETIVO
Obtener buenas soluciones en un tiempo de ejecucin corto.

6.3. TCNICAS HEURSTICAS

La estructura de un algoritmo voraz se puede utilizar para construir


procedimientos heursticos: hablamos de heursticas voraces.
Un algoritmo heurstico o, simplemente, una heurstica puede producir una
buena solucin, posiblemente la ptima, pero tambin puede que no
produzca ninguna solucin o dar una solucin no muy buena.

-5-
Normalmente, se basa en un conocimiento intuitivo del programador sobre
un determinado problema.
Existen muchos problemas para los cuales no se conocen algoritmos que
puedan encontrar la solucin de forma eficiente o en donde la solucin
exacta puede requerir un orden factorial o exponencial: el problema de la
explosin combinatoria.

7. PROBLEMAS QUE SE AJUSTAN AL ESQUEMA VORAZ


Algunos de los tantos problemas que se ajustan al esquema voraz son:
El problema del agente viajante
Cdigos de Huffman

7.1. PROBLEMA DEL VIAJANTE DE COMERCIO

7.1.1. Planteamiento Del Problema


El problema del viajante de comercio consiste en encontrar el recorrido
de longitud mnima para el viajante que tiene que visitar varias ciudades
y volver el punto de partida, conocida la distancia existe entre cada dos
ciudades. Este problema se lo plantean por ejemplo las compaas de
telfono para elegir la ruta que debe seguir sus recolectores de dinero de
las cabina pblicas instaladas en una ciudad.
As tenemos cinco cabinas de telfonos b,c,d,e,f, para las que se conocen
sus coordenadas relativas a, desde la que parten los recolectores y a
donde deben regresar al terminar, y se supone que la distancia entre cada
dos viene dada por la lnea recta.

En primera instancia se piensa en un algoritmo de fuerza bruta el que


consiste en intentar todas las posibilidades para calcular las longitudes de
todos los recorridos posibles y a partir de ellos seleccionar la de longitud
mnima. Obviamente el coste tal algoritmo crece exponencialmente al
aumentar el nmero de a puntos visitar.
En el ejemplo la solucin viene dada por el siguiente recorrido, que en
realidad son dos recorridos, pues podra realizarse en cualquiera de los
sentidos.

7.1.2. Heurstica Voraz


a) Ir seleccionando parejas de puntos que sern visitados en forma
consecutiva:

-6-
b) Seleccionar la pareja de puntos cuya distancia sea mnima:
(d,e), distancia de 3 (Seleccin)

c) Luego se selecciona la siguiente pareja de puntos cuya distancia de


separacin sea mnima, teniendo en cuenta de que no se visite un
punto dos veces o ms o que se cierre el recorrido antes de haber
visitado todos los puntos. De tal manera que si se tiene n puntos por
visitar incluyendo el origen, se seleccionarn un conjunto de n
parejas de puntos que sern visitados consecutivamente y la solucin
consistira en reordenar todas estas parejas de forma que constituyan
un recorrido.
(a,b) (b,c) y (e,f) cuyas distancias iguales a 5
(a,c), descartado porque cierra el recorrido antes de tiempo, al
igual que el punto (d,f).
(b,e), descartado por inclusin, dado que se visitaran b y e seran
visitados dos veces.
(b,d), descartado por inclusin doble de b.
(c,d), seleccionado.
(b,f); (c,e); (a,e) y (a,d) son descartados.
(a,f), seleccionado y es quien cierra el recorrido.

d) Se procede al anlisis de la ruta obtenida, de la que se observa que la


longitud del recorrido es de 50.

7.2. CDIGO DE HUFFMAN


Los cdigos de Huffman son una tcnica muy til para comprimir ficheros.
El algoritmo voraz de Huffman utiliza una tabla de frecuencias de aparicin de
cada carcter para construir una forma ptima de representar los caracteres con
cdigos binarios.
Tomemos un texto corto, por ejemplo:
"ata la jaca a la estaca"
a) Contamos las veces que aparece cada carcter y hacemos una lista
enlazada:
' '(5), a(9), c(2), e(1), j(1), l(2), s(1), t(2)
b) Ordenamos por frecuencia de menor a mayor
e(1), j(1), s(1), c(2), l(2), t(2), ' '(5), a(9)
c) Consideremos ahora que cada elemento es el nodo raz de un rbol.

-7-
d) Fundimos los dos primeros nodos (rboles) en un nuevo rbol, sumamos
sus frecuencias y lo colocamos en el lugar correspondiente:

Y sucesivamente:

El resultado final es:

e) Asignamos los cdigos, las ramas a la izquierda son ceros, y a la derecha


unos (por ejemplo), es una regla arbitraria.

a '' C L t s e j
0 10 1100 1101 1110 11110 111110 111111

f) Y traducimos el texto:

a t a '' l a '' J a C a '' a '' l a '' e s t a c a


0 1110 0 10 1101 0 10 111111 0 1100 0 10 0 10 1101 0 10 111110 11110 1110 0 1100 0

Y slo queda empaquetar los bits en grupos de ocho, es decir en bytes:

01110010 11010101 11111011 00010010 11010101 11110111 10111001 10000000


0x72 0Xd5 0xFB 0x12 0xD5 0xF7 0xb9 0x80

En total ocho bytes, y el texto original tena 23.

-8-
Se precisa un cdigo libre de prefijos:
Ninguna codificacin puede ser prefijo de otra.
De esta forma, la decodificacin es inmediata pues no hay
ambigedades.
El cdigo se representa mediante un trie (rbol lexicogrfico):
rbol binario cuyas hojas son los caracteres codificados; el cdigo de
cada carcter es el camino desde la raz hasta la hoja, donde ir al hijo
izquierdo significa 0 e ir hacia el derecho significa 1
Cada hoja est etiquetada con un carcter y su frecuencia.
Cada nodo interno est etiquetado con la suma de los pesos de las
hojas de su subrbol.
Un cdigo ptimo siempre est representado por un rbol lleno: cada
nodo interno tiene dos hijos.
Si el alfabeto que se quiere codificar es C, entonces el rbol del
cdigo ptimo tiene |C| hojas y |C|-1 nodos internos.
El algoritmo voraz de Huffman construye el rbol A de un cdigo ptimo
de abajo hacia arriba.
Utiliza una cola Q de rboles con prioridades (las frecuencias hacen de
prioridades).
Empieza con un conjunto de |C| hojas en Q y realiza una secuencia de |
C|-1 mezclas hasta crear el rbol final.
En cada paso, se mezclan los dos objetos (rboles) de Q que tienen
menos frecuencia y el resultado es un nuevo objeto (rbol) cuya
frecuencia es la suma de las frecuencias de los dos objetos mezclados.

7.2.1. Funcin de Huffman


Donde C es un conjunto de caracteres y f es el vector de frecuencias de
esos caracteres
funcin Huffman(C:conjunto;f:vectFrec) devuelve rbol
variables Q:colaPri; i,fx,fy,fz:entero; z,x,y:rbol
principio
creaVaca(Q);
para todo x en C hacer
inserta(Q,<x,f[x]>)
finpara;
para i:=1 hasta |C|-1 hacer
<x,fx>:=primero(Q); borra(Q);
<y,fy>:=primero(Q); borra(Q);
fz:=fx+fy;
z:=crearbol(raz=fz; hijoIzq=x; hijoDer=y);
inserta(Q,<z,fz>)
finpara;
<z,fz>:=primero(Q); borra(Q)
devuelve z
fin

Despus del cual z es el rbol de un cdigo libre de prefijos ptimo para


(C,f)

Coste temporal:

-9-
inicializacin de Q: (C)
el interior del bucle: (log C)
Coste total: (C log C)

7.2.2. Propiedad de la seleccin voraz:


Sea C un alfabeto en el que cada carcter c tiene frecuencia f[c]. Sean
x e y dos caracteres de C con frecuencias mnimas. Entonces existe
un cdigo libre de prefijos ptimo para C en el que las codificaciones
de x e y tienen igual longitud y se diferencien solo en el ultimo bit.
La idea de la demostracin consiste en tomar un rbol que represente
un cdigo libre de prefijos ptimo arbitrario y modificarlo hasta
convertirlo en otro rbol que represente otro cdigo libre de prefijos
ptimo y tal que los caracteres x e y aparezcan
Por tanto, el proceso de construir un rbol ptimo mediante mezclas
puede empezar, sin prdida de generalidad, con la eleccin voraz de
mezclar los dos caracteres de menor frecuencia.

7.3. OTROS PROBLEMAS PARA APLICAR ALGORITMOS VORACES

7.3.1. Problema De La Minimizacin Del Tiempo De Espera


Es un problema de planificacin de tareas.
Un servidor (por ejemplo, un procesador, un cajero automtico, un
surtidor de gasolina, etc.) tiene que atender n clientes que llegan
todos juntos al sistema.
El tiempo de servicio para cada cliente es ti, i=1,2,,n.
Se quiere minimizar:
T = tiempo total que el cliente i est en el sistema

Ejemplo:
3 clientes con t1=5, t2=10, t3=3.
orden T
1 2 3: 5 + (5+10) + (5+10+3) = 38
1 3 2: 5 + (5+3) + (5+3+10) = 31
2 1 3: 10 + (10+5) + (10+5+3) = 43
2 3 1: 10 + (10+3) + (10+3+5) = 41
3 1 2: 3 + (3+5) + (3+5+10) = 29 (OPTIMO)
3 2 1: 3 + (3+10) + (3+10+5) = 34

Estrategia voraz: Atender en cada paso al cliente no atendido con


menor tiempo de servicio.

7.3.2. El Problema Del Cambio


Consideremos el problema de dar el cambio, que consiste en:
Seleccionar la moneda de mayor valor que no exceda la cantidad
restante por devolver, agregar esta moneda a la lista de la
solucin, y sustraer la cantidad correspondiente a la cantidad que
resta por devolver (hasta que sea 0).
El ptimo local es, en cada etapa, devolver la moneda ms grande
que no supere la cantidad que queda.

-10-
APLICACIN DE UN ALGORITMO VORAZ

EL PROBLEMA DE LA MOCHILA
Tenemos una mochila de capacidad M y N objetos para incluir en ella. Cada objeto tiene
un peso pi y un beneficio bi , 1 i N . Los objetos se pueden fraccionar.
El objetivo es llenar la mochila de manera que se maximice el beneficio total. Pero
como la mochila tiene capacidad M, el peso total de todos los objetos metidos en ella no
puede superar esa cantidad.

1. PLANTEAMIENTO DE SOLUCIN CON UN ESQUEMA VORAZ


Datos del problema: capacidad M y N objetos de peso <p1,...,pN> y beneficio
<b1,...,bN>
Resultado: <x1,...,xN>
N
Maximizar el beneficio b x
i 1
i i (I)
N
con la restriccin de que los objetos quepan en la mochila px
i 1
i i M (II)

donde 0 xi 1 , 1 i N , bi 0 , pi 0 (III)
Se tiene que una solucin factible es cualquier n-tupla <x1,...,xN> que satisfaga (II) y
(III) y una solucin ptima es cualquier solucin factible para la que (I) sea mximo.
Ntese adems que todas las soluciones ptimas llenarn la mochila por completo.

1.1. Primera Estrategia


Primera estrategia: Criterio de seleccin de los objetos - Objeto de mayor
beneficio bi
p = <30; 18; 15; 10>, b = <25; 13; 12; 10> y M = 50

Pasos M C Solucin
50 1,2,3,4 0 0 0 0
1 20 2,3,4 1 0 0 0
2 2 3,4 1 1 0 0
3 0 4 1 1 2/15 0

Beneficio = 25 + 13 + 2/15 x 12 = 39,6

1.2. Segunda Estrategia


Criterio de seleccin de los objetos - Objeto de menor peso pi
p = <30; 18; 15; 10>, b = <25; 13; 12; 10> y M = 50

Pasos M C Solucin
50 1,2,3,4 0 0 0 0
1 40 1,2,3 0 0 0 1
2 25 1,2 0 0 1 1
3 7 1 0 1 1 1

-11-
4 0 7/30 1 1 1
Beneficio = 7/30 x 25 + 13 + 12 + 10 = 40,83

1.3. Tercera Estrategia


Criterio de seleccin de los objetos - Objeto con mayor beneficio unitario bi / pi
p = <30; 18; 15; 10>, b = <25; 13; 12; 10> y M = 50

Step M C Solucin
50 1,2,3,4 0 0 0 0
1 40 1,2,3 0 0 0 1
2 10 2,3 1 0 0 1
3 0 2 1 0 10/15 1

Beneficio = 25 + 10/15 x 12 + 10 = 42,99

2. ANLISIS DE CANDIDATOS
Analizando cual es el mejor candidato (es decir, la mejor funcin de seleccin)
Volviendo al ejemplo tenemos:
En la primera estrategia se elige el objeto con mayor beneficio total. Sin
embargo, la mochila se llena muy rpidamente con poco beneficio total.
En la segunda estrategia se elige el objeto que llene menos la mochila, para
acumular beneficios de un nmero mayor de objetos. Sin embargo, es posible
que se elija un objeto con poco beneficio simplemente porque pesa poco.
En la tercera estrategia, que es la ptima, es tomar siempre el objeto que
proporcione mayor beneficio por unidad de peso.

Los algoritmos resultantes de aplicar cualquiera de las dos primeras estrategias


tambin son voraces, pero no calculan la solucin ptima.
Cola.cpp
#include "Cola de Prioridad.h"
#include<conio.h>
void main()
{
objeto obj;
cola C;
float capacidad_max,capacidad,btotal,bun,i;
cout<<"Numero de objetos: ";cin>>capacidad;
cout<<"Capacidad maxima: ";cin>>capacidad_max;
for(i=0; i<capacidad;i++){
cin>>obj;
bun = obj.beneficio/obj.peso;
C.push(obj,bun);
}
//bucle voraz
btotal = 0; capacidad = 0;
while ((capacidad < capacidad_max) && (C.size() > 0)) {
obj = C.pop();
i = (capacidad_max - capacidad)/obj.peso;

-12-
if (i>1) i = 1;
capacidad += i*obj.peso;
btotal += i*obj.beneficio;
cout << "Almaceno " << i << <<obj.nombre << endl;
}
cout << "Capacidad = " << capacidad << endl;
cout << "Beneficio total = " << btotal << endl;
getch();
}
Objeto.h
#ifndef OBJETO_H
#define OBJETO_H
#include<string.h>
class objeto{
private:
char *nombre;
float peso;
float beneficio;
public:
objeto(){nombre= new char[20];peso=0;beneficio=0;};
objeto& operator=(objeto &);
friend ostream& operator <<(ostream &, objeto &);
friend istream& operator >>(istream &, objeto &);
friend void main();
};
objeto& objeto::operator = (objeto &obj)
{
strcpy(nombre,obj.nombre);
peso=obj.peso;
beneficio=obj.beneficio;
return *this;
}
ostream& operator <<(ostream &sal, objeto &obj)
{
sal<<"\t\tNombre: "<<obj.nombre<<endl;
return sal;
}
istream& operator >>(istream &ent, objeto &obj)
{
cout<<"\t\tNombre: ";
ent>>obj.nombre;
cout<<"\t\tPeso: ";
do{
ent>>obj.peso;
}while(obj.peso==-1);
cout<<"\t\tBeneficio: ";
do{
ent>>obj.beneficio;
}while(obj.beneficio==-1);
return ent;

-13-
}
#endif

CONCLUSIONES

PRIMERA
Los algoritmos voraces son tpicamente usados en problemas de optimizacin.

SEGUNDA
Son algoritmos fciles de disear e implementar y cuando funcionan suelen ser eficaces
pero no necesariamente eficientes.

TERCERA
El esquema voraz trabaja directamente con funciones y lista de candidatos

CUARTA
La heurstica es una tcnica de optimizacin que utiliza informacin local.

QUINTA
En si el cdigo de Huffman es una tcnica muy til para la compresin de ficheros, en el
cual trabaja esencialmente con bits, segn el camino que tomen.

SEXTA
La vulnerabilidad del cdigo Huffman es la condicin primordial es que ninguna
codificacin puede ser prefijo de otras.

SEPTIMA
El Cdigo de Huffman principalmente mezcla los subrboles, y los almacena en una
cola de prioridad.

-14-
RECOMENDACIONES

Mediante los algoritmos voraces se obtienen muchos resultados pero se debe


seleccionar siempre la solucin ptima.

En cuanto al cdigo de Huffman, para reducir un tanto la complejidad del


algoritmo, se puede trabajar con alguna otra estructura que se adecue a las
necesidades del algoritmo tratando de disminuir la altura del rbol para lograr
uno ms eficiente.

-15-
BIBLIOGRAFA

1. http://encyclopedia.thefreedictionary.com/Greedy%20algorithm greedy algorithm


Greedy Algorithm
2. http://www.nist.gov/dads/HTML/greedyalgo.html
Definiciones de algoritmos voraces
3. http://www.c3.lanl.gov/mega-math/gloss/compute/greedy.html&prev=/search%3Fq
%3Dgreedy%2Balgorithm%26hl%3Des%26lr%3D
Algoritmos Codiciosos
4. http://old.algoritmia.net/alg/
Algoritmos Fundamentales
5. http://encyclopedia.thefreedictionary.com/Greedy%20algorithm greedy algorithm
Definiciones de algoritmos voraces
6. http://encyclopedia.thefreedictionary.com/Greedy%20algorithm greedy algorithm
Definiciones de algoritmos voraces
7. http://encyclopedia.thefreedictionary.com/Greedy%20algorithm greedy algorithm
Definiciones de algoritmos voraces
8. http://www.lsi.upc.es/~iea/transpas/2_voraces/index.htm//algoritmos voraces
Algoritmos Voraces
9. www.dsic.upv.es/asignaturas/ facultad/eda/teoria/tema5/t5eda.pdf
El problema de la mochila

Pginas anexas:

10. www.monografias.com/trabajos11/alcom/alcom.shtml
11. http://www.ica.luz.ve/juancol/eda/algoritmos-voraces
12. http://www.ica.luz.ve/juancol/eda/grafos
13. platon.escet.urjc.es/grupo/ docencia/edi/Gestion/descripcion.html
14. servinf.dif.um.es/~domingo/ apuntes/Algoritmica/0203/intro.ppt
15. www.itchihuahuaii.edu.mx/carreras/isc/T1S8.asp
16. mail.udlap.mx/~is111638/tesis/formal.html
17. www.udc.es/dppeu/ects/html/es/infoinf.html
18. www-ma2.upc.es/~vera/mi.ps

-16-

Você também pode gostar