Hoy he aprendido que el análisis de algoritmos difiere según el modelo computacional. Es algo en lo que nunca he pensado ni oído hablar.
Un ejemplo que me dio, que lo ilustró aún más, por el usuario @chi fue:
Por ejemplo, considere la tarea: dado devuelve . En RAM esto se puede resolver en ya que el acceso a la matriz es de tiempo constante. Usando TMs, necesitamos escanear toda la entrada, por lo que esx i O ( 1 ) O ( n )
Esto me hace preguntarme acerca de los lenguajes funcionales; Según tengo entendido, "los lenguajes funcionales están íntimamente relacionados con el cálculo lambda" (de un comentario de Yuval Filmus aquí ). Entonces, si los lenguajes funcionales se basan en el cálculo lambda, pero se ejecutan en máquinas basadas en RAM, ¿cuál es la forma correcta de realizar análisis de complejidad en algoritmos implementados usando estructuras de datos e idiomas puramente funcionales?
No he tenido la oportunidad de leer Estructuras de datos puramente funcionales, pero he examinado el tema en la página de Wikipedia, y parece que algunas de las estructuras de datos reemplazan a las matrices tradicionales con:
"Las matrices se pueden reemplazar por un mapa o una lista de acceso aleatorio, que admite una implementación puramente funcional, pero el tiempo de acceso y actualización es logarítmico".
En ese caso, el modelo computacional sería diferente, ¿correcto?