Алгоритм должен быть. Что такое алгоритм? Попытки определения термина


ПОНЯТИЕ АЛГОРИТМА. СВОЙСТВА АЛГОРИТМА. ВИДЫ АЛГОРИТМОВ. СПОСОБЫ ОПИСАНИЯ АЛГОРИТМОВ

Алгоритмом называется точное и понятное предписаниe исполнителю совершить последовательность действий, направленных на решение поставленной задачи. Слово «алгоритм» происходит от имени математика Аль Хорезми, который сформулировал правила выполнения арифметических действий. Первоначально под алгоритмом понимали только правила выполнения четырех арифметических действий над числами. В дальнейшем это понятие стали использовать вообще для обозначения последовательности действий, приводящих к решению любой поставленной задачи. Говоря об алгоритме вычислительного процесса, необходимо понимать, что объектами, к которым применялся алгоритм, являются данные. Алгоритм решения вычислительной задачи представляет собой совокупность правил преобразования исходных данных в результатные.

Основными свойствами алгоритма являются:

  1. детерминированность (определенность). Предполагает получение однозначного результата вычислительного процecca при заданных исходных данных. Благодаря этому свойству процесс выполнения алгоритма носит механический характер;
  2. результативность. Указывает на наличие таких исходных данных, для которых реализуемый по заданному алгоритму вычислительный процесс должен через конечное число шагов остановиться и выдать искомый результат;
  3. массовость. Это свойство предполагает, что алгоритм должен быть пригоден для решения всех задач данного типа;
  4. дискретность. Означает расчлененность определяемого алгоритмом вычислительного процесса на отдельные этапы, возможность выполнения которых исполнителем (компьютером) не вызывает сомнений.

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

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

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

При всем многообразии алгоритмов решения задач в них можно выделить три основных вида вычислительных процессов:

  • линейный;
  • ветвящийся;
  • циклический.

Линейным называется такой вычислительный процесс, при котором все этапы решения задачи выполняются в естественном порядке следования записи этих этапов.

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

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

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

История происхождения термина

Понятие об алгоритме впервые было сформировано благодаря математику по имени Мухаммед Аль-Хорезми. Он жил на Востоке в 8-9-м веках и написал два великих труда. Первый из них дал начало слову «алгебра», а второй - понятию «алгоритм». Он обозначал арифметические операции, которые мы знаем как сложение, вычитание, умножение и деление. В 1957 году в одном из изданий английского словаря авторы посчитали, что алгоритм - это понятие устаревшее. Опять оно активно вошло в обиход лишь с появлением компьютеров. Им обозначали действия, которые входили в определенный процесс. Но он не обязательно должен быть только математическим. Тут подразумевается алгоритм действий любого характера, например, приготовления какого-либо блюда. С того времени это понятие не сходит с уст почти всех людей.

Попытки определения термина

Долгое время этот термин рассматривался исключительно как алгоритм чисел и действий с ними. Ведь и сама математика была по большей части прикладной наукой. Формулы, которые применяются для вычислений, в то время и считались алгоритмами. Шаги, которые выполнялись при решении, были элементарными, а сами вычисления - очень громоздкими и отнимали много времени и сил. Математики даже не задумывались над тем, чтобы дать определение этому понятию. Но со временем наука все больше развивалась и появлялись объекты, которые раньше не встречались (матрицы, векторы, множества и т. д.). Всеми ими нужно было оперировать. Это и дало толчок к пониманию того, что алгоритм - это непростое понятие, и его нужно в точности определить для дальнейшего использования. Ученые разделились во мнениях по поводу этого вопроса. Одни считали, что алгоритм применим ко всему, другие же сомневались, что каждую проблему можно решить с его помощью. Последняя точка зрения оказалась верной, но обосновать ее можно было, лишь дав точное определение понятию «алгоритм».

Что обозначает термин «алгоритм»?

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

Свойства, общие для всех алгоритмов

Помимо алгоритмов, в нашем мире существует множество других инструкций. Но благодаря некоторым свойствам мы можем отличить его от остальных. К ним относятся:

  • Дискретность - схема алгоритма предвидит решение поставленной задачи через последовательные действия, которые выполняются в строгой очередности.
  • Определенность - все поставленные условия четкие и не имеют какой-либо двузначности. Алгоритм действий, таким образом, не дает места для любых импровизаций. Это позволяет механически все выполнять, не нуждаясь в дополнительных подсказках.
  • Результативность - за определенное число шагов алгоритм всегда дает правильное решение задачи.
  • Массовость - алгоритм - это решение проблемы, имеющее общий вид. То есть он применим для всех задач определенного класса, независимо от исходных данных. Их выбирают из некого поля под названием "область применимости алгоритма".

