Теоремы о временной и ёмкостной иерархиях — различия между версиями
DrozdovVA (обсуждение | вклад) м |
DrozdovVA (обсуждение | вклад) |
||
Строка 1: | Строка 1: | ||
{{В разработке}} | {{В разработке}} | ||
+ | |||
+ | {{Определение | ||
+ | |id=space_foo | ||
+ | |definition=Функция <tex>f(x)</tex> называется '''конструируемой по памяти''', если можно вычислить <tex>f(x)</tex> по <tex>x</tex>, используя памяти не более <tex>f(x)</tex>. | ||
+ | }} | ||
+ | |||
{{Теорема | {{Теорема | ||
− | |about= | + | |about=о емкостной иерархии |
|id=space | |id=space | ||
|statement=Пусть даны две конструируемые по памяти функции <tex>f</tex> и <tex>g</tex> такие, что <tex>\lim \limits_{n\rightarrow\infty} \frac{f(n)}{g(n)}=0</tex>, тогда <tex>DSPACE(g(n))\neq DSPACE(f(n))</tex>. | |statement=Пусть даны две конструируемые по памяти функции <tex>f</tex> и <tex>g</tex> такие, что <tex>\lim \limits_{n\rightarrow\infty} \frac{f(n)}{g(n)}=0</tex>, тогда <tex>DSPACE(g(n))\neq DSPACE(f(n))</tex>. | ||
Строка 7: | Строка 13: | ||
Для доказательства воспользуемся диагональным методом. Рассмотрим функцию <tex>h(n)=\sqrt{f(n)g(n)}</tex> и язык <tex>L=\{x|x(x)\Bigr|_{s\leq h(|x|)}\neq 1\}</tex>, где <tex>s</tex> — ограничение на память, в случае достижения которого выполнение программы прерывается. Иначе говоря, <tex>L</tex> — это язык программ, которые, если на вход подать саму программу, не возвращают 1 при условии ограничения на память <tex>h(|x|)</tex>. Докажем, что <tex>L\in DSPACE(g(n))\setminus DSPACE(f(n))</tex>. | Для доказательства воспользуемся диагональным методом. Рассмотрим функцию <tex>h(n)=\sqrt{f(n)g(n)}</tex> и язык <tex>L=\{x|x(x)\Bigr|_{s\leq h(|x|)}\neq 1\}</tex>, где <tex>s</tex> — ограничение на память, в случае достижения которого выполнение программы прерывается. Иначе говоря, <tex>L</tex> — это язык программ, которые, если на вход подать саму программу, не возвращают 1 при условии ограничения на память <tex>h(|x|)</tex>. Докажем, что <tex>L\in DSPACE(g(n))\setminus DSPACE(f(n))</tex>. | ||
<span title="Т. к. h(n)=o(g(n))" style="border-bottom: 1px dotted; cursor: help;">Очевидно</span>, что <tex>L \in DSPACE(g(n))</tex>. Предположим теперь, что <tex>L \in DSPACE(f(n))</tex>. Тогда существует программа <tex>p</tex>, распознающая язык <tex>L</tex> и использующая не более <tex>c \cdot f(n)</tex> памяти. Т. к. <tex>f(n)=o(h(n))</tex>, то <tex>\exists n_0: \forall n>n_0~c\cdot f(n)<h(n)</tex>. Будем считать, что <tex>|p|>n_0</tex> (иначе добавим в программу пустые строки, искусственно увеличив её длину), тогда при вызове <tex>p(p)</tex> потребуется не более <tex>h(|p|)</tex> памяти. Выясним, принадлежит ли <tex>p</tex> языку <tex>L</tex>. Допустим, что <tex>p\in L</tex>, тогда <tex>p(p)=1</tex>, значит, <tex>p\notin L</tex> по определению языка <tex>L</tex>. Пусть теперь <tex>p\notin L</tex>. Но тогда <tex>p(p)=1</tex>, следовательно, <tex>p\in L</tex>. Таким образом, язык <tex>L</tex> не может быть из <tex>DSPACE(f(n))</tex>, следовательно, язык из <tex>DSPACE(g(n))\setminus DSPACE(f(n))</tex> найден.}} | <span title="Т. к. h(n)=o(g(n))" style="border-bottom: 1px dotted; cursor: help;">Очевидно</span>, что <tex>L \in DSPACE(g(n))</tex>. Предположим теперь, что <tex>L \in DSPACE(f(n))</tex>. Тогда существует программа <tex>p</tex>, распознающая язык <tex>L</tex> и использующая не более <tex>c \cdot f(n)</tex> памяти. Т. к. <tex>f(n)=o(h(n))</tex>, то <tex>\exists n_0: \forall n>n_0~c\cdot f(n)<h(n)</tex>. Будем считать, что <tex>|p|>n_0</tex> (иначе добавим в программу пустые строки, искусственно увеличив её длину), тогда при вызове <tex>p(p)</tex> потребуется не более <tex>h(|p|)</tex> памяти. Выясним, принадлежит ли <tex>p</tex> языку <tex>L</tex>. Допустим, что <tex>p\in L</tex>, тогда <tex>p(p)=1</tex>, значит, <tex>p\notin L</tex> по определению языка <tex>L</tex>. Пусть теперь <tex>p\notin L</tex>. Но тогда <tex>p(p)=1</tex>, следовательно, <tex>p\in L</tex>. Таким образом, язык <tex>L</tex> не может быть из <tex>DSPACE(f(n))</tex>, следовательно, язык из <tex>DSPACE(g(n))\setminus DSPACE(f(n))</tex> найден.}} | ||
+ | |||
+ | {{Определение | ||
+ | |id=time_foo | ||
+ | |definition=Функция <tex>f(x)</tex> называется '''конструируемой по времени''', если можно вычислить <tex>f(x)</tex> по <tex>x</tex> за время не более <tex>f(x)</tex>. | ||
+ | }} | ||
+ | |||
+ | {{Теорема | ||
+ | |about=о временной иерархии | ||
+ | |id=time | ||
+ | |statement=Пусть даны две конструируемые по времени функции <tex>f</tex> и <tex>g</tex> такие, что <tex>\lim \limits_{n\rightarrow\infty} \frac{Sim(f(n))}{g(n)}=0</tex>, тогда <tex>DTIME(g(n))\neq DTIME(f(n))</tex>. | ||
+ | |proof=Доказательство аналогично доказательству [[Теоремы о временной и емкостной иерархиях#space|теоремы о емкостной иерархии]]. | ||
+ | }} |
Версия 17:06, 14 апреля 2012
Эта статья находится в разработке!
Определение: |
Функция | называется конструируемой по памяти, если можно вычислить по , используя памяти не более .
Теорема (о емкостной иерархии): |
Пусть даны две конструируемые по памяти функции и такие, что , тогда . |
Доказательство: |
Для доказательства воспользуемся диагональным методом. Рассмотрим функцию и язык , где — ограничение на память, в случае достижения которого выполнение программы прерывается. Иначе говоря, — это язык программ, которые, если на вход подать саму программу, не возвращают 1 при условии ограничения на память . Докажем, что . Очевидно, что . Предположим теперь, что . Тогда существует программа , распознающая язык и использующая не более памяти. Т. к. , то . Будем считать, что (иначе добавим в программу пустые строки, искусственно увеличив её длину), тогда при вызове потребуется не более памяти. Выясним, принадлежит ли языку . Допустим, что , тогда , значит, по определению языка . Пусть теперь . Но тогда , следовательно, . Таким образом, язык не может быть из , следовательно, язык из найден. |
Определение: |
Функция | называется конструируемой по времени, если можно вычислить по за время не более .
Теорема (о временной иерархии): |
Пусть даны две конструируемые по времени функции и такие, что , тогда . |
Доказательство: |
Доказательство аналогично доказательству теоремы о емкостной иерархии. |