Documente Academic
Documente Profesional
Documente Cultură
ALGORITMOS
Ren Fabin Ziga Muoz
fabianmunoz@unicauca.edu.co
2016
Arreglos
Comparacin de patrones
Repeticiones sucesivas
Consume recursos y tiempo
ALGORITMO DE FUERZA
BRUTA
Algoritmos En C++. Robert Sedgewick
ALGORITMO DE FUERZA
BRUTA
Deitel Como programar en Java -
Ejercicio en clase
ALGORITMO DE FUERZA
BRUTA
Deitel Como programar en Java - Ejercicio en clase
public class UsaDeitel_5_21 {
public static void main(String
args[]) {
Deitel_5_21 miObjeto = new
Deitel_5_21();
miObjeto.Pitagoras();
}
public
class Deitel_5_21 {
}
public int Tamano = 500;
public void Pitagoras()
{
System.out.print("\n Este programa prueba e imprime todas las ternas");
System.out.printf(" pitagoricas para numeros no mayores que %d ", Tamano);
System.out.print(" mediante la fuerza bruta.\n");
for ( int i = 1; i <= Tamano; i++ )
for ( int j = 1; j <= Tamano; j++ )
for ( int k = 1; k <= Tamano; k++ )
{
if ( i*i == j*j + k*k )
System.out.printf("%3d\t%3d\t%3d\n", i, j, k); }
}
}
ALGORITMO VORAZ
Avido,devoradorogoloso
Sigue unaheursticaconsistente en elegir
la opcin ptima en cada paso local con la
esperanza de llegar a una solucin general
ptima.
Este esquema algortmico es el que menos
dificultades plantea a la hora de disear y
comprobar su funcionamiento.
Normalmente se aplica a losproblemas de
optimizacin.
ALGORITMO VORAZ
Dado un conjunto finito de entradas, un
algoritmo
voraz
devuelve
un
conjunto(seleccionados) tal quey que
adems cumple con las restricciones del
problema inicial.
A
cada
conjuntoque
satisfaga
las
restricciones
se
le
suele
denominar
prometedor, y si este adems logra que la
funcin objetivo se minimice o maximice
(segn
corresponda)
diremos
quees
unasolucin ptima.
ALGORITMO VORAZ
Habitualmente, los elementos que intervienen son:
1. Un conjunto o lista decandidatos(tareas a procesar, vrtices del
grafo, etc)
2. Un conjunto dedecisionesya tomadas (candidatos ya escogidos)
3. Unafuncinque detemina si un conjunto de candidatos es
unasolucinal problema (aunque no tiene por qu ser la ptima)
4. Unafuncinque determina si un conjunto escompletable, es
decir, si aadiendo a este conjunto nuevos candidatos es posible
alcanzar una solucin al problema, suponiendo que esta exista
5. Unafuncinde seleccin que escoge el candidato an no
seleccionado que es msprometedor
6. Unafuncin objetivoque da el valor/coste de una solucin
(tiempo total del proceso, la longitud del camino, etc) y que es la
que se pretende maximizar o minimizar;
ALGORITMO VORAZ
Candidatos
Funcin
objetivoque da el
valor/coste de una
solucin
Decisiones ya
tomadas
(candidatos ya
escogidos)
Escoge el candidato
an no seleccionado
que es
msprometedor
Conjunto de
candidatos es
unasolucinal
problema
Conjunto
escompletable
ALGORITMO VORAZ
Los algoritmos voraces proceden por pasos.
1. Inicialmente el conjunto de candidatos es vaco.
2. En cada paso, se intenta aadir al conjunto el mejor
candidato de los an no escogidos, utilizando la
funcin de seleccin.
3. Si el conjunto resultante no es completable, se
rechaza el candidato y no se le vuelve a considerar en
el futuro.
4. En caso contrario, se incorpora al conjunto de
candidatos escogidos y permanece siempre en l.
5. Tras cada incorporacin se comprueba si el conjunto
resultante es una solucin del problema.
ALGORITMO VORAZ
ALGORITMO VORAZ
Los elementos del esquema anterior se
convierten en:
Candidato: conjunto finito de monedas de, por
ejemplo, 1, 5, 10 y 25 unidades, con una moneda
de cada tipo por lo menos;
Solucion: conjunto de monedas cuya suma es la
cantidad a pagar;
Completable: la suma de las monedas
escogidas en un momento dado no supera la
cantidad a pagar;
Funcion de seleccion: la moneda de mayor
valor en el conjunto de candidatos an no
considerados;