Виды алгоритмов

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

  • Механические - жесткая, единственно верная последовательность для достижения требуемого результата (обеспечение работы двигателя и т. д.).
  • Гибкие: 1) вероятностные - имеют несколько путей для достижения верного решения; 2) эвристические - схема алгоритма, которая не имеет однозначной программы действий (предписания и т. д.), ведь она основана на личных качествах человека, его опыте.
  • Вспомогательные - ранее разработанные и полностью предназначенные для разрешения конкретной задачи.

Алгоритмы в информатике

Для информатики алгоритмы имеют особое значение. В этой науке их разделяют на такие виды:

  1. Линейный - все действия выполняются последовательно, друг за другом.
  2. Разветвляющийся алгоритм - это такой, в котором выполнение определенного условия приводит к выбору одного из двух возможных вариантов дальнейших действий.
  3. Циклический - одни и те же действия повторяются над разными исходными данными, таким образом подбираются наиболее подходящие.

Структура алгоритмов

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

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

  • Первым правилом является то, что нужно определить большое количество объектов, которые смогут поддаться построенному алгоритму. Программист с помощью кодировки переводит их в данные. Они бывают входные и выходные. Первые служат для начала работы, вторые становятся ее результатом. Это называется преобразованием данных.
  • Второе правило говорит о том, что работа с алгоритмом требует свободной памяти. Ведь без нее не будет возможности разместить входные данные, работать с ними и получить выходные. Память состоит из ячеек. Если одной из них дать имя, она станет переменной.
  • Третье правило уже описывалось выше как одна из характеристик алгоритма, а именно - дискретность. То есть алгоритм состоит из отдельных операций, или шагов.
  • Четвертое правило напоминает о детерминированности алгоритма. То есть после каждого действия нужно указать, какое будет следующим, либо остановить процесс.
  • Последнее правило гласит, что после определенного числа шагов алгоритм завершает свою работу, имея тот или иной результат. А какой именно, указывает сам программист.

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

Решение задачи при помощи ЭВМ начинается с составления алгоритма. Что же такое алгоритм?

Происхождение термина «алгоритм» связывают с именем великого математика Мухаммеда аль-Хорезми (763–850 гг.), который разработал правила выполнения четырех арифметических действий.

Согласно ГОСТ 19781-74:

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

То есть алгоритм – это четкое указание исполнителю алгоритма выполнить определенную последовательность действий для решения поставленной задачи и получения результата.

Разработать алгоритм означает разбить задачу на определенную последовательность шагов. От разработчика алгоритма требуется знание особенностей и правил составления алгоритмов.

Основные особенности алгоритмов:

    Наличие ввода исходных данных.

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

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

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

    Конечность – исполнение алгоритма должно закончиться за конечное число шагов.

    Корректность – алгоритм должен задавать правильное решение задачи.

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

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

Способы записи алгоритмов

Разработанный алгоритм может быть представлен несколькими способами:

    на естественном языке (словесная запись алгоритма);

    в виде блок-схем (графическая форма);

    на языке программирования.

Словесная запись алгоритма. Словесная форма используется обычно для описания алгоритмов, предназначенных исполнителю – человеку . Команды записываются на обычном языке и выполняются по порядку. В командах могут использоваться формулы, специальные обозначения, но каждая команда должна быть понятна исполнителю. Естественный порядок команд может быть нарушен (если требуется, например, переход к предыдущей команде или требуется обойти очередную команду при каком-то условии), в этом случае команды можно нумеровать и указывать команду, к которой требуется перейти. Например, перейти к п.3 или повторить с п.4 .

Графическая форма. Алгоритмы представляются в виде блок-схем. Существуют специальные стандарты для построения блок-схем, где определяются графические изображения блоков. Команды алгоритмов записываются внутри блоков на обычном языке или с использованием математических формул. Блоки соединяются по определенным правилам линиями связи, которые показывают порядок выполнения команд.

