ОСНОВЫ АЛГОРИТМИЗАЦИИ И ПРОГРАММИРОВАНИЯ

З.1 Понятие об алгоритмах и программах

Одним из фундаментальных понятий в информатике является понятие алгоритма.

Происхождение термина «алгоритм» связано с математикой. Эго слово происходит от Algorithmi - латинского написания имени Мухаммеда аль-Хорезми (787 - 850), выдающегося математика средневекового Востока. В своей книге «Об индийском счете» он сформулировал правила записи натуральных чисел с помощью арабских цифр и правила действий над ними столбиком. В XII в. был выполнен латинский перевод его математического трактата, из которого европейцы узнали о десятичной позиционной системе счисления и правилах арифметики многозначных чисел. Именно эти правила в то время называли алгоритмами.

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

Алгоритмом называли точное предписание, определяющее последовательность действий, обеспечивающую получение требуемого результата из исходных данных

Часто вычисления были громоздкими, а вычисления вручную трудоемкими, но суть самого вычислительного процесса оставалась очевидной. У математиков не возникала потребность в осознании и строгом определении понятия алгоритма, в его обобщении.

Но с развитием математики появлялись новые объекты, которыми приходилось оперировать: векторы, графы, матрицы, множества и др. А приведенное определение алгоритма нельзя считать строгим - не вполне ясно, что такое «точное предписание» или «последовательность действий, обеспечивающая получение требуемого результата».

Как определить для них однозначность или как установить конечность алгоритма, какие шаги считать элементарными?

В 1920-х задача точного определения понятия алгоритма стала одной из центральных проблем математики. В то время существовало две точки зрения на математические проблемы:

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

Идея о существовании алгоритмически неразрешимых проблем оказалась верной, но для того, чтобы ее обосновать, необходимо было дать точное определение алгоритма. Попытки выработать такое определение привели к возникновению теории алгоритмов, в которую вошли труды многих известных математиков - К. Гедель, К. Черч, С. Кличи, А. Тьюринг, Э. Пост, А. Марков, А. Колмогоров и многие другие.

Началом современной теории алгоритмов можно считать теорему о неполноте формальных логик, доказанную в 1931 г. немецким математиком Куртом Геделем Из этой теоремы следует, что в рамках любой формальной системы, сколь бы полной и непротиворечивой она ни казалась, имеются положения (соотношения, высказывания), истинность или ложность которых нельзя доказать формальными средствами этой системы, а для преодоления неразрешимой проблемы нужно расширять формальную систему, опираясь на содержательный, качественный анализ.

Результаты Гёделя были получены для арифметики, самого формального направления математики, и позволили предположить, ч то процесс логического, в том числе математического доказательства, нс сводится к использованию только дедуктивного метода, что в нем всегда присутствуют неформальные элементы мышления, и что некоторые математические проблемы не могут быт ь решены алгори тмами определенного класса.

Исследования Гёделя инициировали поиск и анализ различных формализаций понятия «алгоритм».

Первые фундаментальные работы но теории алгоритмов были опубликованы в середине 1930-х гг. Аланом Тьюрингом [1], Алоизом Черчем ’и Эмилем Постом Машина Тьюринга, машина Поста и класс рекур-

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

В 1950-х гг. существенный вклад в развитие теории алгоритмов внесли работы А.Н. Колмогорова и основанный на теории формальных грамматик алгоритмический формализм А.А. Маркова, который, используя термин «алгорифм» , ввел понятие нормального алгоритма.

Нормальный алгоритм описывает метод переписывания строк, похожий но способу задания на формальные грамматики.

Нормальные алгоритмы являются вербальными, то есть предназначенными для применения к словам в различных алфавитах. Определение всякого нормального алгоритма состоит из двух частей: определения алфавита алгоритма (к словам из символов которого алгоритм будет применяться) и определения его схемы. Схемой нормального алгоритма называется конечный упорядоченный набор так называемых формул подстановки, используемых в формальных грамматиках Н. Хомского.[2] [3] [4] [5]

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

  • 1. Дискретность (прерывность, раздельность) - алгоритм должен представлять процесс решения задачи как последовательное выполнение простых (или ранее определенных) шагов. Каждое действие, предусмотренное алгоритмом, исполняется только после того, как закончилось исполнение предыдущего.
  • 2. Определенность (детерминированность) - каждое правило алгоритма должно быть четким, однозначным и не оставлять места для произвольных действий. Благодаря этому свойству выполнение алгоритма носит механический характер и не требует никаких дополнительных указаний или сведений о решаемой задаче.
  • 3. Результативность (конечность) - алгоритм должен приводить к решению задачи за конечное число шагов.
  • 4. Массовость - алгоритм решения задачи разрабатывается в общем виде, то есть, он должен быть применим для некоторого класса задач, различающихся только исходными данными. При этом исходные данные могут выбираться из некоторой области, которая называется областью применимости алгоритма.

