Вы находитесь на странице: 1из 12

АЛГОРИТМЫ

Основания теории алгоритмов


Понятие алгоритма является основным при составлении любого вида программ для
ЭВМ. Современное значение слова «алгоритм» сходно со значением таких слов, как
«рецепт», «процесс», «метод», «способ», «процедура», «программа».
Следует особо отметить, что понятие алгоритма, как и понятия множества,
натурального числа – фундаментально и не может быть выражено через другие, например,
теоретико-множественные, и, следовательно, должно рассматриваться как
н е о п р е д е л я е м о е . Или, иными словами, интуитивно понимаемое. Но в этом разделе
попытаемся дать различные эквивалентные определения этого фундаментального понятия.
Определение. Алгоритм – это эффективная вычислительная процедура.
Определение. Алгоритм – точное предписание, которое задает вычислительный
процесс, начинающийся с произвольного (но выбранного из фиксированной для данного
алгоритма совокупности) исходного данного и направленный на получение полностью
определяемого этим исходным данным результата.
Определение. Алгоритм – это определенное на некотором языке конечное предписание
(способ, рецепт), задающее дискретную последовательность исполнимых элементарных
операций для решения проблемы. Процесс выполнения предписания состоит из отдельных
шагов, на каждом из которых выполняется одна очередная операция.
Однако в слове «алгоритм» имеется дополнительный смысловой оттенок. Алгоритм –
это не просто свод конечного числа правил, задающих последовательность выполнения
операций при решении той или иной специфической задачи, но он имеет пять важных
особенностей. Перечислим их.
1. К о н е ч н о с т ь ( ф и н и т н о с т ь ).
Алгоритм должен заканчиваться после к о н е ч н о г о ч и с л а ш а г о в . Однако, число
шагов может оказаться сколь угодно большим.
Замечание. Процедуру, обладающую всеми характеристиками алгоритма, за
исключением конечности, можно назвать вычислительным методом.
2. Определенность.
Каждый шаг алгоритма должен быть точно определен. Действия, которые необходимо
произвести, должны быть строго и недвусмысленно определены в каждом возможном
случае. Для преодоления этой трудности для описания алгоритмов разработаны формально
определенные языки программирования или машинные языки, в которых каждое
утверждение имеет абсолютно точный смысл.
Определение Запись вычислительного метода на языке ЭВМ называется программой.
3. Ввод.
Алгоритм имеет некоторое (быть может, равное нулю) число входных данных, т.е.
величин, заданных ему до начала работы. Эти данные берутся из некоего конкретного
множества объектов.
4. Вывод.
Алгоритм имеет одну или несколько выходных величин, имеющих вполне
определенные отношения ко входным данным.
5. Эффективность.
От алгоритма требуется, чтобы он был эффективным. Это означает, что все операции,
которые необходимо произвести в алгоритме должны быть достаточно простыми, чтобы их в
принципе можно было выполнить точно и за конечный отрезок времени с помощью
карандаша и бумаги.
Обычно на практике нужны не просто алгоритмы, а хорошие алгоритмы в некотором
определенном «эстетическом» смысле. Одна из характеристик качественности алгоритма –
это в р е м я , н е о б х о д и м о е д л я е г о в ы п о л н е н и я .
Эту характеристику можно представить числом, указывающим, с к о л ь к о р а з
выполняется каждый шаг алгоритма.
Имеются и другие существенные характеристики, например, приспособляемость
алгоритма к вычислительным машинам, его простота, изящество и т.п.
Иногда для решения одной и той же задачи имеется несколько алгоритмов, и
необходимо решить, какой из них лучше.
Эта, имеющая первостепенное значение область – область а н а л и з а а л г о р и т м о в :
по заданному алгоритму требуется найти его рабочие характеристики. Основной момент
состоит в том, что берется определенный алгоритм и устанавливаются его средние свойства.
Иногда интересуются вопросом о том, является ли алгоритм в некотором смысле
«оптимальным».
Итак, теперь попытаемся определить, что же такое теория алгоритмов. И здесь не
ограничимся единым определением.
Определение Т е о р и я а л г о р и т м о в – это область, где речь идет о существовании
или не существовании эффективных алгоритмов для подсчета тех или иных величин.
Определение О б щ а я т е о р и я а л г о р и т м о в включает в себя два аспекта: 1)
дескриптивная сторона, где рассматриваются вопросы о наличии или отсутствии
алгоритмов и исчислений, приводящих к заданной цели (без оценки затрат на ее
достижение), способы задания этих алгоритмов и исчислений; 2) метрическая сторона, где
оценивается сложность процессов вычисления и порождения.
Определим формально вычислительный метод как четверку объектов  Q, J , , f  ,
где Q - множество, содержащее подмножества J и  : Q  J ,  ; f – функция из Q в
себя. f – оставляет неподвижными точки множества  , т.е. f (q)  q q   .
Итак, Q, J , , f - соответственно, 1) состояния вычислений, 2) ввод, 3) вывод, 4)
правило вычислений.
Каждый ввод x  J определяет вычисляемую последовательность x0 , x1 , x2 ,...,
следующим образом:
x0  x и x k 1  f ( k ) для k  0 (1)
Определение Говорят, что вычисляемая последовательность з а к а н ч и в а е т с я в k
шагов, если k – наименьше целое число, для которого xk   , и в этом случае говорят, что
она дает вывод x k для заданного x.
Замечание. Если xk   , то и xk 1   , т.к. xk 1  xk .
Некоторые вычислимые последовательности никогда заканчиваются.
И, с этих позиций, алгоритм – это в ы ч и с л и т е л ь н ы й м е т о д , заканчивающийся в
конечное число шагов x  J .
Приведенная выше формализация понятия алгоритма не включает в себя ограничения
«эффективности». Q может быть множеством бесконечных последовательностей, которые
невозможно вычислить с помощью карандаша и бумаги, или f может содержать операции,
которые нельзя осуществить. Если ограничить понятие алгоритма таким образом, чтобы
алгоритмы содержали т о л ь к о э л е м е н т а р н ы е о п е р а ц и и , необходимо наложить
ограничения на Q, J , , f следующим образом. Пусть A – конечное множество букв и A* -
множество всех слов в алфавите A (т.е. множество всех упорядоченных последовательностей
x1 , x2 ,..., xn , где n  0 , а x j - буквы алфавита A, 1  j  n ).
Идея состоит в том, чтобы закодировать состояния вычисления таким образом, чтобы
они представлялись словами из A*. Пусть N – неотрицательное целое число. Элементы
множества Q – пары   , j  , где  - слово из A*, j - целое число, 0  j  N ; J  Q ,
отвечающее j=0 и  - подмножество, отвечающее j=N. Если  и  - слова из A*, то
будем говорить, что слово  входит в слово  , если  имеет вид  , с некоторыми
словами  и  . Теперь определим функцию f с помощью слов  j , j и целых чисел a j , b j
; 0  j  N следующим образом:
f ( , j )   , a j  , если  j не входит в  ;
f ( , j )   j , j  ,b j  , если  - наикратчайшее слово, для которого    j  (2)
f ( , N )    , N 
Этот вычислительный метод – «эффективный». Опыт же показывает, что он и
достаточно мощный, т.к. в таком виде удается представить любую задачу, которую в
состоянии решить вручную на бумаге. Имеется много других по существу эквивалентных
способов формализовать понятие эффективного вычислительного метода (например,
используя машину Тьюринга).
Как уже в этом разделе выше было сказано, что для общего понятия алгоритм точного
определения до недавнего времени не имели, то выработка этого определения является
одной из важнейших задач современной математики.
Задача формулируется следующим образом. Требуется дать определение понятия
алгоритм, которое было бы совершенным не только с точки зрения формальной точности, но
и с точки зрения фактического соответствия сущности определяемого понятия. Все
исследователи исходили из разных технических и логических соображений. В результате
было выработано несколько определений понятия алгоритм. Все эти определения
равносильны между собой, следовательно, определяют одно и то же понятие – это и есть
современное точное понятие алгоритм, что свидетельствует об удачности выработанного
определения.
С точки зрения м а ш и н н о й м а т е м а т и к и особый интерес представляет то
определение алгоритма, в котором сущность этого понятия раскрывается при помощи
рассмотрения процессов, осуществляемых в машине. Для такого строгого математического
определения надо изобразить механизм работы машины в виде некоторой стандартной
схемы, максимально простой по своей логической структуре, но вместе с тем настолько
точной, чтобы она могла быть предметом математического исследования. А.Тьюринг
предложил общую и простую концепцию вычислительной машины. В своих построениях он
исходил из общей идеи уподобления работы машины работе вычислителя, оперирующего в
соответствии с некоторым строгим предписанием.
Отметим некоторые особенности машины Тьюринга в сравнении с ЭВМ. Они
заключаются в следующем.
1. В машине Тьюринга расчленение процесса на простые элементарные операции
доведено до предела. Это удлиняет процесс, но логическая структура процесса
упрощается и приобретает удобный для исследований стандартный вид.
2. В машине Тьюринга часть памяти (так называемая, внешняя память)
изображается в виде неограниченной с обеих сторон ленты, разбитой на ячейки. В
реальной машине не может быть бесконечной памяти (бесконечной ленты); в этом
смысле, машина Тьюринга представляет собой идеализированную схему,
отображающую потенциальную возможность увеличения объема памяти.

