Esencialmente, todo esto se reduce a árboles y hojas.
Supongamos que tenemos una matriz de entrada que como n elementos: [math] a_0, a_1, …, a_ {n-1} [/ math]. Nuestro algoritmo de clasificación reorganizará esto y clasificará los elementos.
Entonces, ¿cuántos resultados debe producir el algoritmo? La respuesta es [matemáticas] n! [/ Matemáticas].
- ¿Cómo se siente cuando te das cuenta de que no eres realmente bueno en programación y algoritmos?
- ¿Cuáles son algunos problemas en Spoj que usan algoritmos aleatorios?
- ¿Qué es mejor si necesito elegir un camino para mi carrera, algoritmos y estructuras de datos, o tecnologías de big data, en las que estoy trabajando actualmente?
- ¿Cuál es el propósito del factor de carga en las tablas hash?
- ¿Alguien ha probado algún algoritmo de aprendizaje automático en diseño o verificación de hardware?
Quizás un ejemplo sea más fácil de ver qué está pasando. Considere [math] a = [2, 1, 3] [/ math], la matriz ordenada será [math] a_1, a_0, a_2 [/ math]. Si la matriz es [matemática] a = [1, 2, 3] [/ matemática] la matriz ordenada será [matemática] a_0, a_1, a_2 [/ matemática] y así sucesivamente. Para las matrices de tres elementos, el algoritmo necesitará dar seis resultados posibles.
Del mismo modo, para las matrices de elementos [math] n [/ math], necesitaremos resultados [math] n! [/ Math].
Dado que vamos a lograr esto mediante comparaciones (por lo tanto, tipo de comparación), el número de comparaciones [matemática] m [/ matemática], debería * al menos * statisfy [matemática] 2 ^ m \ ge n! [/ Matemática].
Si tomamos un registro y usamos la aproximación de Stirling, terminamos con
[matemáticas] m = \ Omega (n \ log n). [/mates]