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

Материал из Викиконспекты
Перейти к: навигация, поиск
(Формулировка)
(Доказательство)
Строка 3: Строка 3:
  
 
== Доказательство ==
 
== Доказательство ==
Зафиксируем <math>f\,\!</math> и <math>g\,\!</math>.
+
Зафиксируем <tex>f</tex> и <tex>g</tex>.
  
Рассмотрим язык <math>L = \{ \langle m,x\rangle \mid m(<m,x>)</math> не допускает, используя не более <math> f(|<m,x>|)\,\!</math> памяти <math>\}\,\!</math> .
+
Рассмотрим язык <tex>L = \{ \langle m,x\rangle \mid m(\langle m,x\randle)</tex> не допускает, используя не более <tex> f(|\langle m,x\rangle|)</tex> памяти <tex>\}</tex> .
  
Пусть <math>L \in DSPACE(f)</math>, тогда для него есть машина Тьюринга <math>m_0\,\!</math> такая, что <math>L(m_0)=L\,\!</math>.
+
Пусть <tex>L \in DSPACE(f)</tex>, тогда для него есть машина Тьюринга <tex>m_0</tex> такая, что <tex>L(m_0)=L</tex>.
  
Рассмотрим <math>m_0(<m_0,x>)\,\!</math>.  
+
Рассмотрим <tex>m_0(\langle m_0,x\rangle)</tex>.  
  
Пусть <math>m_0\,\!</math> допускает <math><m_0,x>\,\!</math>. Тогда <math><m_0,x> \in L</math>, но в  <math>L\,\!</math> по определению не может быть пары <math><m,x>\,\!</math>, которую допускает <math>m\,\!</math>. Таким образом, получаем противоречие.
+
Пусть <tex>m_0</tex> допускает <tex>\langle m_0,x\rangle</tex>. Тогда <tex>\langle m_0,x\rangle \in L</tex>, но в  <tex>L</tex> по определению не может быть пары <tex>\langle m,x\rangle</tex>, которую допускает <tex>m</tex>. Таким образом, получаем противоречие.
  
Если <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>m_0\,\!</math> выбрана таким образом, что на любом входе <math>x\,\!</math> она использует не более <math>f(|x|)\,\!</math> памяти. Получаем противоречие.  
+
Если <tex>m_0</tex> не допускает <tex><m_0,x></tex>, то <tex>\langle m_0,x\rangle</tex> не принадлежит языку <tex>L</tex>. Это значит, что либо <tex>m_0</tex> допускает <tex>\langle m_0,x\rangle</tex>, либо не допускает, используя памяти больше <tex>f(|<m_0,x>|)</tex>. Но  <tex>m_0</tex> выбрана таким образом, что на любом входе <tex>x</tex> она использует не более <tex>f(|x|)</tex> памяти. Получаем противоречие.  
  
Следовательно такой машины не существует. Таким образом, <math>L \notin DSPACE(f)</math>.
+
Следовательно, такой машины не существует. Таким образом, <tex>L \notin DSPACE(f)</tex>.
  
<math>L \in DSPACE(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} f(n)/g(n) = 0</math>, <math>m_1\,\!</math> будет использовать памяти не более <math>g(|<m_3,x>|)\,\!</math>.
+
<math>L \in DSPACE(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} f(n)/g(n) = 0</math>, <math>m_1</math> будет использовать памяти не более <math>g(|<m_3,x>|)</math>.
  
  
Получается, что <math>L \in DSPACE(g(n)) \setminus DSPACE(f(n))</math> и <math>L \neq \empty</math>. Следовательно, <math>DSPACE(g(n)) \neq DSPACE(f(n))</math>
+
Получается, что <tex>L \in DSPACE(g(n)) \setminus DSPACE(f(n))</tex> и <tex>L \neq \empty</tex>. Следовательно, <tex>DSPACE(g(n)) \neq DSPACE(f(n))</tex>
  
 
Теорема доказана.
 
Теорема доказана.

Версия 18:00, 18 марта 2010

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

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

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

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

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

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

Рассмотрим [math]m_0(\langle m_0,x\rangle)[/math].

Пусть [math]m_0[/math] допускает [math]\langle m_0,x\rangle[/math]. Тогда [math]\langle m_0,x\rangle \in L[/math], но в [math]L[/math] по определению не может быть пары [math]\langle m,x\rangle[/math], которую допускает [math]m[/math]. Таким образом, получаем противоречие.

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

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

[math]L \in DSPACE(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} f(n)/g(n) = 0[/math], [math]m_1[/math] будет использовать памяти не более [math]g(|\lt m_3,x\gt |)[/math].


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

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