B2-T3_Algoritmos Flashcards

1
Q

¿Cuál es una de las condiciones principales que debe de tener un algoritmo?

A

Debe ser finito

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

¿A qué se refiere “Divide y vence”?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

¿Que optimizaciones se pueden aplicar a la técnica de “Divide y vence”?

A
  • Programación dinámica
  • Memoizacion de funciones
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

¿En qué consiste la técnica de programación dinámica?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Nombre dos tipos de algoritmos probabilísticos, y ¿en qué consiste?

A
  • 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”.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

¿Que mide la expresión O(n)?

A

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)…

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

¿Qué tipo de algoritmo es HeapSort? y, ¿en qué consiste?

A

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…

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Nombre dos algoritmos de ordenación que no se basan en realizar comparaciones entre sus elementos:

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

¿Qué algoritmo de ordenación se basa en calcular el digito más o menos significativo (MSD ó LSD) de cada elemento?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

¿Qué es un algoritmo estable?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

¿Cual es el caso peor para QuickSort y porque? ¿En qué consite?

A

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…

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

¿En que consite el agoritmo de Inserción Binaria?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Ordene de forma creciente las siguientes complejidades O(n!) , O(2n), O(nlog(n)), O(n2)

A

O(nlog(n)) → O(n2) → O(2n) → O(n!)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

¿Qué es un algortimo y cómo se analiza?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Maneras de expresar los algoritmos:

A
  • DIAGRAMA DE FLUJO: con sus características simbolicas (rombos, flechas, …)
  • PSEUDOCODIGO: lenguaje inventado.
  • SISTEMAS FORMALES: matemáticas.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Un algoritmo se divide en dos partes ANALISIS y DISEÑO, define la primera:

A

1.- ANÁLISIS: realiza un estudio de un algoritmo para ver como se comporta ESPACIAL (consumo en memoria) y TEMPORALMENTE (velocidad). Este estudio se expresa según la complejidad ASINTOTA de dicho algoritmo (Big O notation), que te indica en que posición del orden de complejidad se encuentra en concreto.

17
Q

Un algoritmo se divide en dos partes ANALISIS y DISEÑO, define la segunda:

A

2.- DISEÑO:
* Divide y venceras (Top-Down)
* Programación dinámica (Bottom-Up=>lo contrario al anterior)
* Voraces (GREEDY=codicioso)
* Probabilisicos (Montecarlo y Las Vegas)
* BackTracking (explora el árbol de soluciones solución x solución)
* Ramificación y Poda (optimiza el árbol de soluciones para NO repetir pruebas)

18
Q

¿Qué es la complejidad temporal: Big O notation?

A

Representa una asintota superior respecto del tiempo que tarda un algortimo, tipificando, con curvas de tiempo, el rendimiento del algoritmo.
*O: cota superior.
*La expresión O(n): mide la complejidad asintota (espacial o temporal) de un algoritmo.

19
Q

Pon un ejemplo de un Orden de Complejidad Asintotica:

A

O(1)=Orden constante->O(logn)=Orden logaritmica->O(n)=Lineal o de 1º orden->O(n^2)=cuadrática o 2º orden->O(n^c)=Orden potencial->O(c^n)=Orden exponencial->O(n!)=Orden factorial->O(N^n)=Potencial exponecial.

  • Para mejorar estos ordenes y, por ejemplo, convertir un O(n!) en O(n^c), se usan las tecnicas de diseño.
20
Q

Define las técnicas de diseño Voraces:

A

Escogen la opción más óptima en cada paso del algoritmo, por eso lo de “voraz”, porque van comiendo la mejor en cada paso.
Ej: GREEDY (codicioso)

21
Q

Define el algoritmo LINEAL ó de 1º Orden O(n):

A

El eje “x” e “y” crecen proporcionalmente.

22
Q

Define el algoritmo CUADRÁTICO ó de 2º Orden O(n^2):

A

Tiene una curva más pronunciada que el de 1º Orden O(n), porque al aumentar el eje de la “x” aumenta en mayor medida el de la “y”.

