Un estudiante mío recientemente hizo la siguiente pregunta:
D T I M E ( f ( n ) ) ⊊ D T I M E ( g ( n ) ) .
Esto probablemente podría demostrarse cierto construyendo una h(n)
Un estudiante mío recientemente hizo la siguiente pregunta:
D T I M E ( f ( n ) ) ⊊ D T I M E ( g ( n ) ) .
Esto probablemente podría demostrarse cierto construyendo una h(n)
Respuestas:
Si D T I M E ( f ( n ) )
Nota: Esta respuesta podría no ser exactamente lo que está buscando porque estoy considerando funciones no computables y no incluyo todos los detalles del argumento. Pero, sentí que es un buen comienzo. Por favor, siéntase libre de hacer cualquier pregunta. Tal vez pueda completar estos detalles en algún momento o tal vez esto conduzca a una mejor respuesta de un lector interesado.
Considere funciones de la forma f : N → N
Reclamación 1: afirmo que podemos construir una función de número natural (no computable) de crecimiento lento y no decreciente ε ( n )
ε(n) tal que:(1) ε ( n )
ε(n) no es decreciente(2) ε ( n ) = ω ( 1 )
ε(n)=ω(1) (3) Para todos los f computables ilimitados f : N → N
f:N→N , el conjunto { nEl |ε ( n ) ≤ f ( n ) }{n|ε(n)≤f(n)} es infinito.
Construimos ε ( n ) como una función de paso de crecimiento lento y no decreciente. Vamos a enumerar todas las funciones computables ilimitadas { f i } i ∈ N . Queremos construir ε ( n ) de tal manera que para cada i y cada j ≤ i , m i n { k
Nota: Acabo de proporcionar alguna intuición detrás de la reivindicación 1, no proporcioné una prueba detallada. No dude en unirse a la discusión a continuación.
Debido a que ε ( n ) es una función de crecimiento tan lento, tenemos lo siguiente:
Reclamación 2: para todas las funciones de números naturales computables f ( n ) y h ( n ) , si h ( n ) = Ω ( f ( n )
f(n) h(n) ε ( n ) )yh(n)=O(f(n)), luegoh(n)=Θ(f(n)).h(n)=Ω(f(n)ε(n)) h(n)=O(f(n)) h(n)=Θ(f(n))
Para la reivindicación 2, si existiera una función computable h ( n ) entre f ( n )
Déjame explicarte algunos detalles relevantes. Supongamos, en aras de la contradicción, que tal función h ( n ) existe. Entonces, ⌊ f ( n )
Nota: La función anterior es computable porque f ( n ) y h ( n ) son computables.
Como h ( n ) = Ω ( f ( n )ε ( n ) ), tenemos⌊f(n)
Reclamación 3: Para una función construible en el tiempo f ( n ) , tenemos que D T I M E ( f ( n )
f(n) ε ( n ) )⊊DTIME(f(n)), sin embargo,noexisteh(n)tal quef(n)DTIME(f(n)ε(n))⊊DTIME(f(n)) h(n) ε(n)≤h(n)≤f(n)f(n)ε(n)≤h(n)≤f(n) and DTIME(f(n)ε(n))⊊DTIME(h(n))⊊DTIME(f(n))DTIME(f(n)ε(n))⊊DTIME(h(n))⊊DTIME(f(n)) .
In order to just show that, DTIME(f(n)ε(n))⊊DTIME(f(n))
Since there are no computable natural number functions between f(n)ε(n)
If this result is true, it would strengthen the best-known deterministic time hierarchy theorem. [This is more of a comment than an answer, but too long for a comment. It leaves open the direct construction of a counterexample.] Recall that the best Deterministic Time Hierarchy Theorem we currently have is that if f(n),g(n)
Now suppose your desired result is true, and let g(n) be a time-constructible function that is close to, but still little-oh of, f(n)/log(f(n)), say, g(n)=f(n)/(logf(n))3/2. (This g may not be time-constructible for arbitrary time-constructible f, but surely for many time-constructible f this g is also time-constructible.) Now, your desired result produces an h such that DTIME(g(n))⊊DTIME(h(n))⊊DTIME(f(n)). In order to avoid improving the current-best time hierarchy theorem, we would need both g(n)=o(h(n)/log(h(n))) and h(n)=o(f(n)/log(f(n)). These two together imply that g(n)≤o(f(n)/(log(f(n))log(h(n))). Since h(n)≥g(n), we have g(n)≤o(f(n)log(f(n))log(g(n))), or equivalently g(n)logg(n)≤o(f(n)/log(f(n))). But g(n)log(g(n))=f(n)/(log(f(n))3/2[log(f(n))−(3/2)loglog(f(n)]∼f(n)/√log(f(n)), which is not o(f(n)/log(f(n)).
I think such a behaviour is true for 1-Tape-DTMs. On the one hand, we have DTIME1(O(n))=DTIME1(o(nlogn)). Unfortunately, the only reference I know is in German: R. Reischuk, Einführung in die Komplexitätstheorie, Teubner, 1990, Theorem 3.1.8.
On the other hand, it should be possible to separate DTIME1(O(n)) and DTIME1(O(nlogn)) by the language {x#2|x|x∣x∈{0,1}∗} using a standard crossing sequence argument.