Определение, описание машины Тьюринга


1. Машина располагает конечным числом знаков (символов) s1 , s 2 ,..., s k ,
образующих так называемый, в н е ш н и й а л ф а в и т , в котором кодируются сведения,
подаваемые в машину, и те, которые вырабатываются в ней. Для общности принимают, что
среди знаков внешнего алфавита имеется п у с т о й з н а к (пусть для определенности
обозначается через s1 ), посылка которого (вписывание) в какую-либо ячейку ленты
(памяти) стирает тот знак, который в ней ранее находился, и оставляет ее пустой. Можно
сказать, что пустая ячейка хранит пустой знак. На любой стадии работы машины в каждой
пустой ячейке может храниться не более одного знака.
Каждое сведение, хранящееся на ленте, изображается конечным набором знаков
внешнего алфавита, отличных от пустого знака и хранящихся по одному в некоторых
ячейках ленты.
К началу работы машины на ленту подается начальное сведение (начальная
информация). Работа машины складывается из следующих один за другим тактов, по ходу
которых происходит преобразование начальной информации в промежуточные информации
(к концу каждого такта совокупность знаков, хранящихся на ленте, образует
соответствующую промежуточную информацию). В качестве начальной информации на
ленту можно подавать любую конечную систему знаков внешнего алфавита (любое слово в
этом алфавите), расставленную произвольным образом по ячейкам.
В зависимости от того, какая была подана начальная информация U, возможны 2
случая:
a) После к о н е ч н о г о ч и с л а т а к т о в машина останавливается, подавая
с и г н а л о б о с т а н о в к е ; при этом на ленте оказывается некоторая
информация B.
Определение Говорят, что машина применима к начальной информации U и
перерабатывает ее в результирующую информацию B .
b) Остановка и сигнал об остановке никогда не наступают. В этом случае говорят,
что машина не применима к начальной информации U.
Определение Говорят, что машина решает некоторый класс задач, если машина
п р и м е н и м а в с е г д а к информации, изображающей в определенном коде условия любой
отдельной задачи этого типа и перерабатывает ее в информацию, изображающую в том же
коде решение этой задачи.
2. Система трехадресных команд, принятая в машинах, обусловлена наличием
элементарных операций, в которых участвует сразу содержимое трех ячеек памяти. В
некоторых машинах используется система одноадресных команд, связанная с тем, что в
каждом такте участвует лишь одна ячейка памяти (о б о з р е в а е м а я я ч е й к а на данном
этапе). Например, трехадресная команда на сложение чисел из ячеек , с отправкой
результата в ячейку  может быть заменена тремя последовательными командами: 1) вызов
(в сумматор) числа из ячейки ; 2) вызов числа из ячейки ; 3) отправка результата в ячейку
.
В машине Тьюринга система элементарных операций и одноадресных команд еще
более упрощены. Здесь на каждом отдельном такте команда предписывает лишь замену
единственного знака si , хранящегося в обозреваемой ячейке, каким-либо другим знаком s j .
При j  i это означает, что содержимое обозреваемой ячейки не изменяется; при j  1 это
означает, что если в обозреваемой ячейке хранился какой-либо знак, то он стирается
(уничтожается). Дальнейшее упрощение заключается в том, что при переходе машины от
одного такта к непосредственно следующему такту адрес обозреваемой ячейки может
изменяться не более, чем на одну единицу, т.е. обозревается соседняя слева или соседняя
справа ячейка, или же обозревается та же ячейка, что и в предыдущем такте.
Идея упрощения состоит также в том, что необходимое для процесса содержимое какой-либо
отдаленной ячейки отыскивается посредством постепенной проверки всех ячеек подряд до
тех пор, пока не будет обнаружена нужная ячейка. Это удлиняет процесс, но возникает
удобство: в командах программы вместо произвольных адресов обозреваемых ячеек можно
ограничиться всего лишь трех стандартных адресов, которые обозначаются специальными
знаками: П – обозревать соседнюю справа ячейку, Л - обозревать соседнюю слева ячейку, Н
– продолжать обозревать ту же ячейку.
3. Для обработки числовой информации, хранящейся в памяти, ЭВМ имеет
арифметический блок L, который может пребывать в одном из конечного числа состояний:
складывающее, вычитающее и т.д. Для осуществления какой-либо операции в блок подаются
по определенным каналам не только числа, но и сигналы, настраивающие блок на
соответствующую операцию, т.е. на соответствующее состояние. В машине Тьюринга
обработка информации происходит в л о г и ч е с к о м б л о к е , который может пребывать в
одном из конечного числа состояний.
Пусть q1 , q 2 ,..., qm - специальные знаки, введенные для обозначения этих состояний.
Блок имеет два входных канала; по одному из них на каждой стадии работы машины (в
каждом такте) поступает знак из обозреваемой ячейки, а по другому – знак ql того
состояния, которое предписывается блоку на данный такт. По выходному каналу блок
посылает в обозреваемую ячейку соответствующий, «переработанный» знак s j ,
являющийся однозначной функцией от сигналов s j , ql , поданных на вход.
Команды, обусловливающие срабатывание машины на каждом отдельном такте, имеют
вид: Пql , Лql , Нql ( l  1,2,..., m ), где первый знак заменяет адрес обозреваемой ячейки, а
второй предписывает логическому блоку надлежащее состояние.
Таким образом, знаки П , Л , Н , q1 ,..., q m образуют внутренний алфавит машины.
Особенность машины Тьюринга состоит в том, что на логический блок возлагается
выработка на каждом данном такте той команды, которая будет подаваться в блок
управления к началу следующего такта. Таким образом, логический блок имеет, кроме
канала выдачи знака s j , еще два канала для выдачи двух знаков очередной команды.
Выходная тройка знаков s j , P, ql зависит исключительно от того, какая входная пара
знаков si , qn была подана в том же такте на входы блока. Это означает, что логический блок
реализует функцию, сопоставляющую каждой паре знаков si , qn (всего таких пар km )
тройку знаков s j , P, ql . Эту функцию, которую называют логической функцией машины,
удобно изображать в виде таблицы, столбцы которой занумерованы знаками состояний, а
строки – знаками внешнего алфавита. В каждой ячейки таблицы записана соответствующая
выходная тройка знаков. Таблицу называют функциональной схемой машины.

