Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МАТЕМАТИЧЕСКАЯ ЛОГИКА И ТЕОРИЯ АЛГОРИТМОВ.doc
Скачиваний:
138
Добавлен:
20.05.2014
Размер:
1.13 Mб
Скачать

Блок-схемы алгоритмов.

Связи между шагами алгоритма можно изобразить в виде графа (блок-схемы) такого, как, например, следующий:

где вершинам соответствуют шаги (блоки), а дугам – переходы между шагами. Его вершины могут быть двух видов – операторы(из этих вершин выходит одно ребро) ипредикаты(или логические условия; из этих вершин выходят два ребра). Кроме того, выделяют операторы начала и конца алгоритма.

В подобных схемах шаги могут быть элементарными или могут представлять собой самостоятельные алгоритмы (блоки).

На блок-схеме хорошо видна разница между описанием алгоритма и процессом его реализации.

Описание – это граф; процесс реализации – это путь в графе. Различные пути в одном и том же графе возникают при различных данных, которые создают разные логические условия в точках разветвления.

Отсутствие сходимости алгоритма означает, что в процессе вычисления не появляются условий, ведущих к концу, и процесс идет по бесконечному пути (зацикливается).

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

Очевидно, что блок-схемы являются средством описания детерминизма алгоритма.

Замечания:

  1. На практике блок-схемы часть имеют предикаты (точки разветвления) не только двоичные, но и многозначные, важно лишь, чтобы верным был ровно один из возможных ответов.

  2. Блок схема вида:

где блок А1 вычисляют функцию f1(x), а исходными данными для А2 являются результаты А1, называется композицией алгоритмов А1 и А2 (то есть эта блок-схема задает алгоритм, вычисляющий f2(f1(x)), то есть композицию f1 и f2)

Машина Тьюринга. Машина Тьюринга т – название, закрепившееся за вычислительными абстрактными машинами некоторого точно охарактеризованного типа.

Содержательное понятие машины.

Машину Тьюринга Т=<A, Q, q0, qz, > удобно представлять в виде автоматически функционирующего устройства, способного находиться в конечном числе внутренних состояний Q=q1…qn-2, qz и снабженного бесконечной внешней памятью – лентой. Среди состояний Q имеются два выделенных – начальное q1 и заключительное qz. Лента разделена на ячейки и потенциально бесконечна в обе стороны. В каждой ячейке ленты может быть записана любая из букв внешнего алфавита А=a0, a1…am (a0 – пустая буква, то есть считается, что в пустой ячейке записана a0). Функционирование машины обуславливает программа =qj ai  qk aL dt.

Схема такого устройства как совокупность стуктурно-связанных внутренней и внешней памяти, блока управления и управляемой головки

a0

a2

a5

ai

a9

a3

a5

a0

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

На схеме:

а) Блок управления производит преобразование пары (цепочки из двух символов) qj aiQ*A в тройку qk aL dt Q*A*D. Это означает, что если машина находится в состоянии qj (то есть вычисляет инструкцию qj), а управляемая головка считывает символ ai из обозреваемой ячейки внешней памяти, то блок управления вырабатывает команду qk aL dt, согласно которой:

  1. машина переходит в состояние qk (допускается k=j);

  2. в обозреваемую ячейку ленты вместо символа ai записывается символ aL (допускается i =L);

  3. управляющая головка (лента) перемещается на один шаг или остается на прежнем месте (dЛ – перемещение на один шаг влево, dп – перемещение на один шаг вправо, dн – оставаться на месте; dЛ, dп, dнD).

Итак, если блок управления осуществляет функциональное отображение:

Гf: Q*A Q*A*D,

где qj aiQ*A, qk aL dt Q*A*D, ai, aLА, qj, qkQ, dt D= dЛ, dп, dн, то машину Тьюринга будем называть детерминированной и всюду определенной.

б) Данные (исходные, промежуточные и окончательные) машины есть цепочки символов (слова) в алфавите А, которые записываются на бесконечной ленте внешней памяти (каждый символ слова в отдельной ячейке) (А=Аисх АпромАрез, а0Аисх, а0Арез).

в) Элементарные шаги в рассматриваемой машине следующие:

  1. изменение состояния машины и содержимого ячейки, обозреваемой управляемой головкой;

  2. перемещение управляемой головки на один шаг влево ( вправо);

г)Детерминированность работы машины обуславливается программой ее работы , то есть совокупностью выражений (j, i) (j=0,n; i= 0,n), каждое из которых имеет один из следующих видов:

qj ai  qk aL dн

qj ai  qk aL dЛ

qj ai  qk aL dп,

где 0  k n, 0 L m.

В дальнейшем программу будем записывать в табличном виде:

A \ Q

q0

q1

qj

qz

a0

a1

ai

qk aL dt

am

или диаграммой переходов вида:

д) Начальная атрибуция (конфигурация машины) характеризуется следующим образом:

  1. на ленте записано слово А*;

  2. управляемая головка указывает на ячейку ленты, в которой записан самый левый символ цепочки (слова),

  3. машина находится в начальном состоянии q0  Q;

Пример начальной конфигурации машины:

a0

a0

a2

a4

a7

a3

a9

a0

a0

a0

Символически эта конфигурация записывается как машинное слово q0= q0 a2 a4 a7 a3 a9= k0.

e) Текущая (промежуточная) ситуация (конфигурация) kp есть машинное слова вида 1 qj ai2, где 1 и 2 – цепочки символов алфавита А.

ж) Заключительная ситуация (конфигурация) kz имеет вид qz, где qz – заключительное состояние машины, qzQ, - результат работы машины из исходной ситуации по заданной программе, А*.

Очевидно, что последовательность конфигураций k0 k1 k2… однозначно определяется исходной конфигурацией k0 и полностью описывает работу машины Тьюринга Т= =<A, Q, q0, qz, >, начиная с k0= q0 (А*исх, АисхА). Эта последовательность конечна, если в ней встретится заключительная конфигурация kz= qz, и бесконечна в противном случае.

Пример: