Für Leute wie mich, die Algorithmen für ihren Lebensunterhalt studieren, ist das Standardrechenmodell des 21. Jahrhunderts der Integer-RAM . Das Modell soll das Verhalten realer Computer genauer widerspiegeln als das Modell der Turing-Maschine. Reale Computer verarbeiten Mehrbit-Ganzzahlen mit paralleler Hardware in konstanter Zeit. keine willkürlichen ganzen Zahlen, aber (weil die Wortgröße im Laufe der Zeit stetig wächst) auch keine ganzen Zahlen mit fester Größe .
Das Modell hängt von einem einzelnen Parameter , der als Wortgröße bezeichnet wird . Jede Speicheradresse enthält eine einzelne w- Bit-Ganzzahl oder ein einzelnes Wort . In diesem Modell ist die Eingabegröße n die Anzahl der Wörter in der Eingabe, und die Laufzeit eines Algorithmus ist die Anzahl der Operationen an Wörtern . Standard arithmetische Operationen (Addition, Subtraktion, Multiplikation, Division der ganzen Zahl, Rest, Vergleich) und boolesche Operationen (bitweise AND-, OR-, XOR-, Shift, drehen) auf Wörtern benötigen O ( 1 ) Zeit , nach Definition .wwnO ( 1 )
Formal ist die Wortgröße w für die Analyse von Algorithmen in diesem Modell KEINE Konstante . Um das Modell mit der Intuition in Einklang zu bringen, benötigen wir , da wir sonst nicht einmal die ganze Zahl n in einem einzigen Wort speichern können . Bei den meisten nichtnumerischen Algorithmen ist die Laufzeit jedoch unabhängig von w , da diese Algorithmen die zugrunde liegende binäre Darstellung ihrer Eingabe nicht berücksichtigen. Mergesort und Heapsort werden beide in O ( n log n ) ausgeführt . Median-of-3-Quicksort läuft in O ( n 2w ≥ log2nnwO ( n logn ) Zeit im schlimmsten Fall. Eine bemerkenswerte Ausnahme ist die binäre Radix-Sortierung, die in der O ( n w ) -Zeit ausgeführt wird.O ( n2)O ( n w )
Wenn Sie einstellen, erhalten Sie das traditionelle logarithmisch kostenpflichtige RAM-Modell. Einige Ganzzahl-RAM-Algorithmen sind jedoch für größere Wortgrößen ausgelegt, wie der Linear-Time-Ganzzahl-Sortieralgorithmus von Andersson et al. Dies erfordert w = Ω ( log 2 + ε n ) .w = Θ ( logn )w = Ω ( log2 + εn )
Für viele in der Praxis auftretende Algorithmen ist die Wortgröße einfach kein Problem, und wir können (und können) auf das weitaus einfachere RAM-Modell mit einheitlichen Kosten zurückgreifen. Die einzige ernsthafte Schwierigkeit ist die verschachtelte Multiplikation, mit der sehr große ganze Zahlen sehr schnell erstellt werden können. Wenn wir mit beliebigen ganzen Zahlen in konstanter Zeit rechnen könnten, könnten wir jedes Problem in PSPACE in polynomialer Zeit lösen .w
Update: Ich sollte auch erwähnen, dass es Ausnahmen zum "Standardmodell" gibt, wie den Ganzzahlmultiplikationsalgorithmus von Fürer , der Multitape-Turing-Maschinen (oder äquivalent das "Bit-RAM") verwendet, und die meisten geometrischen Algorithmen, die theoretisch analysiert werden sauberes aber idealisiertes "echtes RAM" Modell .
Ja, das ist eine Dose Würmer.