Теперь рассмотрим «переход от наглядных представлений об алгоритмах»


Колмогорова.
1) Алгоритм Г, примененный ко всякому «условию» («начальному состоянию») А из
множества o («области применимости» алгоритма Г), дает «решение» («заключительное
состояние») B.
2) Алгоритмический процесс расчленяется на отдельные шаги, заранее ограниченной
сложности; каждый шаг состоит в «непосредственной переработке» возникшего к этому
шагу состояния S в системе S    Г (S ) .
3) Процесс переработки A 0  A в A1   Г ( A 0 ), A1 в A 2   Г ( A1 ) и т.д. продолжается
до тех пор, пока либо не произойдет безрезультатная остановка (если оператор  Г не
определен для получившегося состояния), либо не появится сигнал о получении «решения».
При этом не исключается возможность неограниченного продолжения процесса (никогда не
появится сигнал о решении).
4) Непосредственная переработка S в S    Г (S ) производится лишь на основании
информации о виде заранее ограниченной «активной части» состояния S и затрагивает лишь
эту «активную часть».
Формулировка Колмогорова содержит две идеи: а) идея итеративности
алгоритмического процесса. Предлагается общая схема детерминированного преобразования
одних объектов в другие – согласно которой, любое такое преобразование есть результат
многократного применения одной и той же, фиксированной для данного преобразования,
простой операции (оператора) непосредственной переработки. (сравнить с описанным ниже
НАМ); б) в п.4) локальность каждого отдельного шага – есть общее понятие локальной
операции.
Все вычислительные модели с локальным преобразованием информации могут быть
описаны в колмогоровских терминах. Это м о д е л и к о л м о г о р о в с к о г о т и п а .
Например, модели Поста и Тьюринга. С другой стороны, модели с нелокальными
шагами – Нормальные алгорифмы Маркова или машины с произвольным доступом к памяти
(Ахо и Ульман) требуют предварительного расщепления каждого своего шага на локальные
шаги (локальные операции) и, следовательно, не являются моделями колмогоровского типа.
Итак, Машина Колмогорова – это вычислительная модель, она дает схему,
рассматриваемую как формализацию точного понятия алгоритма. При работе с моделями с
нелокальными преобразованиями информации необходимо разбить нелокальные шаги на
локальные.

