
- •Часть II
- •Часть II
- •Введение
- •Тема 1. Основы алгоритмизации. Алгоритм и его свойства.
- •Способы задания алгоритмов.
- •Представление алгоритмов в виде последовательности команд для эвм.
- •Формализация понятия алгоритма.
- •Рекурсивные функции.
- •Машина Поста.
- •Машина Тьюринга.
- •В исходном состоянии машина Тьюринга имеет вид:
- •Нормальные алгоритмы Маркова.
- •Формальные языки и грамматики.
- •Тема 2. Язык программирования паскаль. Этапы создания программного обеспечения.
- •Алфавит, синтаксис и семантика языка Паскаль.
- •Структура паскаль-программы.
- •Типы переменных.
- •Отрезок типа.
- •Основные операторы Паскаля.
- •Тема 3. Настройки bios.
- •С писок литературы.
- •Тема 1. Основы алгоритмизации. 5
- •Тема 2. Язык программирования паскаль. 27
- •Тема 3. Настройки bios. 49
Машина Тьюринга.
В 1936 г. английский математик Алан Тьюринг опубликовал статью «О вычислимых числах», в которой для уточнения понятия алгоритма использовал абстрактную математическую конструкцию, впоследствии названную машиной Тьюринга.
М
ашина
Тьюринга состоит из бесконечной ленты,
разбитой на клетки (ячейки) равной
величины. В каждой ячейке может быть
записана в точности одна буква. Пустая
ячейка означает наличие в ней пустой
буквы. Для передвижения ленты машина
снабжена простым лентопротяжным
механизмом, который позволяет передвигать
ленту на одну ячейку влево или вправо.
Для того чтобы считать написанный на
ленте символ и записать его на ленту,
машина Тьюринга снабжена головкой
чтения - записи. При этом головка за один
прием может прочитать только одну букву,
написанную на той ячейке ленты, которая
расположена под головкой. Чтение буквы
не заменяет того, что написано в ячейке
Ячейка
Логический блок
Бесконечная лента
Головка чтения-записи
Основной частью машины Тьюринга является логический блок, на котором имеется кнопка запуска. При ее нажатии логический блок принимает исходное состояние и начинает работать:
он заставляет головку прочитать букву, которая находится на ленте под головкой;
в зависимости от прочитанной буквы и того состояния, в котором находится он сам, логический блок может:
записать на ленте в той клетке, находящейся под головкой, некоторую букву;
передвинуть ленту влево, вправо или оставить на месте;
изменить свое собственное состояние;
если в результате действий, указанных в пункте 2, буква, расположенная под головкой, положение ленты и состояние логического блока машины останутся такими же, какими они были непосредственно перед выполнением этих действий, тогда машина останавливается. Во всех остальных случаях логический блок возвращается к выполнению пункта 1.
Итак, мы имеем:
некий алфавит Р={ро,…, pi, ..., рn}, содержащий буквы, которые могут быть записаны на ленте. Этот алфавит называется алфавитом машины Тьюринга;
алфавит А={a1, a2, …, am}, содержащий состояния, в которых может находиться логический блок;
алфавит D={d-1, d0, d1}, предназначенный для обозначения движения ленты влево или вправо и остановки ленты.
Помним, что алфавитом мы называем совокупность упорядоченных в определенном смысле символов в данном языке или системе. Эти символы называются буквами. Только символы, принадлежащие данному алфавиту, могут использоваться для построения слов.
Опишем поведение машины Тьюринга при выполнении логическим блоком пункта 2, в соответствии с приведенными обозначениями.
Если головка читает букву pi, и блок находится в состоянии ai, то поведение машины определяется записью pxdyaz, которая соответствует командам:
записать на ленте вместо буквы pi букву рх;
совершить перемещение ленты dy;
перейти логическому блоку в состояние az.
Очевидно, что от реакции на сочетание pi, aj для i≠j будет зависеть работа машины Тьюринга. Реакцию машины на сочетания pi, aj можно представить в виде таблицы, в клетках которой стоят тройки символов вида pxdyaz.
|
a1 |
a2 |
… |
az |
… |
am |
p0 |
|
|
|
|
|
|
p1 |
|
|
|
|
|
|
… |
|
|
|
|
|
|
px |
|
|
|
pxdyaz |
|
|
… |
|
|
|
|
|
|
pn |
|
|
|
|
|
|
Если записать на ленте некоторое слово в алфавите Р и нажать кнопку запуска, то в результате работы машины возможны два исхода:
работа машины после конечного числа шагов прекратится. При этом слово, записанное на ленте, будем называть результатом ее работы, т.е. машина применима к исходным данным;
машина никогда не остановится, т.е. результат: машина никогда не выдаст и не применима к исходным данным.
Соответствие, устанавливаемое машиной Тьюринга между теми исходными данными, к которым она применима, и результатами ее работы, представляет некоторую целочисленную неотрицательную функцию f(x).
Пусть задана функция f(x)=х+1, при х≥0. Построить машину Тьюринга, реализующую эту функцию.
Решение:
1) введем условные обозначения и определим исходное состояние ленты:
a) значения х будем записывать на ленте в виде строки, состоящей из единиц, а пустые клетки будем обозначать нулями;
b) расположим ленту так, чтобы самая левая единица находилась под головкой;
c) переведем логический блок в исходное состояние ai;
2) проанализируем работу логического блока:
a) если в состоянии ai головка считает символ 1, то нужно, чтобы логический блок снова записал в эту ячейку 1, ленту продвинул на одну позицию влево и сам остался в прежнем состоянии ai;
b) если в состоянии ai головка считает символ 0, то логический блок должен записать в эту ячейку 1, ленту оставить в этой же позиции и сам перейти в состояние а2;
c) находясь в состоянии a2 и при считывании головкой символа 1, логический блок должен снова записать в эту клетку 1, ленту не перемещать и оставаться в состоянии а2. При этом машина остановится;
3) построим функциональную таблицу машины Тьюринга, вычисляющей значение функции f(х)= х+1, при х≥0:
|
A1 |
a2 |
0 |
1d0a2 |
|
1 |
1d1a1 |
1d0a2 |
4) проиллюстрируем работу машины Тьюринга при х =2: