Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Книги / TURIN / ЛЕКЦПР~3.DOC
Скачиваний:
35
Добавлен:
10.12.2013
Размер:
92.16 Кб
Скачать

212

Приложение 3. Параллельные вычисления

(Материал полностью заимствован из [11])

П3.1. Модель вычислителя

Теоретической основой построения универсальных цифровых вычислительных машин с программным управлением (универсальных программных автоматов) является теория алгоритмов (алгоритмических систем), в которой исследуются общие способы задания алгоритмов, характеризуемые свойством универсальности. Такие способы позволяют задавать любой алгоритм, эквивалентный заданному. Общий способ задания алгоритмов получил название алгоритмической системы. Известны многие типы алгоритмических систем: нормальные алгоритмы Маркова, рекурсивные функции, алгоритмы Поста, машина Тьюринга, алгоритмическая схема Колмогорова-Успенского и др. Поскольку эти системы эквивалентны, можно ограничиться рассмотрением основных положений теории алгоритмов на примере одной из них - машины Тьюринга.

В теории алгоритмов прежде всего ставится вопрос строгого определения алгоритма. Для его математического определения необходимо механизм работы модели вычислителя представить в виде стандартной схемы с максимально простой логической структурой, но вместе с тем достаточно точной для математического исследования. Концепция вычислительной машины была предложена Тьюрингом, который исходил лишь из общей идеи уподобления работы машины работе вычислителя, выполняющего вычисления в соответствии с некоторым заданным заранее строгим предписанием.

В процессе работы вычислитель использует конечное число различных символов или знаков. В каждый момент он наблюдает конечное число символов в рассматриваемом слове (фразе). Он может помнить и другие, ранее рассмотренные символы, но тоже только конечное их число. Число предписанных указаний для вычислений также конечно. Применяя указания к конечному числу рассматриваемых и вызванных из памяти символов, вычислитель может добавлять или стирать их, переключать внимание на другие символы, отмечать в своей памяти рассмотренные ранее символы. Необходимо чтобы последовательность таких действий вычислителя привела к требуемому результату вычислений. Желательно разложить действия вычислителя на некоторые элементарные действия, к которым можно отнести: распознавание единичного рассматриваемого символа, стирание символа, перемещение точки наблюдения данной последовательности символов в соседнюю точку, изменение в памяти имеющейся информации.

Определение машины Тьюринга дается на языке конструктивной математики, для которой характерно задание вместе с определением и способа построения машины. Каждая машина Тьюринга имеет ленту, читающую головку, алфавит, внутренние состояния, программу из команд.

Лента, являясь линейной, потенциально бесконечной в обоих направлениях, разделена на клетки. Клетка может быть пустой: х0=l(символ пробела) или на ней содержится любой из конечного списка символов х1,...хn(n=1). Лента используется так, что в любой момент число непустых клеток будет конечным. В процессе работы символы в клетках могут меняться: старый символ в ячейке стирается, а на его место записывается новый.

Читающая головка в каждый момент может воспринимать один символ из клетки, на которой она находится, и заменять его на любой другой. За один такт работы машины головка может перемещаться на один шаг влево (L), или вправоR(на одну клетку) или оставаться на месте (Е). Полный набор движений:S={L,R,E}.

Алфавит машины Тьюринга состоит из конечного набора символов х01,...хn.

Внутренние состояния машины обозначаются y1,y2,...yk. Число внутренних состояний всегда конечно. Состояниеykявляется особым: в этом состоянии машина останавливается. Это означает, что работа по выполнению вычислений окончена. В каждый момент машина воспринимает читающей головкой некоторый символ из клетки и находится в одном из своих внутренних состояний.

Программа команд показывает, что делает машина Тьюринга в зависимости от читаемого символа хiи внутреннего состоянияyj. Программа команд для машины задается таблицей с двумя входами (рис.П3.1). В ячейке таблицы на пересеченииi-й строки иj-го столбца записывается команда, которую должна выполнить машина Тьюринга. Если читается символ хiи внутреннее состояние машиныyj, команда записывается в виде тройки символов хkSy, гдеS- один из видов движения головкиL,R,E.

Рис.П3.1

Для выполнения команды в машине совершаются следующие элементарные действия:

1) хiменяется на хkв обозреваемой клетке ленты;

2) головка совершает движение S;

3) машина меняет состояние yjнаy.

Работа машины состоит из тактов, выполняемых последовательно один за другим. В каждом из них реализуется одна команда. Если машина на каком-то такте окажется в состоянии yk, то ее работа прекращается. В противном случае машина работает бесконечно. Построение машины завершено. Задано точное определение алгоритма в виде машины Тьюринга на языке конструктивной математики.

