Теорема о ёмкостной иерархии — различия между версиями
(→Доказательство) |
м (rollbackEdits.php mass rollback) |
||
(не показано 15 промежуточных версий 6 участников) | |||
Строка 1: | Строка 1: | ||
== Формулировка == | == Формулировка == | ||
− | '''Теорема о емкостной иерархии''' утверждает, что для любых двух [[Конструируемая по памяти функция|конструируемых по памяти функций]] <tex>f</tex> и <tex>g</tex> таких, что <tex> \lim \limits_{n \rightarrow \infty} f(n)/g(n) = 0</tex>, выполняется | + | '''Теорема о емкостной иерархии''' утверждает, что для любых двух [[Конструируемая по памяти функция|конструируемых по памяти функций]] <tex>f</tex> и <tex>g</tex> таких, что <tex> \lim \limits_{n \rightarrow \infty} f(n)/g(n) = 0</tex>, выполняется '''DSPACE'''(''g''(''n'')) ≠ '''DSPACE'''(''f''(''n'')). |
== Доказательство == | == Доказательство == | ||
− | Зафиксируем <tex>f</tex> и <tex>g</tex>. | + | Зафиксируем функции <tex>f</tex> и <tex>g</tex>. |
− | Рассмотрим язык <tex>L = \{ \langle m,x \rangle \mid m(\langle m,x \rangle )</tex> не допускает, используя не более <tex> f(|\langle m,x\rangle|)</tex> памяти <tex>\}</tex> . | + | Рассмотрим язык <tex>L = \{ \langle m,x \rangle \mid m(\langle m,x \rangle )</tex> не допускает, используя не более <tex> f(|\langle m,x\rangle|)</tex> памяти <tex>\}</tex> и докажем, что <tex>L \notin DSPACE(f)</tex> и <tex>L \in DSPACE(g)</tex>. |
− | + | Допустим, что <tex>L \in DSPACE(f)</tex>, тогда существует детерминированная машина Тьюринга <tex>m_0</tex> такая, что <tex>L(m_0)=L</tex>. | |
− | Рассмотрим <tex>m_0 | + | Рассмотрим выход машины <tex>m_0</tex> на входе <tex>\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>\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>\langle m_0,x\rangle</tex>. |
− | Если <tex>m_0</tex> не допускает <tex>\langle m_0,x\rangle</tex>, то <tex>\langle m_0,x\rangle</tex> не принадлежит языку <tex>L</tex>. | + | Если <tex>m_0</tex> не допускает <tex>\langle m_0,x\rangle</tex>, то <tex>\langle m_0,x\rangle</tex> не принадлежит языку <tex>L</tex>. Из определения это значит, что либо <tex>m_0</tex> допускает <tex>\langle m_0,x\rangle</tex>, либо не допускает, используя памяти больше <tex>f(|\langle m_0,x\rangle|)</tex>. Но <tex>m_0</tex> выбрана таким образом, что на любом входе <tex>x</tex> она использует не более <tex>f(|x|)</tex> памяти. Получаем противоречие. |
Следовательно, такой машины не существует. Таким образом, <tex>L \notin DSPACE(f)</tex>. | Следовательно, такой машины не существует. Таким образом, <tex>L \notin DSPACE(f)</tex>. | ||
− | <tex>L \in DSPACE(g)</tex>, так как можно | + | <tex>L \in DSPACE(g)</tex>, так как языку <tex>L</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>DSPACE(g(n)) \neq DSPACE(f(n))</tex>, что и требовалось доказать. | |
− | |||
− | |||
− |
Текущая версия на 19:38, 4 сентября 2022
Формулировка
Теорема о емкостной иерархии утверждает, что для любых двух конструируемых по памяти функций и таких, что , выполняется DSPACE(g(n)) ≠ DSPACE(f(n)).
Доказательство
Зафиксируем функции
и .Рассмотрим язык
не допускает, используя не более памяти и докажем, что и .Допустим, что
, тогда существует детерминированная машина Тьюринга такая, что .Рассмотрим выход машины
на входе .Пусть
допускает . Тогда , но в по определению не может быть пары , которую допускает . Таким образом, не может допускать .Если
не допускает , то не принадлежит языку . Из определения это значит, что либо допускает , либо не допускает, используя памяти больше . Но выбрана таким образом, что на любом входе она использует не более памяти. Получаем противоречие.Следовательно, такой машины не существует. Таким образом,
., так как языку можно сопоставить машину Тьюринга , распознающую и такую, что на любом входе будет работать аналогично . Если завершила работу, используя не более памяти, и не допустила, то допускает . В другом случае не допускает. Любая такая машина использует памяти не более . По условию теоремы , поэтому начиная с некоторого , будет использовать памяти не более .
Таким образом получили, что
. Следовательно, , что и требовалось доказать.