Что такое алгоритм: различия между версиями

Содержимое удалено Содержимое добавлено
Строка 7:
Сегодня мы познакомимся с понятиями алгоритма и исполнителя. Оказывается, не так-то просто понять, чем определяется сущность алгоритма.
 
лохи алгоритм это алгоритм
== Понятие алгоритма ==
 
Понятие [[w:алгоритм|алгоритма]] — одно из основных в программировании и информатике{{ref|cons1}}. Это последовательность команд, предназначенная исполнителю, в результате выполнения которой он должен решить поставленную задачу. Алгоритм должен описываться на формальном языке, исключающем неоднозначность толкования. Исполнитель может быть человеком или машиной. Исполнитель должен уметь выполнять все команды, составляющие алгоритм. Множество возможных команд конечно и изначально строго задано. Действия, выполняемые по этим командам, называются элементарными.
 
Запись алгоритма на формальном языке называется [[w:программа|программой]]. Иногда само понятие алгоритма отождествляется с его записью, так что слова «алгоритм» и «программа» — почти синонимы. Небольшое различие заключается в том, что под алгоритмом, как правило, понимают основную идею его построения. Программа же всегда связана с записью алгоритма на конкретном [[w:формальный язык|формальном языке]].
 
[[Изображение:4_1.JPG]]
 
Приведём для примера простой алгоритм действия пешехода, который
позволит ему безопасно перейти улицу:
 
# Подойти к дороге.
# Дождаться зелёного сигнала светофора.
# Перейти дорогу.
# Если впереди есть ещё одна дорога, то перейти к шагу 1.
 
Алгоритмы обладают свойством ''детерминированности'' (определённости): каждый шаг и переход от шага к шагу должны быть точно определены так, чтобы его мог выполнить любой другой человек или механическое устройство.
 
Кроме детерминированности, алгоритмы также должны обладать свойством конечности и массовости:
 
;Конечность: Алгоритм всегда должен заканчиваться за конечное число шагов, но это число не ограничено сверху.
 
;Массовость: Алгоритм применяется к некоторому классу входных данных (чисел, пар чисел, набору букв и тому подобному). Не имеет смысла строить алгоритм нахождения наибольшего общего делителя только для одной пары чисел 10 и 15.
 
Поясним эти свойства на простом примере. Рассмотрим следующую формулу вычисления числа <math>\pi</math>:
 
<math>\pi = 4 \left(1 - \frac{1}{3} + \frac{1}{5} - \frac{1}{7} + \dots \right) = 4\sum_{i = 0}^\infty \frac{(-1)^i}{2i+1}</math>.
 
Является ли эта формула алгоритмом вычисления числа <math>\pi</math>? Ответ на этот вопрос — «нет», так как здесь нет ни свойства массовости (нет входных данных), ни свойства конечности (сумма бесконечного количества чисел){{ref|cons2}}.
 
Операция суммирования бесконечного ряда не является элементарной ни для современных компьютеров, ни для человека, а если разложить эту операцию на отдельные шаги сложения, то получим бесконечное число шагов. Алгоритмы же по определению должны выполняться за конечное число шагов и через конечное число шагов предоставлять результат вычислений.
 
== Понятие элементарных объектов и элементарных действий ==