Ein Student von mir hat kürzlich die folgende Frage gestellt:
Es sei angenommen , D T I M E ( f ( n ) ) ⊊ D T I M E ( g ( n ) ) .
Dies könnte wahrscheinlich durch die Konstruktion eines h ( n ) als wahr gezeigt werden,
Ein Student von mir hat kürzlich die folgende Frage gestellt:
Es sei angenommen , D T I M E ( f ( n ) ) ⊊ D T I M E ( g ( n ) ) .
Dies könnte wahrscheinlich durch die Konstruktion eines h ( n ) als wahr gezeigt werden,
Antworten:
Wenn D T I M E ( f ( n ) ) als die Klasse aller Sprachen definiert ist, die von einer Zwei-Band-Turing-Maschine in O ( f ( n ) ) -Zeit entscheidbar ist , dann vermute ich, dass die Antwort Nein ist. Mit anderen Worten, ich denke, dass es nicht immer eine streng zwischenzeitliche Komplexitätsklasse gibt.
Hinweis: Diese Antwort ist möglicherweise nicht genau das, wonach Sie suchen, da ich nicht berechenbare Funktionen in Betracht ziehe und nicht jedes Detail des Arguments einbeziehe. Aber ich fand, dass es ein guter Anfang ist. Bitte zögern Sie nicht, Fragen zu stellen. Vielleicht kann ich diese Details irgendwann weiter ausfüllen oder dies führt zu einer besseren Antwort eines interessierten Lesers.
Betrachten Funktionen der Form f : N → N . Wir bezeichnen diese Funktionen als natürliche Zahlenfunktionen.
Behauptung 1: Ich behaupte, dass wir eine sehr langsam wachsende nicht abnehmende natürliche Zahlfunktion (nicht berechenbar) ε ( n ) so konstruieren können, dass:
ε(n) (1) ε(n)
ε(n) is non-decreasing(2) ε ( n )=ω(1)
ε(n)=ω(1) (3) Für alle unbegrenzten berechenbaren f : N→N
f:N→N , the set {n|ε ( n ) ≤ f (n)}{n|ε(n)≤f(n)} is infinite.
Wir konstruieren ε ( n ) als langsam wachsende, nicht abnehmende Sprungfunktion. Lassen Sie uns alle unbeschränkt berechenbaren Funktionen aufzählen { f i } i ∈ N . Wir wollen ε ( n ) so konstruieren, dass für jedes i und jedes j ≤ i gilt
Note: I just provided some intuition behind claim 1, I did not provide a detailed proof. Please feel free to join in on discussion below.
Because ε(n)
Claim 2: For all computable natural number functions f(n)
f(n) and h(n)h(n) , if h(n)=Ω(f(n)ε(n))h(n)=Ω(f(n)ε(n)) and h(n)=O(f(n))h(n)=O(f(n)) , then h(n)=Θ(f(n))h(n)=Θ(f(n)) .
For claim 2, if there existed a computable function h(n)
Let me explain some relevant details. Suppose for sake of contradiction that such a function h(n)
Note: The preceding function is computable because f(n)
Since h(n)=Ω(f(n)ε(n))
Claim 3: For a time constructible function f(n)
f(n) , we have that DTIME(f(n)ε(n))⊊DTIME(f(n))DTIME(f(n)ε(n))⊊DTIME(f(n)) , yet there does not exist h(n)h(n) such that f(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) are time-constructible, and g(n)≤o(f(n)/logf(n)), then DTIME(g(n))⊊DTIME(f(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.