На языке программирования. Если алгоритм разработан для решения задачи на ЭВМ, то для того, чтобы он мог выполниться исполнителем – ЭВМ , его необходимо записать на языке, понятном этому исполнителю. Для этого разработано множество языков программирования для решения задач разных классов. Запись алгоритма на языке программирования называется программой .



















Назад Вперёд

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

Цель урока: Формирования у учащихся правильного понимания алгоритмов, их свойств, видов и практических навыков составления алгоритмов.

Задачи урока:

Дидактические : Обеспечить условия:

  • для изучения и закрепления основных понятия по теме;
  • для усвоения, закрепления темы.

Воспитательные : Обеспечить условия:

  • для воспитания чувства коллективизма и взаимопомощи, культуры общения;
  • для критического отношения к своему труду, умение оценивать его.

Развивающие : Обеспечить условия:

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

Демонстрационный материал к уроку:

  1. Мультимедийная презентация
  2. Портрет Мухаммеда Бен Муссы аль-Хорезми.

Ход урока

  1. Организационный момент. (2 мин.)
  2. Актуализация знаний. Постановка учебной задачи. (3 мин.)
  3. Изложение нового материала. (30 мин.)
  4. Закрепление нового материала (10 мин.)

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

Появление алгоритмов связывают с зарождением математики.

Более 1000 лет назад (825 г.)ученый из города Хорезма Абдулла (или Абу Ждафар) Мухаммед бен Мусса аль-Хорезми создал книгу по математике, в тором описал способы выполнения арифметических действий над многозначными числами.

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

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

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

  1. Дискретность
  2. Детерминированность
  3. Массовость
  4. Результативность
  5. Конечность
  6. Дискретность (от лат. Discretus –разделенный, прерывистый) – это свойство предполагает, что любой алгоритм должен состоять из последовательности шагов, следующих друг за другом.
  7. Детерминированность (от лат. Determinate – определенность, точность) - это свойство указывает, что любое действие в алгоритме должно быть строго и недвусмысленно определенно и описано для каждого случая.
  8. Массовость – это свойство подразумевает, что один и тот же алгоритм может применяться для решения целого класса задач, отличающихся исходными данными.
  9. Результативность (конечность) алгоритма - исполнение алгоритма должно закончиться за конечное число шагов.

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

Пример: Алгоритм «Зарядка»

  1. Потянитесь, лежа в постели.
  2. Сядьте на кровати, поставив ноги на пол.
  3. Нагнитесь вперед, пытаясь достать руками пальцы ног.
  4. Выгните спину дугой.
  5. Сосчитайте до 10.
  6. Вернитесь в исходное положение.

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

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

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

  1. Ввести значения а и х.
  2. Сложить х и 6.
  3. Умножить а на 2.
  4. Вычесть из 2а сумму (х+6).
  5. Вывести у как результат вычисления выражения.

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

Виды алгоритма

Линейный алгоритм – это такой, в котором все операции выполняются

последовательно одна за другой.

Пример: Алгоритм посадки дерева .

  1. Выкопать в земле ямку;
  2. Опустить в ямку саженец;
  3. Засыпать ямку с саженцем землей;
  4. Полить саженец водой.

Разветвляющийся алгоритм – это алгоритм в котором выполняется либо одна, либо другая группа действий в зависимости от истинности или ложности условия.

Полная форма

Если <условие>, то <действие 1>, иначе <действие 2>

Неполная форма

Если <условие>, то <действия>

Пример: Если на улице дождь, то останемся дома, а если нет то идем гулять.

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

Цикл с известным числом повторений

Цикл с известным числом повторений часто называют «циклом ДЛЯ »

Пример: Алгоритм «Упражнение для глаз»

  1. Возьмите карандаш.
  2. Установите его в исходное положение у кончика носа
  3. Повторите 10 раз, следя за движение карандаша:
    • Переместите карандаш на расстояние вытянутой руки;
    • Верните карандаш в исходное положение
  4. Положите карандаш
  5. Конец алгоритма

Цикл с постусловием

Цикл с неизвестным числом повторений, в тором выход из цикла осуществляется при выполнении условия, принято называть «циклом с постусловием» или «циклом ПРИ»

Алгоритм «Пульс»

  1. Удобно положите левую руку ладонью вверх.
  2. Два пальца правой руки положите на запястье левой руки.
  3. Заметьте положение секундной стрелки
  4. Сосчитайте очередной удар
  5. Посмотрите на часы
  6. Если секундная стрелка прошла полный круг, то закончите действия, иначе перейдите к п.4

