Ich dachte über Sortieralgorithmen in Software nach und über mögliche Möglichkeiten, die O(nlogn)
Straßensperre zu überwinden . Ich denke nicht, dass es möglich ist, im praktischen Sinne schneller zu sortieren, also denke bitte nicht, dass ich es tue.
Trotzdem scheint es, dass bei fast allen Sortieralgorithmen die Software die Position jedes Elements kennen muss. Was macht sonst Sinn, wie würde es wissen, wo jedes Element nach bestimmten Sortierkriterien platziert werden soll?
Aber als ich dieses Denken mit der realen Welt kreuzte, hat eine Zentrifuge keine Ahnung, in welcher Position sich jedes Molekül befindet, wenn es die Moleküle nach Dichte "sortiert". Tatsächlich kümmert es sich nicht um die Position jedes Moleküls. Es kann jedoch in relativ kurzer Zeit Billionen nach Billionen von Gegenständen sortieren, da jedes Molekül den Dichte- und Gravitationsgesetzen folgt - was mich zum Nachdenken brachte.
Wäre es möglich, mit einem gewissen Overhead auf jedem Knoten (einem Wert oder einer Methode, die an jeden der Knoten angeheftet ist) die Reihenfolge der Liste zu erzwingen? So etwas wie eine Zentrifuge, bei der sich nur jedes Element um seine relative Position im Raum kümmert (im Verhältnis zu anderen Knoten). Oder verstößt dies gegen eine Berechnungsregel?
Ich denke, einer der großen Punkte, die hier angesprochen werden, sind die quantenmechanischen Effekte der Natur und wie sie parallel auf alle Teilchen gleichzeitig angewendet werden.
Vielleicht beschränken klassische Computer die Sortierung von Natur aus auf den Bereich O(nlogn)
, in dem Quantencomputer diesen Schwellenwert möglicherweise O(logn)
in parallel wirkende Algorithmen überschreiten können .
Der Punkt, dass eine Zentrifuge im Grunde eine parallele Blasensorte ist, scheint richtig zu sein, was eine zeitliche Komplexität von hat O(n)
.
Ich denke, der nächste Gedanke ist, wenn die Natur sich einordnen kann O(n)
, warum können Computer dann nicht?
n
Prozessoren (Kerne) haben, um eine Reihe von n
Elementen zu sortieren, können Sie leicht O(n)
Komplexität erreichen . Eine bittere Wahrheit ist, dass wir normalerweise lange Arrays (Tausende und Millionen von Elementen) auf der CPU mit nur 2..10 Kernen sortieren müssen.
O(n)
allein sagt nichts aus - es ist nur nützlich, um Algorithmen mit ähnlichen Einschränkungen zu vergleichen und auf ähnlichen Architekturen zu laufen; In Einführungskursen für algorithmische Komplexität verwenden wir ein sehr vereinfachtes Modell "Computer", das wenig mit Zentrifugen oder realen Computern zu tun hat :)