Изменения

Перейти к: навигация, поиск
м
Убрана очевидность
|statement=Пусть даны две конструируемые по памяти функции <tex>f</tex> и <tex>g</tex> такие, что <tex>\lim \limits_{n\rightarrow\infty} \frac{f(n)}{g(n)}=0</tex>, тогда <tex>DSPACE(f(n)) \varsubsetneq DSPACE(g(n))</tex>.
|proof=
ОчевидноПонятно, что <tex>DSPACE(f(n)) \subseteq DSPACE(g(n))</tex>, поскольку программа, ограниченная по памяти финкцией <tex>f</tex>, проходит ограничение <tex>g</tex>.<br />
Используя диагональный метод, докажем, что включение строгое. Рассмотрим функцию <tex>h(n)=\sqrt{f(n)g(n)}</tex> и язык <tex>L=\{x|x(x)\Bigr|_{S\leq h(|x|)}\neq 1\}</tex>, где запись <tex>S\leq h(|x|)</tex> означает, что программа запускается с лимитом памяти <tex>h(|x|)</tex>. Иначе говоря, <tex>L</tex> — это язык программ, которые не допускают собственный код, используя памяти не более <tex>h(|x|)</tex>. Докажем, что <tex>L\in DSPACE(g(n))\setminus DSPACE(f(n))</tex>.<br/>
Так как <tex>h(n)=o(g(n))</tex>, то очевидно, что <tex>L \in DSPACE(g(n))</tex>. Действительно, для проверки принадлежности программы <tex>x</tex> языку достаточно запустить её с лимитом памяти <tex>h(|x|)</tex> и проверить, что результат не равен 1. Тогда вся проверка будет выполнена с использованием не более <tex>g(|x|)</tex> памяти в силу конструируемости функций <tex>f</tex> и <tex>g</tex> и накладываемых ограничений на память.<br />
editor
177
правок

Навигация