Прежде, чем перейти к рассмотрению Нормальных алгорифмов Маркова, попытаемся


определить, что же такое конструктивный объект и конструктивный процесс. Для начала
приведем примеры конструктивных объектов. А уж затем разберем подробнее как черты
математических процедур, так и два основных подхода к построению математики вообще, -
конструктивный и аксиоматический, их соотношение. Но это будет рассмотрено в качестве
дополнительной информации.
Примерами к о н с т р у к т и в н ы х о б ъ е к т о в могут служить: слова, деревья; дано –
алфавит Б, слова в Б. Слова – это основные объекты при построении теории алгоритмов
(нормальных алгоритмов Маркова). Пусть (Б,k) – деревья, k  N . (Б,k) – дерево-дерево:
одна из вершин – корень, на всех ребрах определена ориентация – в каждую вершину из
корня ведет ориентированный путь. Каждая вершина помечена одной из букв алфавита Б и
для каждой вершины исходящие из нее ребра помечены различными числами из множества
1,..., k  (число исходящих ребер при данной вершине  k ). Каждое Б-слово можно считать
(Б,1)-деревом с корнем в первой букве слова.
Определение Конечный объект – это объект, о котором мыслят, не привлекая
абстракции а к т у а л ь н о й б е с к о н е ч н о с т и , который может быть предъявлен целиком.
 Конечное множество объектов – конечный объект. Например, конечный граф.
 Некоторые конечные объекты являются конструктивными объектами.
 Каждый конструктивный объект состоит из конечного множества элементов,
принадлежащих к одному из конечного числа типов и связанных некоторыми
отношениями из конечного числа типов.
 Конструктивный объект имеет дискретное строение и составлен из отдельных
элементов
 Задана внутренняя система координат, т.е. можно указать «адрес» отдельного
