Как показать, что функция не вычислима?


43

Я знаю, что существует машина Тьюринга, если функция вычислима. Тогда как показать, что функция не вычислима или для этого нет машины Тьюринга. Есть ли что-то вроде леммы прокачки?

Ответы:


57

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

[примечание: мы можем связать любую функцию f с языком Lf={(x,y)y=f(x)} а затем обсудить разрешимость Lf а не вычислимость f ]


Неразрешимые языки сделать EXIST

Есть некоторые языки, которые не может решить ни одна машина Тьюринга. Аргумент прост: существует «только» счетное количество (0) разных ТМ, но неисчислимо много () разных языков. Таким образом, существует не более 0 разрешимых языков, а остальные (бесконечно много) неразрешимы. Дальнейшее чтение:

Чтобы положить руку на определенный неразрешимый язык, идея состоит в том, чтобы использовать технику, называемую диагонализацией (Georg Cantor, 1873), которая первоначально использовалась, чтобы показать, что вещественных чисел больше, чем целых чисел, или, другими словами, что .>0

Идея создания первого неразрешимого языка проста: мы перечисляем все машины Тьюринга (что возможно, поскольку они рекурсивно перечислимы!) И создаем язык, который не согласуется с каждой ТМ хотя бы на одном входе.

ε0100M110101M201000M300010

В приведенном выше примере каждая строка представляет собой одну ТМ, а каждый столбец - один вход. Значение ячейки равно 0, если ТМ отклоняет или никогда не останавливается, и 1, если ТМ принимает этот ввод. Мы определяем язык , чтобы D содержал i- тый вход тогда и только тогда, когда i-й ТМ не принимает этот вход.DDii

Следуя приведенной выше таблице, поскольку M 1 принимает ε . Аналогично, 0 D , но 1 D, поскольку M 3 не принимает 1 .εDM1ε0D1DM31

Теперь предположим, что решает D и ищем строку k в таблице: если в k-м столбце есть 1 , то M k принимает этот вход, но его нет в D , и если там есть 0 , вход находится в D, но M k не принимает его. Следовательно, M k не решает D , и мы пришли к противоречию.MkDk1kMkD0DMkMkD

Теперь на ваш вопрос. Есть несколько способов доказать, что язык неразрешим. Я постараюсь коснуться самых распространенных.

1. Прямое доказательство

Первый способ, это прямо показать, что язык неразрешим, показывая, что ни один TM не может его решить. Это обычно следует методу диагонализации, показанному выше.

Пример.

Покажите , что (комплемент) диагональной языка неразрешима.

LD¯={MML(M)}

Доказательство.
Предположим , разрешима, и пусть М Д быть его решающая. Есть два случая:LD¯MD

  1. принимаетM DMDMD : но тогда,такM ¯ л D . Такэто не может произойтиесли M D решает ¯ L D .MDL(MD)MLD¯MDLD¯
  2. не принимаетM DMDMD : так иследовательноМ ¯ L D . Но если это в L D , M D должен был принять это, и мы снова пришли к противоречию.MDL(MD)MLD¯LDMD

2. Закрытие свойства

Иногда мы можем использовать свойства замыкания, чтобы показать, что некоторые языки не разрешимы, основываясь на других языках, которые, как мы уже знаем, не разрешимы.

В частности, если не разрешима (мы пишем L R ), то и ее дополнение ¯ L неразрешимо: если существует решатель M для ¯ L, мы могли бы просто использовать его для определения L , принимая каждый раз, когда M отклоняет, и наоборот. Поскольку M всегда останавливается с ответом (это решающий фактор), мы всегда можем инвертировать его ответ.LLRL¯ML¯LMM

Вывод: Диагональный язык неразрешима, L DR .LD={MML(M)}LDR

Подобный аргумент может быть применен, отметив , что , если оба и его дополнение ¯ L рекурсивно перечислимы, оба разрешимые. Это особенно полезно, если мы хотим доказать, что язык не является рекурсивно перечислимым, что является сильным свойством, чем неразрешимость.LL¯

3. Сокращение от неразрешимой проблемы

Как правило, довольно трудно непосредственно доказать, что язык неразрешим (если он уже не построен по диагонали). Последний и наиболее распространенный метод доказательства неразрешимости - это использование другого языка, который, как мы уже знаем, неразрешим. Идея состоит в том, чтобы свести один язык к другому: показать, что если один является разрешимым, то другой также должен быть разрешимым, но уже известно, что один из них неразрешим, что приводит к выводу, что первый также неразрешим. Узнайте больше о сокращениях в "Каковы общие методы для уменьшения проблем друг с другом?" ,

Пример.

Покажите , что диагональный язык неразрешим.

HP={M,xM halts on x}

