Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Теория алгоритмов.doc
Скачиваний:
10
Добавлен:
29.07.2019
Размер:
154.62 Кб
Скачать

Теория алгоритмов

История

По определению А.П. Ершова, информатика – фундаментальная естественная наука.

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

Такие понятия, как информация, процессы обработки информации, несомненно, имеют обобщённую значимость.

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

Однако многие учёные подчёркивают, что информатика имеет характерные черты и других групп наук – технических и гуманитарных.

Черты технической науки придают информатике её аспекты, связанные с созданием и функционированием машинных систем обработки информации.

Науке информатике присущи и некоторые черты гуманитарной науки, что обусловлено её вкладом в развитие и совершенствование социальной сферы.

Т.о. информатика является комплексной отраслью научного знания.

В информатике выделяют два направления:

Теоретическое и прикладное.

Теоретическая информатика – дисциплина, использующая методы математики.

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

Алгоритмизация выступает в качестве общего метода информатики.

К реализации определённых алгоритмов сводятся процессы управления в различных системах, что делает понятие алгоритма близким к кибернетике.

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

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

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

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

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

Слово алгоритм - латинская форма написания имени великого математика 9 века Аль-Хорезми, который сформулировал правило выполнения алгоритмических действий.

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

Понятие исполнителя алгоритма.

Подходы к уточнению понятия алгоритм.

Известны несколько подходов к формализации понятия:

  1. Теория конечных и бесконечных автоматов;

  2. Теория рекурсивных (вычислимых) функций;

  3. Исчисление Черчи.

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

Главная цель формализации понятия алгоритма такова:

Подойти к решению проблемы алгоритмической разрешимости различных математических задач.

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

Свойства алгоритмов.

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

  2. Определённость. Каждое правило алгоритма должно быть чётким, однозначным.

  3. Результативность. Алгоритм должен приводить к решению за конечное число шагов.

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

  5. Правильность. Алгоритм правильный, если его выполнение даёт правильные результаты решения поставленной задачи.

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

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

Так исполнитель – человек умеет выполнять такие команды, как «встать», «сесть», «включить компьютер», и т.д., а исполнитель – язык программирования Pascal, команды write, end и другие аналогичные.

Вся совокупность команд, которые данный исполнитель умеет выполнять называется системой команд исполнителя (СКИ).

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

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

Алгоритм – понятное и точное предписание исполнителю совершить последовательность действий, направленных на достижение поставленной цели.

Графическое представление алгоритмов

Алгоритм можно составить несколькими способами:

  1. с помощью графического или словесного описания;

  2. в виде таблицы;

  3. последовательностью формул, записанных на алгоритмическом языке (язык программирования).

Рассмотрим графическое описание алгоритмов, называемое блок-схемой.

Этот способ имеет ряд преимуществ, благодаря наглядности, обеспечивающий в частности, высокую читаемость алгоритма и явное отображение управления в нём.

Блок-схема – это ориентированный граф, указывающий порядок исполнения команд алгоритма.

Вершины такого графа могут быть одного из трёх типов:

F

F

T

Функциональная вершина

Имеет 1 вход и 1 выход Объединяющая вершина

Предикатная вершина

Имеет один вход и два выхода

Из данных элементарных блок-схем можно построить 4 блок-схемы, имеющие особое значение для практики алгоритмизации.

S1

S2

S1

S2

F

T

S

S

Композиция

Альтернативная развилка Итерация Итерация

(цикл с предусл.)(цикл с пост усл.)

Понятия алгоритмического языка.

Записи алгоритмов.

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

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

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

Такие команды называют простыми.

В алгоритмическом языке многие слова, смысл и способ употребления которых задан раз и навсегда – слова служебные.

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

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

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

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

Возможны случаи, когда рекурсивный вызов данного алгоритма, к которому в данном алгоритме имеется обращения. Такая рекурсия называется косвенной.

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

Для их описания в алгоритмическом языке используют специальную составную команду – команда ветвления. Она соответствует блок-схеме альтернатива и также может иметь полную или сокращённую форму.