элемента конструктивного объекта.
 Некоторый элемент выделен как начальный (первая буква, корень дерева и т.д.).
 Наличие у конструктивного объекта внутренней системы координат дает
возможность его ввода в вычислительное устройство.
 Алгоритмы требуют конструктивных объектов и не могут оперировать
непосредственно с конечными объектами.
Л о к а л ь н ы е с в о й с т в а и д е й с т в и я . В конструктивном объекте
выделяется а к т и в н а я ч а с т ь (Колмогоров), состоящая из начального элемента и всех
близких ему элементов, т.е. на объекте задана метрика. Следовательно, можно говорить о
расстоянии между элементами. Активная часть состоит из всех элементов (и связей),
которые удалены от начального не более, чем на фиксированное число – показатель
локальности (радиус активной части). Так, для слова активная часть – начало слова.
Длина начала зависит от выбранного показателя локальности – радиуса активной части.
Дадим следующую и н т е р п р е т а ц и ю : активная часть – область конструктивного объекта,
обозреваемая устройством, находящемся в начальном элементе. В данном радиусе возможно
конечное число активных частей. Следовательно, локальное свойство можно задать
конечным перечнем удовлетворяющих ему активных частей. Таким образом, локальное
действие – это замена активной части объекта на некоторые другие.
Теперь определим формально локальные свойства и действия.
1. Фиксируем алфавит Б и k  N ; локальное свойство и действие в ансамбле (Б,k)–
комплексов r  N - это показатель локальности.
2. r-о к р е с т н о с т ь (Б,k)–комплекса - это (Б,k)–комплекс, состоящий из всех вершин
исходного комплекса, достижимых из начальной по ориентированным путям длины
 r , и всех соединяющих эти вершины ребер.
