tipos algoritmos - Mi curso JAVA & CO

Anuncio
TIPOS ALGORITMOS
METODOLOGIA
~1~
TIPOS DE ALGORITMOS
Algoritmos Voraces (Greedy)
Seleccionan los elementos
Un algoritmo voraz (también conocido como ávido, devorador o goloso) es aquel que,
para resolver un determinado problema, sigue una metaheurística consistente en elegir la
opción óptima en cada paso local con la esperanza de llegar a una solución general óptima.
Este esquema algorítmico es el que menos dificultades plantea a la hora de diseñar y
comprobar su funcionamiento. Normalmente se aplica a los problemas de optimización.
Algoritmos Probabilísticos
Como el ejemplo de pi-montecarlo o el de Fermat vistos en clase
Un algoritmo probabilista (o probabilístico) es un algoritmo que basa su resultado en
la toma de algunas decisiones al azar, de tal forma que, en promedio, obtiene una buena
solución al problema planteado para cualquier distribución de los datos de entrada. Es
decir, al contrario que un algoritmo determinista, a partir de unos mismos datos se
pueden obtener distintas soluciones y, en algunos casos, soluciones erróneas.
Existen varios tipos de algoritmos probabilísticos dependiendo de su funcionamiento,
pudiéndose distinguir:
Algoritmos numéricos, que proporcionan una solución aproximada del problema.
Algoritmos de Montecarlo, que pueden dar la respuesta correcta o respuesta
erróneas (con probabilidad baja).
Algoritmos de Las Vegas, que nunca dan una respuesta incorrecta: o bien dan la
respuesta correcta o informan del fallo.
Algoritmos deterministas/No deterministas
El determinista se ejecuta paso a paso
El no determinista va ramificando en árboles y por tanto la ejecución ya no es lineal. Además
ocurre que las ramas se ejecutan simultáneamente.
Un algoritmo determinista es un algoritmo que, en términos informales, es
completamente predictivo si se conocen sus entradas. Dicho de otra forma, si se conocen las
entradas del algoritmo siempre producirá la misma salida, y la máquina interna pasará por la
misma secuencia de estados. Este tipo de algoritmos ha sido el más estudiado durante la
historia y por lo tanto resulta ser el tipo más familiar de los algoritmos, así como el más
práctico ya que puede ejecutarse en las máquinas eficientemente.
TIPOS ALGORITMOS
METODOLOGIA
~2~
Algoritmos de Divide y Vencerás.
Partiendo de un problema de gran tamaño lo abordamos empezando por una parte
pequeña y al unir la resolución de varias partes pequeñas tenemos la solución de una parte
cada vez mayor hasta completar el todo.
Algoritmo BackTracking
Aquí vamos probando un camino y si vemos que no nos sirve volvemos atrás hasta que
obtenga un camino que nos lleva a la solución.
Esto lo utilizamos en el ejemplo de las 8 reinas y en el del sudoku
En su forma básica, la idea de backtracking se asemeja a un recorrido en profundidad
dentro de un grafo dirigido. El grafo en cuestión suele ser un árbol, o por lo menos no contiene
ciclos. Sea cual sea su estructura, existe sólo implícitamente. El objetivo del recorrido es
encontrar soluciones para algún problema. Esto se consigue construyendo soluciones parciales
a medida que progresa el recorrido; estas soluciones parciales limitan las regiones en las que
se puede encontrar una solución completa. El recorrido tiene éxito si, procediendo de esta
forma, se puede definir por completo una solución. En este caso el algoritmo puede bien
detenerse (si lo único que se necesita es una solución del problema) o bien seguir buscando
soluciones alternativas (si deseamos examinarlas todas). Por otra parte, el recorrido no tiene
éxito si en alguna etapa la solución parcial construida hasta el momento no se puede
completar. En tal caso, el recorrido vuelve atrás exactamente igual que en un recorrido en
profundidad, eliminando sobre la marcha los elementos que se hubieran añadido en cada fase.
Cuando vuelve a un nodo que tiene uno o más vecinos sin explorar, prosigue el recorrido de
una solución.
Algoritmo Ramificación y poda
Muchas veces los problemas se representan como árboles
Como por ejemplo en el caso de un ajedrez, para cada movimiento tengo una ramificación de
posibilidades y yo le doy una valoración a cada ramificación, así puedo “podar” a los casos
menos importantes
Es una variante del Backtracking mejorado sustancialmente.
La técnica de Ramificación y poda se suele interpretar como un árbol de soluciones,
donde cada rama nos lleva a una posible solución posterior a la actual. La característica de esta
técnica con respecto a otras anteriores (y a la que debe su nombre) es que el algoritmo se
encarga de detectar en qué ramificación las soluciones dadas ya no están siendo óptimas, para
«podar» esa rama del árbol y no continuar malgastando recursos y procesos en casos que se
alejan de la solución óptima.
TIPOS ALGORITMOS
METODOLOGIA
~3~
Algoritmos Heurísticos
La función heurística permite reconocer cuál es el camino más recomendable
Una heurística es un algoritmo que abandona uno o ambos objetivos; por
ejemplo, normalmente encuentran buenas soluciones, aunque no hay pruebas de que la
solución no pueda ser arbitrariamente errónea en algunos casos; o se ejecuta
razonablemente rápido, aunque no existe tampoco prueba de que siempre será así. Las
heurísticas generalmente son usadas cuando no existe una solución óptima bajo las
restricciones dadas (tiempo, espacio, etc.), o cuando no existe del todo.
A menudo, pueden encontrarse instancias concretas del problema donde la
heurística producirá resultados muy malos o se ejecutará muy lentamente. Aún así, estas
instancias concretas pueden ser ignoradas porque no deberían ocurrir nunca en la
práctica por ser de origen teórico. Por tanto, el uso de heurísticas es muy común en el
mundo real.
Algoritmos Genéticos
Son llamados así porque se inspiran en la evolución biológica y su base genéticomolecular. Estos algoritmos hacen evolucionar una población de individuos sometiéndola a
acciones aleatorias semejantes a las que actúan en la evolución biológica (mutaciones y
recombinaciones genéticas), así como también a una Selección de acuerdo con algún criterio,
en función del cual se decide cuáles son los individuos más adaptados, que sobreviven, y
cuáles los menos aptos, que son descartados.
Descargar