Конец алгоритма

Цикл с предусловием

Цикл с известным числом повторений, в котором цикл продолжается, пока выполняется условие, принято называть «циклом с предусловием» или «циклом ПОКА»

Алгоритм «Бочка»

  1. Подойдите к бочке
  2. Если бочка неполна (есть место для воды) , то перейдите к п.3, иначе конец алгоритма.
  3. Наберите ведро воды
  4. Вылейте ведро в бочку
  5. Перейдите к п.2.

Конец алгоритма

Задания для закрепление материала

  1. Последовательность действий ученика 6 класса Васи: «Если Павлик дома, будем решать задачи по математике. В противном случае следует позвонить Марине и вместе готовить доклад по биологии. Если же Марины нет дома, то надо сесть за сочинение.»
  2. Составить блок-схему действий школьника, которому перед вечерней прогулкой следует выполнить домашнее задание по математике.

Слово «алгоритм» происходит от имени великого среднеазиатского ученого 8–9 вв. Аль-Хорезми (Хорезм – историческая область на территории современного Узбекистана). Из математических работ Аль-Хорезми до нас дошли только две – алгебраическая (от названия этой книги родилось слово алгебра) и арифметическая. Вторая книга долгое время считалась потерянной, но в 1857 в библиотеке Кембриджского университета был найден ее перевод на латинский язык. В ней описаны четыре правила арифметических действий, практически те же, что используются и сейчас. Первые строки этой книги были переведены так: «Сказал Алгоритми. Воздадим должную хвалу Богу, нашему вождю и защитнику». Так имя Аль-Хорезми перешло в Алгоритми, откуда и появилось слово алгоритм. Термин алгоритм употреблялся для обозначения четырех арифметических операций, именно в таком значении он и вошел в некоторые европейские языки. Например, в авторитетном словаре английского языка Webster"s New World Dictionary , изданном в 1957, слово алгоритм снабжено пометкой «устаревшее» и объясняется как выполнение арифметических действий с помощью арабских цифр.

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

Проблема определения понятия «алгоритм».

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

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

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

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

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

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

Понятие «алгоритма».

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

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

Наличие исходных данных и некоторого результата.

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

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

Детерминированность.

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

Результативность.

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

Определенность.

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

Формы представления алгоритмов.

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

Например, описание алгоритма Евклида нахождения НОД (наибольшего общего делителя) двух целых положительных чисел может быть представлено в виде трех шагов. Шаг 1: Разделить m на n . Пусть p – остаток от деления.

Шаг 2: Если p равно нулю, то n и есть исходный НОД.

Шаг 3: Если p не равно нулю, то сделаем m равным n , а n равным p . Вернуться к шагу 1.

Приведенная здесь запись алгоритма нахождения НОД очень упрощенная. Запись, данная Евклидом, представляет собой страницу текста, причем последовательность действий существенно сложней.

Одним из распространенных способов записи алгоритмов является запись на языке блок-схем. Запись представляет собой набор элементов (блоков), соединенных стрелками. Каждый элемент – это «шаг» алгоритма. Элементы блок-схемы делятся на два вида. Элементы, содержащие инструкцию выполнения какого-либо действия, обозначают прямоугольниками, а элементы, содержащие проверку условия – ромбами. Из прямоугольников всегда выходит только одна стрелка (входить может несколько), а из ромбов – две (одна из них помечается словом «да», другая – словом «нет», они показывают, соответственно, выполнено или нет проверяемое условие).

На рисунке представлена блок-схема алгоритма нахождения НОД:

Построение блок-схем из элементов всего лишь нескольких типов дает возможность преобразовать их в компьютерные программы и позволяет формализовать этот процесс.

Формализация понятия алгоритмов. Теория алгоритмов.