3. r-л о к а л ь н о е с в о й с т в о (Б,k)–комплексов – это любое свойство (Б,k)–
комплексов, зависящее только от их r-окрестностей.
Дополнительные сведения. Отметим х а р а к т е р н ы е черты любой
математической процедуры:
1) наличие переменных;
Пример. переменные t и s в квадратичном законе свободного падения, открытого Галилеем:
расстояние s, проходимое в пустоте свободно падающим телом, пропорционально квадрату
времени t, истекшего с начала падения s  1 ( gt 2 ) ,где g = const, допустимые значения
2
которых принадлежат некоторой области (области действительных чисел), вполне
обозримой, т.к. своим происхождением она обязана нашему построению;
2) представление этих переменных с помощью знаков;
3) наличие функций a priori построенных отображений области значений одной
переменной s. Время - независимая переменная.
При изучении функции необходимо следить за тем, чтобы независимая переменная
побегала всю область своих допустимых значений. Прежде чем подвергать проверке
правильность любого предположения относительно зависимости между теми или иными
величинами в природе, возможно мысленно, до сравнения с экспериментальными данными,
проверять, покрывает ли оно всю область допустимых значений независимых переменных.
Иногда неприемлемость предполагаемой зависимости сразу проявляется в некоторых
простых предельных случаях. Лейбниц, сформулировав принцип непрерывности,
рассматривал покой не как противоположность движения, а как его предельный случай.
Большинство переменных, используемых при анализе явлений природы -
непрерывные (например, время). Однако, математическое понятие переменной
распространяется на дискретные случаи. Важный пример дискретной переменной -
последовательность натуральных, или целых положительных, чисел 1,2,3,... Так, число
делителей любого целого числа n есть функция аргумента n. В логике Аристотеля переход
от единичного к общему совершается путем выявления у данного объекта определенных
абстрактных свойств и отбрасывания остальных, так что два объекта подпадают под одно и
то же понятие или принадлежат к одному и тому же роду, если оба они обладают
выделенными свойствами (features). Такого рода описательная классификация (описание
растений в ботанике, животных в зоологии) ориентирована на реально существующие
объекты. Т.о., Аристотель мыслит в терминах субстанции и акциденции, в то время как идея
функции господствует при формировании математических понятий (concepts). Возьмем
понятие (notion) эллипса. Любой эллипс на плоскости xy есть множество E точек (x,y),
заданное квадратным уравнением:
ax2 + 2bxy + cy2 = 1, коэффициенты a,b,c удовлетворяют усл-ям: a>0, c>0, ac 2 - b2 > 0.
Множество E зависит от a,b,c; получаем некоторую ф-ию E(a,b,c), порождающую
конкретный эллипс, если переменным коэффициентам a,b,c придать определенные значения.
Переход от конкретного эллипса к соответствующему общему понятию не требует
отбрасывания к.-л. специфических различий, а совершается благодаря тому, что некоторые
характеристики (представлены коэффициентами) превращаются в переменные, область
значений которых a priori обозрима (задана приведенными неравенствами). Т.о., общее
понятие распространяется скорее на все возможные, чем на все актуально существующие
характеристики.
Слова - обладают привычным значением лишь при известных ограниченных
обстоятельствах. Невозможно применять математику, пока слова затемняют реальность.
2 шаг математика: интуитивная картинка сменяется знаковой конструкцией
(абстракция). Геомерическими и символьными конструкциями математика стряхивает оковы
языка. Современная математика в сфере интеллектуального мира более эффективна, чем
современные языки и даже метаязыка.
1. З н а к о в ы е к о н с т р у к ц и и . Самый простой и глубокий пример - натуральные
(целые положительные) числа, при помощи которых пересчитываем предметы. Знаки,
которые используем - штрихи, наносимые один за другим. Пересчитываемые предметы
могут исчезнуть, но запись об их числе сохраняется. С помощью конструктивной процедуры
можно определить, какие из двух чисел, т.о. изображенных, больше. Решая вопрос о том,
какие числа могут встретиться при подсчете реальных предметов, порождаем открытую
последовательность всех возможных чисел; ее первый член равен 1 (или), а каждый
последующий получается прибавлением к любому уже построенному символу числа n еще
одного штриха, что и позволяет совершить переход к следующему числу n'. Существующее
при этом проектируется на фундамент возможного, точнее, на многообразие возможного,
развивающегося путем итерации и простирающееся в бесконечность. Какое бы число n ни
было задано, всегда можно перейти от него к следующему числу n'. "Последнего числа не
существует". Эта интуиция возможности "всегда увеличить на единицу" - открытой счетной
бесконечности - лежит в основе всей математики; она дает пример так называемой
априорной обозримости области измерения.
Порождение с помощью полной индукции.
1) 0 обладает (или 1) этим свойством;
2) если n - любое число, обладающее свойством v, то следующее за ним число n'-
обладает свойством v.
Концепция пространства, аналогична представлениям о натуральных числах (N),
основана на конструктивном задании всех возможных местоположений (places). Анализируя
континуум (каковым является пространство), применим более общий подход, чем измерение
координат; примем топологическую точку зрения, согласно которой два континуума,
получающиеся один из другого путем непрерывной деформации, совпадают. Знаки,
позволяющие локализовать точки на одномерном континууме прямой, - действительные
числа (R). Анализируя природу, расчленяем явления на простые элементы, каждый из
которых изменяется в определенном диапазоне возможностей, обозримом a priori, т.к.
строятся комбинаторным образом из знакового материала. Многообразие точек
пространства-времени является одним из конструктивных элементов природы.
2 . И з о м о р ф и з м Вопрос о пригодности двух схем S0,S0',S0'',... и T0,T0',T0'',... для
описания одного и того же многообразия может быть решен математически. Для этого
необходимо и достаточно, чтобы существовали непрерывные взаимнооднозначные
преобразования, отображающие друг на друга два топологических пространства {S 0} и {T0} -
условие из которого выводится соотношение между схемами S0 и T0, называемое
изоморфизмом (связь между данным континуумом и его знаковой системой несет в себе
понятие изоморфизма). Изоморфные схемы - отличаются лишь второстепенными деталями.
Изоморфные картины приводят к одним и тем же результатам во всем, что касается
наблюдаемых фактов. Это принцип относительности в его наиболее общей форме.
Здесь рассматривался конструктивный характер математики. С ней соперничает
неконструктивный аксиоматический метод. Его классический прототип - аксиомы
геометрии Евклида; был использован Архимедом, впоследствии Галилеем и Гюйгенсом при
создании науки механики. При аксиоматическом методе все понятия определяются через
несколько неопределяемых основных утверждений - аксиом, относящихся к основным
понятиям. Утверждалось априорная очевидность аксиом. Дедукция происходит в
соответствии с принципами формальной логики, в частности, следует схеме
силлогистического вывода. Такое аксиоматическое изложение долго считалось идеалом
любой науки. Спиноза предпринял попытку применить его к этике. Для математика
безразличен смысл слов, выражающих основные понятия; любая их подходящая
интерпретация, т.е. такая, при которой аксиомы становятся истинами, одинаково пригодна, и
все суждения аксиоматизируемой дисциплины при такой интерпретации сохраняют свою
силу, так как являются логическими следствиями из аксиом. [n-мерная Евклидова геометрия
допускает интерпретацию, в которой точкам соответствуют распределения электрических
токов в цепи из ветвей, соединенных в определенных узлах]. Математика рассматривает
отношения в гипотетически-дедуктивном плане, не связывая себя конкретной
интерпретацией. Ее интересует не истинность аксиом, а их непротиворечивость.
Противоречивость a priori лишает возможности найти подходящую интерпретацию. Влияние
аксиоматического подхода распространилось на все ветви математического дерева. В основе
топологии должен лежать полный перечень аксиом, определяющих топологическую схему.
Простейшее и фундаментальное понятие, задаваемое аксиоматически - понятие группы.
Алгебра (с понятиями поля, кольца и т.д.) построена аксиоматически. Эти понятия привели
к тому, что с о в р е м е н н о е м а т е м а т и ч е с к о е и с с л е д о в а н и е п р е д с т а в л я е т
с о б о й с м е с ь к о н с т р у к т и в н о й и а к с и о м а т и ч е с к о й п р о ц е д у р . Если принять
один из двух подходов в качестве подлинного математического образа мышления, а другому
отвести вспомогательную роль; и если такой выбор - в пользу конструкции или аксиомы -
произведен, то принятую точку зрения действительно удается развить последовательно и до
конца.
I. Математика - прежде всего, конструкция. Используемые системы аксиом лишь
устанавливают границы области значений тех переменных, которые участвуют в
конструкции. То есть аксиомы служат для указания границ области значений переменных в
явно построенных функциональных соотношениях.
II. Конструкция подчинена аксиомам и дедукции. Математика - система аксиом,
выбор которых зависит от соглашения и выводимых из них заключений. В полностью
аксиоматизированной математике конструкции отводится второстепенная роль: к ней
прибегают при построении примеров (мост между чистой теорией и ее приложениями).
Иногда существует лишь один пример, потому что аксиомы определяют некий объект
однозначно или с точностью до изоморфизмов; здесь необходимость перехода от
аксиоматической структуры к некоторой явной конструкции настоятельна. Хотя
аксиоматическая система не предполагает построения математических объектов, она,
комбинируя и неоднократно используя логические правила, строит математические
суждения. Извлечение следствий из заданных посылок происходит по определенным
логическим правилам, которые со времен Аристотеля, пытались свести в единый полный
перечень. Таким образом, на уровне суждений аксиоматический метод - конструктивизм.
Давид Гильберт довел аксиоматический метод до состояния, когда суждения математики,
включая аксиомы, превратились в формулы. Все свелось к выводу из аксиом формул по
правилам, не учитывающим смысла формул.
3. Вопрос о непротиворечивости выходит на первый план; расхождение между явной
конструкцией и неявным аксиоматическим определением затрагивает самые основы
математики. Конструктивный опыт перестает подкреплять принципы аристотелевой логики,
когда эти принципы применяются к экзистенциональным или общим суждениям,
относящимся к бесконечным областям, таким как последовательность целых чисел или
континуум точек. Если принять во внимание логику бесконечного, вряд ли удается
адекватно аксиоматизировать самые примитивные процессы, например, переход n  n' (от
целого числа n к следующему n'). Как показал К.Гедель, всегда найдутся конструктивно
очевидные арифметические суждения, не выводимые из аксиом, как бы их ни
формулировали, и в то же время аксиомы, безраздельно правящие всеми тонкостями
конструктивной бесконечности, выходят далеко за пределы того, что может быть
подтверждено опытом.

