Знание основных неразрешимостей теории алгоритмов и принципов организации формальных исчислений дает понимание того, что можно и чего нельзя сделать с помощью вычислительной машины.
С алгоритмами, т.е. эффективными процедурами, однозначно приводящими к результату, математика имела дело всегда.
Например: школьные методы умножения столбиком, деление углом многозначных чисел, метод исключения неизвестных при решении системы линейных уравнений, правило дифференцирования сложной функции – это все алгоритмы. Понятие метода вычисления считалось изначально ясным и не нуждалось в специальных исследованиях. Одним из решающих обстоятельств, приведших к пересмотру оснований математики, т.е. принципов, лежащих в основе математических рассуждений, явилось создание Кантором теории множеств.
Главным приложением теории алгоритмов внутри самой математики явились доказательства невозможности алгоритмического (т.е. точного и однозначного) решения некоторых математических проблем. Пока техника использовала чисто вычислительные методы, эти высокие проблемы чистой математики ее мало интересовали. В технику термин «алгоритм» пришел вместе с кибернетикой. Понадобилось осознавать, каким требованиям должна удовлетворять последовательность действий, чтобы считаться эффективно заданной.
Алгоритм разработки программ
С точки зрения современной практики алгоритм – это программа, а критерием алгоритмичности процесса является возможность его запрограммировать. Именно благодаря этой реальности алгоритма, понятие алгоритма в технике стало популярным за весьма короткий срок. В повседневной практике слово «алгоритм» употребляется слишком широко, теряя зачастую свой точный смысл. В результате за алгоритм выдается любая инструкция, разбитая на шаги.
То есть алгоритм – это однозначно трактуемая процедура, осуществляемая черным ящиком для получения выхода из входа. Этим черным ящиком может быть вычислительная машина, человек или устройство.
Процедура – это конечная последовательность точно определенных шагов или операций, для выполнения каждой из которых требуется конечный объем оперативной памяти и конечное время. Одно из неудобств этого определения состоит в том, что термин «однозначная трактовка» весьма неоднозначен.
Ничто не является абсолютно ясным или абсолютно неясным, должен быть указан, хотя бы неявно, исполнитель. Алгоритм вычисления производной кубического полинома вполне ясен тем, кто знаком с анализом, но для прочих совершенно непонятен. Может случиться, что алгоритм существует для конкретной задачи, но его трудно или невозможно описать в некоторой заданной форме. Человечество разработало эффективный алгоритм завязывания шнурков на ботинках. Но дать чисто словесное описание такого алгоритма без картинок и демонстрации очень трудно.
Чтобы создать алгоритм необходимо знать:
1. какую работу должен выполнять алгоритм.
2. какими должны быть входные данные.
3. какими должны быть выходные данные.
Тестировщик с нуля / Урок 4 / Тестирование требований
Даже если не следовать реальному методу построения алгоритмов, нужно четко понимать, что алгоритм будет получать входные данные и преобразовывать их, чтобы создать требуемые выходные данные. Затем следует решить, в каком порядке должны выполняться отдельные процессы, и наконец, надо решить, какие отдельные процессы будут взаимодействовать между собой, а какие зависят от тех или иных других процессов.
Рассмотрим некоторые основные принципы, по которым строятся алгоритмы, и выясним, что же именно в понятии алгоритма нуждается в уточнении.
Первое, что следует отметить в любом алгоритме – это то, что он применяется к исходным данным и выдает результаты. В технических терминах это означает, что алгоритм имеет входы и выходы.
Кроме того, в ходе работы алгоритма появляются промежуточные результаты, которые используются в дальнейшем. Т.о. каждый алгоритм имеет дело с данными – входными, промежуточными и выходными.
Термин «данные» относится к формализованному представлению информации. Данные могут состоять из файлов информационных записей в виде «битов» (единиц и нулей) или же могут иметь форму одинаковым образом оцифрованной информации.
Поскольку мы собираемся уточнять понятие алгоритма, нужно уточнить и понятие данных, то есть указать, каким требованиям должны удовлетворять объекты, чтобы алгоритм мог с ними работать. Ясно, что эти объекты должны быть четко определены и отличимы как друг от друга, так и от «необъектов».
Все данные до некоторой степени подвержены воздействиям человеческой непоследовательности, вкрадываются ошибки.
В теории алгоритмов фиксируют конкретные конечные наборы исходных объектов (называемые элементарными) и конечный набор средств построения объектов из элементарных. Набор элементарных объектов образует конечный алфавит исходных символов (цифр, букв, и т.д.) из которых строятся другие объекты; типичным средством построения являются индуктивные определения, указывающие, как строить новые объекты из уже построенных.
Например, в АЛГОЛе определение идентификатора дано следующим образом: идентификатор – это либо буква, либо идентификатор, к которому приписана справа буква или цифра.
Слова конечной длины (например, числа) – наиболее обычный тип алгоритмических данных, а число символов в слове – естественная единица измерения объема обрабатываемой информации. Более сложный случай алгоритмических объектов – формулы. Они также определяются индуктивно и также являются словами в конечном алфавите, однако не каждое слово в этом алфавите является формулой. В этом случае перед основным алгоритмом идут вспомогательные, которые проверяют, удовлетворяют ли исходные данные нужным требованиям. Такая проверка называется синтаксическим анализом.
Второе, данные для своего размещения требуют памяти. Память обычно считается однородной и дискретной, то есть состоит из одинаковых ячеек, причем каждая ячейка может содержать один символ алфавита данных. Т.о. единицы измерения объема данных и памяти согласованы. При этом память может быть бесконечной.
Третье, алгоритм состоит из отдельных элементарных шагов, причем множество различных шагов, из которых составлен алгоритм – конечно. Обычно элементарный шаг имеет дело с фиксированным числом символов, однако это требование не всегда выполняется.
Четвертое, последовательность шагов алгоритма детерминирована, т.е. после каждого шага указывается, какой шаг делать дальше, либо дается команда останова, после чего работа алгоритма считается законченной.
Пятое, естественно для алгоритма потребовать результативности, т.е. остановки после конечного числа шагов с указанием того, что считать результатом. Однако, проверить результативность (сходимость) гораздо труднее, чем предыдущие требования. Сходимость обычно не удается установить простым просмотром алгоритма. Общего метода проверки сходимости пригодного для любого алгоритма и любых данных вообще не существует.
Шестое, следует различать:
описание алгоритма (программу);
механизм реализации, включающий средства пуска,останова, реализации элементарных шагов, выдачи результатов и обеспечения управления ходом вычисления (ЭВМ);
процесс реализации алгоритма, то есть последовательность шагов, которая будет порождена при применении алгоритма к конкретным данным.
Например: рассмотрим следующую задачу: дана последовательность Р из n положительных чисел (n – конечное, но произвольное число); требуется упорядочить их, то есть построить последовательность R, в которой эти же числа распололжены в порядке возрастания.
Простейший способ, который приходит в голову: просматриваем Р и находим наименьшее число; вычеркиваем его из Р и выписываем его как первое число R; снова просматриваем Р и находим наименьшее число, приписываем его справа к R и т.д., пока в Р не будут вычеркнуты все числа.
Возникает вопрос, что значит «и т.д.». Перепишем описание в более четкой форме, с указанием переходов между шагами.
Шаг 1. Ищем в Р наименьшее число.
Шаг 2. Найденное число записываем справа к R и вычеркиваем из Р.
Шаг 3. Если в Р нет чисел, переходим к шагу 4, иначе переходим к шагу 1.
Шаг 4. Конец. Результатом считать последовательность R, построенную к этому моменту.
Большинство сочтет описание достаточно ясным, чтобы пользуясь им, однозначно получить нужный результат. Это впечатление опирается на некоторые неявные предположения, к правильности которых мы привыкли, но которые нетрудно нарушить: что значит «дана последовательность чисел»?
Является ли таковой запись ? Очевидно, да, но в описании не сказано, как найти наименьшее среди таких чисел. В нем вообще не говорится о том, как искать наименьшие числа. Предполагается, что речь идет о числах, представленных в виде десятичных дробей и известно, как их сравнивать. Необходимо уточнить формы представления данных.
При этом нельзя заявить, что допустимо любое представление чисел. Ведь для каждого представления существует свой алфавит (который помимо цифр может включать запятые, скобки, знаки операций и функций) и свой способ сравнения чисел (например, способ перевода в десятичную дробь). Представление чисел в виде десятичных дробей тоже не решает всех проблем. Сравнение 10-20–и разрядных чисел уже не может считаться элементарным действием: попробуйте сразу сказать, какое число больше 90811557001,15 или 32899901467,0048.
В машинных алгоритмах само представление числа еще требует дальнейшего уточнения: нужно ограничить число разрядов в числе, ведь от этого зависит, сколько ячеек памяти будет занимать число, договориться о способе размещения десятичной запятой в числе (с фиксированной или с плавающей запятой), поскольку способы обработки этих представлений различны. Наконец, на шаге 1 требуется узнать две вещи: само число (чтобы записать его в R) и его место в Р, т.е. адрес в той части памяти, где хранится Р (чтобы вычеркнуть его из Р), а следовательно, нужно иметь средства указания этого адреса. Таким образом, даже в этом простом примере описанию, которое выглядит вполне ясным, еще далеко до алгоритма.
В этом примере мы столкнулись с необходимостью уточнить почти все основные характеристики алгоритма, которые отмечались ранее: алфавит данных и форму их представления, память и размещение в ней элементов, элементарные шаги. Кроме того, выбор механизма реализации (человек или ЭВМ) будет влиять и на сам характер уточнения: у человека требования к памяти, представлению данных и к элементарности шагов гораздо более слабые и «укрупненные». В приведенном описании только два требования выполнены в достаточной мере: довольно очевидна сходимость алгоритма (после шагов 1 и 2 либо работа заканчивается, либо из Р вычеркивается число, поэтому после n выполнений 1 и 2 шагов алгоритм остановится) и не вызывает сомнения детерминированность: если учесть общепринятое соглашение – если шаг не содержит указаний о дальнейшем переходе, выполняется шаг, следующий за ним в описании.
Источник: studopedia.su
6.2. Основные требования к алгоритмам кратко
Привет, Вы узнаете про требования к алгоритмам, Разберем основные ее виды и особенности использования. Еще будет много подробных примеров и описаний. Для того чтобы лучше понимать что такое требования к алгоритмам , настоятельно рекомендую прочитать все из категории Теория конечных автоматов.
1. Результативность
Результативность — получение результата за конечное число шагов. Первое, что следует отметить в любом алгоритме, – это то, что он применяется к исходным данным и выдает результаты. В технических терминах это означает, что алгоритм имеет входы и выходы. Кроме того, в ходе работы алгоритма появляются промежуточные результаты, которые используются в дальнейшем.
Таким образом, каждый алгоритм имеет дело с данными – входными, промежуточными и выходными. Поэтому вместе с уточнением понятия алгоритма нужно уточнить и понятие данных, т. е. указать, каким требованиям должны удовлетворять объекты, чтобы алгоритмы могли с ними работать. Ясно, что эти объекты должны быть четко определены и отличимы как друг от друга, так и от «необъектов».
Во многих случаях хорошо понятно, что это значит: к таким алгоритмическим объектам относятся числа, векторы, матрицы смежностей графов, формулы. С такими объектами, как «хорошая книга» или «осмысленное утверждение», с которыми легко управляется любой человек (но каждый по-своему!), алгоритм работать откажется, пока они не будут описаны как данные с помощью других, более подходящих объектов.
В теории алгоритмов фиксируют конкретные конечные наборы исходных объектов (называемых элементарными) и конечный набор средств построения других объектов из элементарных. Набор элементарных объектов образует конечный алфавит исходных символов (цифр, букв и т. д.), из которых строятся другие объекты.
Слова конечной длины в конечных алфавитах (в частности, числа) – наиболее обычный тип алгоритмических данных, а число символов в слове (длина слова) – естественная единица измерения объема обрабатываемой информации. Более сложный случай алгоритмических объектов – формулы. Они также определяются индуктивно и также являются словами в конечном алфавите, однако не каждое слово в этом алфавите является формулой. В этом случае обычно основным алгоритмам предшествуют вспомогательные, которые проверяют, удовлетворяют ли исходные данные нужным требованиям. Такая проверка называется синтаксическим анализом.
2 единицы измерения объема данных и памяти должны быть согласованы
Для размещения данных требуется память. Память обычно считается однородной и дискретной, т. е. состоит из одинаковых ячеек, причем каждая ячейка может содержать один символ алфавита данных. Таким образом, единицы измерения объема данных и памяти согласованы. При этом память может быть бесконечной.
3 Дискретность
Дискретность — запись алгоритма в виде конечного числа шагов, каждый последующий шаг выполняется после предыдущего. Алгоритм состоит из отдельных элементарных шагов, или действий, причем множество различных шагов, из которых составлен алгоритм, конечно.
4 Детерминированность
Детерминированность — определенность (операция на каждом шаге должна понимать однозначно). Последовательность шагов алгоритма детерминирована, т. е. после каждого шага либо указывается, какой шаг делать дальше, либо дается команда остановки, после чего работа алгоритма считается законченной.
5 Результативность
Алгоритм должен отвечать требованию результативности, т . Об этом говорит сайт https://intellect.icu . е. остановки после конечного числа шагов с указанием того, что считать результатом. В частности, всякий, кто предъявляет алгоритм решения некоторой задачи, например вычисления функции f(x), обязан показать, что алгоритм останавливается после конечного числа шагов (как говорят, сходится) для любого х из области задания f. Однако проверить результативность (сходимость) гораздо труднее, чем требования, изложенные в пп. 1–4. В отличие от них сходимость обычно не удается установить простым просмотром описания алгоритма; общего же метода проверки сходимости, пригодного для любого алгоритма А и любых данных х, вообще не существует.
6. Массовость
Массовость — возможность использования данного алгоритма для решения целого класса задач при различных исходных данных.
7 Понятность
Понятность — понятная запись для исполнителя.
8 Эффективность
- а) описание алгоритма (инструкцию или программу);
- б) механизм реализации алгоритма (например, компьютер), включающий средства пуска, остановки, реализации элементарных шагов, выдачи результатов и обеспечения детерминированности, т. е. управления ходом вычисления;
- в) процесс реализации алгоритма, т. е. последовательность шагов, которая будет порождена при применении алгоритма к конкретным данным.
Будем предполагать, что описание алгоритма и механизм его реализации конечны (память, как уже говорилось, может быть бесконечной, но она не включается в механизм). Требования к конечности процесса реализации совпадают с требованиями результативности (см. п. 5).
Рассмотрим следующую задачу: дана последовательность P из n положительных чисел (n – конечное, но произвольное число); требуется упорядочить их, т. е. построить последовательность R, в которой эти же числа расположены в порядке возрастания. Почти сразу же приходит в голову следующий простой способ ее решения: просматриваем Р и находим в ней наименьшее число; вычеркиваем его из Р и выписываем его в качестве первого числа R; снова обращаемся к Р и находим в ней наименьшее число; приписываем его справа к полученной части R и так далее, до тех пор, пока в Р не будут вычеркнуты все числа.
Возникает естественный вопрос: что значит «и так далее»? Для большей ясности перепишем описание способа решения в более четкой форме, разбив его на шаги и указав переходы между шагами.
- Шаг 1. Ищем в Р наименьшее число.
- Шаг 2. Найденное число приписываем справа к R (в начальный момент R пуста) и вычеркиваем его из Р.
- Шаг 3. Если в Р нет чисел, то переходим к шагу 4. В противном случае переходим к шагу 1.
- Шаг 4. Конец. Результатом считать последовательность R, построенную к данному моменту.
Многие сочтут такое описание достаточно ясным (и даже излишне формальным), чтобы, пользуясь им, однозначно получить нужный результат. Однако это впечатление ясности опирается на некоторые неявные предположения, к правильности которых мы привыкли, но которые нетрудно нарушить. Например, что значит «дана последовательность чисел»? Является ли таковой последовательность ? Очевидно, да, однако в нашем описании ничего не сказано, как найти наименьшее число среди таких чисел. В нем вообще не говорится о том, как искать наименьшие числа, по-видимому, предполагается, что речь идет о числах, представленных в виде десятичных дробей, и что известно, как их сравнивать.
Следовательно, необходимо уточнять формы представления данных. Ведь для каждого представления существует свой алфавит (который, помимо цифр, может включать запятые, скобки, знаки операций и функций и т. д.) и свой способ сравнения чисел (например, способ перевода в десятичную дробь), тогда как конечность алфавита требует фиксировать его заранее, а конечность описания алгоритма позволяет включить в него лишь заранее фиксированное число способов сравнения.
Фиксация представления чисел в виде десятичных дробей также не решает всех проблем. Сравнение 10 – 20-разрядных чисел уже не может считаться элементарным действием: сразу нельзя сказать, какое из чисел больше: 208112377001,15 или 12834901467,0048. В машинных алгоритмах само представление числа еще требует дальнейшего уточнения: нужно, во-первых, ограничить число разрядов (цифр) в числе, так как от этого зависит, сколько ячеек памяти будет занимать число, а во-вторых, договориться о способе размещения десятичной запятой в числе, т. е. выбрать представление в виде числа с фиксированной или плавающей запятой, поскольку способы обработки этих двух представлений различны. Наконец, любой, кто имел дело с программированием, отметит, что на шаге 1 требуется узнать две вещи: само наименьшее число (чтобы записать его в R) и его место в Р, т. е. его адрес в той части памяти, где хранится Р (чтобы вычеркнуть его из Р), а следовательно, нужно иметь средства указания этого адреса.
Таким образом, даже в этом простом примере несложный анализ показывает, что описанию, которое выглядит вполне ясным, еще далеко до алгоритма. Мы столкнулись здесь с необходимостью уточнить почти все основные характеристики алгоритма, которые отмечались ранее: алфавит данных и форму их представления, память и размещение в ней элементов Р и R, элементарные шаги (поскольку шаг 1 явно не элементарен). Кроме того, становится ясным, что выбор механизма реализации (скажем, человека или компьютера) будет влиять и на сам характер уточнения: у человека требования к памяти, представлению данных и к элементарности шагов гораздо более слабые и «укрупненные», отдельные незначительные детали он может уточнить сам.
Пожалуй, только два требования к алгоритмам в приведенном описании выполнены в достаточной мере (они-то и создают впечатление ясности). Довольно очевидна сходимость алгоритма: после выполнения шагов 1 и 2 либо работа заканчивается, либо из Р вычеркивается одно число; поэтому ровно после n выполнений шагов 1 и 2 из Р будут вычеркнуты все числа и алгоритм остановится, а R будет результатом. Кроме того, не вызывает сомнения детерминированность: после каждого шага ясно, что делать дальше, если учесть, что здесь и в дальнейшем используется общепринятое соглашение – если шаг не содержит указаний о дальнейшем переходе, то выполняем шаг, следующий за ним в описании.
Вау!! Ты еще не читал? Это зря!
- Понятие Алгоритм
- Способы записи алгоритмов
- Исполнитель алгоритма
- Языки программирования
- осноыные типы моделей алгоритмов:
- Машина Тьюринга
- Рекурсия
- алгоритм Маркова
Надеюсь, эта статья об требования к алгоритмам, была вам интересна и не так слона для восприятия как могло показаться, удачи в ваших начинаниях! Надеюсь, что теперь ты понял что такое требования к алгоритмам и для чего все это нужно, а если не понял, или есть замечания, то нестесняся пиши или спрашивай в комментариях, с удовольствием отвечу. Для того чтобы глубже понять настоятельно рекомендую изучить всю информацию из категории Теория конечных автоматов
Источник: intellect.icu
Требования, предъявляемые к алгоритму
Понятие алгоритма уже очень давно вошло в математическую практику, более того, оно широко используется и в других сферах деятельности.
Понятие алгоритма относится к первоначальным, основным, базисным понятиям математики, информатики и других точных наук. Даже в повседневной жизни каждый из нас сталкивается с алгоритмами, причем, очень часто. Нам проходится выполнять разные указания родителей, друзей знакомых или просто следовать определенным правилам: например сварить кашу, полить цветы, почистить зубы, поменять стержень в ручке. Исследуя инструкции по применению какого-либо прибора. Во всех этих случаях мы исполняем указанный порядок действий или по-другому мы исполняем алгоритм.
И откуда же произошло это фундаментальное понятие «алгоритм»? Я сделала попытку разобраться в этом, проследив образование современного понятия алгоритм, а также рассмотрела самые известные алгоритмы в математике.
Происхождение слова «алгоритм»
Версии происхождения слова «алгоритм»
Было множество версий происхождения слова «алгоритм». Одной из них была версия о греческом начале этого слова. Некоторые ученые выводили algorism из греческих algiros (больной) и arithmos (число). Но это объяснение не давало понять, почему числа именно «больные». Или же лингвистам казалось, что люди, имеющие несчастье заниматься вычислениями, больны?
В энциклопедическом словаре Брокгауза и Ефрона можно было найти своё объяснение. В нём алгорифм (кстати, до революции использовалось написание алгориѳм, через фиту) производится «от арабского слова Аль-Горетм, то есть корень». Конечно, эти объяснения убедительными трудно назвать.
Но, греческая версия происхождения этого слова была не единственной. Мифический АлГор (Algor) именовался то королём Кастилии (Rex quodam Castelliae), то индийским королём, то арабским мудрецом (philosophus Algus nomine Arabicus), то египетским божеством. Соответственно АлГорРитм — это ритм (порядок) бога Гора (АлГора).
Основная версия
Но многие ученые приходят к выводу, что понятие «алгоритм» пошло из Индии. Слово «алгоритм» произошло от имени великого среднеазиатского учёного Мухаммеда аль-Хорезми, который жил в первой половине IX века (приблизительные даты его жизни 780-850 года).
Около 825 года аль-Хорезми написал сочинение, где впервые описал придуманную в Индии позиционную десятичную систему счисления. Оригинал книги, к сожалению, не сохранился, и ее оригинально название неизвестно. Аль-Хорезми сформулировал правила вычислений в новой системе и, возможно, впервые использовал цифру 0, чтобы обозначать пропущенную позицию в записи числа (её индийское название арабы перевели как as-sifr или просто sifr, отсюда такие слова, как цифра и шифр). Примерно в тоже время индийские числа начали использовать и другие арабские учёные. В первой половине XII века книга аль-Хорезми в латинском переводе проникла в Европу.
Переводчик, имя которого до нас не дошло, дал ей название «Algoritmi de numero Indorum» («Индийское искусство счёта, сочинение аль-Хорезми»). Следовательно, мы видим, что латинизированное имя аль-Хорезми было вынесено в заглавие книги, и сейчас нет никаких сомнений, что слово «алгоритм» попало в европейские языки непосредственно благодаря данному сочинению. Однако вопрос о его смысле длительное время вызывал ожесточённые споры. На протяжении множества веков происхождению слова давали самые различные объяснения.
Современное понятие алгоритма
Понятие
Алгоритм — набор инструкций, описывающих порядок действий исполнителя для достижения результата решения задачи за конечное число действий. Чаще всего в качестве исполнителя выступает какого-либо механизм, но понятие алгоритма необязательно должно относиться к компьютерным программам, так как чётко описанный рецепт приготовления какого-нибудь блюда также является алгоритмом, и в этом случае исполнителем будет человек.
Свойства алгоритмов
Первое свойство дискретность (прерывность, раздельность) – алгоритм должен представлять процесс решения задачи как последовательное выполнение простейших (или ранее определенных) шагов. Каждое действие исполняется только тогда, когда закончилось исполнение предыдущего.
Второе свойство определенность – каждое правило алгоритма должно быть четким, однозначным и не оставлять места для произвола. Благодаря этому свойству выполнение алгоритма носит механический характер и не требует никаких дополнительных указаний или сведений о решаемой задаче.
Третье свойство результативность (конечность) – алгоритм должен приводить к решению задачи за определенное число шагов.
Четвертое свойство массовость – алгоритм решения задачи разрабатывается в общем виде, то есть, он должен быть применим для некоторого класса задач, который различается только исходными данными.
На основании этих свойств иногда можно услышать такое определения алгоритма: «Алгоритм – это последовательность математических, логических или вместе взятых операций, отличающихся детерминированностью, массовостью, направленностью и приводящая к решению всех задач данного класса за конечное число шагов».
Такая трактовка понятия “алгоритм” является не совсем полной и не совсем точной.
Во-первых, неверно связывать алгоритм с решением какой-либо задачи. Алгоритм может вообще не решать никакой задачи.
Во-вторых, понятие “массовость” относится не к алгоритмам как к таковым, а к математическим методам в целом. Решение поставленных практикой задач математическими методами основано на абстрагировании – мы выделяем ряд существенных признаков, характерных для некоторого круга явлений, и строим на основании этих признаков математическую модель, отбрасывая несущественные признаки каждого конкретного явления. В этом смысле любая математическая модель обладает свойством массовости. Если в рамках построенной модели мы решаем задачу и решение представляем в виде алгоритма, то решение будет “массовым” благодаря природе математических методов, а не благодаря “массовости” алгоритма.
Виды алгоритмов
Виды алгоритмов как логико-математических средств отображают указанные составляющие человеческой деятельности и тенденции, а сами алгоритмы исходя из цели, изначальных условий задачи, путей ее решения, определения действий исполнителя подразделяются следующим образом:
Словесная или вербальная форма отображения алгоритмов. Чаще всего сначала алгоритм мы описываем словами, пытаемся выразить идею, описывая каждый шаг действий.
Механические алгоритмы, или иначе детерминированные, жесткие (например, алгоритм работы машины, двигателя и т.п.);
Гибкие алгоритмы это когда механический алгоритм задает определенные действия, обозначая их в единственной и достоверной последовательности, и обеспечивает тем самым единственный требуемый или искомый результат, если выполняются те условия данной задачи, для которых разработан данный алгоритм.
Вероятностный алгоритм дает программу решения задачи несколькими возможными способами, которые приводят к вероятному достижению результата.
Эвристический алгоритм (от греческого слова “эврика”) – это такой алгоритм, в котором достижение конечного результата программы действий однозначно не определено, так же как не обозначена вся последовательность действий, не выявлены все действия исполнителя.
Линейный алгоритм – набор команд (указаний), выполняемых последовательно, друг за другом.
Разветвляющийся алгоритм – алгоритм, содержащий хотя бы одно условие, в результате проверки которого ЭВМ обеспечивает переход на один из двух возможных шагов.
Циклический алгоритм – алгоритм, предусматривающий многократное повторение одного и того же действия (операций) над новыми исходными данными. К циклическим алгоритмам сводится большинство методов вычислений, перебора вариантов (Цикл программы – последовательность команд, которая может выполняться до удовлетворения некоторого условия).
Вспомогательный алгоритм– алгоритм, ранее разработанный и целиком используемый при алгоритмизации конкретной задачи.
На всех этапах подготовки к алгоритмизации задачи широко используется структурное представление алгоритма.
Структурная (блок-, граф-) схема алгоритма – графическое изображение алгоритма в виде схемы связанных между собой с помощью стрелок (линий перехода), блоков – графических символов, каждый из которых соответствует одному шагу алгоритма. Внутри блока описано соответствующее действие. Графическое изображение алгоритма широко используется перед тем как программировать, для наглядности задачи, т.к. зрительное восприятие обычно облегчает процесс написания программы, ее корректировки при возможных ошибках, осмысливание процесса обработки информации.
Требования, предъявляемые к алгоритму
Первое требование – при построении алгоритма, прежде всего, нужно задать множество объектов, с которыми будет работать алгоритм. Формализованное (т.е. закодированное) представление этих объектов носит название данных. Алгоритм начинает работать с некоторым набором данных, название которых входные, и в результате этой работы выдает данные, название которых выходные.
В итоге, алгоритм преобразует входные данные в выходные. Это правило дает возможность сразу отделить алгоритмы от “методов” и “способов”. Пока мы не имеем формализованных входных данных, мы не можем построить алгоритм.
Второе требование – для работы алгоритма необходима память. В ней размещаются входные данные, с которыми алгоритм начинает работать, промежуточные данные и выходные данные, которые являются результатом работы алгоритма. Память является дискретной, т.е. состоящей из отдельных ячеек. Поименованная ячейка памяти носит название переменной.
В теории алгоритмов размеры памяти не ограничиваются, т. е. считается, что мы можем предоставить алгоритму любой необходимый для работы объем памяти. В школьной “теории алгоритмов” эти два правила не рассматриваются. В то же время практическая работа с алгоритмами (программирование) начинается именно с реализации этих правил.
В языках программирования распределение памяти осуществляется декларативными операторами (операторами описания переменных). В языке Бейсик не все переменные описываются, обычно описываются только массивы. Но все равно при запуске программы транслятор языка анализирует все идентификаторы в тексте программы и отводит память под соответствующие переменные.
Третье требование – дискретность. Алгоритм строится из отдельных шагов (действий, операций, команд). Множество шагов, из которых составлен алгоритм, конечно.
Четвертое требование – детерминированность. После каждого шага необходимо указывать, какой шаг выполняется следующим, или давать команду остановки. Пятое правило – сходимость (результативность). Алгоритм должен заканчивать работу после конечного числа шагов. При этом необходимо указать, что считать результатом работы алгоритма.
математический алгоритм число уравнение
Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:
Источник: studopedia.ru