В останні кілька днів я багато думав про (повністю) конструювані часом функції, і я представлю те, що я дізнався, відповідаючи на Q1 та Q3. Q2 здається занадто важким.
Q3:
Кобаяші у своїй статті (посилання є у запитанні) довів, що функція , для якої існує st , повністю сконструйований за часом, якщо він обчислюється за час . (зауважте, що не має значення, чи вхід чи вихід є одинарними / двійковими, оскільки ми можемо перетворити між цими двома поданнями в лінійний час). Це робить наступні функції повністю конструктивними за часом: , ,, , усі поліноми над st ϵ > 0 f ( n ) ≥ ( 1 + ϵ ) n O ( f ( n ) ) 2 n 2 2f:N→Nϵ>0f(n)≥(1+ϵ)nO(f(n))2n n! n⌊logn⌋pNp(n)≥(1+ϵ)n(1+ϵ)nn+⌊⌊22nn!n⌊logn⌋pNp(n)≥(1+ϵ)n... Кобаяші також довів повну конструктивність часу для деяких функцій, які ростуть повільніше, ніж , як для ...(1+ϵ)nq ∈ Q +n+⌊⌊logn⌋q⌋q∈Q+
Для продовження прикладів функцій, повністю сконструйованих за часом, можна довести, що якщо і повністю сконструйовані за часом, то , , і також повністю конструюються часом ( пізніше випливає безпосередньо з теореми 3.1 Кобаяші). Це мене цілком переконує, що багато приємних функцій справді можна повністю сконструювати за часом.f 2 f 1 + f 2 f 1 f 2 f f 2 1 f 1 ∘ f 2f1f2f1+f2f1f2ff21f1∘f2
Дивно, що Кобаяші не бачив способу довести повністю конструктивність часу (приємної) функції (і я ні).⌊nlogn⌋
Прокоментуємо також визначення зі статті Вікіпедії : Функція може бути сконструйована за часом, якщо існує машина Тьюрінга яка, задавши рядок , виводить за час . M 1 n f ( n ) O ( f ( n ) )fM1nf(n)O(f(n)) Ми бачимо, що це визначення еквівалентне нашому визначенню повністю конструктивної за часом функцій .f(n)≥(1+ϵ)n
Q1:
На це питання є дійсно цікава відповідь. Я стверджую, що якщо всі функції, які можна сконструювати за часом, можна повністю сконструювати час, то . Щоб довести це, візьмемо довільну задачу , . Тоді існує , st може бути вирішено NDTM у кроки. Можна припустити, що на кожному кроці переходить в максимум два різні стани для простоти. Тепер визначимо функцію
L ∈ N E X P - T I M E L ⊆ { 0 , 1EXP−TIME=NEXP−TIMEL∈NEXP−TIMEL⊆{0,1}∗k∈NLM2nk−1M
f(n)={8n+28n+1if (first ⌊⌊logn⌋+1−−−−−−−−−√k⌋ bits of bin(n))∈Lelse
Я стверджую, що може бути сконструйованим часом. Розглянемо наступну детерміновану машину Тюрінга :fT
- при введенні довжини він обчислює у часwn(first ⌊⌊logn⌋+1−−−−−−−−−√k⌋ bits of bin(n))O(n)
- то вона імітує на цих бітах, де біти визначають, який (раніше недетермінізований) вибір вибрати.Mw
- прийняти iff .(M accepts using choices given by w)
Зауважте, що довжини ( ) достатньо, щоб вона визначала всі недетерміновані варіанти, оскільки на вході робить не більше кроків.w=nM(first ⌊⌊logn⌋+1−−−−−−−−−√k⌋ bits of bin(n))n
Ми можемо зробити запуск не більше кроків. Тепер наступна машина Тьюрінга доводить, що можна сконструювати за часом:T8n+1f
- на вході довжини пробіг і паралельно підраховуйте кроки, так що кроків.wnT8n
- якщо відхилено або буде відхилено на наступному кроці, перейдіть до стану зупинки на наступному кроці. Ще, зробіть ще один крок і перейдіть до стану зупинки.T
Тепер припустимо, що повністю може бути сконструйований за часом. Ми доведемо, що це призводить до .fEXP−TIME=NEXP−TIME
Наступний алгоритм вирішує :L
- на вході нехай - число з двійковим поданням ( нулі). Звідси випливає, що .xnx00…0|x|k−1x=(first ⌊⌊logn⌋+1−−−−−−−−−√k⌋ bits of bin(n))
- обчисліть у часі і перевірте, чи воно ділиться на 2.f(n)f(n)
Цей алгоритм працює в експоненційному час і вирішує . Оскільки було довільним, .L ∈ N E X P - T I M E E X P - T I M E = N E X P - T I M ELL∈NEXP−TIMEEXP−TIME=NEXP−TIME