Для решения любой задачи, для которой дан алгоритм, необходимо исходные данные записать на ленте машины Тьюринга, представить алгоритм в виде программы команд, установить головку на некоторой клетке, выбор которой определяется начальными условиями, задать необходимое начальное состояние машины. Машина начинает работу по решению задачи и продолжает до тех пор, пока не перейдет в состояние yk. В этом случае на ленте будет записано решение задачи. В противном случае машина будет работать бесконечно долго.

Теория алгоритмов позволяет получить ответы на ряд важных вопросов, имеющих большое значение для вычислительной математики и вычислительной техники. Прежде всего возникает вопрос, насколько общими являются понятие машины Тьюринга и программы ее команд. Можно ли считать, что способ задания алгоритмов посредством программы команд является универсальным?

На этот вопрос современная теория алгоритмов предлагает ответ в виде основной гипотезы: Всякий алгоритм может быть задан посредством программы команд машины Тьюринга и реализован с помощью соответствующей машины Тьюринга.

Значение гипотезы заключается в возможности уточнения общего, но расплывчатого представления об алгоритме через специальное, но совершенно точное математическое понятие программы команд машины Тьюринга. Справедливость этой гипотезы основывается главным образом на опыте, на эквивалентности машины Тьюринга другим алгоритмическим системам: нормальным алгоритмам, рекурсивным функциям. Попытки построить иные алгоритмические системы приводят к тому, что найденные из других соображений системы оказываются эквивалентными друг другу и в том числе машине Тьюринга.

Важным доводом в пользу справедливости гипотезы является также построение сложных алгоритмов из исходных с помощью некоторых стандартных приемов. Коль скоро для исходных алгоритмов можно задать программы команд машины Тьюринга, то и результирующие сложные алгоритмы могут быть реализованы в виде такой же программы команд.

Теория алгоритмических систем дает несколько приемов построения (композиции) сложных алгоритмов: следования, ветвления, цикла.

Композиция следования позволяет строить сложные программы команд машины Тьюринга путем последовательного соединения в цепочку исходных программ команд. Композиция ветвления позволяет строить ветвящиеся программы команд в виде некоторого графа-схемы типа дерева. Наконец, если допустить в ветвящейся схеме программ команд машины Тьюринга возврат к предыдущим в порядке следования программам, то реализуются циклические процессы, описываемые графами с петлями.

Важно заметить, что любой сколь угодно сложный алгоритм может быть построен из исходных простых алгоритмов с помощью всего лишь трех приемов: следования, ветвления, цикла (рис.П3.2).

Рис.П3.2

Следующим важным вопросом, исследуемым в теории алгоритмов, является вопрос о возможности построения универсальной машины Тьюринга, способной в известном смысле выполнять любой алгоритм. На этот вопрос теория алгоритмических схем дает также положительный ответ. Любая специальная машина Тьюринга может быть реализована на универсальной машине Тьюринга.

Пусть на ленту некоторой машины Тьюринга подана начальная информация и задана также программа команд. Имеется вычислитель, который знаком с принципами работы машины Тьюринга. Человек-вычислитель, подражая работе машины, сможет получить тот же результат, что и машина. Процесс подражания машине в соответствии с программой команд можно оформить в виде алгоритма, который можно сообщить вычислителю, не имеющему представления о машине Тьюринга. Если человек-вычислитель, владеющий таким алгоритмом подражания, снабжен программой команд и начальной информацией любой машины Тьюринга, то он способен, в точности подражая ее работе, выдать одинаковый с ней результат.

Вполне очевидно, что алгоритм подражания можно представить в виде программы команд некоторой универсальной машины Тьюринга, а на ленте этой универсальной машины в качестве исходной информации можно задать исходные данные и программу команд специальной машины, закодированные в алфавите универсальной машины. Поскольку универсальная машина Тьюринга возможна, программу команд специальной машины Тьюринга можно трактовать, с одной стороны, как некоторый программный автомат и реализовать ее в виде специальной машины, а с другой стороны, как некоторую программу для реализация на универсальной машине Тьюринга. Последний случай характерен для современных цифровых вычислительных машин с программным управлением. Последние строятся как универсальные машины, в запоминающее устройство которых наряду с исходными данными задачи вводится также и программа ее решения.

Точное определение алгоритма как машины Тьюринга позволяет получить ответ на вопрос об алгоритмической разрешимости того или иного круга задач. На вопрос теории алгоритмов, существует ли машина Тьюринга решающая данный класс задач, в ряде случаев дается отрицательный результат. Доказательство невозможности создания соответствующего алгоритма для некоторого класса задач позволяет избавиться от бесплодных попыток найти такой алгоритм. Поэтому при поиске алгоритма для решения некоторого класса задач необходимо производить проверку доказательства невозможности такого алгоритма.

Соседние файлы в папке TURIN