Es gibt kein völlig zufriedenstellendes Rechenmodell, mit dem sich Algorithmen traurigerweise analysieren lassen, selbst wenn man es für eine traditionelle Umgebung hält. Dies setzt voraus, dass alle Daten leicht zugänglich sind und der Arbeitsraum praktisch unbegrenzt ist.
Die Multi-Tape-Turing-Maschine ist sicherlich theoretisch gut spezifiziert und viele Algorithmen wurden im Laufe der Jahre in diesem Modell entworfen und analysiert. Für manche ist es jedoch nicht eng genug, wie echte Computer funktionieren, um ein wirklich gutes Modell für das 21. Jahrhundert zu sein. Andererseits ist das Wort-RAM-Modell populär geworden und scheint die Arbeitsweise moderner Computer genauer zu erfassen (Operationen an Wörtern, nicht Bits, ständiger zeitlicher Zugriff auf Speicherstellen). Es gibt jedoch Aspekte, die nicht ideal sind. Zum Beispiel gibt es kein Ein-Wort-RAM-Modell. Zunächst muss festgelegt werden, welche Operationen an Wörtern in konstanter Zeit zulässig sein sollen. Hierfür gibt es viele Möglichkeiten, ohne dass eine einzige Antwort akzeptiert wird. Zweite, Die Wortgröße w wird normalerweise so eingestellt, dass sie mit der Eingabegröße wächst (dh mindestens so schnell wie log (n)), damit jedes Element im Speicher mit einer konstanten Anzahl von Wörtern adressiert werden kann. Dies bedeutet, dass man sich eine unendliche Klasse von Maschinen vorstellen muss, auf denen Ihr Algorithmus ausgeführt wird, oder noch schlimmer, dass sich die Maschine ändert, wenn Sie mehr Daten einspeisen. Dies ist zumindest für meine Schüler ein beunruhigender Gedanke. Schließlich erhalten Sie mit dem Wort-RAM-Modell etwas überraschende Komplexitätsergebnisse, die möglicherweise nicht mit denen übereinstimmen, die man als Student lernt. Beispielsweise ist die Multiplikation von zwei n-Bit-Zahlen in diesem Modell O (n) -Zeit, und das einfache Einlesen einer n-Bit-Zeichenfolge ist plötzlich eine sublineare Zeitoperation. Dies bedeutet, dass man sich eine unendliche Klasse von Maschinen vorstellen muss, auf denen Ihr Algorithmus ausgeführt wird, oder noch schlimmer, dass sich die Maschine ändert, wenn Sie mehr Daten einspeisen. Dies ist zumindest für meine Schüler ein beunruhigender Gedanke. Schließlich erhalten Sie mit dem Wort-RAM-Modell etwas überraschende Komplexitätsergebnisse, die möglicherweise nicht mit denen übereinstimmen, die man als Student lernt. Beispielsweise ist die Multiplikation von zwei n-Bit-Zahlen in diesem Modell O (n) -Zeit, und das einfache Einlesen einer n-Bit-Zeichenfolge ist plötzlich eine sublineare Zeitoperation. Dies bedeutet, dass man sich eine unendliche Klasse von Maschinen vorstellen muss, auf denen Ihr Algorithmus ausgeführt wird, oder noch schlimmer, dass sich die Maschine ändert, wenn Sie mehr Daten einspeisen. Dies ist zumindest für meine Schüler ein beunruhigender Gedanke. Schließlich erhalten Sie mit dem Wort-RAM-Modell etwas überraschende Komplexitätsergebnisse, die möglicherweise nicht mit denen übereinstimmen, die Sie als Schüler lernen. Beispielsweise ist die Multiplikation von zwei n-Bit-Zahlen in diesem Modell O (n) -Zeit, und das einfache Einlesen einer n-Bit-Zeichenfolge ist plötzlich eine sublineare Zeitoperation.
Abgesehen davon, wenn Sie nur wissen möchten, ob Ihr Algorithmus wahrscheinlich schnell abläuft, ist dies höchstwahrscheinlich der Fall :-)