¿Cuál es la diferencia entre la complejidad del tiempo promedio y la complejidad del tiempo esperado?

La respuesta de Jeremy Hurwitz es esencialmente correcta, pero permítanme aclarar algunos puntos.

Los términos más utilizados son Complejidad de caso promedio y Tiempo esperado en el peor de los casos. El segundo solo tiene sentido para analizar un algoritmo aleatorio, uno que arroja monedas (independientemente de la entrada) como parte del algoritmo. Por ejemplo, QuickSort donde el elemento pivote se elige al azar cada iteración es un algoritmo aleatorio. Luego decir que el algoritmo tiene el Tiempo esperado en el peor de los casos T (n) es decir que, en cualquier entrada de tamaño n, x, la cantidad promedio de tiempo que el algoritmo tarda en x es como máximo T (n). Tenga en cuenta que aquí, promedio se refiere al promedio sobre todas las opciones aleatorias del algoritmo, y se mantiene independientemente de la entrada.

La complejidad de caso promedio supone una distribución sobre las entradas, como las matrices aleatorias de n enteros en el rango entre 1 yn cubos. Decir que un algoritmo (ya sea aleatorio o determinista) funciona en el tiempo T (n) es decir que para casi todas las entradas x de la distribución, el algoritmo se ejecuta en la mayoría de los pasos de T (n). Sin embargo, puede haber algunas x para las cuales el tiempo de ejecución es mucho peor. Por ejemplo, supongamos que observamos Quicksort, donde el primer elemento siempre se elige como pivote. Luego, para la mayoría de las matrices, funciona en tiempo O (n log n), pero para una matriz ordenada, se necesita un gran omega de n tiempo cuadrado.

Lo complicado del análisis de casos promedio es lograr que la distribución de las entradas refleje la frecuencia real de las entradas del “mundo real”. Es muy poco probable que se ordene una matriz aleatoria, pero es muy probable que una matriz dada al algoritmo como entrada se ordene o casi se ordene, porque a la gente le gusta ordenar las matrices, modificarlas un poco y recurrir. Como se mencionó en otra respuesta, el análisis suavizado es un modelo híbrido que combina algunos aspectos de cada uno y está destinado a ayudar a eludir las críticas anteriores.

Intuitivamente, la complejidad del tiempo promedio se refiere al comportamiento típico del algoritmo, promediado sobre todas las entradas posibles. La Complejidad de Tiempo Esperada se refiere al comportamiento típico del algoritmo, dada una distribución de entrada contradictoria.

Para ser un poco más formal:
El tiempo de ejecución de un algoritmo depende de dos cosas: (i) la entrada particular que se le da, y (ii) las elecciones aleatorias realizadas durante la ejecución. Existen múltiples “complejidades de tiempo” posibles, dependiendo de si tomamos el promedio o el peor de cada caso.

Si tomamos el peor de los casos en ambos, obtenemos la “Complejidad de tiempo en el peor de los casos”. Esto dice: “No importa qué, el algoritmo terminará después de X pasos”. La “Complejidad de tiempo esperada” toma el peor de los casos y el promedio sobre las decisiones internas. Esto dice: “No importa qué entrada se dé, el algoritmo terminará después de X pasos en promedio”. Finalmente, la “Complejidad de tiempo promedio” toma el promedio sobre las entradas y las decisiones internas. Esto dice: “El algoritmo terminará después de X pasos en promedio, dada una distribución típica de entradas”.

El beneficio de utilizar la complejidad del peor de los casos es obvio: el límite establecido nunca se violará. La desventaja también es obvia: el peor de los casos puede ser muy diferente del caso típico, lo que hace que el límite sea casi sin sentido.

La complejidad del tiempo promedio aborda esta deficiencia, pero potencialmente va demasiado lejos en la otra dirección. Al promediar todas las entradas por igual, se asume firmemente cómo se comportará el usuario. Cualquier declaración sobre la complejidad promedio requiere que asuma una distribución sobre las entradas: use la distribución incorrecta y su límite no tiene valor.

La Complejidad de Tiempo Esperada es la métrica más utilizada y se ubica entre las otras dos. Evita los problemas con la complejidad del tiempo promedio mediante el uso de la entrada del peor de los casos. Evita los problemas de la complejidad del peor de los casos promediando las elecciones internas. En otras palabras, asume un comportamiento “típico” cuando realmente podemos estar seguros de lo que significa “típico”, y utiliza el peor de los casos cuando no podemos.

Obviamente, esto todavía deja algunos detalles que desear. Por ejemplo, la complejidad temporal esperada del Método Simplex es exponencial. Sin embargo, en la práctica, Simplex funciona increíblemente bien. Para abordar esta deficiencia, se utiliza una medida de complejidad aún más matizada, llamada “Complejidad suavizada”. Sin embargo, esto requiere bastante más matemática.

More Interesting

¿Cuáles fueron los temas candentes del aprendizaje automático en 2015?

¿Es común que un estudiante graduado descubra un nuevo teorema?

¿Qué tipo de investigación en informática se realiza para abordar problemas de la vida real?

¿Cuál es la investigación de HCI que fue hace 10 años pero que ya no es la tendencia?

Mi trabajo de tesis está relacionado con el aprendizaje automático. ¿Alguien puede sugerir algún trabajo de aprendizaje automático que contenga alguna investigación que pueda completar en los próximos dos meses?

¿Cuáles son las aplicaciones de las estadísticas en el campo de la informática?

¿Qué lenguaje de programación es más útil cuando investigo en un sistema de reconocimiento de voz?

¿Cuáles son algunas aplicaciones del mundo real de tipo topológico?

¿La investigación académica de CS es realmente valiosa? No he encontrado casi nada valioso o innovador en ellas (excepto casos muy raros en los que los autores tienen una conexión muy estrecha con la industria).

¿Cuál es la mejor manera de estimar computacionalmente la cardinalidad de conjuntos muy grandes?

¿Qué está haciendo una investigación de vanguardia en el aprendizaje automático? Además, ¿cuáles son algunos de los últimos productos basados ​​en IA?

¿Cuál es el mejor servicio de indexación en línea para la investigación en informática?

¿Qué significa en informática?

¿Cuáles son los temas candentes actuales para la investigación en redes de computadoras?

¿Qué es mejor, realizar múltiples investigaciones al mismo tiempo o enfocarse una a la vez en un período fijo de tiempo?