On peut prouver que DSPACE ( f( 32n ) ) ≠ DSPACE( f( n ) )siFcroît au moins linéairement en utilisant une variante simple de l'argument de remplissage standard. Pour une langueL , soitL′= { x 0| x | / 2∣ x ∈ L } .
Prétendre. L ∈ DSPACE ( f( n ) ) si et seulement si L′∈ DSPACE ( f( 23n ) )siF( n ) ≥ 32n.
(Ma première réponse avait plusieurs déclarations incorrectes, merci à Emil d'avoir repéré cela.)
Je vais d'abord montrer comment utiliser la revendication pour prouver la hiérarchie. Puisque F croît au moins linéairement, nous avons DSPACE ( 2 f( n ) ) ⊂ DSPACE ( f( 2 n ) ) . Prendre une langue L ∈ DSPACE ( f(2n))∖ DSPACE(f(n)) . En utilisant la revendication,L′∈ DSPACE(f(43n))= DSPACE(f(n)), où la dernière égalité est par hypothèse indirecte. Mais alorsL∈DSPACE(f(32n))= DSPACE(f(n)) , où la dernière égalité est à nouveau par l'hypothèse indirecte, donnant une contradiction.
Preuve de la réclamation.
Si L′∈ DSPACE (f(23n)), puis pour prouverL∈DSPACE(f(n)), il suffit d'écrire|x|/20 à la fin de l'entréexet simuler la machine qui a acceptéL′. Puisquef(n)≥32n, cela n'augmentera pas l'espace que nous utilisons. (En fait, savoir combien de 0 à écrire n'est pas clair du tout sifest petit et nous ne pouvons pas augmenter la taille de l'alphabet - à la place, nous pouvons utiliser une autre bande et écrire sur tout ce qui viendrait après la fin dex.)
L'autre direction est aussi simple que cela en remplaçant les 0 par des *, si nous sommes autorisés à écrire des *. (Voir les problèmes avec cela dans mon commentaire à la question.) Si nous ne sommes pas autorisés à écrire des étoiles, nous modifions légèrement la définition de L′ comme L′={x10|x|/2∣x∈L} . Maintenant, au lieu d'écrire des étoiles, nous gardons l'entrée d'origine x10|x|/2et travailler avec ça. Mais chaque fois que nous atteignons un 1, nous allons à droite jusqu'à ce que nous touchions un autre 1 pour vérifier s'il s'agissait du 1 de fin de mot ou non. Si nous avons trouvé un autre 1, nous revenons simplement à notre 1. Si ce n'est pas le cas, nous revenons toujours en arrière, mais nous saurons qu'il doit être traité comme une étoile - si nous écrivions dessus, alors nous écrivons également un 10 après pour avoir un nouveau marqueur de fin de mot courant. (En fait, il y a aussi un petit hic dans cette partie si f est petit - comment pouvons-nous vérifier si l'entrée est de la forme x10|x|/2 ? Sans détruire l'entrée, je ne peux résoudre ce problème qu'en utilisant plusieurs têtes pour les petits f .)