Algoritmos y Complejidad Computacional
42 Questions
0 Views

Choose a study mode

Play Quiz
Study Flashcards
Spaced Repetition
Chat to lesson

Podcast

Play an AI-generated podcast conversation about this lesson

Questions and Answers

¿Cuál es la capacidad de cálculo de una consola o GPU actual en teraFLOPS?

  • 10 teraFLOPS (correct)
  • 1 teraFLOPS
  • 1 exaFLOPS
  • 100 teraFLOPS
  • Para medir el coste de un algoritmo, una de las aproximaciones es contar las instrucciones y multiplicar por su coste. ¿Cuál de las siguientes opciones NO se utiliza como tiempo por instrucción?

  • Tiempo de una asignación
  • Tiempo de una comparación
  • Tiempo de un acceso a memoria (correct)
  • Tiempo de un incremento/decremento
  • En el ejemplo de la función de búsqueda, ¿qué afirmación es correcta si el valor x aparece en la última posición del vector?

  • El tiempo consumido será mínimo.
  • El tiempo consumido será máximo. (correct)
  • El tiempo consumido será constante.
  • El tiempo consumido será cero.
  • ¿Cuál es un enfoque menos práctico para medir la eficiencia de un algoritmo?

    <p>Multiplicar el número de instrucciones por su coste.</p> Signup and view all the answers

    ¿Qué velocidad de cálculo corresponde a 1 exaFLOPS?

    <p>10^18 operaciones por segundo</p> Signup and view all the answers

    ¿Qué representa la cota inferior Ω(f(n))?

    <p>El conjunto de funciones donde f(n) es una cota inferior no estricta para valores grandes de n.</p> Signup and view all the answers

    ¿Cuál es la relación correcta que define el orden exacto de dos funciones f(n) y g(n)?

    <p>f(n) ∈ O(g(n)) y f(n) ∈ Ω(g(n))</p> Signup and view all the answers

    ¿Cuál de las siguientes afirmaciones sobre las cotas es incorrecta?

    <p>Θ(f(n)) indica que se puede expresar f(n) solo en términos de su cota superior.</p> Signup and view all the answers

    La regla de la suma para las funciones complejidad establece que O(f + g) es igual a:

    <p>O(máx(f, g))</p> Signup and view all the answers

    Si una función f ∈ O(g) y g ∈ O(h), ¿qué implicación se puede derivar?

    <p>f ∈ O(h)</p> Signup and view all the answers

    ¿Cuál es el menor número natural k tal que la función f(n) = 2n³ + n² log n esté en O(nk)?

    <p>3</p> Signup and view all the answers

    ¿Qué orden asintótico tiene el algoritmo potencia1 en el peor caso?

    <p>O(y)</p> Signup and view all the answers

    Si f(n) = (n² + 17n + 3)², ¿cuál es el orden de f(n) en términos de n?

    <p>O(n⁴)</p> Signup and view all the answers

    ¿Cómo se compara la función n² log n con la función n³?

    <p>n² log n es menor que n³</p> Signup and view all the answers

    ¿Cuál es el orden asintótico de la función f(n) = (2n + n²)(n³ + 3n)?

    <p>O(n⁵)</p> Signup and view all the answers

    En relación a O y ⌦, ¿cómo se comportan las funciones n³ y n² + 5n?

    <p>n² + 5n es O de n³</p> Signup and view all the answers

    En el algoritmo potencia2, ¿cuántas multiplicaciones realiza en el peor caso?

    <p>O(log y)</p> Signup and view all the answers

    ¿Cuál es el menor orden g(n) tal que f(n) = n² + n³ esté en O(g(n))?

    <p>g(n) = n³</p> Signup and view all the answers

    ¿Qué función de complejidad permite solucionar problemas 100 veces más grandes al aumentar la velocidad del computador?

    <p>O(log n)</p> Signup and view all the answers

    Si un algoritmo tiene coste O(n^3) y se duplica la velocidad del computador, ¿cuánto más grande puede ser el problema que se resuelve?

    <p>El tamaño del problema se multiplica por 4.</p> Signup and view all the answers

    En la jerarquía de órdenes de complejidad, ¿cuál de los siguientes algoritmos se considera tratable?

    <p>Ambos B y C</p> Signup and view all the answers

    ¿Cuál de las siguientes afirmaciones sobre los costos de complejidad es incorrecta?

    <p>O(n log n) es menos eficiente que O(n^2).</p> Signup and view all the answers

    Al duplicar el tiempo durante el cual un algoritmo puede ejecutarse, ¿qué impacto tiene en un algoritmo O(n)?

    <p>Duplica el tamaño del problema que se resuelve.</p> Signup and view all the answers

    ¿Qué característica distingue a los algoritmos de complejidad polinómica?

    <p>Son capaces de resolver problemas grandes en un tiempo razonable.</p> Signup and view all the answers

    Si un algoritmo O(n^2) toma 1 hora para un problema de tamaño n=100, ¿cuánto tiempo tomaría para n=141?

    <p>2 horas.</p> Signup and view all the answers

    ¿Qué función de complejidad tiene un crecimiento tan rápido que apenas significa un aumento en el tamaño del problema cuando se duplica el tiempo o la velocidad?

    <p>O(2^n)</p> Signup and view all the answers

    ¿Qué valor devuelve la función si la lista está llena?

    <p>Devuelve false.</p> Signup and view all the answers

    ¿Cuál es el propósito de la variable 'pos' en la función insertar?

    <p>Indicar la posición donde se debe insertar el nuevo elemento.</p> Signup and view all the answers

    En la función 'ordenar', ¿qué indica 'nuevo'?

    <p>Es un valor temporal que guarda el elemento que se está insertando.</p> Signup and view all the answers

    ¿Cuál es el tiempo medio de ejecución en el caso peor del algoritmo de ordenación por inserción?

    <p>O(n^2)</p> Signup and view all the answers

    En la función de inserción, ¿qué sucede si el elemento que se va a insertar ya está en la lista?

    <p>No se realiza ninguna acción y se devuelve false.</p> Signup and view all the answers

    ¿Qué operación se realiza después de encontrar la posición adecuada para insertar en la función insertar?

    <p>Se mueven los elementos a partir de esa posición hacia la derecha.</p> Signup and view all the answers

    ¿Cuál es la complejidad temporal del algoritmo si 'buscar' es una búsqueda binaria?

    <p>O(n log n)</p> Signup and view all the answers

    ¿Qué hace el bucle for en la función 'ordenar' después de identificar 'pos'?

    <p>Desplaza los elementos hacia la derecha para hacer espacio para 'nuevo'.</p> Signup and view all the answers

    ¿Qué establece la regla del producto en relación con funciones de complejidad?

    <p>Si g1 está en O(f1) y g2 está en O(f2), entonces g1 · g2 está en O(f1 · f2).</p> Signup and view all the answers

    Según el teorema del límite, bajo qué condiciones se cumple que f es O(g) y g es O(f)?

    <p>Cuando el límite de f(n) dividido por g(n) tiende a 1.</p> Signup and view all the answers

    ¿Qué implica que f(n) está en O(g(n)) y el límite de f(n)/g(n) tiende a 0?

    <p>f(n) es de orden más bajo que g(n).</p> Signup and view all the answers

    ¿Qué se puede concluir sobre dos funciones f y g cuando el límite de f(n)/g(n) tiende a +1?

    <p>g pertenece a O(f) y f a O(g).</p> Signup and view all the answers

    ¿Qué significa la relación f(n) = Θ(g(n))?

    <p>f(n) está en O(g(n)) y g(n) también está en O(f(n)).</p> Signup and view all the answers

    ¿Qué condición debe cumplirse para que se pueda afirmar que una función polinómica de grado m está en O(n^m)?

    <p>El coeficiente del término de mayor grado debe ser positivo.</p> Signup and view all the answers

    El principio de dualidad se aplica cuando se establece que g(n) es O(f(n)). ¿Qué implica eso sobre f(n)?

    <p>f(n) también debe estar en Ω(g(n)).</p> Signup and view all the answers

    ¿Qué sucede si tenemos que el límite de f(n) * g(n) tiende a +1?

    <p>f(n) y g(n) tienen el mismo orden de crecimiento.</p> Signup and view all the answers

    Study Notes

    Análisis de la eficiencia de los algoritmos

    • El análisis de la eficiencia de los algoritmos es fundamental en la programación para comparar algoritmos y seleccionar la mejor opción para resolver problemas.
    • La eficiencia se mide en términos de tiempo y espacio (memoria).
    • Un algoritmo eficiente consume los recursos (tiempo y memoria) de forma mínima.
    • Un algoritmo ineficiente puede consumir innecesariamente recursos.
    • El crecimiento exponencial de los problemas puede representar un desafío.

    ¿Qué es un número grande?

    • La pandemia de COVID-19 en 2020 mostró ejemplos de crecimiento exponencial en la propagación.
    • Un ejemplo es que un número de infectados se duplica cada tres días.
    • Un solo lirio de agua en un pantano puede cubrirlo en 30 días si su tamaño se duplica cada día.
    • Ejemplos como el arroz y ajedrez muestra la rápida exponencialidad en las cantidades.
    • Los problemas que crecen exponencialmente demuestran la importancia de los algoritmos eficientes.

    Eficiencia

    • La eficiencia de un programa se relaciona con los recursos que utiliza.
    • Los recursos comunes en programación son el tiempo y el espacio (memoria).
    • Un programa eficiente utiliza el mínimo tiempo y memoria posible.
    • Un programa ineficiente consume innecesariamente tiempo y/o memoria.
    • El análisis de costos de algoritmos es importante para la toma de decisiones en el desarrollo.

    Cálculo explícito y funciones de coste

    • Calcular el coste de un algoritmo de forma explícita implica contar las instrucciones que ejecuta.
    • Cada instrucción tiene un coste asociado (por ejemplo, asignación, suma, comparación).
    • Sumar esos costos da una estimación del tiempo de ejecución de cada algoritmo.
    • Un enfoque poco práctico es contar cada paso y aplicarle su respectivo tiempo.
    • La función de coste de un algoritmo se relaciona con su coste.

    Ejemplos de cálculo de eficiencia explícito

    • La eficiencia del programa puede variar dependiendo de la entrada.
    • El caso mejor es cuando el programa encuentra el dato buscado rápidamente.
    • El caso peor es cuando el programa debe buscar el dato buscado en toda la entrada.
    • Costos constantes, como la asignación de una variable, tienen un coste de O(1)
    • El caso más frecuente es lineal (proporcional al tamaño de las entradas) con coste de O(n)
    • El caso de búsqueda binaria es logarítmico, O((log n))

    Medidas asintóticas de eficiencia

    • Las medidas asintóticas son importantes ya que no dependen de la tecnología concreta.
    • Son necesarias para comparar algoritmos en términos de crecimiento del tiempo de ejecución.
    • Pueden ignorarse las constantes multiplicativas y aditivas, en las funciones de coste para la comparación.
    • El análisis se centra en valores de "n" (tamaño) suficientemente grandes.
    • Se define el orden de complejidad usando notación O,Ω,Θ.

    Análisis de eficiencia en algoritmos iterativos

    • El cálculo del coste de los algoritmos iterativos se simplifica al considerar sólo el orden de magnitud.
    • Se determina el orden de complejidad de un algoritmo en base al número de iteraciones y el coste de cada paso.
    • Las reglas para el cálculo de la eficiencia (condición, bucles, llamadas a funciones etc.) ayudan a determinar la eficiencia en función del tamaño de entrada.
    • En la práctica de desarrollo no se realiza un calculo exacto del tiempo de cada paso o instrucción, se busca simplificar.

    Órdenes de complejidad

    • Los órdenes de complejidad indican el crecimiento del tiempo de ejecución en función del tamaño de la entrada.
    • Existen diferentes órdenes de complejidad con comportamientos distintos en el tiempo de ejecución; ejemplos incluyen: 0(1), 0(log n), 0(n), etc.
    • La jerarquía de órdenes indica el crecimiento relativo de las funciones de coste.
    • (0(1)) algoritmo constante, (0(log n)) algoritmo logarítmico, etc.
    • Algunos ejemplos de algoritmos iterativos incluyen seleccion, producto de matrices donde el coste computacional se analiza por la instrucción crítica (la que tiene la frecuencia de ejecución más alta) y es calculado usando sumatorios.

    Resumen del tema

    • Distinguir entre el orden de complejidad en el caso mejor, peor, o promedio.
    • Saber comparar las dos medidas de coste.
    • Entender que el coste asintótico es sobre valores muy grandes.
    • Saber calcular los costes exactos de programas iterativos.

    Studying That Suits You

    Use AI to generate personalized quizzes and flashcards to suit your learning preferences.

    Quiz Team

    Related Documents

    Description

    Pon a prueba tus conocimientos sobre algoritmos y su complejidad. Este cuestionario abarca desde conceptos de cálculo en teraFLOPS hasta cotas y orden asintótico. Responde preguntas clave para entender mejor la eficiencia de los algoritmos.

    More Like This

    Use Quizgecko on...
    Browser
    Browser