После всего, сказанного выше, дадим формальное описание Машины Тьюринга.


Пусть  ,  - машинные слова в  A, Q  , q  Q входит в  .
Говорят, что Машина Тьюринга M  A, Q, a0 , q0 , q1 , P переводит слово  в слово 
 M 
    , если выполняются следующие условия:
 

 
(1)  a0  1qa 2 & qa  rb  P, b  A     1rb 2   ;
(2)  
 1qb 2 & qb  rL  P     1rab 2  a  ; (осуществляется сдвиг  )
a0

(3)  a0

 1qa 2 & qa  rL  P    1ar 2  a0  ; (осуществляется сдвиг  )
Машина Тьюринга переводит слово  только в одно слово.
Если машинное слово  в  A, Q  не переводится машиной Тьюринга ни в какое
слово  , то  - тупиковое слово для машины Тьюринга.
Пусть  - машинное слово в B. Слово, полученное из  заменой всех вхождений b на
пустое слово, обозначается  b .
Пусть M  A, Q, a0 , q0 , q1 , P - машина Тьюринга и  ,  - слова в A \ {a0 } .
Говорят, что машина Тьюринга преобразует слово  в слово  ( M ( )   ) , если
существует последовательность  0 ,...,  n машинных слов в  A, Q  , удовлетворяющих
условиям:
(1)  0  q1 ;
(2)     n q0  a0 ;
M
(3)  i   i 1 , i  n .
Замечание. Если для  0 ,...,  n выполняются условия (1)-(3), то  n содержит
вхождение q0 , т.к.  - слово в A \ {a0 } .
Если машина Тьюринга не преобразует  ни в какое слово, то машина Тьюринга не
применима к  или, иными словами, M ( ) не определено;  n - тупиковое слово, q0   n .
Определение Говорят, что частичная функция f : X   , X   n - вычислимая по
Тьюрингу, если существует машина Тьюринга M  A, Q, a0 , q0 , q1 , P , для которой
выполняются условия:
(1) 0,1 A, a0  0, a0  1 ;
(2) машина Тьюринга применима к записи a  a  X ;
(3) M (a )  f ( a ) для a  X , M – машина Тьюринга, вычисляющая функцию f.

Нормальные алгорифмы Маркова (НАМ)

Предложим определение алгоритма – алгорифма, данного А.А.Марковым. «…


