Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Теория вычислительных процессов. Лабораторный практикум. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
2 Мб
Скачать
☆
11
a1
q1
a0
a2l
q3
q4
q2
a0
a2
a1
a1p
a0l
a0p
a1r
a0
a1
a2
a2l
a3r
a2r
Рис. 1. Граф машины Тьюринга
Правило функционирования поясним неформально на распространенной «физической» модели машины Тьюринга. Машина схематически представ­лена на рис. 2 и состоит из потенциально бесконечной (в обе стороны) ленты, управления и головки, перемещаемой вдоль ленты. Лента разбита на клетки, которые могут содержать символы из алфавита V или быть пустыми, т. е. содержать символ #. Управление на каждом шаге работы машины находится в одном из состояний из Q, расшифровывает про­грамму, которая однозначно определяет поведение машины и управляет головкой. Головка в каждый момент расположена против некоторой клетки ленты и может считывать символы с ленты, записывать их на лен­ту и перемещаться в обе стороны вдоль ленты.
Рис. 2. Машина Тьюринга
Машина функционирует следующим образом: в начальный момент на ленте записано некоторое слово из V, а управление находится в начальном состоянии q0. Начальное слово, равно как и слова, появляющиеся в про-
12
цессе работы машины, ограничено с двух сторон пустыми символами #. Головка обозревает крайний слева символ заданного слова.
Работа машины состоит в повторении следующего цикла элементарных действий:
1) считывание символа, находящегося против головки;
2) поиск применимой команды, а именно той команды q a  q' a' d, в
которой q — текущее состояние управления, а — считанный символ;
3) выполнение найденной команды, состоящее в переводе управления в
новое состояние q', записи в обозреваемую головкой клетку символа а' (вме- сто стираемого символа а) и последующем перемещении головки вправо, если d = r, перемещении влево, если d = l, или сохранении ее в том же по­ложении, если d = р.
Машина останавливается в том и только в том случае, если на оч е­редном шаге ни одна из команд не применима. Результат работы остано­вившейся машины — заключительное слово на ленте.
Пусть #a1a2…a
…an# — слово, возникшее на ленте в процессе
k-1ak
работы машины и машина находится в состоянии q, головка — над сим­волом ak. Под конфигурацией машины Тьюринга понимается сово­купность ее текущего состояния, обрабатываемого слова и положения головки на ленте. Конфигурацию можно записать как #a1a2…a
k-1qak
…an#,
т. е. символ состояния записывается перед символом входного слова, на который указывает головка машины. Протоколом машины Тьюринга называется последовательность ее конфигураций, записанных в порядке возникновения в процессе работы.
Машина Тьюринга, перерабатывая начальные слова на ленте в заклю­чительные, задает словарную функцию, для которой начальные слова — значения аргумента, заключительные — значения функции. (Для представ­ления n-местной функции начальное слово на ленте имеет вид #a1 #a2 # … #an #, где подслова a1, a2,…, a
не содержат символа #. При интерпре-
n
тации заключительного слова на ленте как значения функции символ # игнорируется). Если машина не останавливается, начав работу с некото­рым словом на ленте, то функция, задаваемая машиной, считается не­определенной для этого слова. Таким образом, машина Тьюринга Т за­дает частичную функцию FT и способ вычисления ее значений. Хотя ма­шины Тьюринга оперируют со словами, они могут задавать и числовые функции в силу установленной связи между словами и числами.
По определению, функция F является (частично) вычислимой, если существует машина Тьюринга Т такая, что F
= F. Говорят также, что
T
для функции F существует (частичный) алгоритм вычисления ее значе- ний, задаваемый машиной Т.
13
Для машины Тьюринга, как и для всех других формальных способов задания алгоритмов, включая программы для ЭВМ, характерны следую­щие свойства:
1) конструктивность — машина Тьюринга представляет собой конеч-
ный объект, построенный по определенным правилам из базовых объек­тов;
2) конечность — процесс нахождения значений функции для тех
значений аргументов, для которых она определена, состоит из конечно­го числа шагов;
3) однозначность — результат работы машины единственным обра-
зом определяется начальным словом;
4) массовость — машина работает с любым начальным словом на лен-
те, составленным из символов ее алфавита.
Машина Тьюринга однозначно задается своей программой. Если упо­рядочить ее команды и закодировать последовательность команд словом в алфавите машины Тьюринга, то можно получить ее описание в соб­ственном алфавите. Заметим, что одной и той же машине Тьюринга соот­ветствуют различные словарные представления в ее алфавите в зависимо­сти от выбора упорядочений множеств Q, V, I, но по любому из этих представлений программа машины восстанавливается однозначно.
Массовые алгоритмические проблемы
Массовые алгоритмические проблемы формулируются следующим образом: необходимо указать алгоритм, который бы определял, обладает ли предъявленный объект из некоторого класса объектов интересующим нас свойством, принадлежит ли он множеству М всех объектов, облада­ющих этим свойством. Если множество М разрешимо, т. е. вычислима его характеристическая функция, то поставленная проблема также разреши­ма. Если множество М перечислимо, т. е. вычислима его частичная харак­теристическая функция, то поставленная проблема частично разрешима. Если же не вычислима и частичная характеристическая функция множе­ства М, то поставленная проблема не является частично разрешимой.
Разрешимость множества М означает, что существует всегда останав­ливающаяся (оканчивающая работу за конечное время) машина Тьюрин­га, позволяющая для любого слова в алфавите V через конечное число шагов установить, принадлежит ли это слово множеству М или нет. Пе­речислимость множества М означает, что существует машина Тьюринга, которая останавливается в том и только том случае, если предъявленное слово принадлежит множеству М.
Связь между разрешимыми и перечислимыми множествами устанав­ливает следующая теорема.
14
M
H
T
M
H
T
M
H
T
M
H
T
M
H
T
M
H
T
M
H
T
M
H
T
2*
:VF
s
M
Т е о р е м а 1 (Пост). Множество М V* разрешимо тогда и только тогда, когда М и его дополнение M = V* \ M перечислимы.
Д о к а з а т е л ь с т в о. Если множества М и Mперечислимы, то су­ществуют машины Тьюринга
и
, задающие частичные характе-
ристические функции этих множеств. Машина
останавливается
только в том случае, если начальное слово принадлежит множеству М. Машина
останавливается только в том случае, если начальное слово
принадлежит множеству M. Алгоритм вычисления принадлежности слова множеству М сводится к следующей процедуре. Выполняется по одной команде каждой машиной Тьюринга (с одним и тем же начальным словом на лентах). Если после выполнения одной команды машина
останавливается, то результат работы алгоритма — символ 1. Если
останавливается машина
, то результат — символ 0. Если ни одна из
машин не остановится, то выполняется следующая пара команд, и т. д. Так как — элемент либо из М, либо из M, то через конечное число ша-
гов либо
, либо
остановится. Таким образом, алгоритм вычис-
ляет значение характеристической функции множества М, следовательно множество М разрешимо.
Рассмотрим некоторые проблемы, связанные с анализом свойств ма­шины Тьюринга.
1. Проблема остановки. Машина Тьюринга, начав работу, или
останавливается, или работает бесконечно. Проблема остановки формулируется так. Пусть Мs — множество всех пар слов в алфавите V, в каждой паре первое слово — словарное представление некоторой машины Тьюринга, второе — такое слово, что эта машина останавливается, начав работу над ним. Является ли множество Мs разрешимым?
Т е о р е м а 2 (Тьюринг). Проблема остановки машины Тьюринга не-
разрешима.
Д о к а з а т е л ь с т в о. Неразрешимость проблемы остановки маши­ны Тьюринга означает невычислимость характеристической функции
{0, 1}.
Предположим, что характеристическая функция множества Мs вы­числима, т. е. множество Мs разрешимо. Известно, что множество Мt
15
),(
s
M
F
t
M
T
s
M
T
s
M
F
s
M
F
2*
:VH
s
M
s
M
H
s
M
T
s
M
T
s
M
H
s
M
T
всех словарных представлений машин Тьюринга над алфавитом V разрешимо (доказательство не приводим). Из разрешимости множеств
М
и М
следует вычислимость частичной одноместной функции G : V*
s
t
 {0, 1}, которая задается следующим образом: G() =
для
всех   Мt и не определена для всех Мt. Алгоритм вычисления G() следующий. Выполняются команды машины Тьюринга
. Если обна-
руживается, что слово   Мt , то управление передается машине иначе алгоритм зацикливается.
Введем еще одну частичную одноместную функцию K : V*  {0}. Эта функция определена только для тех слов, для которых G() = 0, причем для всех этих слов K() = G() = 0. Функция K вычислима. Машина Тьюринга TK совпадает с машиной Тьюринга TG за исключением случая, когда TG останавливается: машина TK продолжает работу, выясняет , ка­ков результат — 1 или 0, и в первом случае зацикливается, во втором — останавливается.
Пусть K — словарное представление машины Тьюринга T те V. Допустим, что машина T
на слове K не останавливается. Тогда
K
в алфави-
K
(K, K) = 0, G (K) = 0 и K (K) = 0, т. е. машина TK останавливается
со значением 0. Допустим, что машина T ется. Тогда
(K, K) = 1, G(K) = 1 и значение K(K) в этом случае
на слове K останавлива-
K
не определено, т. е. машина TK зацикливается. Оба допущения при­водят к противоречию, что опровергает гипотезу о разрешимости множества Мs.
Т е о р е м а 3. Проблема остановки является частично разрешимой.
Д о к а з а т е л ь с т в о. Частичная разрешимость проблемы остановки машины Тьюринга означает перечислимость множества Мs и, следова­тельно, вычислимость частичной характеристической функции
{1}.
,
Алгоритм вычисления функции ставление машины Тьюринга
работает над начальным словом . Если
(, s), где s — словарное пред-
, следующий. Машина Тьюринга
(, s) = 1, то машина
остановится после выполнения конечного числа шагов, иначе — за-
циклится.
16
*
:VF
M
s
M
s
M
d
M
2. Проблема пустой ленты. Необходимо определить, является ли раз-
решимым множество М словарных представлений машин Тьюринга, ко­торые останавливаются, начав работу над пустой лентой.
Т е о р е м а 4. Проблема пустой ленты неразрешима.
Д о к а з а т е л ь с т в о. Неразрешимость проблемы пустой ленты означает не вычислимость характеристической функции
{0,
1}.
Каждой паре (T, ), где Т — некоторая машина Тьюринга, а — слово в ее алфавите, сопоставим машину T, программа которой совпадает с программой машины Т, за исключением того, что, начав работу, машина T стирает начальное слово на ленте и вместо него записывает слово .
Машина T, начавшая работу с пустой лентой, ведет себя после записи слова так же, как и машина T, примененная к . В частности, машина T остановится в том и только в том случае, если остановится машина T, примененная к слову . Предположим, что проблема остановки машин Тьюринга с пустой лентой разрешима. Тогда окажется разрешимой про­блема остановки в общем случае. Действительно, для того, чтобы узнать, останавливается ли некоторая машина Тьюринга T, примененная к слову , следует сконструировать машину T. Выяснив, останавливается ли T при пустой ленте, мы тем самым узнаем, останавливается ли T, приме­ненная к . Это противоречит теореме 2, что и опровергает предполо­жение о разрешимости проблемы пустой ленты.
3. Проблема зацикливания. Машина Тьюринга, начав работу, или
останавливается, или работает бесконечно. Проблема зацикливания формулируется так. Пусть Мc — множество всех пар слов в алфавите V, в каждой паре первое слово — словарное представление некоторой машины Тьюринга, второе — такое слово, что эта машина зацикливается, начав работу над ним. Является ли множество Мc перечислимым?
Т е о р е м а 5. Проблема зацикливания машин Тьюринга не является
частично разрешимой.
Д о к а з а т е л ь с т в о. Из теоремы 1 и перечислимости множества Мs следует, что дополнение
множества Мs до множества всех пар слов в
алфавите V неперечислимо, так как в противном случае оказалось бы раз­решимым множество Мs. Но
= Мc
, где Мd — множество всех
пар слов, первые слова в которых являются словарными представлениями
17
d
M
d
M
s
M
машин Тьюринга, а
шимо, множества Мd и
— его дополнение. Так как множество Мt разре-
разрешимы.
Предположим, что проблема зацикливания частично разрешима, а множество Мc — перечислимо. Тогда окажется перечислимым множе-
ство
(как объединение двух перечислимых множеств), что неверно.
Контрольные вопросы
1. Дайте определение функции. Что называется областью определения
и областью значений? Дайте определение полностью определенной функции и частичной функции. Приведите примеры.
2. Дайте определение n-местной функции. Приведите примеры.
3. Дайте определение словарной функции. Приведите примеры.
4. Что такое предикат?
5. Что такое характеристическая функция множества? Что является
областью отправления, областью определения и областью значений этой функции? Приведите пример характеристической функции конечного множества.
6. Какая функция называется вычислимой?
7. Что представляет собой машина Тьюринга? Каково ее назначение?
Каков принцип функционирования машины Тьюринга? При каком условии машина Тьюринга останавливается? Как с помощью машины Тьюринга вычислить n-местную функцию?
8. При вычислении каких функций машина Тьюринга может
зациклиться? При вычислении каких функций машина Тьюринга не может зациклиться?
9. Как формулируются массовые алгоритмические проблемы?
10. Дайте определения разрешимым и перечислимым множествам.
11. Приведите примеры множеств, которые не являются разрешимыми
и примеры множеств, которые не являются перечислимыми.
12. Приведите примеры невычислимых функций.
13. Сформулируйте и докажите теорему Поста.
14. Докажите неразрешимость проблемы остановки и пустой ленты.
15. Докажите, что проблема остановки является частично разрешимой.
16. Докажите, что проблема зацикливания не является частично
разрешимой.
18
Л а б о р а т о р н а я р а б о т а № 2
Одноленточные автоматы
Цель работы: изучить модель одноленточного конечного автомата.
З а д а н и е
1. Изучить назначение одноленточного автомата, способы задания, ал-
горитм функционирования.
2. Изучить основные понятия:
— конечный одноленточный автомат;
— детерминированный одноленточный автомат;
— полностью и частично определенный одноленточный автомат;
— эквивалентность одноленточных автоматов;
— минимизация одноленточных автоматов.
3. Изучить алгоритмы проверки эквивалентности и минимизации
одноленточных автоматов.
4. Построить конечный одноленточный автомат A1, который допускает
слова, принадлежащие заданному множеству слов (см. «Варианты заданий»).
5. Построить конечный одноленточный автомат A2, эквивалентный автомату A1. Количество состояний автомата должно быть на 4 состояния больше, чем количество состояний автомата A1.
6. Проверить эквивалентность автоматов A1 и A2.
7. Минимизировать автомат A2.
8. Написать программу, определяющую эквивалентность двух автоматов и использовать программу для проверки эквивалентности автоматов A1 и A2 .
9. Написать программу, минимизирующую конечный одноленточный автомат. Использовать программу для минимизации автоматов A1 и A2.
Варианты заданий
Вариант 1.
Все слова, в которых перед и после каждой 1 стоит 0.
Вариант 2.
Все слова, начинающиеся с 0 и кончающиеся на 1.
Вариант 3.
Все слова, в которых после пары 00 следуют только единицы, причем
их число четно.
19
Вариант 4.
Все слова, в которых каждый третий символ — единица.
Вариант 5.
Все слова, в которых между вхождениями единиц четное число нулей.
Вариант 6.
Все слова, начинающиеся четным числом нулей и заканчивающиеся
последовательностью единиц.
Вариант 7.
Все слова из нулей и единиц, содержащие три единицы.
Вариант 8.
Все слова, в которых за каждым вхождением пары 11 следует 0.
Вариант 9.
Все слова, начинающиеся последовательностью нулей, за которой
следует 10 и заканчивающиеся последовательностью единиц.
Вариант 10.
Все слова, в которых число единиц четное, а число нулей — нечетное.
Т е о р е т и ч е с к и е с в е д е н и я
Основные понятия
Одноленточный конечный автомат над алфавитом V задается набо­ром A = {V, Q, R, q0, #, I} и правилом функционирования, общим для всех таких автоматов. В наборе А
V — входной алфавит (конечное множество допустимых входных символов), из которого формируются слова, считываемые автоматом;
Q — конечное непустое множество состояний (QV=);
R — множество выделенных заключительных состояний (RQ);
q0 — выделенное начальное состояние;
I — программа автомата;
# — «пустой» символ.
Программа автомата I представляет собой множество команд вида q а q', в которой qQ, q'Q, aV и для любой пары (q, a) существует единственная команда, начинающаяся этими символами. Программу ав­томата можно рассматривать как функцию δ: Q×V→ Q переходов авто­мата, которая паре (состояние, символ алфавита) ставит в соответствие новое состояние (состояние перехода).
20
a
q1
q2
q0
q3
b
b b b
a
a
Рис. 3. Граф одноленточного конечного автомата
Неформально одноленточный автомат можно представить как аб­страктную машину, похожую на машину Тьюринга, но имеющую следу­ющие особенности:
1) выделены заключительные состояния;
2) машина считывает символы с ленты, ничего не записывая на нее;
3) на каждом шаге головка автомата, считав символ с ленты и перейдя
согласно программе в новое состояние, обязательно передвигается вправо на одну клетку;
4) автомат останавливается в том и только в том случае, когда головка
достигнет конца слова, т.е. символа .
Говорят, что автомат допускает слово в алфавите V, если, начав ра­ботать с лентой, содержащей это слово, он останавливается в заключи­тельном состоянии. Автомат A задает характеристическую функцию множества MA допускаемых им слов в алфавите V, т. е. он распознает, принадлежит ли заданное слово множеству MA, если связать с остановкой в заключительном состоянии символ 1, а с остановкой в незаключитель­ном состоянии — 0.
Наглядным способом задания одноленточного автомата является граф автомата (рис.3).
Автомат А представляется графом, множество вершин которого соот­ветствует множество состояний Q, и из вершины q в вершину q' ведет дуга, помеченная символом а, тогда и только тогда, когда программа ав­томата содержит команду q а q'. Вершины, соответствующие заклю­чительным состояниям, рисуются жирной линией. Работе автомата над
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]