11.07.2015 Views

Выпуск 1 - Российский государственный профессионально ...

Выпуск 1 - Российский государственный профессионально ...

Выпуск 1 - Российский государственный профессионально ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

автомата определяет ту промежуточную задачу, которуюрешает автомат в данный момент. Это напоминаетсостояния человека: ночью он спит (состояние 1),утром встает и умывается (состояние 2), завтракает(состояние 3), идет на работу (состояние 4) и т.д.Множество всех состояний автомата обозначаетсябуквой Q, а его элементы — строчными буквамиq с индексами: Q = {q 1, q 2, …, q M}. Принято, что вначальный момент машина Тьюринга находится всостоянии q 1.Особое состояние q 0— это состояние останова.Если машина переходит в это состояние, выполнениепрограммы сразу останавливается.Автомат управляется программой. Во время каждогошага программы автомат выполняет последовательнотри действия:1) изменяет символ в рабочей ячейке на другой(или оставляет без изменений);2) перемещает каретку влево или вправо (илиоставляет на месте);3) переходит в другое состояние (или остается впрежнем состоянии).Поэтому при составлении программы для каждойпары (символ, состояние) нужно определитьтри параметра: символ a iиз выбранного алфавитаA, направление перемещения каретки (“←” — влево,“→” — вправо, “точка” — нет перемещения) иновое состояние автомата q k. Например, команда1 “←” q 2обозначает “заменить символ на 1, переместитькаретку влево на одну ячейку и перейтив состояние q 2”.Пример 1. На ленте записано число в двоичнойсистеме счисления. Каретка находится где-то надчислом. Требуется увеличить число на единицу.Для решения задач такого типа нужно:• определить алфавит машины Тьюринга A;• выделить простейшие подзадачи и определитьнабор возможных состояний Q; задать начальноесостояние q 1и конечное состояние q 0(в котороммашина останавливается);• составить программу, то есть для каждой пары(a i, q k) определить команду, которую должен выполнитьавтомат.Как мы уже выяснили, алфавит машины Тьюринга,работающей с двоичными числами, включаетсимволы 0, 1 и пробел: A = {0, 1, }. Определимвозможные состояния (разобьем задачу на элементарныеподзадачи):1) q 1— автомат ищет правый конец слова (числа)на ленте;2) q 2— автомат увеличивает число на 1, проходяего слева направо, и останавливается, закончивработу.Теперь займемся программой. На первом этапе,когда автомат ищет конец слова, его работа можетбыть описана так:1) если в рабочей ячейке записана цифра 0, переместитьсявправо;2) если в рабочей ячейке записана цифра 1, переместитьсявправо;3) если в рабочей ячейке пробел, переместитькаретку влево и перейти в состояние q 2.Тогда действия автомата в состоянии q 1можнопредставить в виде таблицы, где в заголовках строкзаписываются символы алфавита, а в заголовкахстолбцов — состояния:q 10 0 → q 11 1 → q 1 ← q 2Рис. 4Заметим, что во всех случаях символ под кареткойне меняется. Кроме того, состояние меняетсятолько в последней ячейке. Поэтому для упрощениязаписи не будем указывать в таблице то, чтоостается без изменений. Так, на наш взгляд, болеекратко и понятно:q 10 →1 → ← q 2Рис. 5Второй этап — увеличение двоичного числа наединицу. Это можно сделать следующим способом(вспомните тему “Системы счисления”):1) если в рабочей ячейке записана цифра 0, записатьв нее 1 и стоп;2) если в рабочей ячейке записана цифра 1, выполнитьперенос в старший разряд — записать вячейку 0 и переместиться влево;3) если в рабочей ячейке пробел, записать в нее1 и стоп.Для того чтобы остановить работу машины Тьюринга,нужно перевести ее в состояние останова q 0.Теперь можно добавить в таблицу столбец, соответствующийсостоянию q 2:q 1q 20 → 1 . q 01 → 0 ← ← q 21 . q 0Рис. 6Построенная полная таблица — это и есть программадля машины Тьюринга. Обратите внимание,что мы разбили исходную задачу на подзадачи,для каждой из них составили программу, а потомих соединили. Две подзадачи связаны через ячейку(,q 1), в которой состояние автомата изменяетсяна q 2. В данном простейшем случае в каждом издвух алгоритмов было использовано только односостояние, но это не обязательно — можно такимже способом соединять и более сложные алгоритмы.Если алгоритмы А и Б можно запрограммиро-7январь 2012 / ИНФорматика

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!