Нижня межа кількості викликів Oracle для вирішення екземплярів проблеми зупинки


9

Я зіткнувся з наступним питанням, яке є легкою вправою (спойлер нижче).

Нам надається екземплярів проблеми зупинки (тобто TM ), і нам потрібно вирішити, який саме з них зупиняється на . Тобто нам потрібно вивести . Нам дається оракул для проблеми зупинки, але ми повинні використовувати його мінімально кілька разів.nM1,...,Mnϵ{i:Mi halts on ϵ}

Не важко показати, що це можна зробити з викликами.log(n+1)

Моє запитання: чи можна довести нижню межу? Чи є підстави підозрювати, що такий зв’язок буде дуже важко знайти?

Відповідь на саме запитання (спойлер, курсор миші):

Розглянемо випадок із ТМ. Ми можемо побудувати TM який паралельно працює і зупиняється, якщо принаймні два з них зупиняються (інакше він застрягне). Так само ми можемо побудувати TM який зупиняється, якщо принаймні одна з них зупиняється. Тоді ми можемо зателефонувати в оракул на . Якщо вона зупиниться, тоді ми можемо запустити машини паралельно і чекати, коли одна зупиниться. Тоді ми можемо викликати оракул на останньому. Якщо оракул каже «ні», тоді ми запускаємо оракул на . Якщо вона зупиняється, то ми запускаємо машини до тих пір, поки одна не зупиняється, і вона є єдиною, яка зупиняється. Якщо не зупиняється, жодна з них не зупиняється. Поширити це до машин досить просто.3H2M1,M2,M3H1H2H1H1n

Перше зауваження з цього питання полягає в тому, що здається неможливим вирішити, використовуючи інформаційно-теоретичні засоби, оскільки ми вирішально покладаємося на нашу здатність отримувати інформацію, керуючи машинами без оракул.


@Kaveh - як писав Ніл Янг, нам потрібно обчислити точний набір зупиночних машин.
Шауль

Відповіді:


11

Результат можна знайти в

Насправді їх доказ показує, що вашу проблему неможливо вирішити за допомогою менших, ніж запитів до будь-якого набору , не кажучи вже про саму проблему зупинки. Для деяких позначень вашу проблему іноді позначають або (залежно від вашої улюбленої нотації проблеми зупинки).log2nXCnKCnHALT

Про це та багато пов'язаних з цим результатів див. Також:


10

EDIT: Аргумент, на який я відповів, не був помилковим, але був трохи оманливим, оскільки він лише показав, що верхня межа повинна бути щільною для певного (що насправді є тривіальним, оскільки воно повинно бути жорстким, коли а зв'язана дорівнює 1).nn=2

Ось більш точний аргумент. Звідси видно, що якщо верхня межа є вільною для будь-якого конкретного , то для всіх кількість необхідних викликів Oracle становить .log2nn nO(1)

(Безумовно, це не , тому верхня межа ніколи не розпущена! Але я насправді не доводжу, що тут, і з огляду на іншу відповідь на проблему, це, здається, не варто шукати.)O(1)

Розглянемо проблему обчислення максимального результату :

Враховуючи -tuple машин Тьюрінга, обчисліть максимальний вихід (із машин Тьюрінга, які зупиняються, якщо працювати на ). Якщо жодна з них не зупиниться, поверніть 0.n(M1,,Mn)ϵ

Як функція , найгірше число викликів Oracle, необхідне для обчислення цієї функції, те саме, що число, необхідне для вирішення, яка з машин зупиниться. (Якщо я знаю, які машини зупиняються, я можу легко обчислити максимальний вихід. І навпаки, якщо я хочу знати, які машини зупиняються, після побудови в постановці проблеми я можу побудувати машини де запускає всі заданих машин, то зупиняє та виводить якщо з них коли-небудь зупиняється. Максимальний вихід підкаже мені число, яке зупиняється. З цього я можу обчислити що саме зупинити.)nn{Mi} (i=1,2,,n)Minii

Тепер нехай - найменше ціле число (якщо воно є) таким, що має місце наступне:n0n

Використовуючи виклики , можна обчислити максимальний вихід заданих машин. (Тобто верхня межа не туга для .)C(n)=max{kZ:2k<n}nn

Чітко , тому що . Насправді, також, тому що , але не можна визначити максимальний вихід заданих машин (без викликів Oracle). Тепер розглянемо більші :n0>1C(1)=1n0>2C(2)=02n

Заява: Якщо є кінцевим, то для будь-якого можна обчислити максимальний вихід заданих машин при викликах оракула . n0nnC(n0)(Зверніть увагу, що якщо кінцевий, то .)n0C(n0)=O(1)

Доказ. . Доводимо це індукцією на . Базові випадки , які тримають по визначенню і .nnn0n0C

Нехай - ТМ, який, враховуючи будь-які машини Тьюрінга, обчислює максимальний вихід, використовуючи лише виклики до оракула.Q0n0C(n0)

Виправте будь-який . З урахуванням будь-яких машин , обчислюйте максимальний вихід таким чином.n>n0nM1,,Mn

Зосередьтеся на перших машинах . Розглянемо виконання на цих машинах. Зауважте, що робить дзвінки до оракула, і є лише можливих відповідей оракула на ці дзвінки. Зауважимо, що за визначенням . Нехай позначає му можливу відповідь. Для кожного машину яка імітує на цих машинах так:M1,,Mn0Q0n0Q0C(n0)n=2C(n0)n=2C(n0)<n0oiii=1,,nMiQ0

TM (на вході ):Miϵ

  1. Імітувати на машинах , але замість того , щоб викликати оракул, припустимо оракула реагує згідно .Q0н0(М1,,Мн0)оi
  2. Таке моделювання може не припинитися (наприклад, якщо - це не те, що оракул насправді поверне).оi
  3. Якщо моделювання зупиниться, нехай буде максимальним результатом, про говорить .годiQ0
  4. Обріжте всі машини . Якщо хтось із них коли-небудь видає , зупиніть та виведіть .н0(М1,,Мн0)годiгодi

Тепер у заданій послідовності машин замініть перші машини цими машинами . Повертайте обчислене значення, повторюючи цю послідовність машин. (Зверніть увагу, що оракул не викликається перед повторним повторенням, так що оракул викликається лише після досягнення базового випадку.)нн0М1,,Мн0н'<н0М1',,Мн''н-(н0-н')<н

Ось чому це обчислення правильне. Для такого, що є `` правильною '' відповіддю оракула на запити, зупинить і дасть правильний максимальний вихід оригінальних машин . Таким чином, максимальний вихід машин є щонайменше максимальним виходом машин . З іншого боку, на кроці 4 жоден не може дати вихід, який перевищує максимальний вихід . Таким чином, максимальний вихід машинiоiQ0Мi'н0н'(М1',,Мн'')н0(М1,,Мн0)Мi'(М1,,Мн0)н'(М1',,Мн'') дорівнює максимальній потужності машин, які вони замінюють. QEDн0

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.