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