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

Материал из Викиконспекты
Перейти к: навигация, поиск
(Доказательство)
(Доказательство)
Строка 5: Строка 5:
 
Зафиксируем <math>f</math> и <math>g</math>.
 
Зафиксируем <math>f</math> и <math>g</math>.
  
Рассмотрим язык <math>L = \{ <m,x> \mid m(<m,x>)</math> не допускает, используя не более <math> f(<m,x>) памяти \}</math> .
+
Рассмотрим язык <math>L = \{ <m,x> \mid m(<m,x>)</math> не допускает, используя не более <math> f(|<m,x>|)</math> памяти <math>\}</math> .
  
Пусть <math>L \in DSPACE(f)</math>, тогда для него есть машина тьюринга <math>m_0</math>.
+
Пусть <math>L \in DSPACE(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><m_0,x></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>L</math> по определению не может быть пары <math><m,x></math>, которую допускает <math>m</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 DSPACE(f)</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</math>.
 
<math>L \in DSPACE(g)</math>, так как можно проэмулировать <math>m</math>.

Версия 22:38, 12 марта 2010

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

Теорема о емкостной иерархии утверждает, что для любых двух конструируемых по памяти функций [math]f[/math] и [math]g[/math] таких, что [math] \lim_{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 = \{ \lt m,x\gt \mid m(\lt m,x\gt )[/math] не допускает, используя не более [math] f(|\lt m,x\gt |)[/math] памяти [math]\}[/math] .

Пусть [math]L \in DSPACE(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]L[/math] по определению не может быть пары [math]\lt m,x\gt [/math], которую допускает [math]m[/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 DSPACE(f)[/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[/math].

Получается, что [math]L \in DSPACE(g(n)) \ DSPACE(f(n))[/math].

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