Алгорифм – предписание, однозначно определяющее ход некоторых конструктивных
процессов. Выполнение предписания осуществляет некоторый процесс. Иногда предписание
может потребовать окончания процесса. Алгорифм может определять множество процессов,
отличающихся друг от друга начальным состоянием системы. В частности, алгорифм
фиксирует одно начальное состояние, - имеем только один процесс. Состояния естественно
считать одинаковыми, если одинаковы соответствующие им слова. Требование
единственности процесса возможно лишь при применении абстракции отождествления к
состояниям системы и процессам в ней… Для формулировки алгорифма необходим его язык.
Требуем, чтобы в этом языке возможно было назвать любое состояние системы, с которой
имеет дело алгорифм. Состояние должно однозначно определяться своим названием.
Фиксирован язык с принадлежащим ему алфавитом; это буквы, выражения, слова, -
высказывания, названия, предписания.
С в о д и м рассмотрение алгорифмов к рассмотрению в е р б а л ь н ы х а л г о р и ф м о в ,
т.е. алгорифмов, работающих над словами в каком-нибудь данном алфавите.
Процесс работы вербального алгорифма в а л ф а в и т е A состоит в последовательном
порождении слов в алфавите A согласно сформулированному предписанию. Перед началом
этого процесса выбирается некоторое и с х о д н о е с л о в о в алфавите A. Процесс может
закончиться порождением некоторого слова, которое есть р е з у л ь т а т р а б о т ы
алгорифма над исходным с л о в о м . Или, иными словами: алгорифм
перерабатывает исходное слово в результат своей работы над ним. Алгорифм
применим к данному слову, если процесс его работы над этим словом заканчивается, т.е.
существует результат его работы над данным словом как исходным.».
!U(P) (1) – алгорифм U применим к слову P.
U:PQ (2) – алгорифм U перерабатывает слово P в слово Q.
Запишем закон единственности результата работы алгорифма:
(1) Если U:PQ, то если U:PR, то Q=R (графически равны).
(2) !U(P) тогда и только тогда, когда существует Q такое, что U:PQ.
Например, в нормальном алгорифме Маркова операция непосредственной переработки
задается списком пар слов A1 , B1 ,..., An , Bn ; применение операции к слову P
заключается в обнаружении того наименьшего i, для которого Ai имеет вхождение в P, и в
замене самого левого из вхождений на Bi.
Теперь попытаемся формализовать понятие нормального алгорифма Маркова.
Итак, пусть схема S в алфавите A – упорядоченный набор троек вида  , , ,.., , ,  , у которой
111 nnn

первые два элемента  i ,  i - слово в A, а элемент  i {0,1} .


Тогда нормальный алгорифм в A – это пары  A,   , состоящая из алфавита A и
схемы S в A.
Пусть  - слово в A, U  A, S  - нормальный алгорифм S  1,1,1 ,. .,n,n,n  .
Если ни одно из слов 1 ,..., n не является подсловом слова , то будем говорить, что
 н е п о д д а е т с я а л г о р и ф м у U.
Если i0 - наименьшее число, для которого  i0 является подсловом , и  - есть
результат замены первого вхождения  i0 в  на  i0 , то U просто переводит  в , если
 i0  0 (обозначается U  ) [Знак  и   A ].
Если нормальный алгорифм U просто или заключительно [- заключительно -- если
 i0  1 (U:  )] , то U переводит  в .
Говорят, что нормальный алгорифм U преобразует слово  в  (U ( )   ), если
существует последовательность  0 ,...,  k слов A, что выполняются следующие условия:
(а)  0   &  k   ;
(б) если k  0 , то  не поддаётся U;
(в) U просто переводит  i в  i 1 для i  k  1;
(г) если k  0 и не имеет места U:  k 1   k , то U:  k 1   k и  k не поддаётся
U;
Если последовательность  0 ,...,  k удовлетворяет условиям а)-в) и условию U:  k 1
  k (U:  k 1   k ), то U:  =  (U:  =  ).
Если нормальный алгорифм U переводит  в , то  однозначно определяется по U и
.
Если U не преобразует  ни в какое слово, то U не применим к слову .
Если U  A, S  не применим к  из A, то существует бесконечная
последовательность  0   ,  1 ,  2 ,...,  n ,..., для которой U:  i   i 1 , i   .
Сформулируем так называемый
Принцип нормализации. Любой алгоритм над конечным
алфавитом A эквивалентен относительно A некоторому нормальному
алгорифму над A.
Определение Говорят, что Частичная функция f : X   , X   n - нормально
вычислимая, если существует алгорифм U  A, S  , такой, что 0,1 A для любой n-ки
 m1 ,..., mn   имеем  m1 ,..., mn  X  U применим к записи  m1 ,..., mn  и U
( )  f ( ) для   X . В этом случае говорят, что U - нормальный алгорифм, вычисляющий
функцию f.
Принцип нормализации для частичных функций можно
сформулировать следующим образом: класс вычислимых частичных
функций совпадает с классом нормально вычислимых частичных
функций.