B2-T3_Algoritmos Flashcards
¿Cuál es una de las condiciones principales que debe de tener un algoritmo?
Debe ser finito
¿A qué se refiere “Divide y vence”?
A una técnica de diseño de algoritmos “top-down”.
Que consiste en ir divididiendo el problema en otros más pequeño, hasta que podamos solucionar varios de estos trocitos para juntarlos y dar una solución global.
¿Que optimizaciones se pueden aplicar a la técnica de “Divide y vence”?
- Programación dinámica
- Memoizacion de funciones
¿En qué consiste la técnica de programación dinámica?
Es una técnica de diseño de algoritmos “bottom-up ó top-bottom+memoización”, es decir, lo contrario a “Divide y Venceras”.
En combinar las soluciones de pequeños subproblemas óptimos para alcanzar la solución global.
Nombre dos tipos de algoritmos probabilísticos, y ¿en qué consiste?
- Montecarlo
- Las vegas
Introduce una variable aleatoria y del promedio de sus resultados al azar obtiene la solución al problema planteado. Al contrario que el algoritmo “Determinista”.
¿Que mide la expresión O(n)?
La complejidad asintótica (espacial o temporal) de un algoritmo. Es una cota superior.
Se denomina: orden LINEAL de 1º Orden. O(n^2): Orden CUADRÁTICO de 2º Orden, O(n^3)…
¿Qué tipo de algoritmo es HeapSort? y, ¿en qué consiste?
De selección.
Consiste en meter todos los elementos del array en un monticulo con forma de árbol, colocando en la raiz el valor máximo (MAX-HEAP) ó mínimo (MIN-HEAP).
Y, vamos extrayendo la raiz, a la que vamos colocando en nuestro elemento de ordenación, reconstruyendose el monticulo con una nueva raiz y así sucesivamente…
Nombre dos algoritmos de ordenación que no se basan en realizar comparaciones entre sus elementos:
Son algoritmos de distribución:
* Bucket Sort
* Radix Sort
Ordenan colocando los datos en diferentes zonas de la memoria con algún sistema lógico.
¿Qué algoritmo de ordenación se basa en calcular el digito más o menos significativo (MSD ó LSD) de cada elemento?
Radix Sort.
Es un algoritmo de Distribución, en el que vamos ordenando en buquets o colas en base al dígito más significativo (MSD) ó el dígito menos significativo (LSD).
Ej. LSD: Organiza por el último dígito de la cifra, luego sigue por el penúltimo, luego el siguiente,… y así va rellenando los buquets o colas.
¿Qué es un algoritmo estable?
Aquel que mantiene el orden relativo original de los registros que tengan la misma clave, marcandolas para diferenciarlas.
Ej: 10, 3, 1, 7, 8, 6, 3 => 1, 3´, 3”, 6, 7, 8, 10.
¿Cual es el caso peor para QuickSort y porque? ¿En qué consite?
O(n2) si el pivote (Xi) se elige mal y no particiona bien el array.
Se ordena colocando los valores más pequeños del pivote (Xi) a la izquierda y los más grandes a la derecha. Se repite el proceso en esos sub-arrays, y, así, sucesivamente…
¿En que consite el agoritmo de Inserción Binaria?
Busca el lugar que corresponde a Xi dentro del subarray, que ya esta ordenado, pero la búsqueda es binara en lugar de una búsqueda secuencial (de uno en uno), para insertar el elemento Xi en la parte izquierda del array, desplanzando todos los elementos necesarios para hacerle hueco.
El proceso se repite desde el segundo hasta el n-ésimo elemento.
Ordene de forma creciente las siguientes complejidades O(n!) , O(2n), O(nlog(n)), O(n2)
O(nlog(n)) → O(n2) → O(2n) → O(n!)
¿Qué es un algortimo y cómo se analiza?
Es una receta o método con una serie de pasos FINITOS, que son aplicados secuencialmente (uno tras otro) hasta dicho FIN. En el caso de un problema, lo resolverían en un número FINITO de pasos.
Hay 2 formas de analizarlo: TIEMPO y ESPACIO.
Maneras de expresar los algoritmos:
- DIAGRAMA DE FLUJO: con sus características simbolicas (rombos, flechas, …)
- PSEUDOCODIGO: lenguaje inventado.
- SISTEMAS FORMALES: matemáticas.