Dalam beberapa hari terakhir saya banyak berpikir tentang fungsi konstruksi-penuh (sepenuhnya) dan saya akan mempresentasikan apa yang saya temukan dengan menjawab Q1 dan Q3. Q2 sepertinya terlalu sulit.
Q3:
Kobayashi dalam artikelnya (rujukannya ada dalam pertanyaan) membuktikan bahwa fungsi , yang terdapat ϵ > 0 st f ( n ) ≥ ( 1 + ϵ ) n , sepenuhnya dapat dibangun jika dihitung dalam waktu O ( f ( n ) ) . (perhatikan bahwa tidak relevan apakah input atau output dalam unary / binary karena kita dapat mengubah antara dua representasi ini dalam waktu linier). Ini membuat fungsi-fungsi berikut ini sepenuhnya dapat dibangun dengan waktu: 2 n ,f:N→Nϵ>0f(n)≥(1+ϵ)nO(f(n))2n , n ! , n ⌊ log n ⌋ , semua polinomial p lebih dari N st p ( n ) ≥ ( 1 + ϵ ) n ... Kobayashi juga membuktikan konstruktivitas waktu sepenuhnya untuk beberapa fungsi yang tumbuh lebih lambat daripada ( 1 + ϵ ) n , seperti n + ⌊ ⌊ log n ⌋ q ⌋ untuk q ∈ Q + ...22nn!n⌊logn⌋pNp(n)≥(1+ϵ)n(1+ϵ)nn+⌊⌊logn⌋q⌋q∈Q+
Untuk melanjutkan dengan contoh-contoh fungsi yang dibangun sepenuhnya waktu, orang dapat membuktikan bahwa jika dan f 2 sepenuhnya dapat dibangun waktu, maka f 1 + f 2 , f 1 f 2 , f f 2 1 dan f 1 ∘ f 2 adalah juga sepenuhnya time-constructible (selanjutnya mengikuti langsung dari Teorema 3.1 di Kobayashi). Ini sekaligus meyakinkan saya bahwa banyak fungsi yang bagus memang sepenuhnya dapat dibangun waktu.f1f2f1+f2f1f2ff21f1∘f2
Sangat mengejutkan bahwa Kobayashi tidak melihat cara untuk membuktikan sepenuhnya konstruk waktu dari fungsi (baik) (dan saya juga tidak).⌊nlogn⌋
Let us also comment the definition from Wikipedia article: A function f is time-constructible, if there exists a Turing machine M which, given a string 1n, outputs f(n) in O(f(n)) time. We see that this definition is equivallent to our definition of fully time-constructibility for functions f(n)≥(1+ϵ)n.
Q1:
This question has a really interesting answer. I claim that if all time-constructible functions are fully time-constructible, then EXP−TIME=NEXP−TIME. To prove that, let us take an arbitrary problem L∈NEXP−TIME, L⊆{0,1}∗. Then there exists a k∈N, s.t. L 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
I claim that f is time-construcible. Consider the following deterministic Turing machine T:
- on input w of length n it computes (first ⌊⌊logn⌋+1−−−−−−−−−√k⌋ bits of bin(n)) in O(n) time
- then it simulates M on these bits, where the bits of w determine which (formerly nondeterminisic) choices to take.
- 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.
Now suppose that f is fully time-constructible. We will prove that this leads to EXP−TIME=NEXP−TIME.
The following algorithm solves L:
- on input x, let n be the number with binary representation x00…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.