Negli ultimi giorni ho pensato molto alle funzioni (completamente) costruibili nel tempo e presenterò ciò che ho scoperto rispondendo a Q1 e Q3. Q2 sembra troppo difficile.
Q3:
Kobayashi nel suo articolo (il riferimento è nella domanda) ha dimostrato che una funzione , per la quale esiste un ϵ > 0 st f ( n ) ≥ ( 1 + ϵ ) n , è completamente costruibile nel tempo se lo è calcolabile in tempo O ( f ( n ) ) . (si noti che è irrilevante se l'input o l'output è in unario / binario poiché possiamo trasformare tra queste due rappresentazioni in tempo lineare). Ciò rende le seguenti funzioni completamente costruibili nel tempo: 2 n ,f:N→Nϵ>0f(n)≥(1+ϵ)nO(f(n))2n ,n! ,n⌊logn⌋, tutti i polinomipsuNstp(n)≥(1+ϵ)n... Kobayashi ha anche dimostrato la completa costruibilità temporale per alcune funzioni che crescono più lentamente di(1+ϵ)n, comen+⌊⌊logn⌋q⌋perq∈ Q +22nn!n⌊logn⌋pNp(n)≥(1+ϵ)n(1+ϵ)nn+⌊⌊logn⌋q⌋q∈Q+ ...
Per continuare con esempi di funzioni completamente costruibili nel tempo, si può dimostrare che se e f 2 sono completamente costruibili nel tempo, allora f 1 + f 2 , f 1 ff1f2f1+f2 , f f 2 1 e f 1 ∘ f 2f1f2ff21f1∘f2 sono anche completamente costruibile nel tempo (il seguito segue direttamente dal Teorema 3.1 di Kobayashi). Questo mi convince del tutto che molte belle funzioni sono davvero completamente costruibili nel tempo.
È sorprendente che Kobayashi non abbia visto un modo per dimostrare completamente la costruibilità nel tempo della (bella) funzione ⌊nlogn⌋ (e nemmeno io).
Commentiamo anche la definizione dell'articolo di Wikipedia : Una funzione è costruibile nel tempo, se esiste una macchina di Turing M che, data una stringa 1 n , genera f ( n ) infM1nf(n) tempo. O(f(n)) Vediamo che questa definizione è equivalente alla nostra definizione di costruibilità completa nel tempo per le funzioni .f(n)≥(1+ϵ)n
Q1:
Questa domanda ha una risposta davvero interessante. Sostengo che se tutte le funzioni orarie costruibile sono completamente tempo-costruibile, quindi . Per dimostrarlo, prendiamo un problema arbitrario L ∈ N E X P - T I M può essere risolto da un NDTM M in 2 n k - 1 passi. Possiamo presumere che ad ogni passo MEXP−TIME=NEXP−TIME , L ⊆ { 0 , 1 } ∗ . Quindi esiste un k ∈ N , st LL∈NEXP−TIMEL⊆{0,1}∗k∈NLM2nk−1M entri al massimo in due diversi stati per semplicità. Ora definisci la funzione
f(n)={8n+28n+1if (first ⌊⌊logn⌋+1−−−−−−−−−√k⌋ bits of bin(n))∈Lelse
Sostengo che sia costruibile nel tempo. Considerare la seguente Turing deterministica T :fT
- sull'ingresso di lunghezza n calcola ( prima ⌊ k √wnaO(n)tempo(first ⌊⌊logn⌋+1−−−−−−−−−√k⌋ bits of bin(n))O(n)
- quindi simula su questi bit, in cui i bit di w determinano quali scelte (precedentemente non deterministiche) prendere.Mw
- accetta iff .(M accepts using choices given by w)
Si noti che la lunghezza di ( = n ) è sufficiente per determinare tutte le scelte non deterministiche, poiché M sull'input ( prima ⌊ k √w=nMesegue al massimonpassaggi.(first ⌊⌊logn⌋+1−−−−−−−−−√k⌋ bits of bin(n))n
Possiamo far funzionare al massimo 8 n + 1 passaggi. Ora la seguente macchina di Turing dimostra che f è costruibile nel tempo:T8n+1f
- sull'ingresso di lunghezza n eseguire T e contare i passi in parallelo in modo da eseguire esattamente 8 n passi.wnT8n
- se rifiutato o rifiuta nel passaggio successivo, passa a uno stato di arresto nel passaggio successivo. Altrimenti, fai un altro passo e poi vai in uno stato di arresto.T
Supponiamo ora che sia completamente costruibile nel tempo. Noi dimostreremo che questo porta a E X P - T I M E = N E X P - T I M E .fEXP−TIME=NEXP−TIME
Il seguente algoritmo risolve :L
- sull'input , sia n il numero con rappresentazione binaria x 00 … 0 ( | x | k - 1 zeri). Ne segue che x = ( prima ⌊ k √xnx00…0|x|k−1.x=(first ⌊⌊logn⌋+1−−−−−−−−−√k⌋ bits of bin(n))
- calcola nel tempo f ( n ) e controlla se è divisibile per 2.f(n)f(n)
Questo algoritmo viene eseguito in tempo esponenziale e risolve . Poiché L ∈ N E X P - T I M E arbitraria, e X P - T I M E = N E X P - T I M E .LL∈NEXP−TIMEEXP−TIME=NEXP−TIME