Si se sabe que el algoritmo de selección tardó 10 segundos en ordenar 10000 elementos:

  1. ¿Cuántos elementos podría ordenar en el triple de tiempo?
  2. ¿Cuánto tardaría en ordenar el triple de elementos?
  3. ¿Cuánto tardaría en ordenar el triple de elementos en una máquina 3 veces más rápida?
Ver solución

Solución paso a paso

Este tipo de ejercicios requiere, casi siempre, de un análisis de la situación inicial. No siempre se tienen todos los datos, y es mejor tenerlos a mano antes de comenzar a responder las preguntas.

Marquemos la información disponible:
se sabe que el algoritmo de selección tardó 10 segundos en ordenar 10000 elementos

Esa información nos permite llenar varias partes de la ecuación:

Sabemos que:

  • es 10 segundos (dato)
  • es (por complejidad de Selección)
  • es (dato. Recomendamos notación científica)

Entonces podemos armar la ecuación en la situación original, y despejar :

Con este dato, la constante computacional de la computadora inicial, podemos empezar a responder las preguntas:

1. ¿Cuántos elementos podría ordenar en el triple de tiempo?

Esta situación requiere despejar la ecuación, con el nuevo

Sabemos que:

  • es
  • es (mismo algoritmo)
  • es (misma computadora)
  • es la incógnita

A priori podemos deducir que, si el mismo algoritmo se ejecuta por más tiempo, debe procesar una entrada mayor necesariamente. Por ello,

Despejemos:

Es notable que se debe redondear hacia abajo, ya que no se puede ordenar “una fracción de elemento”, y ya que no se pudo ordenar, sería inapropiado redondear hacia arriba.

La parte más importante es preguntarnos… ¿tiene sentido este resultado? En este caso, sí lo tiene: un algoritmo cuadrático, triplicando el tiempo, implica que el tamaño se multiplicó por raiz de tres.

2. ¿Cuánto tardaría en ordenar el triple de elementos?

En esta nueva situación, volvemos a referirnos al contexto original, y

Sabemos que:

  • es (dato)
  • es (mismo algoritmo)
  • es (misma computadora)
  • es la incógnita

A priori podemos deducir que, si el mismo algoritmo se ejecuta para más elementos, debe tardar más. Habiendo visto los resultados del punto anterior, parecería que debe tardar 9 veces más (3 al cuadrado). Entonces, seguramente

Resolvamos:

Volvemos a preguntarnos si tiene sentido el resultado. En este caso, pudimos predecir el valor simplemente realizando un análisis a priori de la situación: efectivamente .

3. ¿Cuánto tardaría en ordenar el triple de elementos en una máquina 3 veces más rápida?

Esta última situación nos plantea un cambio en el valor de . La pregunta será… ¿al ser más rápida, el valor debe ser más grande o más pequeño al original? Para no depender de nuestra memoria, analizamos la ecuación original:

Y deducimos: la está en el término de la derecha. Una computadora más rápida debería hacer que el baje, aún manteniendo inalteradas las otras variables. Es por ello que necesitaríamos que se achique el valor de . En conclusión: una computadora más rápida implica un más pequeño.

Adicionalmente, podemos pensar que el tiempo debe ser menor que el del punto anterior, que tiene la situación similar a la actual.

Dicho esto, sabemos que:

  • es (triple de elementos)
  • es (mismo algoritmo)
  • es (computadora “tres veces más rápida”)
  • es la incógnita

Resolvamos:

Preguntémonos por última vez si tiene sentido el resultado. En este caso, si la computadora es tres veces más rápida, deberíamos confirmar que , y efectivamente es el resultado obtenido.