In den letzten Tagen habe ich viel über (vollständig) zeitkonstruierbare Funktionen nachgedacht und werde das, was ich herausgefunden habe, durch Beantwortung von Q1 und Q3 präsentieren. Q2 scheint zu schwer.
Q3:
Kobayashi in seinem Artikel (die Referenz in der Frage) bewiesen , dass eine Funktion , für die es ein existiert ε > 0 st f ( n ) ≥ ( 1 + ε ) n , ist voll Zeit konstruierbar iff es ist berechenbar in O ( f ( n ) ) Zeit. (Beachten Sie, dass es unerheblich ist, ob der Eingang oder der Ausgang unär / binär ist, da wir zwischen diesen beiden Darstellungen in linearer Zeit transformieren können). Dies macht die folgenden Funktionen vollständig zeitkonstruierbar: 2 n ,f:N→Nϵ>0f(n)≥(1+ϵ)nO(f(n))2n , n ! , n ⌊ log n ⌋ , alle Polynome p über N st p ( n ) ≥ ( 1 + ϵ ) n ... Kobayashi erwies sich auch für einige Funktionen, die langsamer als ( 1 + ϵ ) n werden ,als vollständig zeitkonstruierbar , wie n + ⌊ ⌊ log n ⌋ q ⌋ für q ∈ Q + ...22nn!n⌊logn⌋pNp(n)≥(1+ϵ)n(1+ϵ)nn+⌊⌊logn⌋q⌋q∈Q+
Um mit Beispielen für vollständig zeitkonstruierbare Funktionen fortzufahren, kann man beweisen, dass wenn und f 2 vollständig zeitkonstruierbar sind, dann f 1 +f1f2 , f 1 f 2 , f f 2 1 und f 1 ∘ f 2 sind auch vollständig zeitkonstruierbar (die spätere folgt direkt aus Satz 3.1 in Kobayashi). Insgesamt hat mich das überzeugt, dass viele nette Funktionen in der Tat vollständig zeitkonstruierbar sind.f1+f2f1f2ff21f1∘f2
Es ist überraschend, dass Kobayashi keinen Weg gefunden hat, die der (netten) Funktion ⌊ n log n ⌋ vollständig zu beweisen (und ich auch nicht).⌊nlogn⌋
Lassen Sie uns auch die Definition aus dem Wikipedia-Artikel kommentieren : Eine Funktion ist zeitkonstruierbar, wenn es eine Turing-Maschine M gibt , die bei einem String 1 n f ( n ) in O ( f ( n ) ) -Zeit ausgibt . fM1nf(n)O(f(n)) Wir sehen, dass diese Definition unserer Definition der vollständigen Zeitkonstruierbarkeit für Funktionen .f(n)≥(1+ϵ)n
Q1:
Diese Frage hat eine wirklich interessante Antwort. Ich beanspruche , dass , wenn alle Zeitfunktionen konstruierbar sind vollständig zeit konstruierbar, dann . Um dies zu beweisen, nehmen wir ein beliebiges Problem L ∈ N E X P - T I M E , L ⊆ { 0 , 1 } ∗ . Dann gibt es eine k ∈ N , st LEXP−TIME=NEXP−TIMEL∈NEXP−TIMEL⊆{0,1}∗k∈NL can be solved by a NDTM M in 2nk−1 steps. We can assume that at each step M goes in at most two different states for simplicity. Now define the function
f(n)={8n+28n+1if (first ⌊⌊logn⌋+1−−−−−−−−−√k⌋ bits of bin(n))∈Lelse
Ich behaupte, dass ist. Man betrachte die folgende deterministische Turingmaschine T :fT
- bei Eingabe der Länge n wird berechnet ( erstes ⌊ k √wninO(n)Zeit(first ⌊⌊logn⌋+1−−−−−−−−−√k⌋ bits of bin(n))O(n)
- dann simuliert es auf diesen Bits, wobei die Bits von w bestimmen, welche (früher nicht determinierten) Entscheidungen zu treffen sind.Mw
- accept iff (M accepts using choices given by w).
Note that the length of w (=n) is enough that it determines all nondeterministic choices, since M on input (first ⌊⌊logn⌋+1−−−−−−−−−√k⌋ bits of bin(n)) makes at most n steps.
We can make T run in at most 8n+1 steps. Now the following Turing machine proves that f is time-constructible:
- on input w of length n 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.
fEXP−TIME=NEXP−TIME
L
- xnx00…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.