Теорема Бейкера — Гилла — Соловэя — различия между версиями
Строка 25: | Строка 25: | ||
** если принадлежность <tex>x</tex> множеству <tex>B</tex> не установлена ранее, то далее считаем, что <tex>x \not\in B</tex>. | ** если принадлежность <tex>x</tex> множеству <tex>B</tex> не установлена ранее, то далее считаем, что <tex>x \not\in B</tex>. | ||
Но <tex>M_i</tex> могла остановится раньше, чем за <tex>2^{n-1}</tex> шагов и вернуть какое-либо значение. Но мы строим <tex>B</tex> с условием <tex>T(M_i, x) \ge 2^{n-1}</tex>, поэтому решение машины должно быть неверным: | Но <tex>M_i</tex> могла остановится раньше, чем за <tex>2^{n-1}</tex> шагов и вернуть какое-либо значение. Но мы строим <tex>B</tex> с условием <tex>T(M_i, x) \ge 2^{n-1}</tex>, поэтому решение машины должно быть неверным: | ||
− | * если <tex>M_i</tex> приняла слово, то будем считать, что выбросим из <tex>B</tex> все слова вида <tex>\{0,1\}^n</tex> | + | * если <tex>M_i</tex> приняла слово, то будем считать, что выбросим из <tex>B</tex> все слова вида <tex>\{0,1\}^n</tex>; |
* Если <tex>M_i</tex> отклонила слово, то выберем слово <tex>x</tex> длины <tex>n</tex>, принадлежность которого <tex>B</tex> еще не определено. Тогда <tex>x \in B</tex>. Такое слово всегда найдется, так как на предыдущий шагах мы могли сделать не более, чем <tex>2^n-1</tex> запросов к оракулу, а всего слов длины n <tex>2^n</tex>. | * Если <tex>M_i</tex> отклонила слово, то выберем слово <tex>x</tex> длины <tex>n</tex>, принадлежность которого <tex>B</tex> еще не определено. Тогда <tex>x \in B</tex>. Такое слово всегда найдется, так как на предыдущий шагах мы могли сделать не более, чем <tex>2^n-1</tex> запросов к оракулу, а всего слов длины n <tex>2^n</tex>. | ||
− | Предположим, что <tex>M_i</tex> отработала менее, чем за время <tex>2^n</tex>, тогда | + | Предположим, что <tex>M_i</tex> отработала менее, чем за время <tex>2^{n-1}</tex>, тогда |
*если <tex>M_i</tex> допускает слово <tex>1^n</tex>, то в <tex>B</tex> нет слова <tex>1^n</tex>; | *если <tex>M_i</tex> допускает слово <tex>1^n</tex>, то в <tex>B</tex> нет слова <tex>1^n</tex>; | ||
*если <tex>M_i</tex> отклоняет слово <tex>1^n</tex>, то в <tex>B</tex> содержится слово <tex>x</tex>, причем <tex>|x| = n</tex>. | *если <tex>M_i</tex> отклоняет слово <tex>1^n</tex>, то в <tex>B</tex> содержится слово <tex>x</tex>, причем <tex>|x| = n</tex>. | ||
Противоречие. | Противоречие. | ||
− | Следовательно, <tex>M_i</tex> не может решить язык <tex>U_B</tex> за время меньшее <tex>2^n</tex>. | + | Следовательно, <tex>M_i</tex> не может решить язык <tex>U_B</tex> за время меньшее <tex>2^{n-1}</tex>. |
}} | }} |
Версия 12:37, 29 апреля 2012
Теорема: |
Существуют такие оракулы и , что и . |
Доказательство: |
Существование оракула .Покажем существование такого оракула . является -полным языком , что . Рассмотрим язык булева формула с кванторами .
Следовательно, .Существование оракула .Покажем существование такого оракула , что . Пусть — произвольное множество, а , что . Ясно, что (легко написать программу, проверяющую сертификат). Построим такое множество , что .Рассмотрим последовательность машин Тьюринга , имеющих доступ к оракулу языка . Построение множество разделим на счетное число шагов. Будем строить так, чтобы на -м шаге было выполнено: . Очевидно, что это утверждение сильнее, чем . Начнем поэтапно строить множество .
Но могла остановится раньше, чем за шагов и вернуть какое-либо значение. Но мы строим с условием , поэтому решение машины должно быть неверным:
Предположим, что отработала менее, чем за время , тогда
Противоречие. Следовательно, не может решить язык за время меньшее . |