Podcast
Questions and Answers
¿Por qué la expresión $n - i + 1$ no puede ser siempre considerada una cota válida?
¿Por qué la expresión $n - i + 1$ no puede ser siempre considerada una cota válida?
- Porque j siempre decrece en cada iteración.
- Porque siempre se mantiene positiva durante el bucle.
- Porque depende de los valores del vector v. (correct)
- Porque j debe ser igual a n para ser válida.
¿Qué condición debe cumplir una función de cota válida?
¿Qué condición debe cumplir una función de cota válida?
- Decrecer en cada iteración. (correct)
- Aumentar en cada iteración.
- Ser mayor que n.
- Ser siempre positiva.
¿Cuál de las siguientes afirmaciones es incorrecta sobre la llamada $f([1, 2, 3, 4, 5], 1, 3)$?
¿Cuál de las siguientes afirmaciones es incorrecta sobre la llamada $f([1, 2, 3, 4, 5], 1, 3)$?
- No tiene valores posibles para a y b que cumplan las condiciones. (correct)
- Devuelve el resultado correcto según las condiciones.
- Cumple las precondiciones.
- Es válida porque k y n son mayores que 0.
¿Cuál es la correcta llamada a la función f que satisface la especificación dada?
¿Cuál es la correcta llamada a la función f que satisface la especificación dada?
¿Qué indica la expresión $b - a + 1 = k$ en el contexto de la función f?
¿Qué indica la expresión $b - a + 1 = k$ en el contexto de la función f?
¿Por qué la llamada a la función f(en un vector, con k < 0) fallaría?
¿Por qué la llamada a la función f(en un vector, con k < 0) fallaría?
Si $n ≤ 4$, ¿cuál es la posible consecuencia de la expresión inicial de la variable i?
Si $n ≤ 4$, ¿cuál es la posible consecuencia de la expresión inicial de la variable i?
¿Cuál de las siguientes afirmaciones describe incorrectamente el intervalo [a, b]?
¿Cuál de las siguientes afirmaciones describe incorrectamente el intervalo [a, b]?
¿Cuál es la respuesta para $T(n)$ cuando $n \leq 1$?
¿Cuál es la respuesta para $T(n)$ cuando $n \leq 1$?
¿Qué se puede deducir sobre $T(n)$ cuando $n > 1$?
¿Qué se puede deducir sobre $T(n)$ cuando $n > 1$?
La generalización se utiliza para:
La generalización se utiliza para:
¿Cuál de las siguientes afirmaciones sobre la mejora de eficiencia de algoritmos recursivos es correcta?
¿Cuál de las siguientes afirmaciones sobre la mejora de eficiencia de algoritmos recursivos es correcta?
¿Qué implica la definición recursiva en algoritmos como quicksort y mergesort?
¿Qué implica la definición recursiva en algoritmos como quicksort y mergesort?
¿Cómo se describe el proceso para obtener versiones recursivas finales a partir de versiones no finales?
¿Cómo se describe el proceso para obtener versiones recursivas finales a partir de versiones no finales?
La relación $T(n) = 2T(n/2) + c'n$ es un ejemplo de cuál concepto?
La relación $T(n) = 2T(n/2) + c'n$ es un ejemplo de cuál concepto?
En el contexto de algoritmos recursivos, ¿cuál es el efecto de no definir adecuadamente el caso base?
En el contexto de algoritmos recursivos, ¿cuál es el efecto de no definir adecuadamente el caso base?
¿Qué relación establece la ecuación $T(n) = T(n-1) + T(n-2) + c_1$?
¿Qué relación establece la ecuación $T(n) = T(n-1) + T(n-2) + c_1$?
¿Cuál es la notación que representa el crecimiento de $T(n)$ según el contenido?
¿Cuál es la notación que representa el crecimiento de $T(n)$ según el contenido?
¿Bajo qué condición termina el algoritmo de búsqueda binaria descrito?
¿Bajo qué condición termina el algoritmo de búsqueda binaria descrito?
¿Qué sucede si la precondición inicial $c
ightarrow f$ se mantiene?
¿Qué sucede si la precondición inicial $c ightarrow f$ se mantiene?
¿Qué conclusión se puede obtener acerca de la función $f(int v[], int x, int c, int f)$?
¿Qué conclusión se puede obtener acerca de la función $f(int v[], int x, int c, int f)$?
¿Qué componente asegura que el algoritmo termina en caso de que $c$ y $f$ sean iguales?
¿Qué componente asegura que el algoritmo termina en caso de que $c$ y $f$ sean iguales?
¿Por qué es incorrecto afirmar que $T(n)
otin O(n ext{ log } n)$?
¿Por qué es incorrecto afirmar que $T(n) otin O(n ext{ log } n)$?
¿Qué condición inicial es necesaria para aplicar el algoritmo de búsqueda binaria eficientemente?
¿Qué condición inicial es necesaria para aplicar el algoritmo de búsqueda binaria eficientemente?
¿Cuál es la ventaja de añadir parámetros adicionales a los algoritmos recursivos?
¿Cuál es la ventaja de añadir parámetros adicionales a los algoritmos recursivos?
¿Qué caracteriza a un algoritmo recursivo cuando se reduce el tamaño del problema por sustracción?
¿Qué caracteriza a un algoritmo recursivo cuando se reduce el tamaño del problema por sustracción?
¿Cuál es el coste para $a = 1$ en un algoritmo recursivo según la fórmula mencionada?
¿Cuál es el coste para $a = 1$ en un algoritmo recursivo según la fórmula mencionada?
¿Cuál de las siguientes afirmaciones sobre los parámetros adicionales en algoritmos de ordenación es correcta?
¿Cuál de las siguientes afirmaciones sobre los parámetros adicionales en algoritmos de ordenación es correcta?
¿Qué sucede si se añade un parámetro acumulador al transformar un algoritmo recursivo no final en uno final?
¿Qué sucede si se añade un parámetro acumulador al transformar un algoritmo recursivo no final en uno final?
En un algoritmo recursivo, ¿qué implica que el coste sea exponental cuando 'a > 1'?
En un algoritmo recursivo, ¿qué implica que el coste sea exponental cuando 'a > 1'?
¿Cuál es el principal propósito de utilizar métodos de ordenación como quicksort y mergesort?
¿Cuál es el principal propósito de utilizar métodos de ordenación como quicksort y mergesort?
¿Qué se puede definir como la característica clave en la transformación de un algoritmo recursivo no final a uno final?
¿Qué se puede definir como la característica clave en la transformación de un algoritmo recursivo no final a uno final?
Cuántos intervalos [a, b] se encuentran en el vector [1, 1, 9, 0, 3, 4, 4] tal que cumplen con la longitud k = 2 y n = 5?
Cuántos intervalos [a, b] se encuentran en el vector [1, 1, 9, 0, 3, 4, 4] tal que cumplen con la longitud k = 2 y n = 5?
Cuál de las siguientes afirmaciones sobre límites es cierta?
Cuál de las siguientes afirmaciones sobre límites es cierta?
Qué condición deben cumplir los valores k y n para ser válidos en la función mencionada?
Qué condición deben cumplir los valores k y n para ser válidos en la función mencionada?
Cuál de las siguientes afirmaciones es incorrecta?
Cuál de las siguientes afirmaciones es incorrecta?
Qué resultado se obtiene al aplicar el teorema del límite a lim (log n) / n cuando n tiende a infinito?
Qué resultado se obtiene al aplicar el teorema del límite a lim (log n) / n cuando n tiende a infinito?
Cuál es la relación válida entre las notaciones de complejidad 𝛩(n^2) y 𝛩(2 * n^2)?
Cuál es la relación válida entre las notaciones de complejidad 𝛩(n^2) y 𝛩(2 * n^2)?
Cuál de las siguientes condiciones es parte de la postcondición de los intervalos?
Cuál de las siguientes condiciones es parte de la postcondición de los intervalos?
Cuál de las siguientes combinaciones es incompatible con las condiciones de k y n?
Cuál de las siguientes combinaciones es incompatible con las condiciones de k y n?
Bajo qué condición el algoritmo de búsqueda binaria nunca termina?
Bajo qué condición el algoritmo de búsqueda binaria nunca termina?
¿Qué afirmación es cierta respecto al punto medio en el algoritmo de búsqueda binaria?
¿Qué afirmación es cierta respecto al punto medio en el algoritmo de búsqueda binaria?
¿Cuándo termina el algoritmo de búsqueda binaria según la implementación dada?
¿Cuándo termina el algoritmo de búsqueda binaria según la implementación dada?
¿Cuál es un error común en la interpretación de la terminación del algoritmo de búsqueda binaria?
¿Cuál es un error común en la interpretación de la terminación del algoritmo de búsqueda binaria?
¿Cuál es un caso base en el algoritmo que podría conducir a una recursión infinita?
¿Cuál es un caso base en el algoritmo que podría conducir a una recursión infinita?
¿Qué ocurre en la llamada recursiva si v[m] es mayor que x?
¿Qué ocurre en la llamada recursiva si v[m] es mayor que x?
¿Por qué es importante la condición 0 ≤ c ≤ f + 1 ≤ longitud(v)?
¿Por qué es importante la condición 0 ≤ c ≤ f + 1 ≤ longitud(v)?
¿Qué se puede concluir sobre la técnica de búsqueda binaria en comparación con la búsqueda lineal?
¿Qué se puede concluir sobre la técnica de búsqueda binaria en comparación con la búsqueda lineal?
Flashcards
La expresión 𝑛 − 𝑖 + 1 como cota válida
La expresión 𝑛 − 𝑖 + 1 como cota válida
La expresión 𝑛 − 𝑖 + 1 representa una cota válida para un bucle que itera hasta 𝑛, donde 𝑖 incrementa en cada iteración. Esta cota indica cuántas iteraciones quedan por realizar.
La variable 𝑗 en el bucle
La variable 𝑗 en el bucle
La variable 𝑗 no necesariamente decrece en todas las iteraciones dentro del bucle, dependiendo de los valores del vector 𝑣. Para que la expresión 𝑛 − 𝑖 + 1 sea una cota válida, debe decrecer en cada iteración, pero eso puede no estar garantizado.
La expresión 𝑛 − 𝑖 + 1 cuando 𝑛 ≤ 4
La expresión 𝑛 − 𝑖 + 1 cuando 𝑛 ≤ 4
Si 𝑛 ≤ 4, el valor inicial de 𝑖 es 0, y la expresión 𝑛 − 𝑖 + 1 se vuelve negativa. Esto indica que no es una cota válida, ya que una cota debe ser siempre no negativa.
Función 𝑓(𝑣, 𝑘, 𝑛)
Función 𝑓(𝑣, 𝑘, 𝑛)
Signup and view all the flashcards
Llamada 𝑓( [3, 3, 4, 5], 3, 4 )
Llamada 𝑓( [3, 3, 4, 5], 3, 4 )
Signup and view all the flashcards
Llamada 𝑓( [1, 2, 3, 4, 5], 1, 3 )
Llamada 𝑓( [1, 2, 3, 4, 5], 1, 3 )
Signup and view all the flashcards
Llamada 𝑓( [1, 1, 9, 0, 3, 4, 4], 2, 5 )
Llamada 𝑓( [1, 1, 9, 0, 3, 4, 4], 2, 5 )
Signup and view all the flashcards
Llamadas a 𝑓 correctas
Llamadas a 𝑓 correctas
Signup and view all the flashcards
Ω(g(n))
Ω(g(n))
Signup and view all the flashcards
Teorema del límite
Teorema del límite
Signup and view all the flashcards
O(g(n))
O(g(n))
Signup and view all the flashcards
Θ(g(n))
Θ(g(n))
Signup and view all the flashcards
lim f(n)/g(n) = 0
lim f(n)/g(n) = 0
Signup and view all the flashcards
lim f(n)/g(n) = c ≠ 0
lim f(n)/g(n) = c ≠ 0
Signup and view all the flashcards
lim f(n)/g(n) = ∞
lim f(n)/g(n) = ∞
Signup and view all the flashcards
Complejidad temporal
Complejidad temporal
Signup and view all the flashcards
Generalización en programación
Generalización en programación
Signup and view all the flashcards
Generalización y recursión
Generalización y recursión
Signup and view all the flashcards
Generalización y eficiencia
Generalización y eficiencia
Signup and view all the flashcards
Generalización y recursión final
Generalización y recursión final
Signup and view all the flashcards
Recursión infinita
Recursión infinita
Signup and view all the flashcards
Caso base
Caso base
Signup and view all the flashcards
Búsqueda binaria
Búsqueda binaria
Signup and view all the flashcards
Condición de terminación (Búsqueda binaria)
Condición de terminación (Búsqueda binaria)
Signup and view all the flashcards
Notación Big-O
Notación Big-O
Signup and view all the flashcards
Notación Ω
Notación Ω
Signup and view all the flashcards
Notación Θ
Notación Θ
Signup and view all the flashcards
Pre-condición
Pre-condición
Signup and view all the flashcards
Ventajas de añadir parámetros adicionales
Ventajas de añadir parámetros adicionales
Signup and view all the flashcards
Complejidad temporal: reducción por sustracción
Complejidad temporal: reducción por sustracción
Signup and view all the flashcards
a > 1: Complejidad exponencial
a > 1: Complejidad exponencial
Signup and view all the flashcards
a = 1: Complejidad polinomial
a = 1: Complejidad polinomial
Signup and view all the flashcards
Versión recursiva final
Versión recursiva final
Signup and view all the flashcards
Definición de algoritmo recursivo
Definición de algoritmo recursivo
Signup and view all the flashcards
Ejemplos de algoritmos recursivos
Ejemplos de algoritmos recursivos
Signup and view all the flashcards
Resumen: Algoritmos recursivos
Resumen: Algoritmos recursivos
Signup and view all the flashcards
Algoritmo recursivo de búsqueda binaria
Algoritmo recursivo de búsqueda binaria
Signup and view all the flashcards
Condición de terminación del algoritmo recursivo
Condición de terminación del algoritmo recursivo
Signup and view all the flashcards
Condición de ciclo infinito del algoritmo recursivo
Condición de ciclo infinito del algoritmo recursivo
Signup and view all the flashcards
Función f(v, x, c, f)
Función f(v, x, c, f)
Signup and view all the flashcards
Rango en cada llamada recursiva
Rango en cada llamada recursiva
Signup and view all the flashcards
Termina el algoritmo recursivo?
Termina el algoritmo recursivo?
Signup and view all the flashcards
Análisis del algoritmo recursivo de búsqueda binaria
Análisis del algoritmo recursivo de búsqueda binaria
Signup and view all the flashcards
Study Notes
Fundamentos de Algoritmia - Examen de Enero
- Observaciones:
- En los exámenes, hay una única respuesta correcta por pregunta.
- Cada respuesta correcta vale 0.1 puntos.
- Cada respuesta incorrecta resta 0.033 puntos.
Pregunta 1
- Especificación:
- {v.size ≥ 0}
- fun xxx(vector
v) dev intr - {r = maxp, q : 0 ≤ p ≤ q ≤ v.size ∧ ∀i : p < i < q : v[i] = 0 : q - p}
- Vector de entrada: v = [5, 4, 0, 4, 3, 0, 0, 0, 0, 5, 3, 0, 0, 5]
- Pregunta: ¿Cuál es el valor de r según la especificación?
- Respuesta: (a) r = 7.
Pregunta 2
- Pregunta: ¿Cuál es la complejidad en el peor caso de un algoritmo óptimo que busca el máximo en un vector ordenado de n elementos?
- Respuesta: (c) Θ(n).
Pregunta 3
- Algoritmo:
- int c = 0;
- for (int i = 1; i < n; i *= 2)
- for (int j = 0; j < m+2; ++j)
- c += 4;
- Pregunta: ¿Cuál es la complejidad del algoritmo?
- Respuesta: (b) Θ(mlog n).
Pregunta 4
- Predicado:
- b = ∃w : 0 ≤ w < n : (∃k : 0 ≤ k : a[w] = 2 * k + 1)
- Pregunta: ¿Qué significa el predicado para un vector a de n enteros con n ≥ 1 y una variable booleana b?
- Respuesta: (a) Hay al menos una posición en el vector que contiene un número impar positivo.
Pregunta 5
- Especificación:
- {a.size ≥ 0}
- fun contar Pares(vector
a) dev int c - {c = #i : 0 < i < a.size : a[i] % 2 = 0}
- Algoritmo:
- int contarPares (vector
const& a) { - int c=0; int k=-1;
- while (k<a.size()-1)
- { if (a[k+1] % 2 == 0) {c=c+1;} k=k+1; }
- return c; }
- int contarPares (vector
- Pregunta: Determina si el algoritmo anterior es correcto y, en su caso, cuál es el invariante.
- Respuesta: (a) Es correcto con invariante {−1 ≤ k < a.size \ c = #i : 0 ≤ i ≤ k : a[i] % 2 = 0}.
Pregunta 6
- Pregunta: Indica cuál de las siguientes afirmaciones sobre el algoritmo quicksort es falsa.
- Respuesta: (a) Si los valores del vector están ordenados en orden creciente, tiene una complejidad cuadrática respecto al tamaño del vector.
Pregunta 7
- Pregunta: ¿Qué dos algoritmos tienen el mismo orden de complejidad?
- Respuesta: (a) se comportan de forma semejante para tamaños de entrada grandes.
Pregunta 8
- Pregunta: ¿Cuál es el requisito imprescindible para utilizar el algoritmo de búsqueda binaria sobre un vector?
- Respuesta: (c) Los valores del vector deben estar ordenados.
Pregunta 9
- Algoritmo:
- int k = 0; int N = 100;
- for (int i = N-1; i > -N; --i) ++k;
- Pregunta: Indica qué función de cota utilizarías para probar la terminación del bucle.
- Respuesta: (d) f(i,N) = N-i
Pregunta 10
- Recurrencia:
- T(n) = (n-1) + n si n > 0
- T(n) = 0 si n = 0
- Pregunta: ¿Cuál es el coste del algoritmo con esa recurrencia?
- Respuesta: O(n²).
Studying That Suits You
Use AI to generate personalized quizzes and flashcards to suit your learning preferences.
Related Documents
Description
Este cuestionario explora conceptos clave en análisis de algoritmos, incluyendo condiciones para cotas válidas y especificaciones en funciones recursivas. También se examina la mejora de la eficiencia en algoritmos como quicksort y mergesort. Ideal para estudiantes de algoritmos avanzados.