Теорема о временной иерархии — различия между версиями

Материал из Викиконспекты
Перейти к: навигация, поиск
(Новая страница: «== Формулировка == '''Теорема о временной иерархии''' утверждает, что для любых двух [[Конструи…»)
 
(Формулировка)
Строка 1: Строка 1:
 
== Формулировка ==
 
== Формулировка ==
 
'''Теорема о временной иерархии''' утверждает, что для любых двух [[Конструируемая по времени функция|конструируемых по времени функций]] <math>f\,\!</math> и <math>g\,\!</math> таких, что <math> \lim_{n \rightarrow \infty} t(f(n))/g(n) = 0</math>, выполняется <math>DTIME(g(n)) \ne DTIME(f(n))</math>.
 
'''Теорема о временной иерархии''' утверждает, что для любых двух [[Конструируемая по времени функция|конструируемых по времени функций]] <math>f\,\!</math> и <math>g\,\!</math> таких, что <math> \lim_{n \rightarrow \infty} t(f(n))/g(n) = 0</math>, выполняется <math>DTIME(g(n)) \ne DTIME(f(n))</math>.
 +
== Доказательство ==
 +
Зафиксируем <math>f\,\!</math> и <math>g\,\!</math>.
 +
 +
Рассмотрим язык <math>L = \{ <m,x> \mid m(<m,x>)</math> не допускает, работая не более <math> f(|<m,x>|)\,\!</math> времени <math>\}\,\!</math> .
 +
 +
Пусть <math>L \in DTIME(f)</math>, тогда для него есть машина Тьюринга <math>m_0\,\!</math> такая, что <math>L(m_0)=L\,\!</math>.
 +
 +
Рассмотрим <math>m_0(<m_0,x>)\,\!</math>.
 +
 +
Пусть <math>m_0\,\!</math> допускает <math><m_0,x>\,\!</math>. Тогда <math><m_0,x> \in L</math>, в силу определения <math>m_0\,\!</math>. Но в <math>L</math> по определению не может быть пары <math><m_0,x>\,\!</math>, которую допускает <math>m_0\,\!</math>, так как <math>m_0 \in DTIME(f)</math>. Таким образом, получаем противоречие.
 +
 +
Если <math>m_0\,\!</math> не допускает <math><m_0,x>\,\!</math>, то <math><m_0,x>\,\!</math> не принадлежит языку <math>L\,\!</math>. Это значит, что либо <math>m_0\,\!</math> допускает <math><m_0,x>\,\!</math>, либо не допускает, работая больше времени <math>f(|<m_0,x>|)\,\!</math>. Но  <math>L \in DTIME(f)</math>, поэтому <math>m_0\,\!</math> на любом входе <math>x\,\!</math> работает не более <math>f(|x|)\,\!</math> времени. Получаем противоречие.
 +
 +
Следовательно такой машины не существует. Таким образом, <math>L \notin DTIME(f)</math>.
 +
 +
<math>L \in DTIME(g)</math>, так как можно просимулировать машину Тьюринга <math>m_1\,\!</math> такую, что <math>L(m_1)=L\,\!</math>. Для каждой пары  <math><m_3,x> \in L</math> рассмотрим <math>m_3(<m_3,x>)\,\!</math>. Если <math>m_3\,\!</math> завершила работу и не допустила, то <math>m_1\,\!</math> допускает <math><m_3,x>\,\!</math>. В другом случае не допускает. Так как любая такая машина работает не более <math>f(|<m_3,x>|)\,\!</math> времени, а <math> \lim_{n \rightarrow \infty} t(f(n))/g(n) = 0</math>, <math>m_1\,\!</math> будет работать не более <math>g(|<m_3,x>|)\,\!</math> времени.
 +
 +
 +
Получается, что <math>L \in DTIME(g(n)) \setminus DTIME(f(n))</math> и <math>L \neq \empty</math>. Следовательно, <math>DTIME(g(n)) \neq DTIME(f(n))</math>
 +
 +
Теорема доказана.

Версия 22:34, 14 марта 2010

Формулировка

Теорема о временной иерархии утверждает, что для любых двух конструируемых по времени функций [math]f\,\![/math] и [math]g\,\![/math] таких, что [math] \lim_{n \rightarrow \infty} t(f(n))/g(n) = 0[/math], выполняется [math]DTIME(g(n)) \ne DTIME(f(n))[/math].

Доказательство

Зафиксируем [math]f\,\![/math] и [math]g\,\![/math].

Рассмотрим язык [math]L = \{ \lt m,x\gt \mid m(\lt m,x\gt )[/math] не допускает, работая не более [math] f(|\lt m,x\gt |)\,\![/math] времени [math]\}\,\![/math] .

Пусть [math]L \in DTIME(f)[/math], тогда для него есть машина Тьюринга [math]m_0\,\![/math] такая, что [math]L(m_0)=L\,\![/math].

Рассмотрим [math]m_0(\lt m_0,x\gt )\,\![/math].

Пусть [math]m_0\,\![/math] допускает [math]\lt m_0,x\gt \,\![/math]. Тогда [math]\lt m_0,x\gt \in L[/math], в силу определения [math]m_0\,\![/math]. Но в [math]L[/math] по определению не может быть пары [math]\lt m_0,x\gt \,\![/math], которую допускает [math]m_0\,\![/math], так как [math]m_0 \in DTIME(f)[/math]. Таким образом, получаем противоречие.

Если [math]m_0\,\![/math] не допускает [math]\lt m_0,x\gt \,\![/math], то [math]\lt m_0,x\gt \,\![/math] не принадлежит языку [math]L\,\![/math]. Это значит, что либо [math]m_0\,\![/math] допускает [math]\lt m_0,x\gt \,\![/math], либо не допускает, работая больше времени [math]f(|\lt m_0,x\gt |)\,\![/math]. Но [math]L \in DTIME(f)[/math], поэтому [math]m_0\,\![/math] на любом входе [math]x\,\![/math] работает не более [math]f(|x|)\,\![/math] времени. Получаем противоречие.

Следовательно такой машины не существует. Таким образом, [math]L \notin DTIME(f)[/math].

[math]L \in DTIME(g)[/math], так как можно просимулировать машину Тьюринга [math]m_1\,\![/math] такую, что [math]L(m_1)=L\,\![/math]. Для каждой пары [math]\lt m_3,x\gt \in L[/math] рассмотрим [math]m_3(\lt m_3,x\gt )\,\![/math]. Если [math]m_3\,\![/math] завершила работу и не допустила, то [math]m_1\,\![/math] допускает [math]\lt m_3,x\gt \,\![/math]. В другом случае не допускает. Так как любая такая машина работает не более [math]f(|\lt m_3,x\gt |)\,\![/math] времени, а [math] \lim_{n \rightarrow \infty} t(f(n))/g(n) = 0[/math], [math]m_1\,\![/math] будет работать не более [math]g(|\lt m_3,x\gt |)\,\![/math] времени.


Получается, что [math]L \in DTIME(g(n)) \setminus DTIME(f(n))[/math] и [math]L \neq \empty[/math]. Следовательно, [math]DTIME(g(n)) \neq DTIME(f(n))[/math]

Теорема доказана.