23
Q

Explica la clasificación de los algoritmos de ordenación:

A
  • INTERNOS (memoria) / EXTERNOS (fichero)
  • NATURAL (tarda lo mínimo al darse cuenta si los datos estan ordenados)
  • ESTABLE (no desordena las claves iguales, sólo las marca para difernciarlas)
24
Q

¿En qué consiste la MEMOIZACIÓN?

A

Evita las repeticiones recursivas, porque almacena los resultados para devolverlos directamente cuando se necesiten, sin tener que repetir todo el proceso.

25
Q

Define el tipo de algortimo de ordenación EXCHANGE SORTS:

A

Intercambian o mueven datos de un lado para otro, comparando e intercambiando continuamente.
Ej: BURBUJA, QuickSort, COCKTAIL ó BURBUJAS BI-DIRECCIONAL.

26
Q

Define el tipo de algortimo de ordenación SELECTION SORTS:

A

Seleccionan el DATO a introducir en el hueco.
EjemploS:
*SELECCION (selecciona el mínimo y lo coloca en la 1ª posición, luego busca el mínimo a partir de esa 1ª posición y lo coloca el 2º).
* HeapSort (va seleccionando la raiz y reconstruyendo el monticulo, ya sea MIN-SORT ó MAX-SORT)

27
Q

Define el tipo de algortimo de ordenación INSERTION SORTS:

A

Selecciona o busca el HUECO donde insertar el dato a ordenar a través de busqueda LINEAL (secuencialmente) ó BINARIA (Inserción Binaria). Luego, desplaza a todos los elementos necesarios para hacerle hueco.
Ej: INSERCCIÓN y ShellSort.

28
Q

Define el tipo de algortimo de ordenación MERGE SORTS:

A

Primero, divide la lista en sublistas. Y, segundo, va MEZCLANDO las sublistas de a dos, a cuatro,… para obtener una lista ordenados.

Es decir, basado en la técnica divide y vencerás. La idea de los algoritmos de ordenación por mezcla es dividir la matriz por la mitad una y otra vez hasta que cada pieza tenga solo un elemento de longitud.

29
Q

Define el tipo de algortimo de ordenación DISTRIBUTION SORTS:

A

Ordenan colocando los datos en diferentes zonas de la memoria con algún sistema lógico. Pero, NO se basan en comparaciones.
Ej: BucketSort ó BinSort, y RadixSort.

30
Q

¿Qué hace el algoritmo BURBUJA de tipo “Exchange Sort”?

A

Vamos desplazando el número más grande que nos encontramos a base de comparaciones e intercambios con sus adyacentes hacia la derecha (como si fuera una burbuja flotante). Una vez colocado, se empieza con el siguiente y, así, sucesivamente…

31
Q

¿Qué hace el algoritmo BucketSort/BinSort de tipo “Distribution Sort”?

A

1º Distribuye los datos en casillas o urnas.
2º Ordena cada casillero con el agoritmo adecuado (hace interacción con algoritmos + pequeños).
3º Concatena los casilleros.

32
Q

¿Qué 4 tipos de algoritmos de grafos existen?

A

*CAMINO MÍNIMO (Dijstra, Floyd y Bellman-Ford)

*RECUBRIMIENTO MÍNIMO (Prim y Kruscal => utilizados en los STP)

*DE MAXIFICACIÓN DE FLUJO (Ford-Fulkerson)

*DETECTAR COMPONENTES CONEXOS (Tarjan)

33
Q

Enumera los 3 tipos de Algoritmos:

A

FOTO:

34
Q

¿En qué consiste un algoritmo de BackTracking?

A

También conocido como “retroceso” o “vuelta atrás”.

Explorar todas las posibles soluciones de manera sistemática (TODO el árbol de soluciones una a una), descartando las ramas que sabemos que no conducirán a una solución válida y retrocediendo cuando alcanzamos un punto donde no podemos avanzar más.

Esta técnica es particularmente útil para problemas en los que la fuerza bruta sería ineficiente debido a la cantidad de posibles combinaciones a explorar.