Доказательство.
Мы знаем, что неразрешима. Мы уменьшаем L D до H P (это обозначается как L DH P ), то есть мы показываем, что если бы H P было разрешимым, мы могли бы использовать его решающий элемент для определения L D , что является противоречием.LDLDHPLDHPHPLD

Сокращение работает путем преобразования кандидата для L D (т.е. вход для любого потенциального Decider / акцептор для L D ) кандидату ш ' для H P таким образом, что ж L D тогда и только тогда , когда W 'H P . Мы уверены, что это преобразование вычислимо. Таким образом, решение ш ' говорит нам о том или нет , ж L D , поэтому , если мы можем решить HP мы будем также в состоянии решить L DwLDLDwHPwLDwHPwwLDLD

Преобразование происходит следующим образом. Возьми , а выход ш ' = M ' , M , ² , где М ' является ТМ , которая ведет себя так же , как М , но если М бракованных, то М ' переходит в бесконечный цикл.w=Mw=M,MMMMM

Давайте посмотрим, что удовлетворяют требованиям. Если вес L D , это означает , что M привалы и принимает входные данные M . Таким образом, М ' также останавливается и принимает входной сигнал M . Таким образом, М ' , М H P . С другой стороны, если w L D, то M либо отвергает, либо никогда не останавливается на w,w
wLDM MMMM,MHP
wLDM . В обоих случаях М " будет идти в бесконечный цикл наM . Таким образом,М ' , М Н Р , и мы сделалипоказывающиечто ж L D тогда и только тогдакогда W 'Н Р , и, таким образом показаночто Н P R .MMMM,MHPwLDwHPHPR

Дальнейшее чтение: множество примеров сокращений и доказательств неразрешимости языков можно найти с помощью тега .


  1. Есть еще некоторые ограничения на снижение, чтобы быть действительным. Само преобразование должно быть вычислимо и четко определено для любого ввода.

  2. Вход выглядит как М , х , где М представляет собой ТМ и х является некоторой строкой. Итак, здесь мы выбираем строку x как кодировку машины M , которая является просто некоторой строкой ..HPM,xMxxM


4. Теорема Райса

«Таким образом, каждый раз, когда мы хотим доказать, что неразрешима, нам нужно уменьшать L D (или H P ) до него?LLDHP

Ну, на самом деле, есть. Это теорема Райса .

Теорема гласит, что многие языки, имеющие определенную структуру, неразрешимы. Поскольку все эти языки имеют эту определенную структуру, мы можем сделать сокращение один раз и применить его к любому языку, который допускает подобную структуру.

Теорема формально сформулирована следующим образом,

SRELS

LS={ML(M)S}

Множество является подмножеством языков в ; мы называем это свойством, потому что оно описывает свойство принятого языка . Все ТМ, язык которых удовлетворяет этому свойству, принадлежат .SREL(M)LS

Например, может быть тем свойством, что принятый язык содержит ровно два слова:SL(M)

S2={L|L|=2,LRE}.
В этом случае - это множество всех ТМ, язык которых состоит ровно из двух слов: LS2
LS2={ML(M)S}={M|L(M)|=2}.

Свойство может быть очень простым, но это не может быть все языки RE или ни один из языков RE. Если или то свойство называется тривиальным , и индуцированный вычислим. Примером простого является тот, который содержит только один язык, скажем, . Обратите внимание, что хотя содержит только один язык, существует бесконечно много машин с языком , поэтому бесконечен и неразрешим.S=S=RELSSScomplete={Σ}SMΣLScompete


Теорема очень сильна, чтобы доказать неразрешимость многих языков.

Пример.

Язык , неразрешимаL={MM never reaches the accepting state}