К перечисленным свойствам алгоритмов, предложенным Марковым, впоследствии добавили еще одно - формализованноегь.

5. Формализованноегь информационного процесса, представленного в виде алгоритма определяется тем, что способ представления процесса в виде алгоритма позволяет поручить его автоматическое исполнение различным техническим устройствам, в том числе компьютеру.

На основании этих свойств иногда дается следующее определение алгоритма:

«Алгоритм - это последовательность математических, логических или вместе взятых операций, отличающихся детерменированно- стью, массовостью, направленностью и приводящая к решению всех задач данного класса за конечное число шагов».

В начальный период применения ЭВМ иногда требовалось, чтобы операции алгоритма были представлен на одном языке.

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

Характерной чертой современных компьютеров является то, что преобладающая их часть (по данным специалистов, до 80%) используется не для решения вычислительных задач, а для разнообразной обработки информации. Эго накопление и оперативная выдача разнообразных данных, обработка текстов, выполнение графических работ, предъявление информации в процессе компьютерного обучения, автоматизированный контроль знаний и др.

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

Алгоритмом также называется информационный процесс, обладающий следующими свойствами:

  • • Наличие исполнителя преобразований (с его системой последовательности команд).
  • • Разбиение всего процесса преобразования на отдельные команды (понятные исполнителю).
  • • Определение начального состояния объекта (над которым производится преобразование) и его требуемого конечного состояния (цель преобразования).

Под исполнителем алгоритма понимается объект, который выполняет алгоритм. Исполнителем алгоритма может быть человек, компьютер и др.

Исполнителя характеризуют:

  • 1) среда;
  • 2) элементарные действия - результаты вызова команды;
  • 3) система команд, для каждой из которых заданы условия применимости (в каких состояниях среды они могут быть выполнены) и описаны результаты выполнения;
  • 4) отказы, возникающие, если команда вызывается при недопустимом для нее состоянии среды.

Среда исполнителя - условия, при которых возможно исполнение алгоритма.

Система команд исполнителя - эго перечень действий, которые способен правильно интерпретировать и выполнить исполнитель.

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

Создание алгоритма - процесс творческий. Долгое время считалось, что алгоритмы может формировать только человек.

Появление доступных ЭВМ привело в 1960—1970-х гг. к расширению исследований алгоритмов и вычислительных задач. Выделилось несколько разделов теории алгоритмов:

  • • Классическая т еория алгоритмов.
  • • Теория асимптотического анализа алгоритмов.
  • • Теория практического анализа алгоритмов.
  • • Методы создания 'эффективных алгоритмов.

Эти теории являются предметом специальных курсов для подготовки инженеров-профаммистов.

  • [1] 2 Успенский В.А. Теорема Гёделя о неполноте / В.А. Успенский. - М.: Наука,1982.-112 с. " Мишины Тьюринга и рекурсивные функции: со. - М.: Мир, 1973. ' Черч Л. Введение в математическую логику / Л. Черч. - М.: Изд-во Ин. лит.,1960.-С. 66-80.
  • [2] Яблонский С.В. Функции алгебры логики и классы Поста / С.В. Яблонский. - М.: Наука, 1966.
  • [3] : Колмогоров А.Н. Теория информации и теория алгоритмов / А. Н. Колмогоров. — М.: Наука, 1987. — 304 с.
  • [4] ' Марков А.А. Теория алгорифмов / А.А. Марков // Труды математическогоинститута АН СССР. - 1968. - № 38.
  • [5] Хомский Н. Три модели для описания языка / Н. Хомский // Кибернетический сборник - М.: Изд.-во ИЛ, 1951. - Вып 2.
 
Посмотреть оригинал
< Пред   СОДЕРЖАНИЕ ОРИГИНАЛ   След >