Documentos de Académico
Documentos de Profesional
Documentos de Cultura
ALGORITMOS VORACES
Permiten construir soluciones razonables pero suboptimas
Se usan p problemas de optimización con información incompleta
Por ejemplo, con esta estrategia se atiende 1ero a los clientes q tengan menor
tiempo de atención
En contraste a Dividir y Conquistar:
Es más sencillo proponer voraces, el análisis de tiempo es más fácil, pero es
difícil establecer correctitud
DIVIDIR Y CONQUISTAR
Dividir I en sub-instancias I1,..lk más pequeñas.
Resolver recursivamente las k sub-instancias.
Combinar las soluciones para las k sub-instancias para obtener una solución
para la instancia original
Si se quiere buscar los pesos máximos, pero si hay conflicto con soluciones
intermedias, no está claro cómo resolverlo con dividir y conquistar.
BACKTRACKING
Técnica p recorrer sistemáticamente todas las posibles configuraciones de un espacio
asociado a soluciones candidatas de un problema computacional. Se usa un vector p
representar una solución. Se extienden las soluciones candidatas agregando un
elemento más al final del vector ‘a’, las nuevas soluciones candidatas son sucesoras de
la anterior.
Ejemplo: Problema de las 9 reinas. Las combinaciones de su disposición son ( 64 c 8 )
–combinatoria.
PROGRAMACION DINAMICA
Problemas de optimización-> varias soluciones, elegimos la + optima. El problema se
divide en subproblemas menores, y luego se combinan las soluciones obtenidas p
generar la solución original.
EL ejemplo es el de la multiplicación de matrices.
TIEMPO DE EJECUCION
Hay dos maneras de estimar el tiempo de ejecución:
Análisis empírico: se mide el tiempo de respuesta para distintos juegos de
datos. Afectada x la potencia del equipo. Presentan variaciones s/ características
de los datos de entrada
Análisis teórico: se calculan el número de comparaciones y asignaciones que
efectúa el algoritmo
Factores que influyen en el uso de recursos
Recursos computacionales:
◦ diseño del algoritmo
◦ Complejidad del problema (tamaño de las entradas)
◦ Hardware (arquitectura, MHz, MBs…)
◦ Calidad del código
◦ Calidad del compilador (optimizaciones)
Recursos no computacionales:
◦ Complejidad del algoritmo
◦ Disponibilidad de bibliotecas reutilizables