Au cours des derniers jours, j'ai beaucoup pensé aux fonctions (entièrement) constructibles dans le temps et je présenterai ce que j'ai découvert en répondant aux Q1 et Q3. Le T2 semble trop difficile.
Q3:
Kobayashi dans son article (la référence est dans la question) a prouvé qu'une fonction , pour laquelle il existe un ϵ > 0 st f ( n ) ≥ ( 1 + ϵ ) n , est entièrement constructible dans le temps si elle est calculable en temps O ( f ( n ) ) . (notez qu'il est indifférent que l'entrée ou la sortie soit en unaire / binaire puisque nous pouvons transformer entre ces deux représentations en temps linéaire). Cela rend les fonctions suivantes entièrement constructibles dans le temps: 2 n ,f:N→Nϵ>0f(n)≥(1+ϵ)nO(f(n))2n , n ! , n ⌊ log n ⌋ , tous les polynômes p sur N st ppour q ∈ Q + ...22nn!n⌊logn⌋pN ... Kobayashi a également prouvé sa pleine constructibilité temporelle pour certaines fonctions qui croissent plus lentement que ( 1 + ϵ ) n , comme n + ⌊ ⌊ log n ⌋ q ⌋p(n)≥(1+ϵ)n(1+ϵ)nn+⌊⌊logn⌋q⌋q∈Q+
Pour continuer avec des exemples de fonctions entièrement constructibles dans le temps, on peut prouver que si et f 2 sont entièrement constructibles dans le temps, alors f 1 + f 2 , f 1 f 2 , f f 2 1 et f 1 ∘ f 2 sont également entièrement constructible dans le temps (le dernier découle directement du théorème 3.1 de Kobayashi). Cela me convainc tout à fait que de nombreuses fonctions intéressantes sont en effet entièrement constructibles dans le temps.f1f2f1+f2f1f2ff21f1∘f2
Il est surprenant que Kobayashi n'ait pas moyen de prouver pleinement la constructibilité temporelle de la (belle) fonction ⌊ n log n ⌋ (et moi non plus).⌊nlogn⌋
Commentons également la définition de l'article Wikipedia : Une fonction est constructible dans le temps, s'il existe une machine de Turing M qui, étant donnée une chaîne 1 n , produit f ( n ) en temps O ( f ( n ) ) . fM1nf(n)O(f(n)) Nous voyons que cette définition est équivalente à notre définition de la pleine constructibilité temporelle pour les fonctions .f(n)≥(1+ϵ)n
Q1:
Cette question a une réponse vraiment intéressante. Je revendique que si toutes les fonctions de temps sont entièrement constructible temps constructible, alors . Pour le prouver, prenons un problème arbitraire L ∈ N E X P - T I M E , L ⊆ { 0 , 1 } ∗ . Il existe alors un k ∈ N , st LEXP−TIME=NEXP−TIMEL∈NEXP−TIMEL⊆{0,1}∗k∈NL peut être résolu par un NDTM en 2M étapes. On peut supposer qu'à chaque étapeMpasse dans au plus deux états différents pour plus de simplicité. Définissons maintenant la fonction
f(n)= { 8 n + 2 if ( premier ⌊ k √2nk−1M
f(n)={8n+28n+1if (first ⌊⌊logn⌋+1−−−−−−−−−√k⌋ bits of bin(n))∈Lelse
Je prétends que est interprétable dans le temps. Considérons la machine Turing déterministe T suivante :fT
- sur l'entrée de longueur n, il calcule (wnenO(n)temps(first ⌊⌊logn⌋+1−−−−−−−−−√k⌋ bits of bin(n))O(n)
- puis il simule sur ces bits, où les bits de w déterminent les choix (anciennement non déterministes) à prendre.Mw
- accepter ssi .(M accepts using choices given by w)
Notons que la longueur de ( = n ) est suffisante pour déterminer tous les choix non déterministes, puisque M en entrée (d' abord ⌊ k √w=nMfait au plusnétapes.(first ⌊⌊logn⌋+1−−−−−−−−−√k⌋ bits of bin(n))n
T8n+1 steps. Now the following Turing machine proves that f is time-constructible:
- wn run T and count steps in parallel so that exacly 8n steps are done.
- if T rejected or would reject in the next step, go to a halting state in the next step. Else, make one more step and then go to a halting state.
Now suppose that f is fully time-constructible. We will prove that this leads to EXP−TIME=NEXP−TIME.
The following algorithm solves L:
- on input x, let n be the number with binary representation x00…0 (|x|k−1 zeros). It follows that x=(first ⌊⌊logn⌋+1−−−−−−−−−√k⌋ bits of bin(n)).
- compute f(n) in time f(n) and check whether it is divisible by 2.
This algorithm runs in exponential time and solves L. Since L∈NEXP−TIME was arbitrary, EXP−TIME=NEXP−TIME.