Introducción Flashcards
¿Qué tipos de problemas hay?
- Evaluación: determinar el valor de una solución óptima para I
- Optimización: encontrar una solución óptima del problema P para I (de valor mínimo o máximo)
- Decisión: dado un número
k
, responder si existe una solución factible de P para I tal que c(s) <= k (minimización) o c(s) >= k (maximización). - Localización: dado un número k, determinar una solución factible de P para I tal que c(s) <= k
Definición de Algoritmo
Conjunto dfinito de reglas que da una secuencia de operaciones para resolver un tipo específico de problema.
¿Qué 5 requerimientos cumple un algoritmo?
- Finito
- Preciso
- Que tenga entrada (recibe valores iniciales)
- Que tenga salida (emite resultado)
- Eficaz (todo debe poder resolverse por alguien a lapiz y papel.
¿Qué se debe analizar después de los problemas?
- Optimización
- Eficiencia en tiempo
- Eficiencia en espacio
- Características
¿Qué característica tiene un buen algoritmo respecto del tiempo?
Un algoritmo es bueno si su comportamiento en tiempo es proporcional al tamaño de la entrada.
Indique un ejemplo para la complejidad O(1)
Insertar un elemento a una pila
Indique un ejemplo para la complejidad O(logn)
Búsqueda de un elemento en una lista ordenada
Indique un ejemplo para la complejidad O(n)
Sumar n
elementos de una lista
Indique un ejemplo para la complejidad O(n logn)
Ordenar n
elementos utilizando heapSort
Indique un ejemplo para la complejidad O(n^2)
Gale-Shapley de n
parejas
Indique un ejemplo para la complejidad O(n^3)
Mutiplicación naive de matrices n x n
Indique un ejemplo para la complejidad O(2^n)
Problema del viajante de n
ciudades por programación dinámica
Indique un ejemplo para la complejidad O(n!)
Problema del viajante de n
ciudades por fuerza bruta
Cuando se tiene una complejidad O(n!), ¿qué se prefiere?
Se prefiere una complejidad de O(n logn)