2CHAPITRE 10. COMPLEXIT ´
E PARALL `
ELE
Nous avons montr´e que l’on pouvait simuler les machines RAM par une
machine de Turing (th´eor`eme 5.7) travaillant sur un alphabet fini.
En fait, si l’on voit cette d´efinition comme un algorithme sur une structure
dont l’ensemble de base est les entiers, le th´eor`eme 5.8 montre qu’on peut aussi
simuler une machine RAM par une machine de Turing qui travaille sur les entiers
(c’est-`a-dire dont les cases du ruban contiennent des entiers).
Du point de vue de la calculabilit´e, cela ne fait pas vraiment de diff´erence,
puisque l’on peut simuler des calculs sur les entiers par des calculs sur leur
codage en binaire.
Dans le mˆeme esprit, du point de vue de la calculabilit´e, on pourrait aussi au-
toriser des types d’op´erations plus g´en´erales dans le mod`ele comme par exemple
ajouter aux op´erations de la d´efinition pr´ec´edente les op´erations du type xi
←max(xi, xj), xi←xi+xj,xi←xi∗xj, etc. En fait plus g´en´eralement,
toute op´eration du type xi←f(xi1, xi2,· · · , xik) o`u fest une fonction calcu-
lable sur les entiers, ou dont la repr´esentation binaire de la valeur est calculable
`a partir de la repr´esentation binaire des arguments, si l’on pr´ef`ere, calculable au
sens des structures finies.
10.1.2 Complexit´e et machines RAM
S’il on veut parler de complexit´e, il est vrai qu’un calcul en temps td’une
machine de Turing se simule en un temps polynomial en tpar une machine RAM
au sens de la d´efinition 5.5 : cela d´ecoule du th´eor`eme 5.6, en voyant une machine
de Turing comme une machine de Turing sur la structure B= ({0,1},0,1,=).
Cependant la r´eciproque n’est pas n´ecessairement vraie, car une machine
RAM comme d´efinie dans la d´efinition 5.5 peut `a priori manipuler des entiers
tr`es grands en temps unitaire, et donc un temps test pas simulable facilement
en un temps polynomial en t, si la taille des entiers impliqu´es ne reste pas
polynomiale en la taille des entr´ees et en t.
Aussi, si l’on souhaite parler de complexit´e sur une machine RAM, on mesure
g´en´eralement la taille des entr´ees de la fa¸con suivante : la taille d’un entier n
est |n|=dlog(n)e(le nombre de bits n´ecessaire pour l’´ecrire en binaire). Une
entr´ee d’une machine RAM est un mot w=w1w2· · · wnsur N∗: on mesure sa
taille |w|comme |w|=Pn
i=1 |wi|.
Remarque 10.1 Observons que cette subtilit´e est parfaitement inutile, si l’on
ne parle que de probl`emes et d’algorithmes impliquant des entiers de taille po-
lynomiale en la taille des entr´ees. Mais `a priori, dans le mod`ele RAM, on peut
avoir des entiers de taille arbitraire.
Si l’on utilise cette convention, un temps polynomial ten la (cette) taille
des entr´ees d’une machine RAM se simule bien en temps polynomial en tsur
une machine de Turing ou sur toute structure finie et r´eciproquement : il suffit
d’observer les preuves.
Autrement dit, avec cette convention, le temps polynomial est le mˆeme au
sens de tous les mod`eles consid´er´es dans le chapitre 5 (mis `a part les machines
`a k-compteurs).