No existe un modelo computacional totalmente satisfactorio para analizar los algoritmos con tristeza, incluso en lo que se podría considerar una configuración tradicional. Eso supone que todos los datos sean fácilmente accesibles y que el espacio de trabajo sea efectivamente ilimitado.
La máquina de Turing multicinta, sin duda, está teóricamente bien especificada y muchos algoritmos han sido diseñados y analizados en este modelo a lo largo de los años. Sin embargo, para algunos no se relaciona lo suficiente con la forma en que funcionan las computadoras reales para ser realmente un buen modelo para usar en el siglo XXI. Por otro lado, el modelo de palabra RAM se ha vuelto popular y parece capturar con mayor precisión el funcionamiento de las computadoras modernas (operaciones en palabras, no bits, acceso de tiempo constante a ubicaciones de memoria). Sin embargo, hay aspectos que son menos que ideales. Por ejemplo, no hay una sola palabra modelo de RAM. Primero hay que especificar qué operaciones en las palabras se permitirán en tiempo constante. Hay muchas opciones para esto sin una respuesta única aceptada. Segundo, el tamaño de palabra w normalmente está configurado para crecer con el tamaño de entrada (que es al menos tan rápido como log (n)) para permitir que cualquier elemento en la memoria se aborde utilizando un número constante de palabras. Esto significa que uno tiene que imaginar una clase infinita de máquinas en las que se ejecuta su algoritmo o, lo que es peor, que la máquina cambia a medida que le proporciona más datos. Este es un pensamiento desconcertante para los más puros entre mis alumnos al menos. Finalmente, obtienes resultados de complejidad algo sorprendentes con el modelo de palabra RAM que podría no coincidir con aquellos que aprendes como estudiante. Por ejemplo, la multiplicación de dos números de n bits es O (n) tiempo en este modelo y simplemente leer en una cadena de n bits es una operación de tiempo sublineal de repente. Esto significa que uno tiene que imaginar una clase infinita de máquinas en las que se ejecuta su algoritmo o, lo que es peor, que la máquina cambia a medida que le proporciona más datos. Este es un pensamiento desconcertante para los más puros entre mis alumnos al menos. Finalmente, obtienes resultados de complejidad algo sorprendentes con el modelo de palabra RAM que podría no coincidir con aquellos que aprendes como estudiante. Por ejemplo, la multiplicación de dos números de n bits es O (n) tiempo en este modelo y simplemente leer en una cadena de n bits es una operación de tiempo sublineal de repente. Esto significa que uno tiene que imaginar una clase infinita de máquinas en las que se ejecuta su algoritmo o, lo que es peor, que la máquina cambia a medida que le proporciona más datos. Este es un pensamiento desconcertante para los más puros entre mis alumnos al menos. Finalmente, obtienes resultados de complejidad algo sorprendentes con el modelo de palabra RAM que podría no coincidir con aquellos que aprendes como estudiante. Por ejemplo, la multiplicación de dos números de n bits es O (n) tiempo en este modelo y simplemente leer en una cadena de n bits es una operación de tiempo sublineal de repente.
Habiendo dicho todo eso, si solo quiere saber si su algoritmo es probable que se ejecute rápidamente, lo más probable es que :-)