Математическая логика. Раздел 5. Теория алгоритмов.

advertisement
Раздел 5. Теория алгоритмов
5.1. Понятие алгоритма и необходимость его математического уточнения. Проблема
разрешения, проблема уточнения, проблема вычисления. Предикаты.
До середины 19 века единственной областью математики, работающей не с числовыми
объектами, была геометрия, которая отличалась повышенными требованиями к точным рассуждениям.
Во 2-ой половине 1 9 века эти требования стали еще более жесткими в связи с возникновением
неевклидовой геометрии и абстрактных теорий, типа теории групп. Кроме того, Кантором была создана
теория множеств, понятия которой лежат в основе всей математики. Но данная теория в своих
рассуждениях приводила к неразрешимым противоречиям. Все это потребовало точного изучения
принципов математических рассуждений теми же математическими средствами. Возникла так
называемая метаматематика, использующая рассуждения с помощью финитных методов. Финитный
подход заключался в том, что он допускал только конечные действия над конечным числом объектов.
Поэтому необходимо выяснение, какие объекты и действия следует считать точно определенными,
какими свойствами обладают комбинации элементарных действий, что можно или нельзя сделать с их
помощью. Все это стало предметом изучения теории алгоритмов и формальных систем. Главным
внутриматематическим приложением теории алгоритмов является доказательство невозможности
алгоритмического, т. е. точного и однозначного решения некоторых математических проблем. Такие
доказательства невозможны без понятия алгоритма.
Необходимость уточнения понятия алгоритма была обусловлена тем, что сравнение различных
алгоритмов решения одной и той же задачи нужно было проводить не только по качеству решения
задачи, но и по характеристикам самого алгоритма.
Из курса информатики средней школы известно, что алгоритм - это точно определенная
последовательность действий, приводящая к результату.
Основные требования, предъявляемые к алгоритмам. 1 ) Каждый алгоритм имеет дело с
данными входными, промежуточными и выходными, т. е. существует вход и выход алгоритма, объекты,
используемые алгоритмом в качестве данных, должны быть различимы и четко определены. В теории
алгоритмов фиксируют конечные конкретные наборы исходных объектов, называемые элементарными,
и конечный набор средств построения других объектов из элементарных. Набор элементарных объектов
образует алфавит.
2) Данные для размещения требуют память, которая должна быть однородной и дискретной, т. е.
состоять из одинаковых ячеек, каждая из которых может содержать не более одного символа алфавита.
Память может быть конечной или бесконечной, одна или несколько.
3) Дискретность алгоритма - алгоритм состоит из отдельных элементарных действий, число которых
конечно.
4) Последовательность шагов алгоритма детерминирована (определена), после каждого шага точно
можно сказать, какой шаг следующий или дается команда остановки алгоритма.
5) Массовость - алгоритм должен быть применим к классу однотипных задач, различающихся
исходными данными.
6) Результативность алгоритма - за конечное число шагов должен быть получен результат.
Не существует общего метода проверки алгоритма на результативность для любых данных.
Следует различать:
- описание алгоритма - инструкция,
- механизм реализации алгоритма, содержащий средства пуска, остановки, реализации элементарных
шагов, выдачи результатов и обеспечение детерминированности.
- процесс реализации алгоритма - это последовательность шагов, которая порождается при применении
алгоритма к конкретным данным.
Будем полагать, что описание и механизм его реализации конечны.
Примером описания является блок-схема (орграф), где вершина - это шаги алгоритма, а дуги направление потоков данных, тогда реализация алгоритма - это нахождение пути в графе от начальной
до конечной вершины. Но блок-схема не содержит сведений ни о памяти, ни об использованном наборе
элементарных шагов. Исходя из требований 1-6, алгоритм можно определить как общий метод решения
элементарных задач, обладающий свойствами массовости и т. д.
Определение алгоритма, приводимое в курсе информатики, не является точным математическим
понятием, т. к. входящие в это определение слова в свою очередь не обозначают точные математические
понятия.
Рассмотрим необходимость математического уточнения понятия алгоритма. Постоянно встает
проблема поиска алгоритмов для решения новых классов задач, возникающих внутри и вне математики.
Если поиск оканчивается успешно, то понятие алгоритма не требует уточнения, в противном случае
возникают две гипотезы:
1 ) алгоритм существует, но описывается не теми средствами, которые необходимы для его
представления, и поиск следует продолжить;
2) алгоритм не существует, но необходимо доказать, что искомый алгоритм не существует, а для этого
точно необходимо знать (в точном математическом смысле), что такое алгоритм;
Т. е. возникает необходимость построения математической теории алгоритма.
Были построены различные модели такой теории: машина Тьюринга, рекурсивные функции,
нормальные алгоритмы Маркова.
Введем некоторые понятия:
Рассмотрим общий вопрос: имеет ли действительные корни уравнение ах2+6х+с=0, где а, Ь, с е Ъ,
а Ф 0.
Этот общий вопрос объединяет однотипные частные вопросы, отличающиеся значениями а, Ь, с.
Ответ на поставленный вопрос формулируется в виде «да» или «нет». Т.о., общий вопрос содержит в
себе счетный класс частных вопросов: Р={р1,р2,...,рп,...}.
Определение: Вопрос о существовании общего метода, позволяющего за конечное число шагов
ответить «да» или «нет» на любой вопрос р;еР, называется проблемой разрешения для этого класса
вопросов.
Определение: Проблема разрешения может решаться положительно, тогда класс Р, называется
разрешимым, а сам метод - разрешающей процедурой, или алгоритмом. В противном случае класс Р
неразрешим.
Рассмотрим теперь следующий вопрос: найти корни уравнения ах +6х+с=0. В качестве ответа
необходимо предъявление какого-то объекта. Общий вопрос содержит в себе счетное множество
частных вопросов О^^^,...^,...}, например, найти корни уравнения
3х2+2х-
1 =0.
Вопросы данного класса формулируются, начиная со слов: чему равно, найти, вычислить,
решить и т. п.
Определение: Вопрос о том, существует ли общий метод, позволяющий для любой задачи д; е О
за конечное число шагов дать ответ, называется проблемой вычисления для класса О.
Определение: Если эта проблема решается положительно, то данный класс задач называется
вычислимым, а общий метод - вычислительной процедурой или алгоритмом. В противном случае
класс задач считается невычислимым.
Отсутствие вычислительного алгоритма для класса однотипных задач не означает, что частная
задача класса не разрешима (не вычислима).
Пример не существует общего метода для решения уравнений 5-ой степени: ах +Ьх +сх +с1х
+ех+£ = 0, но частное уравнение х - 4х +х - 4=0 имеет решение: х3(х2 -4)+(х2 -4)=0 (х2 - 4)(х3 +
1)=0 (х-2)(х+2)(х+1 )(х2 -х+1 )=0 х1=2, х2= -2, х3= -1
Кроме того, в настоящее время в вычислительной математике разрабатываются методы
приближенных вычислений.
Говоря далее «функция», будем иметь в виду арифметическую функцию, т.е. функцию вида £ :
М^—>М2, где М1,М2сК, N - множество натуральных чисел.
Функция і" называется вычислимой, если существует алгоритм для вычисления ее значений при
любых значениях аргументов.
Вычисляемая функция - это интуитивное понятие, т.к. в ее определении содержится интуитивное
понятие алгоритма. Поэтому употребляется термин интуитивно вычисляемая функция.
Определение: Функция Р(хі,Х2,...,хп), аргументы которой принимают значения из некоторого
множества Б, а сама функция принимает значения из множества В={0,1}, называется предикатом (в
данном случае п - местным).
Иными словами, предикат можно рассмотреть как некоторые предложение, о котором можно
сказать, истинно оно или ложно.
Пример: Р(х)={х - простое число} - одноместный предикат. Р(3)=1
Р(22)=0 (22 не простое число)
Р(х, у)={х+у=5} - двуместный предикат.
Р(2,3)=1
Р(0,4)=0
Определение: Предикат называется тождественно истинным, если для любых значений
аргумента он принимает значение 1; и называется тождественно ложным, если для любого значения
аргумента его значение 0. Предикат называется выполнимым, если существует хотя бы один набор
значений, при которых значение предиката равно 1.
Утверждение 1: Любой алгоритм, разрешающий или вычисляющий, может быть сведен к
алгоритму для вычисления значений некоторой функции.
Рассмотрим счетный класс задач Р={рі| іє^, требующих ответа «да» или «нет». На множестве N
определим предикат Р, порождающий логическую функцию I" : N^{0,1} следующим образом:
[1, если ответ на Рп утвердительный
0, если ответ на Рп отрицательный
предикат Р разрешим
Если класс задач Р разрешим, то и
и
обратно.
Таким
образом,
проблема
разрешения для класса Р сводится к проблеме разрешения для предиката Р.
Теперь построим для предиката Р представляющую функцию ір следующим образом:
[0, если Р(п) = 1
1р(п)= 1
Р
[1, если Р(п) = 0
Теперь проблема разрешения для предиката Р, а следовательно, и для класса Р, сводится к
проблеме вычисления для функции ір.
Действительно, если ір вычислима, то применив соответствующий алгоритм к произвольному
значению п аргумента, получим значение ір(т), т.е. 0 или 1. Если ір=0, то Р(п)=1 и ответ на Р(п) - «да»,
если Гр=1, то Р(п)=0 и ответ на Р(п) - «нет».
Итак, любой разрешающий алгоритм для задач класса Р сводим к алгоритму для вычисления
значений некоторой функции.
Рассмотрим счетный класс задач О={д;| 1е^, требующих в качестве ответа предъявление
некоторого объекта, т.е. задачи типа «Чему равно?». Пусть объекты, предъявляемые в качестве
объектов, берутся из некоторого счетного множества, которое можно перечислить, например:
У0,У1, У2,.-.,Уа,...
(7.1)
Теперь построим функцию £ следующим образом: Г(п)=а, если ответ к задаче дп есть уа.
Таким образом, проблема вычисления для задач класса О сведется к проблеме вычисления для
функции Г
Если { вычислима, то , применив вычисляющий алгоритм к произвольному значению п
аргумента, получим соответствующее значение функции и по этому значению а восстановим объект уа ,
являющийся ответом к задаче дп. Это восстановление возможно в силу перечислимости множества (7.1),
означающей, что по номеру элемента восстанавливается и сам элемент.
В итоге получаем, что всякий алгоритм сводим к алгоритму для вычисления значений некоторой
функции. Поэтому, решая проблему уточнения понятия алгоритма, можно ограничиваться алгоритмами
для вычисления значений функции, а это равносильно уточнению класса вычислимых функций.
Эту проблему решают по следующей схеме:
1) вводят класс точно определенных функций;
2) убеждаются, что все функции данного класса вычислимы. Встает вопрос: "Все ли
вычислимые функции принадлежат введенному классу?". С помощью доказательства
ответить на этот вопрос принципиально невозможно, так как в нем содержится интуитивное
понятие «вычислимая функция». Поэтому принимают гипотезу, или тезис, что «класс
интуитивно-вычислимых функций совпадает с классом точно определенных функций».
5.2: Машина Тьюринга.
Характеризуя понятие алгоритма, отмечалось, что предписание, задающее алгоритм, должно
быть однозначно осуществимым и, недопустимы никакие свободно принимаемые решения, т.е.
исполнитель должен действовать механически, без инициативы. В наибольшей степени этим свойством
обладают машины. Английский математик Тьюринг предложил уточнение понятия алгоритм в виде
воображаемой вычислительной машины. Основное отличие машины Тьюринга (МТ) в том, что она: 1
)не может ошибаться; 2)обладает бесконечной памятью;
Рассмотрим составные части МТ:
1) Лента (память) - бесконечная вправо и влево лента, поделенная на ячейки.
2) Внешний алфавит МТ - конечное множество символов:
А={ао,аь...,ак}
В каждый момент времени в одной ячейке ленты может находиться только один символ из
внешнего алфавита А.
Стмвол ао имеет строго определенный смысл - пустой символ.
Почти все ячейки ленты могут быть пустыми. В процессе работы МТ символы в ячейках могут
меняться: старый стирается, вписывается новый. Если ячейка пуста, то подразумевается, что в ней
находится символ ао.
3) Внутренний алфавит - множество состояний МТ :
0-={Яо,ЯьЯ2,...,Ят}
Данное множество конечно. В каждый момент времени МТ может находиться лишь в одном из
состояний За один такт работы МТ может изменить свое состояние и в следующий момент времени
воспринимать ячейку в новом состоянии. При этом различают: до - конечное состояние, МТ
останавливается. д1 - начальное состояние.
4) Управляющая
головка
(устройство)
-
способно
воспринимать
информацию
из
ячейки,
изменять ее и двигаться по ленте. При этом: 1 ) в каждый момент времени головка обозревает
только одну ячейку ленты; 2) за один такт работы головка может передвинуться влево на одну
ячейку и обозревать соседнюю слева ячейку, либо передвинуться на одну ячейку вправо, либо
остаться на месте и тогда обозреваться будет та же самая ячейка.
Множество направлений движения головки МТ обозначим: Т={Л,
П, Н}
5) Программа МТ - описывает порядок работы МТ с внешним алфавитом А и множеством
внутренних состояний <3.
Рассмотрим команду а]д^ач1едр :
Если в некоторый момент времени управляющая головка обозревает ячейку, содержащую
символ
находясь в состоянии
то она должна выполнить следующую работу:
1) символ а] в этой ячейке заменить на символ ач.
2) осуществить сдвиг в направлении 1ее Т;
3)перейти в состояние др.
Программой МТ называется совокупность подобных команд, причем их число не более т(к+1).
Представим программу МТ в виде таблицы, состоящей из к+1 строк и т столбцов.
Я1 Я2
Ф
а1
а
і
^еЧр
ак
Каждая пара вида (аі, ЯІ) представляет собой элемент прямого произведения множеств
АХСЛ{ЯО}, а каждая тройка (ач,іе,яр) представляет собой элемент прямого произведения АХТХСС Таким
образом, МТ ставит в соответствие каждой паре (а^) тройку (ач,іе,яр), т.е. является отображением. Б:
АХО\{Я0}^АХТХС которое полностью определяет МТ.
Пусть в некоторый момент времени X самая левая непустая ячейка ленты с1 содержит символ а^,
а самая правая непустая ячейка ленты с8, Б>2 содержит символ а^. Между с1 и с содержится Б-2 ячейки.
В этом случае говорят, что в момент времени X на ленте записано слово
р ала;2...а;к...аь
(7.2).
При Б=1, т.е. когда на ленте лишь один непустой символ, р=а_д.
Если МТ в некоторый момент времени находится в состоянии и головка обозревает символ слова
(7.2), где 2<У<Б, то слова а^а^.^а^.а^ называются конфигурацией МТ в момент времени X.
Если лента МТ пуста, то конфигурация МТ будет иметь вид: Ціа0 .
В дальнейшем будем понимать: пусть МТ начинает работать в некоторый момент времени.
Слово, записанное в этот момент на ленте, называется исходным, или начальным. Чтобы МТ
действительно начала работу, необходимо поместить считывающую головку напротив какой-либо
ячейки и указать, в каком состоянии МТ находится в начальный момент.
Если Р1 - исходное слово, то МТ, начав работу на слове Р1 , либо остановится через определенное
число шагов, либо никогда не остановится. В первом случае говорят, что МТ применима к слову Р1 и
результатом применения является слово Р, соответствующее заключительной конфигурации МТ:
Р=Т(Р1)
Во втором случае МТ не применима к слову Р1 .
В дальнейшем условимся:
1) исходное слово - не пустое,
2) МТ начинает работу, находясь в состоянии д1.
Зоной работы МТ на слове Р1 называется множество всех ячеек, которые за время работы хотя
бы один раз обозревались головкой.
МТ Т1 и Т2 называются эквивалентными в алфавите А ( Т1(Р) =Т2(Р)), если для любого
исходного слова Р Т1(Р) и Т2(Р) определены или не определены одновременно, и если они определены,
то Т1(Р) =Т2(Р).
МТ Т определена (не определена), если МТ Т применима (не применима) к слову Р.
Пусть машины Т1 и Т2 имеют соответственно программы П 1 и П 2. Предположим, что
внутренние алфавиты этих машин не пересекаются и что д1 - некоторое заключительное состояние
машины Т1, а д2 - какое-либо начальное состояние машины Т2. Заменим всюду в программе П 1
состояние д1 на состояние д2 и полученная программа П определяет машину Т, называемую
композицией машин Т и Т2 (по паре состояний ( д1, д'2)) и обозначаемую через Т1° Т2 или Т1Т2 (более
подробно: Т=Т(Т1,Т2, , д'2)). Внешний алфавит композиции Т1Т2 является объединением внешних
алфавитов машин Т1 и Т2.
Пусть
- некоторое заключительное состояние машины Т, а
какое-либо состояние
машины Т, не являющееся заключительным. Заменим всюду в программе П машины Т символ на
Получим программу П', определяющую машину Т'(д'^"). Машина Т'называется
итерацией машины Т (по паре состояний (
,
<\ )).
Пусть машины Т1 , Т2, Т3 имеют соответственно программы П 1, П2, П3. Предположим, что
внутренние алфавиты этих машин не пересекаются. Пусть д1 и д1 - некоторые различные
заключительные состояния машины Т1. Заменим всюду в программе П1 состояние д1 некоторым
начальным состоянием д2 машины Т2, а состояние некоторым начальным состоянием д3 машины Т3.
Затем новую программу объединим с программами П2 и П3. Полученная программа П определяет
машину Т= Т(Т1(д1, ц2 ),Т2( д1, д3 ),Т3), называемую разветвлением машин Т2 и Т3, управляемым
машиной Т.
5.3: Вычислимость функции по Тьюрингу. Тезис Тьюринга.
Пусть а =(а1, су), п>1- произвольный набор целых неотрицательных чисел. Слово 1а1+101а2+10...01ап+1
называется основным машинным кодом или просто кодом набора а в алфавите {0,1} и обозначается
к(а). Слово 1а+1 также является основным машинным кодом. Для ясности 1 это 111 .
Определение: Функция Г(х1,...,хп), п>1, называется частичной числовой функцией, если
переменные х; принимают целые неотрицательные значения из натурального ряда
№{0,1,2,...,т,...} и на наборе а функция определена, т.е. Ґ(6с)=Г(а1,...,ап)єМ, и также принимает целые
неотрицательные значения.
Определение: Частичная числовая функция называется вычислимой по Тьюрингу, если существует
МТ Ті, обладающая следующими свойствами:
1) если функция Ґ( а) определена, то результатом применения МТ к коду будет являться код
целого неотрицательного числа.
Т(к( а))=к(ґ( а))
2) если ґ(а) не определенна, то либо МТ ТҐ не применима к слову к(а), либо Т^к(а)) не
является кодом никакого целого неотрицательного числа.
Предполагается, что в начальный момент времени головка МТ ТҐ обозревает самую левую
крайнюю единицу слова к( а).
Если функция Ґ вычислима по Тьюрингу с помощью МТ ТҐ , то говорят, что МТ вычисляет
функцию. Кроме того, т.к. понятие вычислимой функции дано нами через понятие МТ, которое еще
математически точно не определено, будем говорить об интуитивно вычисляемой функции.
Тезис Тьюринга: Всякий интуитивный алгоритм может быть реализован с помощью
МТ.
Тезис Черча-Тьюринга: Всякая интуитивно вычисляемая функция вычислима по Тьюрингу.
МТ как математическое понятие алгоритма.
В каждой МТ имеются : три конечных множества А, (2, Т, выделенные элементы а0є А, Яо^є 0 и
программа, представляющая собой отображение вида Б: Ах((\{д0}^А ХТХ((. (7.3)
Определение: МТ называется система вида <А, а0, 0, д0, д1, Т, Т>, где т - программа МТ.
Какую бы МТ ни взяли, можно считать, что имеется алгоритм, исходным объектом,
промежуточным и окончательным результатами которого являются слова в алфавите А.
Предписанием, задающим этот алгоритм, является программа т - точное математическое понятие
отображения. Т.о., с математической точки зрения МТ - это алгоритм переработки слов, заданных в
алфавите этой машины.
Применительно к МТ можно рассматривать все свойства, рассматриваемые применительно к
интуитивному понятию алгоритма. В частности, результативность алгоритма и его конечность - это
остановится ли МТ за конечное число тактов работы и в какое слово перерабатывается исходное.
Чтобы доказать, что функция вычислима по Тьюрингу, необходимо построить МТ,
вычисляющую данную функцию.
Пример: 1. Построить МТ, вычисляющую функцию г(х,у)=х+у. В качестве внешнего алфавита возьмем
Л=(ао, 1} , где ао- пустой символ. Тогда в этом алфавите
0 -1
1 - 11
2 - 111
3 - 1111, и т.д.
СНЯ0Л1Л2Л3Л4}
X и У будут записаны на ленте и разделены одной ячейкой, содержащей пустой символ. МТ
обозревает самую левую крайнюю непустую ячейку.
Программа, вычисляющая данную функцию будет иметь вид:
ао д^1Щ2
Ц2^1Щ2
аоЯ2^ аоДяз Цз^
аоДя4 аоДяо
Можно показать, что все арифметические функции вычислимы по Тьюрингу.
5.4: Существование невычислимых функций.
Принимая тезис Тьюринга для доказательства существования невычислимых в интуитивном смысле
функций достаточно доказать существование функции не вычисляемой по Тьюрингу. Предварительно
рассмотрим некоторые утверждения , которые примем без доказательств:
1) множество МТ счетное.
2) множество всех арифметических функций не счетно.
Из этих двух утверждений следует, что существует функция, не вычислимая по Тьюрингу, т.е.
невозможно для каждой арифметической функции построить вычисляющую ее
МТ.
Невычислимость (неразрешимость) означает отсутствие единого способа решения для всего
класса задач, в то время как частная задача может быть решена.
В числе общих требований, предъявляемых к алгоритмам, имеется требование результативности.
Наиболее уместной формулировкой было бы требование, чтобы по любому алгоритму А и
исходным данным а можно было бы определить, приведет ли работа алгоритма А при исходных данных
а к результату или нет, т.е. необходимо построить алгоритм В такой, что В(Л, а)=истина, если Л(а) дает
результат и В(Л, а)=ложь, если Л(а) не дает результата.
В силу тезиса Тьюринга эту задачу можно сформулировать, как задачу построения МТ:
построить МТ То такую, что для любой МТ Т и исходных данных а То(Т, а)= истина, если МТ Т
остановится и То(Т, а)=ложь, если не остановится. Эту задачу называют проблемой остановки МТ.
Теорема 5.1: Не существует МТ То> решающих проблему остановки для произвольной
МТ Т.
В силу тезиса Тьюринга невозможность построения МТ означает отсутствие алгоритма решения
данной проблемы, и данная теорема является примером неразрешимой проблемы. Следовательно,
проблема результативности алгоритма неразрешима, т.е. нельзя создать программу, которая бы по
тексту любой программы и по ее исходным данным определяла бы, зациклится она или нет.
7.5: Рекурсивные функции.
Класс рекурсивных функций определим индуктивно: в первой части определения перечислим
исходные функции, во второй укажем правила образования новых функций из уже имеющихся.
Определение:
1. Следующие функции называются исходными.
A) Нуль-функция: 2(х)=о У хе М
Б) Функция прибавления единицы: ]]"(х)=х+1 У хе М
B) Проектирующие функции: ип(х1 ,х2,...,хп) = х1 Ух;еМ , 1=1,2,...,п, п=1,2,....
2. Следующие правила служат для образования новых функций, исходя из уже
имеющихся.
Г) Подстановка: функция Г получена с помощью подстановки из функций §(уьу2,.. .,ут),
П1(хЬХ2,.. .,Хп),..., Ьт(Х1,Х2,_,Хп), если ц(хЬХ2,.. .,Хп)=%(Д1(хЬХ2,.. .,Хп),..., Ьт(хЬХ2,.. .,Хп)).
Д) Рекурсия: функция { получена из функций g и п с помощью рекурсии, если:
Г£ (х 1
,...,х
п,о)
\~,
= ё(х1
,...,х
1Ч
^0
п)
г-,
чч,
где хьх2,...,хп- параметры рекурсии, п*0.
Кроме того, если п=о, то г(о)=к (к - фиксированное число), цу+1)=п(уДу)). Е) ^-оператор:
функция Г получена из функций % и п с помощью ) ^-оператора если Г(х1,х2,_,хп)= |1у(%(х1гх2,..
.,хп,у)=о) - наименьшее значение у, при котором %(х1,х2,...,хп,у)=о и выполняется условие: У х1,х2,_,хп
существует по крайней мере одно значение у, для которого
%(хЬХ2,...,Хп,у)=о.
Определение: Функция Г называется рекурсивной (общерекурсивной), если она может быть
получена из исходных функций с помощью конечного числа применения правил
подстановки, рекурсии и ^-оператора. В частности, если рекурсивная функция может быть получена без
применения ^-оператора, она называется примитивно-рекурсивной.
Таким образом, всякая примитивно-рекурсивная функция рекурсивна, но обратное неверно.
Следовательно, классом рекурсивных функций называется класс, содержащий исходные
функции а)-в) и замкнутый относительно правил г)-е).
Введение фиктивных переменных, перестановка и отождествление переменных не выводит из
класса рекурсивных функций.
Предложение 1: Если функция §(у1,у2,_,ук) - рекурсивна и х1,х2,_,хп - различные переменные,
причем при любом і (1< і <к) 2 есть одна из переменных х1гх2,...,хп , то функция
і
Ґ(хЬХ2,.. .,Хп)=§(7Ь72,.. .^к) тоже рекурсивна.
Предложение 2:
A) Нуль-функция 2п(х1,х2,_,хп)=0 примитивно-рекурсивна.
п
Б) Постоянная функция С (х 1 ,х2,.. .,хп)=к примитивно-рекурсивна.
к
B) Правило подстановки может быть распространено и на случай, когда функции Ы являются
функциями лишь от некоторых из переменных х1,х2,...,хп. Аналогично, правило рекурсии
распространяется и на случаи, когда функция g не зависит от некоторых из переменных
х1гх2,...,хп, а функция п может не зависеть от некоторых из переменных х1гх2,...,хп, у,
ПХ1,х2,...,хшу).
Пример:
Рассмотрим функцию ґ(х,у)=ху и покажем, что она примитивно-рекурсивна
[х° = 1
или |в(х,0) = С1 (х)
<
или
|ху+1 = х у • х ,
и ( х , у +1) = Р(ё(х,у),х)
В(х,0) = С1 (х)
3
(
3
_Б(х, у +1) = р(и3 (х, у, в(х, у)), и3 (х, у, в(х, у)))
)
, где р(х,у)=х-у
Тезис Черча: Всякая вычислимая функция рекурсивна.
Понятие рекурсивных функций оказалось исчерпывающей формализацией понятия вычислимой
функции. Объединив тезисы Черча и Тьюринга, получим, что функция вычислима с помощью МТ тогда
и только тогда, когда она рекурсивна.
Это утверждение об эквивалентности двух алгоритмических моделей может быть строго
математически доказано. Из него вытекают следующие теоремы.
Теорема 2: Всякая рекурсивная функция вычислима с помощью МТ.
Теорема 3: Всякая вычислимая с помощью МТ функция - рекурсивна.
Теорема 4: Любая рекурсивная функция ґ(х) представима в виде: ґ(х)= Р(|іу(0(х,у)=0)), где
-
примитивно-рекурсивные функции.
Т.о. класс рекурсивных функций оказался эквивалентным классу функций, вычислимых с помощью
МТ. Это позволяет получить следующий объединенный тезис:
Всякий алгоритм, описанный в терминах рекурсивных функций , можно реализовать с
помощью МТ и наоборот.
Практические задания к разделу 5 ПРИМЕНЕНИЕ
МАШИН ТЬЮРИНГА К СЛОВАМ
5.1. Имеется машина Тьюринга с внешним алфавитом А={а0, 1), алфавитом внутренних
состояний ()={до, д 1 ) , и со следующей функциональной схемой (программой):
А^^^^^^О.
ао
1
до
ді іп
(В столбце д0 ничего не написано, потому что д0 - заключительное состояние машины, т.е. такое
состояние, оказавшись в котором машина останавливается. Функциональную схему или программу
кратко можно записать в виде последовательности из двух команд: д1а0 □ а01, □ д11П.) Определите, в
какое слово переработает машина каждое из следующих слов, если она находится в начальном
состоянии д1 и обозревает указанную ячейку:
а) 1 а0 11 а0а0 11
б)11а0111а01
в)1а0а0111
г) 1111а011
д) 11а01111
е) 1111111
ж)11111
з) 111 ...1111
(обозревается ячейка 4, считая слева);
(обозревается ячейка 2);
(обозревается ячейка 3);
(обозревается ячейка 4);
(обозревается ячейка 3);
(обозревается ячейка 4);
(обозревается ячейка 5);
(обозревается ячейка к).
к
Изобразите схематически последовательность конфигураций, возникающих на ленте на каждом такте
работы машины.
Р е ш е н и е . а) Изобразим схематически начальную конфигурацию (начальное положение машины):
д
і
_______________
а0
1
_______________
1 _______ 1
а0
а0
1 __________ 1_
Схема означает, что машина находится в состоянии Ц1 и обозревает ячейку, в которой записана буква
1, в соседней слева ячейке записана та же буква, а в соседней справа ячейке записана буква ао (т. е.
согласно нашему соглашению ничего не записано) и т. д. Ничего не записано и во всех непоказанных
ячейках ленты. На первом такте работы согласно команде
Ц 11
□
Ц 1 1П
машина остается в прежнем
состоянии 71, в обозреваемую ячейку вписывает букву 1 (т. е. фактически оставляет уже вписанную в
эту ячейку букву 1 неизменной ) и переходит к обозрению следующей правой ячейки (т. е. ячейки 5).
Изобразим схематически положение, в котором оказалась машина:
_______________________________41 ______________________________
1 | а0 | 1 | 1 | а0 | а0 \ 1 | 1
На втором такте работы согласно команде Ц1а0 □ 701 машина вписывает в обозреваемую ячейку 5 букву
1, продолжает обозревать ту же ячейку и переходит в состояние Цо, т. е. останавливается. Создавшаяся
конфигурация имеет вид:
_______________________________до__________________________________
1 | а0 | 1 | 1 | 1 | а0 | 1 | 1
Таким образом, из данного начального положения слово 1а011а0а011 перерабатывается машиной в слово
1 а0111 а011 .
5.2. Дана машина Тьюринга с внешним алфавитом А = {а0, 1}, алфавитом внутренних состояний
С) = { Ца Ц 1 , Ц 2 , Ц3, Ц4, д5, Цв, Ц7 } и со следующей функциональной схемой (программой):
д
1
ао
1
Ц21Л
д
2
Цв аоП
д31Л
д
д
Ц4
3
Цв аоП
д11Л
5
аоП
д5 ао
Ц4
д5 ао
Цв
до ао
Цу ао
17
Цв аоП
Цу ао
Изображая на каждом такте работы машины получающуюся конфигурацию, определите, в какое слово
перерабатывает машина каждое из следующих слов, исходя из начального стандартного положения
(стандартным считается такое положение, когда машина находится в состоянии
Ц1
и обозревает
крайнюю правую ячейку из тех, в которых записано перерабатываемое слово):
а) 11111;
е) 1а0111а0а01111;
б) 111111;
в) 1111;
ж) 11 а0а0111111;
г) 1111111;
д) 111;
з ) 11а0111.
Решение. д) Выписываем последовательность конфигураций машины при переработке ею слова 111
из начального стандартного положения:
1)
1
1
7)
2)
1
1
1
8)
3)
1
1
1
9)
1
q4 1
1
q4
1
q
5
4)
1
44
1
5)
6)
1
1
10)
1
1
11)
1
1
qo
1
12)
Итак, слово 111 из начального стандартного положения перерабатывается машиной в слово 1.
5.3. Машина Тьюринга определяется следующей функциональной схемой:
q
q
2
ао
1
*
3
qs 1П
421Л
42*Л
q2 аоЛ
qo ао
4^О Л
qs 1П
qs*n
Определите, в какое слово перерабатывает машина каждое из следующих слов, исходя из начального
стандартного состояния (определение которого см. в задаче 5.2). После этого постарайтесь усмотреть
общую закономерность в работе машины:
а) 111 * 111;
б) 1111 * 11;
в) 111 * 1;
г) 1 * 11;
д) 11 * 111;
е) 11111 * ;
ж) * 1111.
5.4. Машина Тьюринга определяется следующей функциональной схемой:
q
ао
1
*
q2аoЛ
qoflo)
2
q
qзаoП
421Л
43*Л
qзаoЛ
s
q4
4^О Л
q41П
q4*n
Определите, в какое слово перерабатывает машина каждое из следующих слов, исходя из стандартного
начального состояния:
а) 111 * 11;
б) 11 * 11;
в) 1111 * 1;
г) 11111 * 111;
д) 11111 * 1111.
Постарайтесь выявить общую закономерность в работе машины.
5.5. Для машины Тьюринга, определяемой следующей функциональной схемой:
q
ао
1
□
□
4^Л
2
qзаoЛ
q№
q2 □П
q2 □П
q
3
qi 1П
431Л
qзаoЛ
q4
qoаoЛ
q41П
и для следующих слов определите, в какое слово переработается каждое из них данной машиной, исходя
из начального положения, при котором машина находится в состоянии ці и обозревается указываемая
ячейка:
а) 11111 (обозревается ячейка 2, считая слева);
б) 111 (обозревается ячейка 1);
в) 1111111111 (обозревается ячейка 4);
г)
111111 (обозревается ячейка 2);
д) 111111111111111 (обозревается ячейка 6).
Какова общая закономерность работы машины?
^-
5.6. Машина Тьюринга с внешним алфавитом А = {а0, 1} определяется следующей программой:
q
ао
l
q
2
3
Ч 2 аоП
Ч і ІП
Ч оао
Ч З 1П
qjlll
Остановится ли когда-нибудь эта машина, если она начнет перерабатывать следующее слово (в
начальный момент; в состоянии q j , машина обозревает ячейку, в которой записана самая левая буква
перерабатываемого слова):
а) ШаоД;
б) ПаоДкоД;
в) 111111?
Если остановка происходит, то какое слово получается в результате, какая ячейка и в каком (перед
остановкой) состоянии обозревается?
5.7. Остановится ли когда-нибудь машина Тьюринга, заданная следующей программой:
q
ао
l
2
ЯэаоЛ
qlаоП
q
3
qоао
q2 m
если она начнет перерабатывать следующее слово, начав в состоянии Ц 1 обозревать ячейку, в
которой записана самая левая буква перерабатываемого слова:
а) 1111ао 1;
б) 11111;
в) 1а01а01?
Если машина остановится, то какова ее заключительная конфигурация?
5.8.
Останавливается ли когда-нибудь машина Тьюринга с внешним алфавитом
А={а0, 1} и. функциональной схемой:
Я1
Я2аоП
Я21П
ао
1
ЯзаоЛ
Я4аоП
Яоао
Я2ао
Яо1
при переработке следующих слов (в начальный момент головка машины обозревает ячейку
ленты, в которой записана самая левая буква перерабатываемого слова):
а) 111ао1 ао1;
б) 1111;
в) 1ао1ао1 ао1 ?
Если машина останавливается, то какое слово получается в результате, какая ячейка и в каком
состоянии обозревается?
КОМПОЗИЦИЯ, ИТТЕРАЦИЯ, РАЗВЕТВЛЕНИЕ
Пусть машины Т1 и Т2 имеют соответственно программы П 1 и П 2. Предположим, что
внутренние алфавиты этих машин не пересекаются и что Я1 - некоторое заключительное состояние
машины Т1, а Я'2 - какое-либо начальное состояние машины Т2. Заменим всюду в программе П 1
состояние Я1 на состояние Я'2 и полученная программа П определяет машину Т,
называемую композицией машин Т1 и Т2 (по паре состояний (Я1 , Я ) ) и обозначаемую через Т1° Т2
или Т1Т2 (более подробно: Т=Т(Т1,Т2, ( Я 1 , Я 2 ) ) . Внешний алфавит композиции Т1Т2 является
объединением внешних алфавитов машин Т1 и Т2.
2
Задание 1: Построить композицию машины Т1Т2 по паре состояний (Я10,Я21) и найти результат
применения композиции к слову Р (Я20 - заключительное состояние машины Т2)
1)
Ян
Я12
о
Я12 о я
Яю 1 Ь
Т1 1
Я12 1 Я Я11 о я Т2
Я22
Я21
о
1
Я21 о Ь
Я2о 1 8
а) Р=130212 б) Р=1401
2)
Я
Я12
Я13 0 Я
Я13 1 Я
11
Т1
о
1
Яю 0 Ь
Я12 1 Я
Я21
о
1
Я22 1 Ь
Я22 1 Ь
Я13
Я11 о Я
Я11 о Я
Т2
Я22
Я20 0 Я
Я21 о Ь
а) Р=1 4о21 3о1 2 , б) Р=1 2о1 о1 3
3)
Я
о
Т1 1
11
Я12
Я13
Я12 о Я
Я11 1 Я
Я11 1 Я
-
Я21
о
1
Я22 0 Ь
Я21 1 Ь
Я22
Я23 0 Ь
Я22 1 Ь
Т2
Я23
Я2о 0 Я
Я23 1 Ь
а) Р=1 2о1 3о1 2, б) Р=1 2о1 2о21 2
Пусть я' - некоторое заключительное состояние машины Т, а я'- какое-либо состояние машины Т не
являющееся заключительным. Заменим всюду в программе П машины Т символ я' на я'. Получим программу
П', определяющую машину Т'(я^я'). Машина Т'называется
я' '
итерацией машины Т (по паре состояний ( ,я )).
Задание 2: Найти результат применения итерации машины Т к слову Р по паре состояний (яо,яО
(заключительными состояниями являются я0 и я0' )
0
1
1) 1=1,
а) Р=13к, Ь) Р=13к+1, с) Р=13к+2, к>=1 _____________________________
Я
2
Яз
Я4
Я0 0 Б
Я4 0 Б Яз 0 Б Я4 1 Я Я0' 0 Ь
Я2 0 Я
Яз 0 Я Яі 0 Я
-
0
1
2) і=1,
а) Р=12к, Ь) Р=12к+1 , к>=1
Я
Я1
2
Яз
Я4 0 Я
Я2 0 Я
Яз 0 Я
Яз 1 Я
0
1
2
з) і=з,
а) Р=1Х01У , х,у>=1
Я1
Я2
Яз
Я2 0 Ь
Я4 0 Я
Я1 2 Я
Я2 1 Я
Яз 1 Я
-
Я4
Яз 1 Ь
Я4 1 Я
Яз
Яб 0 Ь
Яз 1 Ь
Я
Я
4
Яз 1 Ь
Я4 1 Я
-
Яб
Я0 0 Я
Яб 1 Ь
6
Я6 0 Ь
Яз 1 Ь
-
Я0' 0 Я
Яб 1 Ь
Я0 1 Я
Пусть машины Т1 , Т2, Т3 имеют соответственно программы П 1, П2, П3. Предположим, что
внутренние алфавиты этих машин не пересекаются. Пусть я1 и я1 - некоторые различные заключительные
состояния машины Т1. Заменим всюду в программе П1 состояние я1 некоторым начальным состоянием я2
машины Т2, а состояние я*- некоторым начальным состоянием я3 машины Т3. Затем новую программу
объединим с программами П2 и П3. Полученная программа П определяет машину Т= Т(Т1(а[, а'2),Т2(а[,
ц3),Т3), называемую разветвлением машин Т2 и Тз, управляемым машиной Т1.
Задание 3: Найти результат применения разветвления машины
Т=
Т(Т1( д'0, д21 ),Т2( а ^ , д31 ),Т3), к слову Р (я20 - заключительное состояние машины Т2, а я30 заключительное
состояние машины Т3).
1) а) Р=1013, Ь) Р=1301
Я11
Т
1
0
1
Я12 0 Я
Я12 1 Я
Я12
Я'10 0 Я
Я''10 1 Ь
Т2
0
1
Я21
Я20 1 Б
Я21 0 Я
Тз
0
1
Яз1
Яз2 1 Ь
Яз1 1 Ь
Яз2
Яз0 1 Ь
-
х 2
Я21
Я22Ь) Р=1х0101у012, Я
з1
Яз2
2) а) Р=1
0 1, х>=1,
х,у,г>=1
Я11
Яз0 1 Б
Я12
Я01з Яз2 0 Я
0
Я
12
0
Я
Я'
10
0
Ь
ТТз
21
0
1 | я н 1 К | Я 1э 1 К | Я 1э 1 К 1
Я22 0 Ь
Я20 0 Я
| 1 | д 21 1 Ь | д 22 1 Ь ]
| 1 | д э1 1 Я | д э1 1 К
Задание 4: По программе МТ написать аналитическое выражение для функций г(х) и Д(х,у),
вычисляемых МТ.
1) ________________
2)
я
я
я
я
я
я
1
2
1
2
4
5
Яз
0
Я00К
0 Яз0К Я10Ь Я40Ь Я40Ь Я00К
3)
1
Яз
я
1
0
Я20К Яз0К
1
Я20К Я41К
Яв1Ь
Яз0К
1
Яз0К
я
б
Я50 Яз0Ь Ят0Ь
К
Я41 Яб1К Яб1К Яв0Ь
К
Я90Ь
Я10К
Яв1Ь
Я91Ь
4) Д(х)-? В начальной конфигурации обозревается крайняя правая единица ленты
5) Д(х,у)-? В начальной конфигурации обозревается крайняя левая единица ленты
5)
4)
я
1
0
1
я
2
я
Яз
Я11К Я21Ь Я01
Я1
Я20К Я10Ь
Я11К Яз0К
2
0
1
Яз
Я40Ь
Яз0К
Я
4
Я
5
Я
б
Я40Ь Яб0К
Я51Ь Я51Ь Я01
КОНСТРУИРОВАНИЕ МАШИН ТЬЮРИНГА
5.13. Известно, что на ленте записано слово 111. . . 1 . Постройте машину Тьюринга с внешним
алфавитом А = {а0, 1}, которая отыскивала бы левую единицу этого слова (т. е. приходила бы в
состояние, при котором обозревалась бы ячейка с самой левой единицей данного слова, и в этом
положении останавливалась), если в начальный момент головка машины обозревает одну из ячеек с
буквой данного слова.
5.14. Сконструируйте машину Тьюринга с внешним алфавитом А = {а0, 1}, которая каждое
слово в алфавите А1 = { 1 } перерабатывает в пустое слово, исходя из стандартного начального
положения.
Указание. В алфавит внутренних состояний включите четыре буквы (3= {Я0, Я1, Я2, Я3}.
5.15. Сконструируйте машину Тьюринга с внешним алфавитом А = {а0, 1 }, которая
каждое слово длиной п в алфавите А1 = {1} перерабатывает в слово длиной п + 1 в том же
алфавите А1.
Указание. Используйте алфавит внутренних состояний из двух букв. См. задачу 5.1.
5.16. На
ленте машины Тьюринга
записаны два набора
единиц 1. Они разделены
звездочкой *. Составьте функциональную схему машины так, чтобы она выбрала больший из
этих наборов, а меньший стерла, исходя из стандартного начального положения (см. задачу
5.2). Звездочка должна быть сохранена, чтобы было видно, какой из массивов выбран.
У к а з а н и е . Машина может работать, например, следующим образом. Заменить крайнюю
правую единицу на • и из состояния ц7 перейти в состояние ц2, в котором она должна, ничего не меняя,
прошагать к крайней левой единице. Здесь, перейдя в состояние ц3, заменить крайнюю левую единицу
на букву Далее, перейдя в состояние ц4, прошагать к крайней правой единице, ничего не меняя. Здесь
снова заменить единицу на букву • и вернуться к крайней левой единице и т. д. Дальше программа имеет
разветвление. Если, начиная двигаться с правого конца, машина в состоянии 77, сделав шаг влево,
обозревает ячейку с буквой *, то это означает, что единицы правого массива иссякли. Следовательно,
левый массив больше. Тогда машина, перейдя в состояние проходит ячейку с буквой * и во всех
последующих ячейках слева проставляет единицы. Затем в состоянии Я 6 она возвращается к ячейке со *,
минует ее и следует дальше вправо, стирая содержимое ячеек (там записаны буквы •). Дойдя до первой
пустой ячейки, машина останавливается. Если же, начиная двигаться с левого конца, машина в
состоящий Яз сделав шаг вправо, обозревает ячейку с буквой *, то это означает, что иссякли единицы
левого массива. Следовательно, большим оказывается правый массив. Привлекая новые состояния 77 и
78, строим программу аналогично предыдущему ответвлению.
5.17. Постройте машину Тьюринга, которая бы к натуральному числу в десятичной системе
счисления прибавляла единицу.
Р е ш е н и е. В качестве внешнего алфавита естественно выбрать алфавит, содержащий
наименования всех цифр десятичной системы счисления. Конечно же, необходим и пустой символ ао.
Итак, А ={ ао, 1 2, 3, 4, 5, 6, 7, 8, 9, 0}. Состояний у машины будет два: я0 (это, как обычно, остановка) и
Я1 (рабочее
состояние). Итак, С) = {я0, Функциональная схема { программа) машины:
ао
qo1
q1
1
qo2
2
qo3
3
qo4
4
qo5
5
qo6
6
qo7
7
qo8
8
qo9
9
o
qo1
Начальное положение машины стандартное. Читателю предлагается проанализировать работу
машины.
5.18.
По аналогии с предыдущей задачей составьте функциональную схему машины
Тьюринга, которая бы от натурального числа в десятичной системе счисления отнимала
единицу.
5.19. Дана конечная совокупность единиц, вписанных в ячейки, взятые подряд без пропусков.
Постройте функциональную схему такой машины Тьюринга, которая записывала бы в десятичной
системе
число этих единиц, т. е. пересчитывала бы набор единиц.
5.20.
На ленте записаны два числа в двоичной системе счисления, разделенные звездочкой:
1|
o
|
1 | 1 |*
|1|
o
|
1
Определите, какую операцию проделает с ними машина Тьюринга, начиная из стандартного
положения (крайняя правая ячейка, состояние q1), если программа машины задается таблицей:
q
q
1
2
q
o
ao
1
0
*
Я20Л
q2lЛ
q20Л
qз*Л
q
q
3
q
4
ql1Л
q40Л
qз0Л
q5a0H
q4lЛ
q40Л
q
5
q6aoЛ
qsm
qs0H
6
q60Л
q60Л
qз*Л
5.21. Вопрос, аналогичный вопросу из предыдущей задачи, для ленты
1 | 1 | 0 | 1
1
|
и для машины Тьюринга с программой: q11
|
1
р | р
— ql0Л,
q1 0
q2 l
— q20Л,
q2 0
q3 l
—
q4Л,
ql*
q4 l
— ql0Л,
qlаo
qlЛ,
qзЛ,
q
0.
5.22. На ленту подряд вписаны два конечных набора единиц, разделенные звездочкой.
Составьте программу машины Тьюринга, которая выписывала бы подряд, без разделения
звездочкой, столько единиц, сколько их в обоих наборах (сложение единиц).
Указание. См. задачу 5.3.
5.23. На ленту подряд вписаны два конечных набора единиц, разделенные звездочкой.
Причем в левом наборе единиц больше, чем в правом. Составьте программу машины Тьюринга,
которая в левом наборе оставляла бы ровно столько единиц, на сколько единиц в левом наборе
больше, чем в правом, а все остальные единицы стирала бы (вычитание единиц).
Указание. См. задачу 5.4.
5.24. Два конечных набор а. из т и
n
единиц записаны на ленту подряд. Машина в:
начальном положении обозревает крайнюю правую единицу левого набора. Постройте программу машины Тьюринга, которая выдавала бы набор единиц из НОД ( m ,
остальные единицы, стирала бы.
п) штук, а
У к а з а н и е . Используйте алгоритм Евклида нахождения наибольшего общего делителя двух
натуральных чисел и запрограммируйте его для машины Тьюринга. См. задачу 5.5.
5.25. Постройте машину Тьюринга, осуществляющую перевод слова 001... 10 в слово
x
01...100. Причем в начальном положении машина должна находиться в состоянии д1 и
x
обозревать первую ячейку, эту же ячейку она должна обозревать и в момент остановки. (Эта машина
называется «перенос нуля» и обозначается А.)
Решение. Приводим программу машины. Рядом с командами изображаем конфигурации,
получающиеся в результате выполнения соответствующих команд:
Начальное положение
0
0
1
Д1 0 □ Д 2 П
0
0
0
1
0
0
1
0
Дз1 □ ДзП
0
1
0
Дз0 □ Д4Л
0
1
0
Д41 □ Д50
0
0
0
1
Д
б
Д 5 0 □ Д бЛ
0
1
0
Дб1 □ ДбЛ
0
1
0
0
Дб0 □ Д00
0
1
0
0
0
Проанализируйте работу машины.
5.26. Постройте машину Тьюринга, перерабатывающую слово 01 ...10 в это же слово
X
0&_цЛ_Р из стандартного начального положения, причем в момент остановки должна обозреX
ваться крайняя левая ячейка. (Эта машина называется «левый сдвиг» и обозначается Б*.)
5.27. Условие аналогично условию предыдущей задачи, но в начальном положении
должна обозреваться крайняя левая ячейка, а конечное положение стандартно. Эта машина
называется «правый сдвиг» и обозначается Б . )
Указание. Программа этой машины получается из программы Б* заменой символа Л символом П.
5.28. Постройте машину Тьюринга (называемую «транспозиция» и обозначаемую В),
которая перерабатывает слово 0&&10&&10
X
в слово 0&&10&&10, причем в начальном и
у
у
х
конечном положении обозревается ячейка, содержащая 0, между двумя наборами единиц.
5.29. Постройте машину Тьюринга (называемую «удвоение» и обозначаемую Г), которая
перерабатывает слово
в слово 0&&10&&10, причем в начальном и конечном
положении обозревается крайняя левая ячейка.
5.30. Постройте машину Тьюринга, переводящую слово 0'¿•••10'_&]_Р' _ ц Л 0 в слово
X
у
2
01. ..101. ..101. ..10 , причем в начальном положении обозревается ячейка с 0 между наборами
2
X
у
из у и 2 единиц, а в конечном положении обозревается ячейка с 0 между наборами из г и х единиц. (Эта
машина называется «циклический сдвиг» и обозначается Ц3.)
Указание. Проверьте, что такой перевод произойдет в результате последовательного
применения (композиции) ранее построенных машин В, Б' и В, т. е. Ц3 = ВБ'В.
Решение. В самом деле, введем обозначение 1х = 11... 1 и вычислим:
X
ВБ'В(01х01у0120) = ВБ' (В (01х0Р70120)) = ВБ' (01х0120Р70) = В(Б' (01х0120Р70)) =
= В(01х0120гу0)) = ) = 01201х0гу0.
5.31. Постройте машину Тьюринга,
использовано обозначение 1 х = 1 1
перерабатывающую слово 01х0!у (здесь
1 ) в слово 01х01-у01х01-у, причем в начальном положении
х
обозревается самая левая ячейка, а в конечном ' ячейка, в которой записан 0, заключенный между
массивами 1х01у и 1у01х. (Машина называется «копирование» и обозначается К2.
Указание. Проверьте, что эта машина представляет собой следующую композицию построенных
выше машин:
К2 = Б+ГВБ+ВГВБ+ВББВБ+.
5.32. Постройте машину Тьюринга с внешним алфавитом А = {а0, 1}, обладающую следующим
свойством:
а) машина не применима ни к какому непустому слову, т. е. применение машины к
любому непустому слову приводит к тому, что машина никогда не останавливается;
б) машина
применима
к
любому
непустому
слову,
т.
е.
любое
непустое
слово
перерабатывается машиной в некоторое слово (в результате машина останавливается, т. е.
приходит в состояние Яо);
в) машина применима только к словам вида 1 1... 1 , п ' 1;
3п
г) машина применима только к словам видаЦ$_1 а о1
п
1, п □ 1, т □ 1.
т
Р е ш е н и е . а) Будем считать, что машина начинает работать из стандартного начального
положения, т. е. в начальном состоянии д1 «головкой» машины обозревается ячейка, в которой записана
самая правая единица перерабатываемого слова. Тогда искомую машину построить нетрудно: из
начального положения она должна неограниченно двигаться по ленте вправо. Вот ее функциональная
А
~—^^^0
Я1
Я0а0
1
Я2
Я2а0П
Я21П
В этой машине предусмотрена остановка, если только в начальном состоянии Я1 обозревается
пустая ячейка, т. е. если машина применяется к пустому слову.
схема:
Попытайтесь построить машину Тьюринга, отвечающую требованию настоящей задачи, при
условии, что она начинает работать из положения, в котором обозревается произвольная ячейка с
буквой данного слова.
ВЫЧИСЛИМЫЕ ПО ТЬЮРИНГУ ФУНКЦИИ
5.33. Постройте машины Тьюринга, которые вычисляют следующие функции:
а) /(х) = х + 1;
б) О ( х ) = 0 .
Указание. См. задачи 5.1 и 5.14 для задач п. а) и б) соответственно.
5.34. Постройте, машины Тьюринга, вьічисляющие следующие функции:
а) / (х1, Х2, хз) = Х2;
б)/ (х1, Х2, Хг) = хт (1 • т • п).
Указание. Попробуйте построить эти машины в виде композиции машин О, Б , Б+, Ц, где О —
машина из задачи 5.33, б, а Б , Б+ и Ц - машины из задач 5.26, 5.27 и 5.30 соответственно.
Докажите, что следующие функции вычислимы по Тьюрингу, для чего
5.35.
постройте машины Тьюринга, вычисляющие их:
а) / (х у)
ж)/ (х, у) = НОД (х, у);
= х + у;
б) / ( х ) =
\ 0 , если х = 0 ; \ х - 1 ,
если
х з) / ( х )
х
=
2;
>0;
в) S g ( x )
=
г) ^ ( х ) =
д)
/(х,у)
е) / (х у)
> = х •у;
если
11: если
х = 0;
если
х > 0;
и) / ( х )
і
х > 0;
если
если
х = 0;
х < у;
целая часть числа
2
5
к) / ( х )
1,
если
х
1
х-2
л) / ( х ) =
х > у;
м) / (х) = 2х + 1;
н) / (х) = 2Ьх.
Указание. а) См. задачу 5.4. д) См. задачу 5.24. е) См. задачу 5.23. и) См. задачу 5.6.
Решение. в) Читателю предлагается проверить, что данная функция вычисляется машиной Тьюринга
со следующей функциональной схемой (программой): q10 —» Я20П, q20 — qo0Л, q2l — qз1П, qз1 —
qз0П, qз0 —
q40Л,
— q40Л, q4l — qo0Л.
5.36. Докажите, что следующие функции вычислимы по Тьюрингу, построив соответствующие
машины Тьюринга:
^1,
если
если
х
х
не
делится
делится
на
на
3; \ 0 ,
3;
б) / р ( х ) I 1 -
если
[0,
если
Xделится на р; не
делится
на
р;
X Указание. См.
задачу 8.2.
5.37. Составьте программы машин
функции:
а) / ( а )
б) / ( а )
в) / ( а )
г) / ( а )
д) / ( а )
а -1,
0,
а 2,
0,
а 3,
0,
а 4,
0,
а: 2,
0,
если
если
если
а > 1
а < 1
а>2
если
если
а<2
а>3
если
если
если
если
если
а<3
а>4
а<4
2 | а
—2 1
а
Тьюринга, вычисляющих следующие
2а - 1 ,
е) / ( а )
а>1
з) / ( а ) - и)/ ( а )
если
-
и)/ ( а ) --
0,
если
а = 0 2( а -1),
если
а>1
0 , если а = 0 2а
если
- 3,
0,
если
а>2
если
а < 1 2( а - 2),
а>2
0,
если
а < 1 2а -
5),
если
а > 30 ,
если
а<2
Download