B2 Tema 3 Algoritmos Flashcards
Dí métodos de expresión de algoritmos.
- Diagramas de flujo
- Pseudocódigo
- Sistemas Formales (Matemáticas)
Técnicas de Análisis y Diseño de algoritmia
- Divide y vence Recursividad (Top-Down)→ Reduce el problema al caso más pequeño solucionable y lo aplica al caso general.
- Voraces (Opción óptima en cada caso)→ Búsqueda heurística
- Probabilísticos→ Se toman decisiones al azar. Las Vegas, MonteCarlo.
- Backtracking→ Recursividad. No conoce una solución concreta, así que explora todo el árbol, para dar con la adecuada. Es el caso de prueba y error. Casos resueltos: Sudoku, Las ocho reinas.
- Ramificación y poda→ Backtracking mejorado. Marca los sitios ya visitados.
- Programación dinámica. (Bottom-up)→ Al revés de TOP-down. Va resolviendo casos pequeños y los va agrupando. Usa MEMOIZACIÓN.
- Paralelos→ Puede ser ejecutado por partes en el mismo espacio de tiempo, por diferentes máquinas y luego unir las partes y obtener la solución.
- Determinísticos→ Cuando la respuesta se puede conocer a partir de los datos de entrada.
- No Determinísticos→ Cuando no son Deterministicos
- Metaheurísticas→ Método heurístico.
¿Qué es la COMPLEJIDAD ASINTÓTICA ESPACIAL de un algoritmo?
Es la cantidad de recursos de tiempo y almacenamiento que usa un algoritmo.
Se representa en terminos de Big O notation.
Ejemplo: O (1), O (log N), O (N), O (NlogN), O (N2)…. etc
Dí ejemplos de algoritmos voraces:
- Alg. de Kruskal.
- Alg. de Prim.
- Alg. de Dijkstra.
- Alg. de triangulación voraz.
- Alg. para la ubicación óptima.
¿Qué es un algoritmo Voraz?
También conocido como GOLOSO, ÁVIDO, DEVORADOR O GREEDY.
Es una estrategia por la cual, se elige la mejor solución local, con la esperanza de poder aplicarla al problema global.
De forma clara, hace lo que le parece mejor en cada momento, resolviendo el caso menor que puede resolver, sin importar lo que queda del problema aún por solucionar.
¿En qué consiste DIVIDE y VENCE?
Consiste en dividir el problema en otros más pequeños, hasta llegar al problema pequeño que podemos resolver y de ahí vamos aplicando la solución, pero ahora en orden ascendente.
Dí cuatro algoritmos Probabilísticos:
- Numéricos - Devuelven un resultado aproximado, normalmente un intervalo.
- Monte Carlo - Siempre devuelven una solución, aunque no sea correcta.
- Las Vegas - Nunca devuelve una solución errónea, a costa de llegar a no funcionar.
- Sherwood - Siempre devuelven una respuesta, la cual es forzosamente correcta.
¿Qué es la Aguja de Buffon?
Algoritmo numérico
¿Qué tipos de clasificaciones hay para los algoritmos de ordenación?
-
Por ubicación:
/ Internos (se guardan en memoria)
/ Externos (se guardan en un archivo) -
Por el tiempo:
/ Natural (tarda lo mínimo si la entrada está ordenada)
/ No natural (tarda lo mínimo si la entrada está inversamente ordenada) - Estable: (mantiene el orden de los elementos con claves iguales) Ejemplo de un array: 1, 3, 5, 3, 7. Al haber dos “3”, los reordenará, pero respetando cual es primero y cual es segundo.
Dí algoritmos de ordenación:
- Exchange sorts - Intercambio→ Mueven datos de una lado para el otro: Burbuja, Quicksort, Cocktail, Burbuja Bidireccional.
- Selection sorts - Selección→ Ordena desde el menor, que lo coloca a la izquierda y busca el siguiente menor que va después. Un ejemplo es Heapsort.
- Insertion sorts - Inserción→ La forma natural de ordenar del ser humano: Shellsort. Usando un GAP entre los valores.
- Merge sorts - Divide en sublistas como casos tribiales (Los que si puede resolver directamente). Resuelve el caso tribial y va mezclando sublistas.
- Distribution sorts - No comparativos→ van colocando los datos en otra zona de la memoria siguiendo una estrategia. Averiguamos el mayor valor y creamos una lista a 0, desde 0 al mayor valor y vamos contando cuantas veces se repite cada campo:Bucketsort o Binsort/Radixsort
- Stupid sort - “Gnome” → Como el burbuja, pero ampliando el intercambio.
- Quicksort - Elemento PIVOTEhttps://youtu.be/ZHVk2blR45Q
Dí nombres de algoritmos de Intercambio:
-
Burbuja→Dos elementos contiguos. Intercambia su posición, el de mayor valor pasa a la derecha y el menor a la izquierda. Sus casos estandar suelen ser O(N2), pero el caso mejor sería O(N).
http: //lwh.free.fr/pages/algo/tri/tri_bulle_es.html -
Quicksort→ PIVOTE. Caso estandar O (n log n). Su caso peor sería O(N2)
http: //lwh.free.fr/pages/algo/tri/tri_rapide_es.html -
Cocktail (burbuja bidireccional)→ Como el burbuja, pero al llegar al final, hace el recorrido a la inversa.
http: //lwh.free.fr/pages/algo/tri/tri_shaker_es.html
Dí nombres de algoritmos de selección:
- Heapsort (montículos)→En un árbol, cada padre puede ser mayor que sus dos hijos o menor, según si es MaxHeap o MinHeap.
Dí algoritmos de Inserción:
- Shell sort -> Comparamos valores, con un espacio entre ellos grande y los ordenamos. Luego reducimos el espacio y los volvemos a ordenar y así hasta que llegamos al espaciado mínimo y ya en ese caso, hacemos un ordenamiento por inserción, normal. https://youtu.be/ddeLSDsYVp8
- ÁRBOL BINARIO
Dí nombres de algoritmos de distribución / no comparativos:
- Bucket sort: Se ordena por casilleros con diferentes rangos.
-
Radix sort: Hay dos versiones:
/ LSD -> Least Significant Digit.
/ MSD -> Most Significant digit.
Crea Buckets o Colas, donde va ordenando los dígitos.
Tipos de algoritmos según su función.
- Ordenamiento
- Búsqueda