La fuente de esta pregunta proviene de un curso de pregrado que estoy tomando, que cubre una introducción al análisis de algoritmos. Esto no es para la tarea, sino más bien una pregunta formulada en CLRS.
Tiene una máquina lenta que funciona con MIPS y una máquina rápida que funciona con MIPS. También tiene dos algoritmos de la misma clase, pero diferentes complejidades de tiempo de ejecución: un algoritmo "lento" se ejecuta en T (n) = c_1n ^ 2, mientras que un algoritmo "rápido" se ejecuta en T (n) = c_2n \ log n .
Ejecutas el algoritmo lento en la máquina rápida y el algoritmo rápido en la máquina lenta. ¿Cuál es el valor más grande de n tal que la máquina rápida que ejecuta el algoritmo lento supera a la máquina lenta que ejecuta el algoritmo rápido?
Mi solución hasta ahora:
Encuentre el conjunto de todos tal que
Este es mi trabajo hasta ahora:
La única solución que se me viene a la mente ahora es enchufar y cambiar todos los valores de hasta que encuentre el primer n donde
ya no se sostiene
Respuestas:
Considera tu última desigualdad:
Ahora, con es una función cóncava . Por lo tanto, hay como máximo dos intersecciones, y solo una de ellas es interesante para usted; es decir, resolverClogn C=c2yc1x
y descubra qué algoritmo es más rápido en qué intervalo simplemente calculando los valores de función respectivos en algún punto del intervalo respectivo.
Es cierto que resolver esta igualdad explícitamente es difícil / imposible. Para algunos fijos , el álgebra computacional le da una expresión en una función bien conocida; interesante (real) intersección resulta estar enC
si , con la continuación analítica de la función de registro del producto . Esta función no tiene una buena forma cerrada, pero se puede evaluar numéricamente para dado ; por ejemplo, obtienes para .C≥eln2 Wk C ≈116,74 C=17
fuente