Определение алгоритма

Алгоритм — это упорядоченный набор однозначных выполнимых шагов.

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

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

Вывести список всех положительных целых чисел

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

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

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

Однако бесконечные процессы применяются на практике. Например, контроль основных показателей состояния организма пациента в больнице или определение высоты, на которой находится самолет во время полета. Некоторые возразят, что в таких системах происходит просто повторение одного алгоритма, выполнение которого завершается, а затем автоматически повторяется. Другие посчитают, что такие аргументы являются просто попыткой сохранить чрезмерно ограничивающее формальное определение. В любом случае, термин «алгоритм» часто используется в нестрогом прикладном смысле по отношению к набору шагов, которые не обязательно определяют конечный процесс. Примером может послужить алгоритм деления в столбик, который не определяет конечный процесс в случае деления 1 на 3. Формально, в таких случаях термин «алгоритм» употребляется неправильно.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: