Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
3.1 Абстрактные автоматы и понятие алгоритма
Классические примеры абстрактных автоматов -— машина Тьюринга или алгоритмическая система Поста(Пост в отличие от Тьюринга не пользовался термином машина). Чтобы подчеркнуть единство подходов обоих авторов будем употреблять термин «машина». Машина Поста состоит из бесконечной ленты, разделенной на отдельные секции (ячейки), в которые можно либо заносить метку, либо считывать метку с помощью записывающей или считывающей головки (рис. 3.1). Лента (или головка) может передвигаться в левую или правую стороны на один шаг в зависимости от команды. Лента всегда останавливается так, чтобы напротив головки находилась секция (ячейка). Команды абстрактного автомата обычно включают в себя одно из следующих действий (на примере машины Поста); движение головки вправо, движение головки влево, запись метки, стирание метки, передача управления, остановка (стоп).
Каждая команда имеет свой номер i. Стрелка указывает направление движения. Второе число j, стоящее в конце команды, называется отсылкой.
Рис. 3.1.
У команды передачи управления могут быть две отсылки. Поэтому программа абстрактного автомата должна обладать двумя свойствами:
После передвижения ленты влево или вправо головка считывает состояние секции (пустая или записана метка). Информация о том, какие секции пусты, а какие отмечены, образует состояние ленты или состояние автомата. Таким образом, обладая указанным выше набором команд, автомат может осуществлять определенные действия, которые будут задаваться программой. Программой абстрактного автомата будем называть конечный непустой список команд.
Для «работы» абстрактного автомата необходимо задать программу и начальное состояние, т. е, положение головки и состояние ячеек ленты. После этого автомат приступает к выполнению команды номер 1. Все секции (ячейки) ленты нумеруются в определенном порядке. Порядок нумерации ячеек может совпадать с порядком, в котором расположены натуральные целые числа.
Каждая команда выполняется за один шаг, после чего начинается выполнение команды, номер которой указан в отсылке. Если эта команда имеет две отсылки, то команда с номером верхней отсылки выполняется, если под головкой находится пустая ячейка. Если же под головкой находится ячейка с меткой, то выполняется команда с номером нижней отсылки. Выполнение команды передачи управления не изменяет состояния автомата (ни одна из меток не уничтожается и не ставится, и лента остается неподвижной). При запуске автомата может возникнуть одна из следующих ситуаций:
автомат дошел до выполнения невыполнимой команды (запись метки в занятую ячейку, стирание метки в пустой ячейке); выполнение программы прекращается, автомат останавливается (назовем это состояние поломкой автомата), происходит безрезультатная остановка;
автомат дошел до команды стоп, программа считается выполненной, происходит результатная остановка;
автомат не доходит ни до результатной, ни до безрезультатной остановки, происходит бесконечная работа (автомат «завис»).
На таких элементарных автоматах, как машина Поста или машина Тьюринга, можно проводить различные действия над числами. Для этого необходимо представлять числа в абстрактном автомате.
Назовем последовательность секций (ячеек), содержащих метку, массивом, а число секций в нем — длиной массива. Условимся число n представлять на ленте массивом длины n + 1. Тогда этот массив будем называть автоматным изображением числа. Например, числа 6, 3 и 2 представлены соответственно на рис. 3.2. автоматными изображениями.
Рис. 3.2.автоматные изображения чисел
Представим себе, что на машине Поста надо прибавить 1 к любому числу.
Для этого требуется написать программу для машины Поста, обладающую следующим свойством: для любого числа n, записанного на ленте, программа должна дать результатную остановку с записью числа n+1 в произвольном месте ленты.
Программа должна выглядеть следующим образом:
В качестве начального состояния может быть выбрано любое состояние, при котором головка находится на одной из отмеченных ячеек ленты(т. е. над набором числа). Если же головка будет находиться в произвольном месте ленты, то программа усложнится. С помощью абстрактного автомата можно реализовать и другие преобразования числовой информации.
Можно составить программы для сложения, умножения, деления чисел. Есть ли ограничения на вычисления, производимые на машине Поста? Ответ на этот вопрос был сформулирован самим Э. Постом в следующем виде: «Задача па составление программы, приводящей от исходного данного к результирующему числу, тогда и только тогда имеет решение, когда имеется какой-нибудь общий способ, позволяющий по произвольному и одному данному выписать результирующее число».
Формулировка постулата Поста подводит к понятию алгоритма.
Английский математик А. М. Тьюринг в работе «О вычислимых числах с приложением
к проблеме разрешения» и американский математик Э, X, Пост в работе «Финитные комбинаторные процессы» почти одновременно в 1936 г. дали уточнения понятия «алгоритм» на примере гипотетической машины с бесконечной лентой. Машина Тьюринга отличается от
машины Поста тем, что ячейки заполняются не просто меткой, а символами из заданного множества, у машины Тьюринга есть логическое устройство.
Исторически термин «алгоритм» произошёл от фамилии узбекского математика IX века Мухаммада ибн Муса ал – Хорезми, который впервые сформулировал правила четырёх арифметических действий. Поначалу именно эти правила назывались алгоритмами, но затем термин получил дальнейшее развитие в первую очередь в математике.
Существует много определений термина «алгоритм». Например, по определению акад. Л, Н. Колмогорова, алгоритм или алгорифм — это всякая система вычислений, выполняемых по строго определенным правилам, которая после какого-либо числа шагов заведомо приводит к решению поставленной задачи.
В инженерной практике часто используется следующее определение: алгоритм — конечная совокупность точно сформулированных правил решения какой-то задачи.
3.2 Формы записи алгоритмов.
Словесная форма записи алгоритма.
Словесный способ записи алгоритмов представляет собой описание последовательных этапов обработки данных. Алгоритм задаётся в произвольном изложении на естественном языке.
Например, алгоритм нахождения наибольшего общего делителя(алгоритм Евклида) двух натуральных чисел можно записать следующим образом:
1) задать два числа;
2) если числа равны, то взять любое из них в качестве ответа и остановиться, в противном случае продолжить выполнение алгоритма;
3) определить большее из чисел;
4) заменить большее из чисел разностью большего и меньшего из чисел;
5) повторить алгоритм с шага 2.
По указаниям этого алгоритма можно найти наибольший общий делитель для любой пары целых чисел.
Словесный способ не имеет широкого распространения, так как такие описания не строго формализуемы, допускают неоднозначность толкования отдельных предписаний.
Дата публикования: 2014-11-04; Прочитано: 915 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!