J'ai appris aujourd'hui que l'analyse d'algorithme diffère en fonction du modèle de calcul. C'est quelque chose auquel je n'ai jamais pensé ni entendu parler.
Un exemple qui m'a été donné, qui l'a illustré davantage, par l'utilisateur @chi était:
Par exemple, considérons la tâche: étant donné retournent . En RAM, cela peut être résolu dans car l'accès au tableau est à temps constant. En utilisant des MT, nous devons analyser toute l'entrée, donc c'est
Cela me fait me poser des questions sur les langages fonctionnels; D'après ma compréhension, «les langages fonctionnels sont intimement liés au calcul lambda» (d'après un commentaire de Yuval Filmus ici ). Donc, si les langages fonctionnels sont basés sur le calcul lambda, mais qu'ils fonctionnent sur des machines basées sur la RAM, quelle est la bonne façon d'effectuer une analyse de complexité sur des algorithmes implémentés à l'aide de structures de données et de langages purement fonctionnels?
Je n'ai pas eu l'occasion de lire les structures de données purement fonctionnelles mais j'ai regardé la page Wikipedia pour le sujet, et il semble que certaines des structures de données remplacent les tableaux traditionnels par:
"Les tableaux peuvent être remplacés par une carte ou une liste d'accès aléatoire, qui admet une implémentation purement fonctionnelle, mais le temps d'accès et de mise à jour est logarithmique."
Dans ce cas, le modèle de calcul serait différent, n'est-ce pas?