Estaba pensando en clasificar los algoritmos en el software y las posibles formas en que uno podría superar el O(nlogn)
obstáculo. No creo que sea posible ordenar más rápido en un sentido práctico, así que por favor no crea que lo hago.
Dicho esto, parece que con casi todos los algoritmos de clasificación, el software debe conocer la posición de cada elemento. Lo que tiene sentido, de lo contrario, ¿cómo sabría dónde colocar cada elemento de acuerdo con algunos criterios de clasificación?
Pero cuando crucé este pensamiento con el mundo real, una centrífuga no tiene idea de en qué posición se encuentra cada molécula cuando 'clasifica' las moléculas por densidad. De hecho, no le importa la posición de cada molécula. Sin embargo, puede clasificar billones y billones de elementos en un período de tiempo relativamente corto, debido al hecho de que cada molécula sigue las leyes de densidad y gravitación, lo que me hizo pensar.
¿Sería posible con algo de sobrecarga en cada nodo (algún valor o método agregado a cada uno de los nodos) para 'forzar' el orden de la lista? Algo así como una centrífuga, donde solo cada elemento se preocupa por su posición relativa en el espacio (en relación con otros nodos). ¿O esto viola alguna regla de cálculo?
Creo que uno de los grandes puntos planteados aquí son los efectos mecánicos cuánticos de la naturaleza y cómo se aplican en paralelo a todas las partículas simultáneamente.
Quizás las computadoras clásicas restringen inherentemente la clasificación al dominio de O(nlogn)
, mientras que las computadoras cuánticas pueden cruzar ese umbral en O(logn)
algoritmos que actúan en paralelo.
El hecho de que una centrífuga sea básicamente un tipo de burbuja paralela parece ser correcto, lo que tiene una complejidad temporal de O(n)
.
Supongo que el siguiente pensamiento es que si la naturaleza puede intervenir O(n)
, ¿por qué no pueden las computadoras?