Як показати, що функція не обчислюється?


43

Я знаю, що існує машина Тьюрінга, якщо функція обчислюється. Тоді як показати, що функція не обчислюється або для цього не існує машини Тьюрінга. Чи є щось на кшталт накачки леми?

Відповіді:


57

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

[примітна примітка: ми можемо пов’язати будь-яку функцію з мовою а потім обговорити можливість визначення а не обчислюваність ]L f = { ( x , y ) y = f ( x ) } L f ffLf={(x,y)y=f(x)}Lff


Нерозв'язні мови зробити EXIST

Є кілька мов, які жодна машина Тьюрінга не може вирішити. Аргумент простий: є "лише" безліч різних ТМ, але незліченно багато різних мов. Таким чином, є щонайбільше мови, які можна визначити, а решта (нескінченно багато) не можна визначити. Подальше читання:( ) 0(0)()0

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

Ідея побудови першої невідкладної мови проста: ми перераховуємо всі машини Тьюрінга (що можливо, оскільки їх рекусивно перелічують!), І створимо мову, яка не погоджується з кожною TM на щонайменше одному вході.

ε0100M110101M201000M300010

У вищесказаному кожен рядок - одна TM, а кожен стовпець - один вхід. Значення комірки дорівнює 0, якщо TM відхиляє або ніколи не зупиняється, і 1, якщо TM приймає цей ввід. Ми визначаємо мову такою, що містить -й вхід тоді і тільки тоді, коли -й TM не приймає цей ввід.D i iDDii

Дотримуючись таблиці вище, оскільки приймає . Аналогічно , але оскільки не приймає .M 1 ε 0 D 1 D M 3 1εDM1ε0D1DM31

Тепер, припустимо, вирішує і шукає рядок у таблиці: якщо в -му стовпці є , то приймає цей вхід, але він не знаходиться в , а якщо є , вхід знаходиться в але не приймає. Тому не вирішує , і ми дійшли до суперечності. D k 1 k M k D 0 D M k M k DMkDk1kMkD0DMkMkD

Тепер до вашого питання. Існує кілька способів довести, що мова не можна визначити. Спробую торкнутися найпоширеніших.

1. Прямий доказ

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

Приклад.

Покажіть, що (доповнення) діагональної мови можна визначити.

LD¯={MML(M)}

Доказ.
Припустимо, що визначається, і нехай є його рішенням. Є два випадки: MDLD¯MD

  1. М ДMD приймаєMD М DL( M D )М ¯ л Д М Д ¯ л Д : але тоді, так що . Тож цього не може статися, якщо вирішить .MDL(MD)MLD¯MDLD¯
  2. М ДMD не приймаєMD М Дл( М Д )М ¯ L D L D М D : так і, таким чином, . Але якщо воно є в , повинен був би прийняти це, і ми знову дійшли протиріччя.MDL(MD)MLD¯LDMD

2. Властивості закриття

Іноді ми можемо використовувати властивості закриття, щоб показати, яку мову не можна вирішити, на основі інших мов, про які ми вже знаємо, що їх не можна вирішити.

Зокрема, якщо не визначається (пишемо ), то також його доповнення визначається: якщо є рішення для ми можемо просто використовувати його для вирішення , приймаючи щоразу відкидає і навпаки. Оскільки завжди зупиняється з відповіддю (це рішення), ми завжди можемо перевернути її відповідь.L R ¯ L M ¯ L L M MLLRL¯ML¯LMM

Висновок: Діагональна мову нерозв'язна, . L DRLD={MML(M)}LDR

Аналогічний аргумент може бути застосований, зазначивши, що якщо і і його доповнення є рекурсивно перелічуваними, обидва можна вирішити. Це особливо корисно, якщо ми хочемо довести, що мова не є рекурсивно перелічуваною, сильнішою властивістю, ніж нерозбірливість.¯ LLL¯

3. Зведення від нерозв'язної проблеми

Зазвичай досить важко безпосередньо довести, що мова не може бути визначеною (якщо вона вже не побудована "діагонально"). Останній і найпоширеніший метод доказу невідповідності - це використання іншої мови, про яку ми вже знаємо, що її не можна визначити. Ідея полягає в тому, щоб звести одну мову до іншої: показати, що якщо одна рішуча, то інша також повинна бути рішучою, але одна з них уже відома як невирішальна, що призводить до висновку, що перша також не визначається. Детальніше про скорочення читайте в розділі "Які загальні методи для зменшення проблем один одного?" .

Приклад.

Покажіть, що діагональна мова визначається.

HP={M,xM halts on x}

Доказ.
Ми знаємо, що можна визначити. Ми зменшуємо до (це позначається ), тобто ми показуємо, що якщо було вирішальним, ми могли б використовувати його рішення для визначення , що є протиріччям.L D H P L DH P H P L DLDLDHPLDHPHPLD

Скорочення працює шляхом перетворення кандидата для (тобто вхід для будь-якого потенційного рішення / акцептора для ) до кандидата для такого, що якщо і тільки якщо . Ми переконуємося, що це перетворення обчислюється. Таким чином, рішення говорить нам, чи , тож якщо ми можемо вирішити HP, ми також зможемо визначити .¹L D L D w H P w L D w H P w w L D L DwLDLDwHPwLDwHPwwLDLD

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

Подивимось, що задовольняти вимоги. Якщо , це означає, що зупиняє та приймає вхід . Тому також зупиняє та приймає вхід . Таким чином, . З іншого боку, якщо то або відхиляє, або ніколи не зупиняється на . В обох випадках перейде в нескінченний цикл на . Таким чином, ш L Д М М М 'М М ' , М H P ш L Д М М М 'М M ' , М H P w L D w H Pw,w
wLDM MMMM,MHP
wLDMMMMM,MHP, І ми зробили , що показують , що тоді і тільки тоді , коли , і , таким чином , показали , що .wLDwHPHPR

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


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

  2. Вхід виглядає як , де - TM, а - рядок. Отже, тут ми вибираємо рядок для кодування машини , яка є лише деякою рядком.М , х М х х МHPM,xMxxM


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

"Отже, кожного разу, коли ми хочемо довести, що визначається, нам потрібно зменшити (або ) до нього? Чи немає ярлика?"L D H PLLDHP

Ну, насправді, є. Це теорема Райса .

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

Теорема формально викладена наступним чином,

Теорема (Рис). Враховуючи властивість , наступна мова визначається 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. Набір усіх кінцевих мов у безліч (іншими словами: є ТМ, який перераховує всі кінцеві мови ).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

Оскільки багато хто не знайомий з нумерацією Gödel, зауважте, що приклад працює добре також і в машинах Тьюрінга (тобто програм), використовуючи .A={MfM(x)=1 for all x2N}

Неприклад

Розглянемо безліч натуралів

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

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

Будьте обережні! Як правило, якщо індекс функції використовується в "правій частині" або як параметр функції в заданому визначенні, він, швидше за все, не є набором індексу. Вам може знадобитися властивість нумерації Gödel та теореми фіксованих точок, щоб показати, що множина не задана індексом.smn

Дивіться тут і тут для пов’язаних публікацій про теорему Райса.

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