ØAlgoritmo voraz: El algoritmo
más sencillo que puede ocurrírsenos
es, partiendo de un agregado solución vacío, recorrer el agregado de entrada, y
añadir el elemento considerado en cada paso al agregado solución siempre que se
cumplan las condiciones derivadas de la propiedad que se apuntó.
ØAlgoritmo divide y vencerás : Un segundo
algoritmo que puede ocurrírsenos es dividir el agregado en el número de partes
que queramos, siempre que el tamaño sea superior a un tamaño umbral que admitamos. Obtener la solución
de cada parte y combinar dichas soluciones para construir la solución al
agregado completo. Para el caso de que el tamaño sea inferior o igual a umbral, la solución se obtiene mediante
el algoritmo anterior (o cualquier otro conocido que no divida el agregado en
partes).
ØAlgoritmo de programación dinámica: Un tercer algoritmo que puede ocurrírsenos
es, a partir de la de la relación que establece cómo combinar las soluciones
para distintas partes de los datos de entrada, establecer los casos en que
puede obtenerse la solución sin utilizar dicha relación (casos base), y
partiendo de dichos casos, guardar la solución para los mismos en una matriz de
registros (multidimensional), y reconstruir la solución al problema utilizando
los valores almacenados en la matriz de registros.
ØAlgoritmo back
tracking: Un cuarto algoritmo que puede
ocurrírsenos es, interpretando al agregado como un conjunto, obtener todos los
subconjuntos del conjunto (cuyo número es 2n), hasta encontrar uno que cumpla
con las condiciones impuestas por el problema. Es decir, se trata de realizar
una búsqueda exhaustiva. Llamamos árbol de expansión al árbol formado por todas
las posibilidades que se estudian. En cada hoja hay una posible solución.En el problema de encontrar el conjunto de
pares, nos quedaremos con el subconjunto que tenga el tamaño máximo y en el que
todos sean pares.
No hay comentarios:
Publicar un comentario