2. Definición
Los algoritmos voraces, ávidos o de avance rápido son utilizados para
solucionar problemas de optimización y toman decisiones basándose en la
información que tienen de modo inmediato, sin tener en cuenta los efectos
que estas decisiones pueden tener a futuro.
Es aquel algoritmo, que para resolver un problema elige la opción óptima en
cada paso local con la esperanza de llegar a una solución general óptima.
3. Estructura:
Conjunto de Función de Función de
Función solución Función Objetivo
candidatos factibilidad selección
Determina sisolucióncandidato del conjunto a seleccionar. una solución. con el siguiente elemento
Determina eles posible completar el conjunto dealcanzado seleccionados
Valor de la si los candidatos seleccionados han candidatos
mejor alcanzada.
seleccionado para alcanzar una solución al problema.
4. Funcionamiento:
Voraz(C : conjunto de candidatos) : conjunto solución
Inicio
S=Ø
mientras C ≠ Ø y no Solución(S) hacer
x = Selección(C)
C = C – {x}
si factible(S U {x}) entonces
S = S U {x}
fin si
fin mientras
si Solución(S) entonces
Devolver S
en otro caso
Devolver “No se encontró una solución”
fin si
5. Características:
1. El problema a resolver ha de ser de optimización [MIN/MAX] y debe existir una función, la función
objetivo, que es la que hay que minimizar o maximizar.
2. Dominio son un conjunto de valores posibles para cada una de las variables de la función objetivo .
3. Pueden existir un conjunto restricciones que imponen condiciones a los valores del dominio que
pueden tomar las variables de la función objetivo.
4. La solución para el problema debe ser dada en forma de secuencia de decisiones(Función Solución).
5. Una función que permita determinar si una secuencia de decisiones viola o no las restricciones, la
función factible.
6. Encontrar una solución
VALORES Función objetivo sea óptimo
Asignación de la variable
Proceso Secuencial actual
Función objetivo sea óptimo
La decisión es localmente óptima, es decir, ningún otro valor de los disponibles para esa variable lograría
que la función objetivo tuviera un valor mejor, y luego comprueba si la puede incorporar a la secuencia de
decisiones que ha tomado hasta el momento,
es decir, comprueba que la nueva decisión junto con todas las tomadas
anteriormente no violan las restricciones y así consigue una nueva secuencia de
decisiones factible.
7. Depende de dos factores:
Numero de iteraciones El coste de la función selección y factible
Depende del tamaño de la solución reducir el coste de la función de selección, siempre que y
Para construida y del factible dependerá del problema (número
El coste de la función tamaño
del conjunto de candidatos. sea posible se prepara (preprocesa) el
complejidad de las
restricciones).
conjunto de candidatos antes de entrar en el bucle.
8. No garantiza que la solución sea la optima
Suelen ser rápidos y fáciles de implementar.
Sólo genera una de entre todas las posibles secuencias de
decisiones
Siempre habrá que intentar demostrar que la solución obtenida
es la óptima
9. Determinar la función de selección
Definir la solución factible
Definir qué caracteriza a una solución del problema.
Demostrar que la función de selección conduce siempre al
óptimo.
Si no
Construcción el algoritmo Buscar nuevas funciones de
selección
10. El problema del cambio de monedas
Para el problema que nos ocupa se puede comenzar por definir factible y solución. En este caso el
problema no tiene restricciones explícitas pero podemos decir que un conjunto de monedas es factible si la
suma de sus valores es menor o igual que M (cantidad de monedas). Y se tiene una solución cuando los
valores de las monedas elegidas suman exactamente , si es que esto es posible.
La forma en que habitualmente se devuelve el cambio nos ofrece un candidato a
función de selección: elegir a cada paso la moneda disponible de mayor valor.
Como pretendemos minimizar el número de monedas utilizado, al elegir la moneda
de mayor valor nos acercamos lo más posible a la cantidad a formar y, además,
empleando una única moneda.
Es una decisión localmente óptima porque minimiza la cantidad que nos queda por formar con las monedas
11. El problema del cambio de monedas
Construir un algoritmo que dada una cantidad P devuelva esa cantidad usando el menor número posible
de monedas.
Disponemos de monedas con valores de 1, 2, 5, 10, 20 y 50
céntimos de euro,
1 y 2 euros (€).
Este es un problema de minimización que satisface el denominado PRINICIPIO DE OPTIMALIDAD lo que puede
resultar útil para las demostraciones de optimalidad de la solución obtenida por la función de selección.
12. El problema del cambio de monedas
La función factible tendrá que comprobar que el valor de la moneda seleccionada junto con el valor de
las monedas que ya hemos incluido hasta ahora en la solución no supera .
Caso 1. Devolver 3,89 Euros.
1.- moneda de 2€, 1 moneda de 1€, 1 moneda de 50 c€, 1
moneda de 20 c€, 1 moneda de 10 c€ , 1 moneda de 5 c€ y
2.- monedas de 2 c€. Total: 8 monedas.
13. El problema del cambio de monedas
• Conjunto de candidatos: todos los tipos de monedas disponibles. Supondremos una cantidad ilimitada de
cada tipo.
• Solución: conjunto de monedas que sumen P.
• Función objetivo: minimizar el número de monedas.
Representación
(x1, x2, x3, x4, x5, x6, x7, x8), donde xi es el número de monedas usadas de tipo i.
• Suponemos que la moneda i vale ci.
• Formulación: Minimizar xi, sujeto a Σ xi・ci = P, xi≥0
14. El problema del cambio de monedas
Funciones del esquema:
1.- Inicialización. Inicialmente xi= 0, para todo i= 1..8
2.- solución. El valor actual es solución si Σ xi・ci = P
3.- seleccionar. ¿Qué moneda se elige en cada paso de entre los candidatos?
4.- Respuesta: elegir en cada paso la moneda de valor más alto posible, pero sin sobrepasar la
cantidad que queda por devolver.
5.- factible. Valdrá siempre verdad.
6.- En lugar de seleccionar monedas de una en una, usamos la división entera y cogemos todas las
monedas posibles de mayor valor.
7.- Implementación. Usamos una variable local para acumular la cantidad devuelta hasta este punto.
• Suponemos que las monedas están ordenadas de menor a mayor valor.
15.
16. DEFINICION
El problema de la mochila es uno de los 21 problemas
NP-completos de Richard Karp, establecidos por el
informático teórico en un famoso artículo de 1972
Es un problema de optimización combinatoria.
Modela una situación análoga al llenar una mochila
17. Para esta sección, consideremos n tipos de
ítems, que van del 1 al n
Cada tipo de ítem i tiene un valor vi y un
peso wi
Usualmente se asume que los valores y
pesos no son negativos
18.
19. EJEMPLO
Un barco de 4 toneladas se carga con uno o más de
tres artículos. La siguiente tabla proporciona el peso
por unidad, wi y toneladas y la utilidad por unidad vi
en miles de dólares por el artículo ¿Cómo se debe
cargar el barco para maximizar la utilidad total?
ARTICULO(i) Peso en Toneladas(Wi) Beneficio(Vi)
1 2 31
2 3 47
3 1 14
20. N =3 Numero de artículos
Vi = {31, 47,14} F.O= 31 X1 + 47X2 + 14 X3
Wi = {2, 3,1} Rest = 2X1 + 3X2 + X3
W=4
El vector solución inicial es x = {0, 0,0}
Tres artículos tres iteraciones
X= {0, 0,0}
Z=0
∑w1x1=0<=4
X= {0, 0,0}
Z=0
∑w1x1=0<=4
X= {1, 0,0}
Z=31
∑w1x1=2<=4
22. Es aquel que obtenemos en un grafo conexo y sin
ciclos. Árbol de máximo alcance cuyo valor es
mínimo, es decir, la suma de sus aristas es mínima.
Es apropiado para problemas en los cuales la
redundancia es expansiva o el flujo a lo largo de los
arcos se considera instantáneo.
23. Redes de comunicación
eléctrica, telefonía, carretera, ferroviaria, aérea, marítima o
de gas., etc.
• Representan los puntos de consumo
Nodos
eléctrico, teléfonos, aeropuertos, computadoras.
• Alta tensión, cable de fibra óptica, rutas
Arcos
aéreas, agua, gas, etc.
24. Es un algoritmo de la teoría de grafos para
encontrar un árbol recubridor mínimo en un
grafo conexo y ponderado. Es decir, busca un
subconjunto de aristas que, formando un árbol,
incluyen todos los vértices y donde el valor total
de todas las aristas del árbol es el mínimo.
25. • Comenzar en forma arbitraria en cualquier nodo y conectarlo con
el mas próximo (menos distancia o costoso).
1
• Identificar el nodo no conectado que esta mas cerca o menos
costos de alguno de los nodos conectados. Deshacer los empates
2 de forma arbitraria.
• Repartir este paso hasta que se hayan conectado todos los
nodos.
3
26.
27. Una ciudad esta planificando el desarrollo de una nueva
línea en sistemas de transito.
El sistema debe unir 8 residencias y centros comerciales.
El distrito metropolitano de transito necesita seleccionar un
conjunto de líneas que conecten todos los centros a una
mínimo costo.
La red seleccionada debe permitir:
Factibilidad de las líneas que deben ser construidas.
Mínimo costo posible por línea.
28. Zona Norte
Universidad 55
3 50
5
Distrito 39
30
33 comercial
38
Zona Oeste 34 4 45
32 35 Zona Este
1 8
28 43
Zona 2 6 Shopping
Centro 41 center
37 36 44
40
Zona Sur 7
29. Zona Norte
Universidad 55
3 50
5
Distrito 39
30
33 comercial
38
Zona Oeste 34 4 45
32 35 Zona Este
1 8
28 43
Zona 2 6 Shopping
Centro 41 center
37 36 44
40
Zona Sur 7
30. Zona Norte
Universidad 55
3 50
5
Distrito 39
30
33 comercial
38
Zona Oeste 34 4 45
32 35 Zona Este
1 8
28 43
Zona 2 6 Shopping
Centro 41 center
37 36 44
40
Zona Sur 7
31. Zona Norte
Universidad 55
3 50
5
Distrito 39
30
33 comercial
38
Zona Oeste 34 4 45
32 35 Zona Este
1 8
28 43
Zona 2 6 Shopping
Centro 41 center
37 36 44
40
Zona Sur 7
32. Zona Norte
Universidad 55
3 50
5
Distrito 39
30
33 comercial
38
Zona Oeste 34 4 45
32 35 Zona Este
1 8
28 43
Zona 2 6 Shopping
Centro 41 center
37 36 44
40
Zona Sur 7
33. Zona Norte
Universidad 55
3 50
5
Distrito 39
30
33 comercial
38
Zona Oeste 34 4 45
32 35 Zona Este
1 8
28 43
Zona 2 6 Shopping
Centro 41 center
37 36 44
40
Zona Sur 7
34. Zona Norte
Universidad 55
3 50
5
Distrito 39
30
33 comercial
38
Zona Oeste 34 4 45
32 35 Zona Este
1 8
28 43
Zona 2 6 Shopping
Centro 41 center
37 36 44
40
Zona Sur 7
35. Zona Norte
Universidad 55
3 50
5
Distrito 39
30
33 comercial
38
Zona Oeste 34 4 45
32 35 Zona Este
1 8
28 43
Zona 2 6 Shopping
Centro 41 center
37 36 44
40
Zona Sur 7
36. Zona Norte
Universidad
3 5
Distrito
30
comercial
38
Zona Oeste 4
32 35 Zona Este
1 8
28
Zona 2 6 Shopping
Centro center
37 36
7 Costo Total $ 236 millones
Acíclico con n−1 aristas = Árbol buscado Zona Sur
37. Es un algoritmo perteneciente a la teoría de los grafos
para encontrar un árbol recubridor mínimo en un grafo
conexo, no dirigido y cuyas aristas están etiquetadas.
El algoritmo incrementa continuamente el tamaño de
un árbol, comenzando por un vértice inicial al que se le
van agregando sucesivamente vértices cuya distancia
a los anteriores es mínima.
38. • Seleccionar inicialmente cualquier nodo y conectarlo con el mas
próximo que contenga el arco de menor costo o distancia.
1
• Completar de red interactivamente, identificando el nodo no
conectado que esta mas cerca o menos costoso de algunos de
2 los nodos conectados.
• Agregar este nodo al conjunto de nodos conectado. En caso de
empate este se rompe en forma arbitraria.
3
39. Encontrar el árbol recubridor mas
corto.
Ser un grafo conexo.
Ser un grafos sin ciclos.
Tener todos los arcos etiquetados.
50. Es una pareja
ordenada
G(V,E)
¿Qué es un grafo?
V2
V: Es un conjunto de Vértices
V3
V1
E: Es un conjunto de Parejas de
distintos vértices, entre los cuales
se trazan las aristas V4
E={(V1,V2), (V2,V3), (V3,V4), (V4,V1), (V2,V4)}
51. ALGORITMO DE DIJKSTRA
Resuelve el problema de encontrar el camino mínimo entre un
vértice dado, el llamado inicial, y todos los restantes del grafo.
82. CODIFICACION:
La palabra código ya nos indica algo “secreto”
Codificar un texto
Reemplazarlo con códigos que solo nosotros conozcamos
Para obtener el texto original
Se debe codificar
En el envío de información es muy popular
Para ocultar la información y volver el envio mas seguro.
82
83. UNA FORMA:
Códigos binarios
Que represente cada letra del alfabeto.
Si el alfabeto esta conformado por
A,B,C, y D
Podemos codificar cada letra con
010 100 , 000, 111
La cadena ABACCDA
010100010000000111010
83
84. ANALIZANDO:
Ventajas
Es muy fácil codificar y decodificar.
Solo reemplazar.
Cada código tiene la misma longitud.
Desventajas
La cadena resultante es muy larga comparada con el mensaje.
Como se podrá reducir la cadena codificada?
84
85. MEJORAR LA CODIFICACION:
A es la letra que mas se repite en el mensaje,
Debería tener un código pequeño(menos espacio)
La letra que menos aparece
Puede tener un codigo mas grande.
E código de cada letra
Puede depender de la frecuencia de la letra de la cadena
O el idioma
85
86. UN EJEMPLO
ABCD
Se le puede asignar 0, 110, 10 ,111
Entonces ABACCDA es 011001010111
Ya!, mas pequeña
Codificar es super facil
Y Decodificar???
86
87. DECODIFICANDO
0 110 0 10 10 111 A 0
A B A C C D B 110
C 10
Para decodificar hay que elegir. El
valor del codigo depende del valor D 111
siguiente: 1 o 0
87
88. CONCLUSION A 0
B 110
0110 01010111
C 10
Para decodificar: D 111
Escoger siguiente bit.
Determinar codigo entre BD
Si es 0 : B
Si no, es D
Arbol de Huffman
Si logro generar un arbol asi,podre obtener
los codigos:
Codificar y luego podre volver a la
informacion inicial: decodificar
88
89. A 3
CONSTRUIR EL ARBOL
Necesitamos la frecuencia de cada letra en la cadena B 1
Notemos que c/letra es una hoja
C 2
A B C D
D 1
3 1 2 1
Empecemos con las dos letras de menor frecuencia código de cada letra
Se unen y crean un nuevo símbolo.
La frecuencia del nuevo es la suma de los dos ant.
Se desechan los dos anteriores.
El grupo de letras se vuelve mas pequeño.
Todo se repite hasta que no queden mas letras ind.
89
90. CONSEGUIR LOS CODIGOS
Es una busqueda binaria.
Los codigos se van acumulando a medida que se busca la letra.
Las letras siempre son hojas.
Si letra buscada esta.
En el subarbol izquierdo, se acumula un 0 o
En el subarbol derecho , se acumula un 1
A 0
B 110
C 10
D 111 90