Quelle est la différence entre RAM et TM?

10

Dans l'analyse d'algorithmes, nous supposons une machine d'accès aléatoire (RAM) à un processeur générique. Pour autant que je sache, la machine RAM n'est pas plus efficace que la machine Turing. Tous les algorithmes peuvent être implémentés dans la machine de Turing. Mes questions sont donc:

  • Si la machine Turing est aussi efficace que la machine RAM, alors pourquoi ne supposons-nous pas la machine Turing pour l'analyse d'algorithmes?

  • Quelle est la différence entre RAM et TM?

Tanmoy
la source

Réponses:

13

Les machines de Turing ne sont pas aussi efficaces que les machines RAM. Une machine RAM peut accéder à un emplacement de bande arbitraire dansO(1). Une machine de Turing ne peut pas. Une machine RAM peut faire de l'arithmétique dansO(1)(sous certaines restrictions). Une machine de Turing ne peut pas.

Les machines de Turing simulent polynomiquement des machines RAM, c'est-à-dire pour c, toute machine RAM fonctionnant à temps O(nk) peut être simulé par une machine de Turing fonctionnant dans le temps O(nck). (La constante est assez raisonnable, environ2, selon le modèle de la machine Turing.)

Yuval Filmus
la source
1
Merci Yuval. Maintenant je comprends que la RAM est plus rapide que la machine Turing, mais pourquoi 2?
tanmoy
Je reçois 2car c'est (à peu près) le temps naïvement nécessaire pour simuler un accès aléatoire. Je peux me tromper ici.
Yuval Filmus
2
Vous devriez jeter un œil à Time Bounded Random Access Machines de Cook , où la surcharge de simulation d'un modèle avec un autre est prouvée avec précision.
Clément
Juste une petite question: en cas de problème Π a un algorithme polynomial sur le modèle RAM, puis-je dire que Πa un algorithme polynomial sur le modèle TM? Ou bien, si un problèmeΠ a un algorithme polynomial sur le modèle RAM, puis-je dire que Πest en P?
drzbir
1
@Azzo Vous avez raison, un problème est dans P ssi il a un algorithme de temps polynomial dans le modèle RAM ssi il a un algorithme de temps polynomial dans le modèle de machine de Turing.
Yuval Filmus