Sei sulla pagina 1di 18

DISEO DE

ALGORITMOS
Ren Fabin Ziga Muoz
fabianmunoz@unicauca.edu.co
2016

ALGORITMO DE FUERZA BRUTA


La ruta mas corta.
La solucin ms obvia: Evaluar todas
las posibles rutas para luego
compararlas y encontrar la ms
corta.
Enumerar los candidatos
La implementacin se complica al
tener que evaluar muchos nodos
(crece exponencialmente).

ALGORITMO DE FUERZA BRUTA


La ruta mas corta.
La solucin ms obvia: Evaluar todas
las posibles rutas para luego
compararlas y encontrar la ms
corta.
Enumerar los candidatos
La implementacin se complica al
tener que evaluar muchos nodos
(crece exponencialmente).

ALGORITMO DE FUERZA BRUTA


Un algoritmo de fuerza bruta para encontrar eldivisorde
unnmero naturalnconsistira en enumerar todos los
enteros desde 1 hastan, chequeando si cada uno de
ellos dividensin generar resto.
Otro ejemplo de bsqueda por fuerza bruta, en este caso
para
solucionar
el
problema
delas
ocho
reinas(posicionar ochoreinasen el tablero deajedrezde
forma que ninguna de ellas ataque al resto), consistira
en examinar todas las combinaciones de posicin para
las 8 reinas (en total 64!/56! = 178.462.987.637.760
posiciones diferentes), comprobando en cada una de
ellas si las reinas se atacan mutuamente.

ALGORITMO DE FUERZA BRUTA


La bsqueda por fuerza bruta se usa habitualmente
cuando el nmero de soluciones candidatas no es
elevado, o bien cuando ste puede reducirse
previamente usando algn otromtodo heurstico.
Es un mtodo utilizado tambin cuando es ms
importante una implementacin sencilla que una
mayor rapidez. Este puede ser el caso en aplicaciones
crticas donde cualquier error en el algoritmo puede
acarrear serias consecuencias; tambin es til como
mtodo "base" cuando se desea comparar el
desempeo de otros algoritmos metaheursticos. La
bsqueda de fuerza bruta puede ser vista como el
mtodo metaheurstico ms simple.

ALGORITMO DE FUERZA BRUTA


Grafos
Creacin de nodos
Asignacin de rutas entre dos puntos
Distancia entre cada punto

Arreglos
Comparacin de patrones
Repeticiones sucesivas
Consume recursos y tiempo

ALGORITMO DE FUERZA
BRUTA
Algoritmos En C++. Robert Sedgewick

DISEO DE ALGORITMOS - Algoritmos


de Fuerza Bruta.
Algoritmos En C++. Robert Sedgewick

ALGORITMO DE FUERZA BRUTA


//Algoritmo para resolver el problema de bsqueda de cadenas
//Entrada:
// X: Cadena de texto
// Y: Cadena a buscar dentro de la cadena X
// n: Longitud de la cadena X
// m: Longitud de la cadena Y.
//Valor de retorno:
//
posicin en la cual se encuentra Y dentro de X
//
-1 si Y no se encuentra dentro de X.
algoritmo subcadenaFB(X,Y,n,m)
para i=1 hasta n m
j=0
mientras j <= m and X[i+j] = Y[j]
j=j+1
fin_mientras
si j = m retornar i
fin_para
retornar -1
fin_algoritmo

ALGORITMO DE FUERZA
BRUTA
Deitel Como programar en Java -

Ejercicio en clase

(Triples de Pitgoras) Un tringulo rectngulo puede tener lados


cuyas longitudes sean valores enteros.
El conjunto de tres valores enteros para las longitudes de los lados
de un tringulo recto se conoce como triple de Pitgoras (o triples
pitagricas).
Las longitudes de los tres lados deben satisfacer la relacin que
establece que la suma de los cuadrados de los lados es igual al
cuadrado de la hipotenusa.
Escriba una aplicacin para encontrar todos los triples de Pitgoras
para lado1, lado2 y la hipotenusa, que no sean mayores a 500.
Use un ciclo for triplemente anidado para probar todas las
posibilidades.

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;

Potrebbero piacerti anche