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

Материал из Викиконспекты
Перейти к: навигация, поиск
(Доказательство)
(Доказательство)
Строка 18: Строка 18:
  
 
<tex>L \in DSPACE(g)</tex>, так как можно представить машину Тьюринга <tex>m_0</tex>, распознающую <tex>L</tex>. На любом входе  <tex>\langle m_1,x\rangle \in L</tex> <tex>m_0</tex> будет работать аналогично <tex>m_1</tex>. Если <tex>m_1</tex> завершила работу, используя не более <tex>f(|\langle m_1,x\rangle|)</tex> памяти, и не допустила, то <tex>m_0</tex> допускает <tex>\langle m_1,x\rangle</tex>. В другом случае не допускает. Любая такая машина использует памяти не более <tex>f(|\langle m_1,x\rangle|)</tex>. <tex> \lim \limits_{n \rightarrow \infty} f(n)/g(n) = 0</tex>, поэтому начиная с некоторого <tex>n</tex> <tex>m_1</tex> будет использовать памяти не более <tex>g(|\langle m_1,x\rangle|)</tex>.
 
<tex>L \in DSPACE(g)</tex>, так как можно представить машину Тьюринга <tex>m_0</tex>, распознающую <tex>L</tex>. На любом входе  <tex>\langle m_1,x\rangle \in L</tex> <tex>m_0</tex> будет работать аналогично <tex>m_1</tex>. Если <tex>m_1</tex> завершила работу, используя не более <tex>f(|\langle m_1,x\rangle|)</tex> памяти, и не допустила, то <tex>m_0</tex> допускает <tex>\langle m_1,x\rangle</tex>. В другом случае не допускает. Любая такая машина использует памяти не более <tex>f(|\langle m_1,x\rangle|)</tex>. <tex> \lim \limits_{n \rightarrow \infty} f(n)/g(n) = 0</tex>, поэтому начиная с некоторого <tex>n</tex> <tex>m_1</tex> будет использовать памяти не более <tex>g(|\langle m_1,x\rangle|)</tex>.
 
  
 
Получается, что <tex>L \in DSPACE(g(n)) \setminus DSPACE(f(n))</tex> и <tex>L \neq \emptyset</tex>. Следовательно, <tex>DSPACE(g(n)) \neq DSPACE(f(n))</tex>
 
Получается, что <tex>L \in DSPACE(g(n)) \setminus DSPACE(f(n))</tex> и <tex>L \neq \emptyset</tex>. Следовательно, <tex>DSPACE(g(n)) \neq DSPACE(f(n))</tex>
  
 
Теорема доказана.
 
Теорема доказана.

Версия 18:51, 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 \rangle )[/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]\langle m_0,x\rangle[/math], то [math]\langle m_0,x\rangle[/math] не принадлежит языку [math]L[/math]. Это значит, что либо [math]m_0[/math] допускает [math]\langle m_0,x\rangle[/math], либо не допускает, используя памяти больше [math]f(|\langle m_0,x\rangle|)[/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_0[/math], распознающую [math]L[/math]. На любом входе [math]\langle m_1,x\rangle \in L[/math] [math]m_0[/math] будет работать аналогично [math]m_1[/math]. Если [math]m_1[/math] завершила работу, используя не более [math]f(|\langle m_1,x\rangle|)[/math] памяти, и не допустила, то [math]m_0[/math] допускает [math]\langle m_1,x\rangle[/math]. В другом случае не допускает. Любая такая машина использует памяти не более [math]f(|\langle m_1,x\rangle|)[/math]. [math] \lim \limits_{n \rightarrow \infty} f(n)/g(n) = 0[/math], поэтому начиная с некоторого [math]n[/math] [math]m_1[/math] будет использовать памяти не более [math]g(|\langle m_1,x\rangle|)[/math].

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

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