Я столкнулся со следующим вопросом, который является легким упражнением (спойлер ниже).
Нам дают экземпляры проблемы остановки (т. е. ТМ ), и нам нужно решить, какие именно из них останавливаются на . То есть нам нужно вывести . Нам дан оракул для решения проблемы остановки, но мы должны использовать его минимальное количество раз.
Нетрудно показать, что это можно сделать с помощью вызовов .
Мой вопрос: можем ли мы доказать нижнюю границу? Есть ли основания подозревать, что такую границу будет очень трудно найти?
Ответ на сам вопрос (спойлер, наведите мышь):
Рассмотрим случай TMs. Мы можем построить ТМ это работает параллельно, и останавливается, если по крайней мере два из них останавливаются (в противном случае он застревает). Точно так же мы можем построить ТМэто останавливает, если хотя бы один из них останавливается. Затем мы можем назвать оракула на, Если он останавливается, мы можем запустить машины параллельно и подождать, пока один из них остановится. Затем мы можем назвать оракула последним. Если оракул говорит «нет», то мы запускаем оракула на, Если он останавливается, мы запускаем машины до тех пор, пока он не остановится, а остановится только один. Еслине останавливается, то никто из них не останавливается. Расширяя это до машины это просто.
Первое замечание по этому вопросу состоит в том, что, кажется, невозможно решить с помощью теоретико-информационных инструментов, поскольку мы в значительной степени полагаемся на нашу способность получать информацию, запустив машины без оракула.
источник
Ответы:
Результат можно найти в
Их доказательство фактически показывает, что ваша проблема не может быть решена с помощью менееlog2n запросы к любому наборуX не говоря уже о самой проблеме остановки. Для некоторых обозначений ваша проблема иногда обозначаетсяCKn или CHALTn (в зависимости от вашего любимого обозначения для проблемы остановки).
Для этого и многих связанных результатов, см. Также:
Этот опрос от Gasarch
Книга « Ограниченные запросы в теории рекурсии » Гасарха и Мартина.
источник
РЕДАКТИРОВАТЬ: Аргумент, на который я ответил, не был неправильным, но он немного вводил в заблуждение, поскольку он только показал, что верхняя граница должна быть жесткой для некоторыхn (что на самом деле тривиально, так как оно должно быть жестким, когда n=2 и предел 1).
Вот более точный аргумент. Это показывает, что если верхняя границаlog2n
свободен для любого конкретного n тогда для всех n необходимое количество оракулов O(1) ,
(Конечно, это неO(1) так что верхняя граница никогда не бывает свободной! Но я на самом деле не доказываю это здесь, и, учитывая другой ответ на проблему, это не стоит того, чтобы ее преследовать.)
Рассмотрим проблему вычисления максимального выхода :
Как функцияn наихудшее число вызовов оракула, необходимое для вычисления этой функции, совпадает с числом, необходимым для определения, какой из n заданные машины останавливаются. (Если я знаю, какие машины останавливаются, я могу легко вычислить максимальную производительность. И наоборот, если я хочу знать, какие машины останавливаются, следуя конструкции в формулировке задачи, я могу построить машины{M′i} (i=1,2,…,n)
где M′i работает все n отдавая машины параллельно, затем останавливается и выводится i если i из них когда-либо останавливаются. Максимальный выходной скажет мне число, которое останавливается. Исходя из этого, я могу точно рассчитать, какая остановка.)
Теперь пустьn0 быть наименьшим целым n (если есть) так, чтобы выполнялось следующее:
очевидноn0>1 , потому что C(1)=−1 , По факту,n0>2 Также из-за C(2)=0 , но неразрешимо вычислить максимальный выход 2 данные машины (без оракулов). Теперь рассмотрим большеn :
Претензия: еслиn0 конечно, то для любого n можно рассчитать максимальный выход n данные машины в C(n0) оракулы (Обратите внимание, что еслиn0 конечно, то C(n0)=O(1) .)
Доказательство. , Докажем это индукцией поn , Базовые случаиn≤n0 , которые держатся по определению n0 а также C ,
ПозволятьQ0 быть ТМ, который, учитывая любой n0 Машины Тьюринга, вычисляет максимальную производительность, используя только C(n0) призывает к оракулу.
Исправить любойn>n0 , Учитывая любойn машины M1,…,Mn , рассчитайте максимальную мощность следующим образом.
Сосредоточиться на первомM1,…,Mn0 машины. Рассмотрим бегQ0 на этих n0 машины. Обратите внимание, чтоQ0 марки C(n0) призывает к оракулу, а есть только n′=2C(n0) возможные ответы оракула на эти звонки. Обратите внимание, что по определениюn′=2C(n0)<n0 , Позволятьoi обозначить i й возможный ответ. Для каждогоi=1,…,n′ , построить машину M′i
что имитирует Q0 на этих машинах так:
Теперь в данной последовательностиn машины, замени первый n0 машины M1,…,Mn0 этими n′<n0 машины M′1,…,M′n′ , Вернуть значение, вычисленное путем повторения в этой последовательностиn−(n0−n′)<n машины. (Обратите внимание, что оракул не вызывается до повторного использования, поэтому оракул вызывается только после достижения базового варианта.)
Вот почему это вычисление верно. Дляi такой, что oi «правильный» ответ оракула Q0 на запросы, M′i остановится и даст правильный максимальный выход оригинала n0 машины. Таким образом, максимальный выходn′ машины (M′1,…,M′n′)
по крайней мере, максимальный выход n0 машины (M1,…,Mn0) , С другой стороны, к шагу 4 нетM′i
может дать вывод, который больше, чем максимальный выход (M1,…,Mn0) , Таким образом, максимальный выходn′ машины (M′1,…,M′n′)
равно максимальному выходу n0 машины, которые они заменяют. QED
источник