09.15 Элементы теории алгоритмов
Семинар
TODO многовато!
Понятие применимости алгоритма. К чему применим алгоритм?
Понятия области применимости и порождаемого множества (TODO как оно называется на на лекциях?)
Пример алгоритма в алфавите {a, b}, применимого ко всем словам.
В частности, алгоритм, который сразу останавливается, — это тоже алгоритм
- ⇒ если ни одно правило не применимо, и это тоже алгоритм
Пример алгоритма в алфавите {a, b}, применимого не ко всем словам, только к некоторым.
- Должен не останавливаться
Понятие эквивалентности алгоритмов как совпадения их ОП и отображения ОМ на ПМ
Возможные проблемы с доказательством эквивалентности
Пример двух неэквивалентных НАМ-схем
Пример двух эквивалентных НАМ-схем, актуальные (работающие) правила которых отличаются
Подсказка: эквивалентные алгоритмы одинаково отображают слово в слово: WОП → WПМ , но способ этого отображения может отличаться.
Запись алгоритма. Введём три дополнительных символа — «знак замены», «знак финальной замены» и «знак разделителя».
Например, в нашем эмуляторе есть ->, => и перевод строки, а в записи это будет «→», «↦» и «;»
Вот запись некоторого алгоритма: «b→b;a↦b». Это слово для НАМ в алфавите {a, b, →, ↦, ;}
Алгоритм называется самоприменимым, если он применим к собственной записи.
Самоприменим ли этот алгоритм? А если переставить местами правила?
Формулировка и принцип доказательства теоремы о неразрешимости проблемы останова (от противного с помощью композиции и самоприменимости)
Практикум
Понятие композиции алгоритмов терминах применимости.
Подсказка: «Композицией P(Q) алгоритмов P и Q называется такой алгоритм R, что…» (R должен быть алгоритмом!)
Области применимости и порождаемые множества для P, Q и P(Q)
Композиция двух машин Тьюринга P и Q
Композиция двух машин Тьюринга P и Q
- переименовать состояния (например, в Q);
- объединить таблицы;
- все заключительные состояния P заменить на начальное состояние Q.
Пирмер:
P Q 0 1 _ 0 1 _ 0 ,R, ,R, ,L,1 ° 0 ,R, ,R, ,L,1 1 1,N,! 0,L, 1,N,! 1 1,L, 0,N,! ,R,!- P — это сложение, а Q?
- Композиция:
0 1 _ 0 ,R, ,R, ,L,1 1 1,N,2 0,L, 1,N,2 2 ,R, ,R, ,L,3 3 1,L, 0,N,! ,R,!
Постройте композицию двух машин Тьюринга, работающих в алфавите A = {a, b}. Машины выполняют следующие действия: - Удвоить каждую букву слова P.
- Заменить последнее вхождение буквы a в слово P на bb. Если a∉P, то оставить P без изменений.
Ветвление двух машин Тьюринга P и Q
Машина P обрабатывает входное слово таким образом, что часть переходов в заключительное состояние (назовём «истина»-переходами) соответствуют ситуации, когда входное слово отвечает некоторому условию, а оставшиеся («ложь»-переходы) — когда не отвечает. Такая машина называется проверкой условия. Входное слово при этом не изменяется.
Если ∃ машина Q, предназначенная для обработки «истина»-переходов
- переименовать состояния (например, в Q);
- объединить таблицы;
- «истина»-переходы в P заменить на переход в начальное состояние Q
Это частный случай множественного ветвления, когда есть N классов переходов и N манимш-обработчиков Пример:
Вычесть 1 из двоичного числа, если оно не 0. - Проверка условия «на ленте одинокий 0»
1 0 _ 0 ,N,! ,R,0 ,L,!
- переход от 1 — на ленте не 0, от _ — все 0
- Вычитание из не-0
1 0 _ 0 ,R, ,R, ,L,1 1 0,L,! 1,L,1 ,,
- после объединения и переименования заменяем «переход от 1 — на ленте не 0»
1 0 _ 0 ,N,1 ,R,0 ,L,! 1 ,R, ,R, ,L,2 2 0,L,! 1,L,2 ,,
- Проверка условия «на ленте одинокий 0»
- Постройте машину Тьюринга с ветвлением:
Алфавит A = {a, b}. Если P начинается на b, то удалить первое вхождение a, иначе удалить последнее вхождение a.
Цикл машины Тьюринга P
Если машина работает аналогичнo проверке условия, но изменяет входное слово, это шаг цикла.
Некоторые переходы на конечное состояние в машине P заменяются на другое состояние qц этой машины. Состояние qц называется входом в цикл.
При этом можно выделить четыре секции цикла:
Инициализация: группа (возможно, пустая) состояний, начиная с q0 , которые больше не не будут достигнуты после перехода в qц
Проверка условия: группа состояний внутри цикла, вычисляющая необходимость циклического перехода (или, наоборот, выхода из цикла — тогда циклический переход будет в конце)
Тело цикла: группа состояний внутри цикла, выполняющая действия, ради которых был задуман цикл
Изменение: группа состояний внутри цикла, изменяющая слово там, где его будет проверять проверка условия
Зачем нужны секции 0 и 3?
Пример:
Удвоение палок | $ _ 0 ,R, ,, $,L,1 1 ,L, ,L, ,R,2 2 ,N,3 _,R,! ,, 3 _,R,4 ,, ,, 4 ,R, ,R, |,R,5 5 ,, ,, |,L,1
Состояние 0: инициализация — установка маркера $
- Состояние 2: проверка условия с выходом из цикла
- Состояние 3: изменение (замена палки пустотой)
- Состояния 4-5: тело цикла и переход в состояние 1
Оптимизировать эту программу хотя бы до 5 состояний - Постройте машину Тьюринга, в которой есть цикл с 4 секциями:
Алфавит A = {a, b}. Обратите входное слово P (запишите его буквы в обратном порядке).
Д/З
- Определить область применимости следующего НАМ относительно алфавита {a,b,c}:
a→c b→a cc→ c→c
- Из следующей схемы НАМ вычеркнуть как можно больше правил так, чтобы получившийся алгоритм был эквивалентен исходному относительно алфавита {a,b}
aba → aab ba → ab abab → aabb ab →
- Составить программу для МТ, эквивалентную следующему НАМ
*aa->b* *b->b* *=> ->*
- Составить (методом композиции) программу для МТ, которая для данного нечётного натурального двоичного числа n на ленте записывает двоичное число m=(n+1)/2.
- Составить (методом цикла) программу для МТ, на алфавите {1,0,+}, которая для любой записи на ленте вида n+m, где т и n — натуральные числа в двоичной системе счисления, записывает на ленту их сумму — двоичное число.
- Подсказка: эта довольно обширная программа собирается из программы прибавления 1, вычитания 1 и цикла.
