З теореми 1.1 виводиться ще одна важлива нерозв'язна проблема:
1.3. Теорема (проблема зупинки). Проблема «функція фx(у) визначена» (чи в еквівалентній формі«Рx(y)¯, чи «y Î Wx» нерозв'язна.
Доведення. Міркуючи неформально, ми відразу бачимо, що якби проблема «функція фx(у) визначена» була б розв'язна, то була б розв'язна і більш проста проблема «функція фx(х) визначена», що суперечить теоремі 1.1.
Щоб провести всі ці міркування більш докладно, розглянемо характеристичну функцію проблеми^ «функція фх(у) визначена», що має наступний вид:
1, якщо фх(у) визначенаg (x, y)=
0, якщо фх(у) невизначена
Якби функція g була обчислювана, то обчислюваною була б і функція f(x)=g (x, х), але f є характеристична функція проблеми «хÎWx» і, отже, не обчислювана в силу теореми 1.1. Отже, функція g не обчислювана, і тим самим проблема «фx(y) визначена» нерозв'язна. ÿ
Теорему 1.3 часто інтерпретують як твердження про нерозв'язність проблеми зупинки (для МНР-программ), у якому говориться про те, що не існує ніякого ефективного загального методу установити, чи зупиниться деяка конкретна програма, запущена після введення в неї деякого конкретного набору початкових даних. Зміст цього твердження для теоретичного програмування очевидний: не існує зовсім загального методу перевірки програм на наявність у них нескінченних циклів.
Розглянута в теоремі 1.1 нерозв'язна проблема «хÎWx» важлива з кількох причин. Одна з них полягає в тому, що нерозв'язність багатьох проблем можна довести, показавши, що вони принаймні не простіші, ніж ця. Саме таким шляхом ми довели, що проблема зупинки (теорема 1.3) нерозв'язна: цей процес називається зведенням однієї проблеми до іншої.
Узагалі розглянемо деяку проблему М (х). Часто вдається показати, що рішення загальної проблеми М (х) привело б до рішення загальної проблеми «хÎWx», Тоді говорять, що проблема «хÎWx» зводиться до проблеми М (х). Іншими словами, якщо мається дозволяюча процедура для проблеми М (x), то ми можемо дати і дозволяючу процедуру для проблеми «хÎWx». Таким чином, з можливості розв'язання М(х) випливає можливість розв'язання «хÎWx», звідки ми негайно робимо висновок, що М (х) нерозв'язна.
Для зведення проблеми «хÎWx» до інших проблем часто використовується s-m-n-теорема, як показує, наприклад, доведення наступного результату.
1.4. Теорема.Проблема«фx=0»нерозв'язна.
Доведення. Розглянемо функцію f, визначену формулою
0, якщо х Î Wxf (x, y)=
не визначена, якщо x Ï Wx
Цю функцію ми ввели для того, щоб далі скористатися s-m-n-теоремою. Тим самим ми розглядаємо х як параметр, і нас цікавлять функції gx, такі, що gx(y)@ f (x, у). При цьому ми вибрали f так, що gx=0ÛхÎWx.
Теза Черча (чи підстановка з використанням 0 і yu) показує, що функція f обчислювана. Тому існує тотальна обчислювана функція k(x), що дається s-m-n-теоремо., така, що f (x, у)@fk(x); тобто fk(x)=gx. Таким чином, по визначенню
(*) х Î WxÛfk(x)= 0
Отже, питання про те, чи вірно, що х Î Wx, можна вирішити, відповівши спочатку на питання: чи вірно, що fk(x)=0? Тим самим ми звели загальну проблему «хÎWx» до загальної проблеми «фx=0»; оскільки перша з них нерозв'язна, те нерозв'язна і друга, що і було потрібно довести.
У зв'язку з тим що це перший приклад подібного роду, що зустрівся нам, розглянемо останню частину нашого міркування більш докладно. Нехай g-характеристична функція проблеми «фx=0», тобто
1, якщо фx=0g(x)=
0, якщо фx¹0
Припустимо, що функція g обчислювана. Тоді обчислюваною буде і функція h (х) = g (k (х)). У той же час співвідношення (*) дає
1, якщо фk(x)=0, тобто xÎ Wx,h(x)=
0, якщо фk(x)¹0, тобто xÏ Wx.
Тим самим у силу теореми 1.1 функція h не є обчислюваною. Стало бути, і функція g не є обчислюваною, так що проблема «фx=0» нерозв'язна. ÿ
Теорема 1.4 показує, що в області перевірки правильності комп'ютерних програм є принципові обмеження. У ній говориться про те, що не може бути зовсім загального ефективного методу здійснити перевірку того, чи буде програма обчислювати нульову функцію. Трохи змінивши доведення теореми 1.4, можна переконатися в тім, що те ж саме справедливо і для будь-якої іншої конкретної обчислюваної функції (див. нижче впр. 1.8 (i)).
Простий наслідок теореми 1.4 показує, що питання про те, чи обчислюють дві програми ту саму одномісну функцію, нерозв'язне. Зміст цього результату для теоретичного програмування також очевидний.
1.5. Наслідок.Проблема «фx=фy» нерозв'язна.
Доведення. Легко переконатися в тому, що ця проблема складніша проблеми «фx=0». Нехай с – таке число, що фс=0. Якщо f (x, y) – характеристична функція проблеми фx = фу, то функція g (x)=f (х, с) є характеристична функція проблеми «фx=0». По теоремі 1.4 функція g необчислювана, так що необчислювана і функція f. Отже, проблема «фx=фy» нерозв'язна.
У наступних результатах ми знову скористаємося s-m-n-теоремою для зведення проблеми «хÎWx».
1.6. Теорема.Нехай c – довільне число. Наступні проблеми нерозв'язні.
(а) (Проблема входу) «cÎWx» (чив еквівалентному формулюванні «Рx (с)¯», чи «c Î Dom (фx)»);
(b) (Проблема виходу) «cÎEx» (чи в еквівалентному формулюванні «с Î Ran (фx)»).
Доведення. Ми можемо звести проблему «хÎWx» до обох цих проблем одночасно. Розглянемо функцію f (х, у), визначену в такий спосіб:
y, якщо х Î Wx
f (x, y)=не визначена в протилежному випадку
(Маючи на увазі використовувати s-m-n-теорему, ми будемо розглядати функції gx, для яких gx(y)@ f (x, у). Функцію f ми вибрали таким чином, що c Î Dom (gx)ÛхÎWxÛcÎRan(gx).) У силу тези Черча функція f обчислювана, так що s-m-n-теорема дає тотальну обчислювану функцію k, таку, що f (х, у)@ фk(x)(y). З визначення f ми бачимо, що
x Î WxÞWk(x)=Ek(x)=N
так що c Î Wk(x) і c Î Ek(x),і
x Ï WxÞWk(x)=Ek(x)=Æ
так що c Ï Wk(x) і c Ï Ek(x). Тим самим ми звели проблему «x Î Wx» до кожної з проблем «c Î Wx » і «c Î Ex «.
Завершуючи Доведення пункту (а) більш докладно, ми бачимо, що якщо g-характеристична функція проблеми «c Î Wx », то
1, якщо x Î Wx,g (k(x))=
0, якщо x Ï Wx
Ця функція не є обчислюваною (теорема 1.1), так що функція g теж не може бути обчислюваною. Отже, проблема «c Î Wx » нерозв'язна.
Докладне доведення пункту (Ь) проводиться аналогічно. ÿ
Ми закінчимо цей параграф одним дуже загальним результатом про нерозв'язність, з якого негайно випливають теореми 1.4 і 1.6. При цьому ми знову скористаємося для зведення проблеми «х Î Wx »
s-m-n-теоремою.
1.7. Теорема (теорема Райса). Нехай ВÍ b1 і B¹Æ, b1.Тоді проблема«фxÎ B»нерозв'язна.
Доведення. Співвідношення для розв'язних множин (теорема 2–4.7) показують, що проблема «фxÎ B» розв'язна тоді і тільки тоді, коли розв'язна проблема «фxÎ b1\ B». Тому без втрати загальності ми можемо вважати, що ніде не визначена функція fÆне належить B (якщо це не так, то твердження можна довести для b1\ B).
Виберемо деяку функцію g Î B. Розглянемо функцію f (x, у), що задається так:
g(y), якщо x Î Wx,f (x, y)@
не визначена, якщо x Ï Wx.
Користаючись s-m-n-теоремою, ми одержуємо тотальну обчислювану функцію k (x), таку, що f (x, у) @ фk(x) (y),). Таким чином, ми бачимо, що
x Î WxÞ фk(x) =g, тобто фk(x)ÎB
x Ï WxÞ фk(x) =fÆ, тобто фk(x)ÏB
Це значить, що за допомогою обчислюваної функції k ми звели проблему «х Î Wx » до проблеми
«фхÎ В». Тепер уже стандартним чином можна покласти, що проблема «фхÎ В» нерозв'язна.
Теорема 1.4, наприклад, негайно випливає з теореми Райса, якщо взяти В ={0}, а теорема 1.6 (а) – якщо взяти В={g Î b1:c Î Dom(g)}. Аналогічно можна скористатися теоремою Райса і у наступних вправах.
1.8. Вправи.
1. Покажіть, що наступні проблеми нерозв'язні.
(a) «х Î Ех «. (Указівка. Скористайтеся діагональним методом чи зведіть до цієї проблеми проблему
«x Î Wx» за допомогою s – m- n – теореми.)