Nos últimos dias, pensei muito em funções (totalmente) construtivas no tempo e apresentarei o que descobri respondendo ao Q1 e Q3. Q2 parece muito difícil.
Q3:
Kobayashi em seu artigo (a referência está na pergunta) provou que uma função , para a qual existe um ϵ > 0 st f ( n ) ≥ ( 1 + ϵ ) n , é totalmente construtível no tempo se for computável em O ( f ( n ) ) tempo. (observe que é irrelevante se a entrada ou a saída está em unário / binário, pois podemos transformar entre essas duas representações em tempo linear). Isso torna as seguintes funções totalmente construtíveis no tempo: 2 n ,f:N→Nϵ>0f(n)≥(1+ϵ)nO(f(n))2n , n ! , N ⌊ log n ⌋ , todos os polinómios de p mais de N r p ( n ) ≥ ( 1 + ε ) n ... Kobayashi também se provou ser totalmente tempo-construtibilidade para algumas funções que crescem mais lentamente do que ( 1 + ε ) n , como n + ⌊ ⌊ log n ⌋ q ⌋ para q ∈ Q + ...22nn!n⌊logn⌋pNp(n)≥(1+ϵ)n(1+ϵ)nn+⌊⌊logn⌋q⌋q∈Q+
Para continuar com exemplos de funções totalmente construtíveis no tempo, pode-se provar que, se e f 2 são totalmente construtíveis no tempo, então f 1 + f 2 , f 1 f 2 , f f 2 1 e f 1 ∘ f 2 são também totalmente construtível no tempo (a seguir segue diretamente do Teorema 3.1 em Kobayashi). Isso me convence de que muitas funções agradáveis são de fato totalmente construtíveis no tempo.f1f2f1+ f2f1f2ff21f1∘ f2
É surpreendente que Kobayashi não tenha visto uma maneira de provar totalmente a construtibilidade no tempo da função (agradável) (e nem eu).Log n logn⌋
Vamos também comentar a definição do artigo da Wikipedia : Uma função é construtível no tempo, se existe uma máquina de Turing M que, dada uma string 1 n , gera f ( n ) no tempo O ( f ( n ) ) . fM1nf(n)O(f(n)) Vemos que esta definição é equivalente à nossa definição de construtibilidade no tempo total para as funções .f(n)≥(1+ϵ)n
Q1:
Esta pergunta tem uma resposta realmente interessante. I afirmam que, se todas as funções de tempo-construtıvel são totalmente tempo-construtıvel, então . Para provar isso, tomemos um problema arbitrário L ∈ N E X P - T I M E , L ⊆ { 0 , 1 } ∗ . Então existe um k ∈ N , st LEXP−TIME=NEXP−TIMEL∈NEXP−TIMEL⊆{0,1}∗k∈NLpode ser resolvido por um NDTM em 2 n k - 1 passos. Podemos supor que a cada passo M entre no máximo dois estados diferentes para simplificar. Agora defina a função
f ( n ) = { 8 n + 2 se ( primeiro ⌊ k √M2nk−1M
f(n)={8n+28n+1if (first ⌊⌊logn⌋+1−−−−−−−−−√k⌋ bits of bin(n))∈Lelse
Afirmo que é construtível no tempo. Considere a seguinte máquina de Turing determinística T :fT
- na entrada de comprimento n calcula ( primeiro ⌊ k √wnemO(n)tempo(first ⌊⌊logn⌋+1−−−−−−−−−√k⌋ bits of bin(n))O(n)
- depois simula nesses bits, onde os bits de w determinam quais escolhas (anteriormente não determinísticas) devem ser tomadas.Mw
- aceite iff .(M accepts using choices given by w)
Observe que o comprimento de ( = n ) é suficiente para determinar todas as opções não determinísticas, pois M na entrada ( primeiro ⌊ k √w=nMrealiza no máximonetapas.(first ⌊⌊logn⌋+1−−−−−−−−−√k⌋ bits of bin(n))n
Podemos fazer o rodar no máximo 8 n + 1 etapas. Agora, a seguinte máquina de Turing prova que f é construtível no tempo:T8n+1f
- na entrada de comprimento n, execute T e conte os passos em paralelo para que sejam executados exatamente 8 n passos.wnT8n
- se rejeitou ou rejeitaria na próxima etapa, vá para um estado de parada na próxima etapa. Senão, dê mais um passo e depois pare.T
Agora, suponha que seja totalmente construtível no tempo. Vamos provar que isto conduz a E X P - T I M E = N E X P - T I M E .fEXP−TIME=NEXP−TIME
O seguinte algoritmo resolve :L
- na entrada , seja n o número com representação binária x 00 … 0 ( | x | k - 1 zeros). Segue que x = ( primeiro ⌊ k √xnx00…0|x|k−1.x=(first ⌊⌊logn⌋+1−−−−−−−−−√k⌋ bits of bin(n))
- calcule no tempo f ( n ) e verifique se é divisível por 2.f(n)f(n)
Este algoritmo é executado em exponencial tempo e resolve . Uma vez que L ∈ N E X P - T I M E foi arbitrária, E X P - T I M E = N E X P - T I M E .LL∈NEXP−TIMEEXP−TIME=NEXP−TIME