Eu estava pensando em classificar algoritmos em software e em possíveis maneiras de superar o O(nlogn)
obstáculo. Eu não acho que seja possível classificar mais rápido em um sentido prático, então, por favor, não pense que eu faço.
Com isso dito, parece que com quase todos os algoritmos de classificação, o software deve saber a posição de cada elemento. O que faz sentido, caso contrário, como saberia onde colocar cada elemento de acordo com alguns critérios de classificação?
Mas quando cruzei esse pensamento com o mundo real, uma centrífuga não tem ideia da posição em que cada molécula está quando "classifica" as moléculas por densidade. Na verdade, não se preocupa com a posição de cada molécula. No entanto, ele pode classificar trilhões e trilhões de itens em um período de tempo relativamente curto, devido ao fato de que cada molécula segue as leis da densidade e gravitacional - o que me fez pensar.
Seria possível com alguma sobrecarga em cada nó (algum valor ou método anexado a cada um dos nós) para 'forçar' a ordem da lista? Algo como uma centrífuga, onde apenas cada elemento se preocupa com sua posição relativa no espaço (em relação aos outros nós). Ou isso viola alguma regra de computação?
Acho que um dos grandes pontos levantados aqui são os efeitos da mecânica quântica da natureza e como eles se aplicam em paralelo a todas as partículas simultaneamente.
Talvez os computadores clássicos restrinjam inerentemente a classificação ao domínio de O(nlogn)
, onde, como computadores quânticos, podem ser capazes de cruzar esse limiar em O(logn)
algoritmos que agem em paralelo.
O ponto de que uma centrífuga sendo basicamente um tipo de bolha paralela parece estar correto, que tem uma complexidade de tempo de O(n)
.
Acho que o próximo pensamento é que se a natureza pode se classificar O(n)
, por que os computadores não podem?