- •Теория множеств Основные понятия
- •Способы задания множеств
- •Декартово произведение и векторы
- •Соответствия
- •Отношения
- •Разбиения
- •Факторизация отображения
- •Отношения порядка
- •Теория алгоритмов. Понятие алгоритма.
- •Машина Тьюринга.
- •Числовая функция
- •Кодировка машин Тьюринга.
- •Алгоритмически неразрешимые проблемы.
- •Проблема применимости.
- •Нормальные алгоритмы Маркова
- •Рекурсивные функции.
- •Операция минимизации.
- •Предикаты Основные понятия
- •Операции над предикатами
- •Предикатные формулы.
- •Основные понятия
- •Функции k-значной логики.
- •Законы Моргана:
- •Формальные теории Основные понятия
- •Свойства вывода из гипотез
- •Классическое исчисление высказываний
Кодировка машин Тьюринга.
Кодом машины Тьюринга называется запись набора её команд в алфавите {*,1}, позволяющая однозначно восстанавливать каждую команду. T=(A,S,,μ,); Покажем, что любую машину можно закодировать:
A={a1,... an};
S={s0,s1...sm};
N(П)=1;
N(Л)=12;
N{Н}=13;
N(s0)=14;
N(s1)=15;
...
N(sn)=1n+4;
N(a1)=1n+5;
...
N(am)=1n+m+4.
(si, ak)( aj, D, sp), где D – управляющий символ, aj – что печатать, sp – следующее состояние.
N(si, ak)= N(si)*N(ak)* N(aj)*N(D)*N(sp) – код команды.
N(T)= N(s1, a1)**N(s2, a1)**..**N(sn, am).
Машина Тьюринга называется самоприменимой, если она применима к собственному коду, т.е переходит в состояние s0 при работе с ним.
Алгоритмически неразрешимые проблемы.
Проблема самоприменимости:
Существует ли алгоритм, который для любой машины Тьюринга позволяет выяснить, является ли эта машина самоприменимой или нет.
Существует ли такая машина Тьюринга L, применимая к коду N(T) произвольной машины, что в своем заключительном состоянии L зависает над 0, если T – несамоприменима, и над 1 – если она самоприменима
Теорема (об алгоритмической неразрешимости проблемы самоприменимости): не существует такой машины L, которая решала бы проблему самоприменимости.
Док-во: Допустим, что машина L существует. На базе L составим машину L такую, что в L войдут все команды из L, но вводится новое состояние s0, которое и будет заключительным состоянием L. В список команд введем еще две: (s0,)(s0,Н,) и (s0,1)(s0,Н,1).
Мы получили машину L, которая обладает следующими свойствами:
неприменима к коду самоприменимых машин;
применима к коду несамоприменимых машин.
Запустим L на собств. кодом N(L):
Если L остановится, значит L самоприменима L применима к коду самоприменимых машин, возникает противоречие.
Если L не остановится значит L несамоприменима L неприменима к коду несамоприменимых машин, возникает противоречие.
Таким образом, не существует машины, решающей задачу самоприменимости. ч.т.д.
Проблема применимости.
Проблема применимости:
Существует ли алгоритм, который для любых машины Тьюринга Т и слова β позволяет выяснить, является ли эта машина применимой к β или нет.
Существует ли машина L, применимая ко всем словам вида N(T)λβ, где N(T) – код произвольной машины Т, а β – произвольное слово, такая, что в своем заключительном состоянии L зависает над 0, если T – не применима к β, и над 1 – если она применима к β.
Напишем программу работы машины T1, которая применима к любому слову вида x1, x2,…, xn, и дублирует это слово через λ: x1, x2,…, xn λ x1, x2,…, xn, а по окончании работы возвращается в начало.
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
λ |
λ Л 7 |
λ П 3 |
a Л 4 |
λ Л 4 |
λ П 6 |
b Л 4 |
λ П 0 |
a |
a П 2 |
a П 2 |
a П 3 |
a Л 4 |
a П 5 |
a П 6 |
a Л 7 |
b |
b П 5 |
b П 2 |
b П 3 |
b Л 4 |
b П 5 |
a П 6 |
b Л 7 |
a |
|
|
|
a П 1 |
|
|
|
b |
|
|
|
b П 1 |
|
|
|
Проверим для слова aba.
a ba |
a b a |
a b a |
a b a λ |
a b a λ λ |
a b a λ a |
a b a λ a... |
a b a λ a |
1 |
2 |
2 |
2 |
2 |
4 |
4 |
4 |
a b a λ a |
a b a λ a |
a b a λ a |
a b a λ a |
a b a λ a λ |
a b a λ a b |
aba λ ab... |
a b a λ a b |
1 |
5 |
5 |
6 |
6 |
4 |
4 |
4 |
a b a λ a b |
a b a λ ab |
a b a λ a b |
a b a λ a b |
abaλ a b λ |
abaλaba... |
ab a λaba |
a b a λ aba |
1 |
2 |
3 |
3 |
3 |
4 |
4 |
1 |
a b a λ aba |
a b a λ aba |
a b a λ aba |
λ abaλaba |
a baλaba |
|
|
|
7 |
7 |
7 |
7 |
0 |
|
|
|
Теорема (об алгоритмической неразрешимости проблемы применимости): не существует такой машины L, которая решала бы проблему применимости.
Док-во: Пусть существует машина L, которая решает проблему применимости. Построим машину L такую, что она будет включать в себя все команды L и Т1: L= Т1 ºL – т.е. с начла работает Т1, а затем L.
Напишем на ленте код N(T1) и запустим L: N(T1)→ N(T1) λ N(T1). Мы получили, что L решает проблему самоприменимости, что противоречит теореме об алгоритмической неразрешимости проблемы самоприменимости. Таким образом, предположение, что существует машина L – неверно. ч.т.д.