Доказательство.
Мы можем написать как , то есть для свойства . Это нетривиальное свойство (оно включает язык , но не включает, например, язык . Следовательно, по теореме Райса неразрешима.L{ML(M)=0}L=LSS={LRE,|L|=0}L=L={1,11,111,}L


Теперь докажем теорему. Как упоминалось выше, мы собираемся показать сокращение от до (для любого произвольного нетривиального ).HPLSS

Доказательство.
Пусть - нетривиальное свойство, . Мы показываем , то есть мы уменьшаем до так что если мы сможем решить мы сможем решить (что, как мы знаем, невозможно, поэтому не может быть разрешимым). В доказательстве ниже мы предполагаем , что пустой язык не является частью , то есть . (если пустой язык находится в , эквивалентное доказательство работает со свойством дополнения , я опущу детали). СSSREHPLSHPLSLSHPLSSSSS¯=RESSнетривиален, включает в себя хотя бы один язык; давайте назовем этот язык и предположим, что - это машина, которая принимает (такая машина существует, поскольку включает только языки в RE).L0M0L0S

Напомним, что при таком сокращении (см. Раздел 3 выше) нам нужно показать, как преобразовать вход для во вход для чтобы wHPwLS

wHP if and only if wLS

Пусть , мы конвертируем его в где описание машины (на входе ) следующее:w=(M,x)w=MMx

  1. Запустите на .Mx
  2. Если описанный выше шаг 1 останавливается, запустите на и соответственно примите / отклоните.M0x

Мы видим, что это преобразование действительно. Сначала отметим, что описание просто построить с учетом .Mw=(M,x)

Если , то останавливается на . В этом случае переходит к шагу 2 и ведет себя так же, как . Поэтому его общепринятый язык . Следовательно, . Если то зацикливается на . Этот случай, петли на любом входе - она застревает на этапе 1. язык , принимаемый в этом случае пусто, . Следовательно, .wHPMxMM0L(M)=M0Sw=MLS
wHPMxMxML(M)=Sw=MLS

4.1 Расширенная теорема Райса

Теорема Райс дает нам простой способ показать , что определенный язык , который удовлетворяет определенные свойства неразрешимы, то есть . Расширенная версия теоремы Райса позволяет нам определить, является ли язык рекурсивно-перечислимым или нет, то есть определяет ли , проверяя, удовлетворяет ли некоторым дополнительным свойствам.LLRLREL

Теорема (Райс, расширенная). Учитывая свойство , язык является рекурсивно-перечислимым ( ) тогда и только тогда, когда все следующие три утверждения совместно держатьSRE

LS={ML(M)S}
LSRE
  1. Для любых двух , если , а также затем также .L1,L2REL1SL1L2L2S
  2. Если , то существует конечное подмножество так , что .L1SL2L1L2S
  3. Множество всех конечных языков в перечислимо (другими словами: существует TM, который перечисляет все конечные языки ).SLS

Доказательство.
Это теорема «тогда и только тогда», и мы должны доказать оба ее направления. Сначала покажем, что если одно из условий (1,2,3) не выполняется, то . После этого мы покажем, что если все три условия выполняются одновременно, то .LSRELSRE

Если (1,2) выполнено, а (3) нет, тоLSRE .
Предположим, что , и мы увидим, что у нас есть способ принять любые конечные языки в (и, таким образом, множество всех этих языков есть RE), таким образом, условие (3) выполняется, и мы достигаем противоречия , Как решить , если конечная принадлежит или нет? Легко - мы используем описание для построения машины которая принимает только слова в , и теперь мы запускаем машину на (помните - мы предполагали , поэтому есть машина, которая принимаетLSRESLSLMLLLSMLLSRELS!). Если то и, поскольку , его машина скажет «да» на входе , и все готово.LSMLLSLSREML

Если (2,3) выполнено, а (1) нет, тоLSRE .
Мы предполагаем, что и мы покажем, что у нас есть способ определить , что приводит к противоречию.LSREHP

Поскольку условие (1) не выполняется, есть язык и надстройкой из него, так , что . Теперь мы собираемся повторить аргумент, использованный в Разделе 4 для определения : учитывая ввод для , мы создаем машину , язык которой равен если или иначе, его язык - . Затем мы можем решить : либо останавливается на , либо RE-машина для принимаетL1SL2L1L2SHP(M,x)HPML1(M,x)HPL2HPMxLSM; мы можем работать как параллельно, так и по крайней мере один из них будет остановлен.

Давайте дадим детали построения (на входе ):Mx

  1. Сделайте следующее параллельно:
    1.1 запустите на . 1.2 запустить машину наMx
    L1x
  2. Если 1.2 останавливается и принимает - примите.
  3. Если 1.1 останавливается: запустите машину на .L2x

Почему это работает? Если то 1.1 никогда не останавливается, и принимает точно все входные данные, которые принимаются на шаге 1.2, поэтому . С другой стороны, если то в какой-то момент шаг 1.1 останавливается, и принимает именно . Может случиться, что принимает заранее, но так как , это не меняет язык в этом случае.(M,x)HPML(M)=L1(M,x)HPML21.2L1L2M

Если (1,3) выполнено, а (2) нет, тоLSRE .
Мы снова примем и покажем, что становится разрешимой, что является противоречием.LSREHP

Если условие (2) не выполняется, то для любого все его конечные подмножества удовлетворяют (обратите внимание, что должен быть бесконечным, поскольку ). Как и в чтобы определить для данного входа , мы создаем машину , язык которой равен если и некоторых конечных иначе. Противоречие следует так же, как и выше.L1SL2L1L2SL1L1L1HP(M,x)ML1(M,x)HPL2

Конструкция этой машины очень похожа на предыдущую мы построили. Машина (на входе ) делает:MMx

  1. Запускает на дляшаги.Mx|x|
  2. Если останавливается на шаге 1 - отклонитьM
  3. В противном случае, запустите машину на .L1x

Утверждается, что если , то в некоторый момент, скажем, после 1000 шагов, останавливается на . Следовательно, шаг 1 остановит (и отклонит) любой ввод длиной . Таким образом, в этом случае является конечным . Также отметим , что и , в частности, в силу наших предположений о недействительности условия (2), получим , что .(M,x)HPMxx>1000L(M)L(M)L1L(M)S

С другой стороны, если , то шаг 1 никогда не останавливается, и мы никогда не отказываемся на шаге 2. В этом случае легко увидеть, что и в частности, .(M,x)HPL(M)=L1L(M)S


Нам осталось показать другое направление расширенной теоремы. То есть нам нужно показать, что если все условия (1,2,3) выполнены, то у нас есть ТМ, который принимает , то есть . Другими словами, нам нужно показать машину чтобы для любого ввода для которого , машина принимает этот ввод, .LSLSREMSML(M)SMS(M)accept

Вот как себя машина (на входе ):MSM

  1. Пусть будет машиной, которая перечисляет все конечные языки в , гарантируемые условием (3).Menum SS
  2. Запустите следующее параллельно (используя ласточкин хвост, см., Например, это и это ) для 2.1 Запускайте пока не будет выведен язык 2.2. Проверьте, принимает ли все слова из (запустите для этих слов, опять параллельно). 2,3. Если для некоторого , принимает все слова из - принять.i=1,2,...
    Menum SLi
    MLiM
    iMLi

Почему это работает? Если то у него есть конечное подмножество , и как только выведет это подмножество, шаг 2.2 / 2.3 обнаружит, что принимает все слова на этом языке и принимаем.L(M)SLjSMenum SM

С другой стороны, если может не быть принимать все слова в для любого . Действительно, по условию (1) любой также находится в , поэтому, если принимает все слова в для некоторого , то и, следовательно, , в противоречии.L(M)SLii=1,2,...LLiSMLiiL(M)LiL(M)S


Наконец, обратите внимание, что следующее является простым (и очень полезным) следствием вышесказанного:

Следствие (Рис, расширенный). Учитывая нетривиальное свойство , так что , язык не является рекурсивно-перечислимым, то есть .SRES

LS={ML(M)S}
LSRE

Спасибо за добавление расширенной версии теоремы Райс! Я знаю другую версию; Я должен выкопать это. Во всяком случае, я не думаю, что очень важно или даже полезно иметь здесь доказательства. Может быть, вы можете сослаться на них, или загрузить их где-нибудь еще, если нет хорошей ссылки?
Рафаэль

13

Одним из полезных инструментов является теорема Райса . Вот что это говорит:

Пусть нетривиальным множество частично вычислимых функций одинарных и Гедель нумерации из . Тогда индекс набораPPφPP

IP={iNφiP}

не является рекурсивным

Вы также найдете это в терминах кодировок машин Тьюринга (или любого другого языка программирования, полного Тьюринга), то есть ; здесь определяет нумерацию Гёделя.IP={MM TM,fMP}.

То есть, вы можете использовать теорему Райса, чтобы доказать, что такие множества нерекурсивны и являются индексными множествами нетривиальных наборов функций (или такие сводимы к )SS

Обратите внимание, что есть расширение, которое можно использовать, чтобы показать, что определенные наборы индексов не являются рекурсивно перечисляемыми.

пример

Пусть нумерация Гёделя. Рассмотрим множество натуральныхφ

A={iNφi(j)=1 for all j2N} .

Теперь, поскольку дляP={fPf(j)=1 for all j2N}

  • A=IP ,
  • (n1)P и
  • (n2)P ,

Теорема Райса может быть применена, и не разрешима.A

Поскольку многие не знакомы с нумерациями Гёделя, обратите внимание, что этот пример также работает в терминах машин Тьюринга (т. Программ) с использованием .A={MfM(x)=1 for all x2N}

Unexample

Рассмотрим множество натуральных

A={iNφi(j)=i for all j2N}

что, конечно, не вычислимо. Однако не является индексом, установленным для любого ! Пусть для некоторого . Поскольку является нумерацией Гёделя , существует (бесконечно много) с но для всех выполняется, потому что .APf=φiiAφjiφj=fjAf(2)=ij

Будьте осторожны с этим! Как правило, если индекс функции используется «с правой стороны» или в качестве параметра функции в определении набора, скорее всего, это не набор индексов. Вам может понадобиться свойство нумерации Геделя и теорема о фиксированной точке, чтобы показать, что набор не является индексным набором.smn

Смотрите здесь и здесь для связанных постов по теореме Райс.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.