Приведенное определение алгоритма нельзя считать представленным в привычном математическом смысле. Математические определения фигур, чисел, уравнений, неравенств и многих других объектов очень четки. Каждый математически определенный объект можно сравнить с другим объектом, соответствующим тому же определению. Например, прямоугольник можно сравнить с другим прямоугольником по площади или по длине периметра. Возможность сравнения математически определенных объектов – важный момент математического изучения этих объектов. Данное определение алгоритма не позволяет сравнивать какие-либо две таким образом определенные инструкции. Можно, например, сравнить два алгоритма решения системы уравнений и выбрать более подходящий в данном случае, но невозможно сравнить алгоритм перехода через улицу с алгоритмом извлечения квадратного корня. С этой целью нужно формализовать понятие алгоритма, т.е. отвлечься от существа решаемой данным алгоритмом задачи, и выделить свойства различных алгоритмов, привлекая к рассмотрению только его форму записи. Задача нахождения единообразной формы записи алгоритмов, решающих различные задачи, является одной из основных задач теории алгоритмов. В теории алгоритмов предполагается, что каждый шаг алгоритма таков, что его может выполнить достаточно простое устройство (машина), Желательно, чтобы это устройство было универсальным, т.е. чтобы на нем можно было выполнять любой алгоритм. Механизм работы машины должен быть максимально простым по логической структуре, но настолько точным, чтобы эта структура могла служить предметом математического исследования. Впервые это было сделано американским математиком Эмилем Постом в 1936 (машина Поста) еще до создания современных вычислительных машин и (практически одновременно) английским математиком Аланом Тьюрингом (машина Тьюринга).

История конечных автоматов: машина Поста и машина Тьюринга.

Машина Поста – абстрактная вычислительная машина, предложенная Постом (Emil L.Post), которая отличается от машины Тьюринга большей простотой. Обе машины «эквивалентны» и были созданы для уточнения понятия «алгоритм».

В 1935 американский математик Пост опубликовал в «Журнале символической логики» статью Финитные комбинаторные процессы, формулировка 1 . В этой статье и появившейся одновременно в Трудах Лондонского математического общества статье английского математика Тьюринга О вычислимых числах с приложением к проблеме решения были даны первые уточнения понятия «алгоритм». Важность идей Поста состоит в том, что был предложен простейший способ преобразования информации, именно он построил алгоритмическую систему (алгоритмическая система Поста). Пост доказал, что его система обладает алгоритмической полнотой. В 1967 профессор В.Успенский пересказал эти статьи с новых позиций. Он ввел термин «машина Поста». Машина Поста – абстрактная машина, которая работает по алгоритмам, разработанным человеком, она решает следующую проблему: если для решения задачи можно построить машину Поста, то она алгоритмически разрешима. В 1970 машина Поста была разработана в металле в Симферопольском университете. Машина Тьюринга была построена в металле в 1973 в Малой Крымской Академии Наук.

Абстрактная машина Поста представляет собой бесконечную ленту, разделенную на одинаковые клетки, каждая из которых может быть либо пустой, либо заполненной меткой «V». У машины есть головка, которая может перемещаться вдоль ленты на одну клетку вправо или влево, наносить в клетку ленты метку, если этой метки там ранее не было, стирать метку, если она была, либо проверять наличие в клетке метки. Информация о заполненных метками клетках ленты характеризует состояние ленты, которое может меняться в процессе работы машины. В каждый момент времени головка находится над одной из клеток ленты и, как говорят, обозревает ее. Информация о местоположения головки вместе с состоянием ленты характеризует состояние машины Поста. Работа машины Поста заключается в том, что головка передвигается вдоль ленты (на одну клетку за один шаг) влево или вправо, наносит или стирает метки, а также распознает, есть ли метка в клетке в соответствии с заданной программой, состоящей из отдельных команд.

Машина Тьюринга состоит из счетной ленты (разделенной на ячейки и ограниченной слева, но не справа), читающей и пишущей головки, лентопротяжного механизма и операционного исполнительного устройства, которое может находиться в одном из дискретных состояний q 0, q 1, …, qs , принадлежащих некоторой конечной совокупности (алфавиту внутренних состояний), при этом q 0 называется начальным состоянием. Читающая и пишущая головка может читать буквы рабочего алфавита A = {a 0, a 1, …, at }, стирать их и печатать. Каждая ячейка ленты в каждый момент времени занята буквой из множества А . Чаще всего встречается буква а 0 – «пробел». Головка находится в каждый момент времени над некоторой ячейкой ленты – текущей рабочей ячейкой. Лентопротяжный механизм может перемещать ленту так, что головка оказывается над соседней ячейкой ленты, при этом возможна ситуация выхода за левый край ленты, которая является аварийной (недопустимой), или машинного останова, когда машина выполняет предписание об остановке.

Современный взгляд на алгоритмизацию.

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

Анна Чугайнова