|
Беру с полки одну из подходящих случаю книг, -
попались "Мясные и грибные блюда" (1984). Открываю наугад: стр.45.
Рецепт, если вы не являетесь вегетарианцем, выглядит заманчиво:
"жаркое из говядины (ростбиф)". Нетрудно догадаться, что на
выходе кулинарного процесса ожидается готовый к употреблению
ростбиф, что и составляет сформулированную в названии рецепта цель.
Представить алгоритм без выходных данных
затруднительно: зачем он тогда нужен? И все же рискнем. Вспомним миф
о Сизифе: целью процесса было не закатывание камня на вершину горы,
а наказание нечестивца. Прояви Зевс чуть больше гуманности, и
пожизненное наказание можно было бы заменить фиксированным числом
шагов алгоритма. При необходимости задержки основного
вычислительного процесса можно добавить внутрь него, как
отдельный шаг, вызов процедуры, которая выполняет заданное число
каких-нибудь операций с невостребованным итогом. Этот
подпроцесс не формирует выходных данных. Впрочем, вы можете
и не согласиться с предлагаемой трактовкой, интерпретируя как
выходное значение сам факт завершения подпроцесса, поскольку в том и
состояла цель его запуска.
Что же касается входной информации, то она
действительно требуется не всякому алгоритму. В нашем рецепте
входные данные присутствуют - это перечисленные
ингредиенты: 1 кг говядины (филе или спинная часть), 50 г жира,
соль, перец, 30 г сливочного масла, хрен, вода. В сумке Печкина их
тоже можно отыскать (не продукты, а входные данные!) - это письмо,
которое почтальон собирается вручить адресату. А вот в задании
"нарисовать квадрат произвольного размера, пользуясь циркулем и
линейкой" оговорен лишь конечный результат, а на входе - ничего.
Кроме входных и выходных данных, как правило,
алгоритм предусматривает временное формирование
промежуточных данных, которые вновь поступят на обработку.
Исходные 50 г жира, когда повар растопит их на сковороде, переходят,
согласно законам физики и кулинарии, в состояние промежуточное.
В том же рецепте, примерно на полстраницы,
приводится описание технологического процесса, цитировать
которое здесь не станем из опасения, что читатель забудет, исходя
слюной, основной предмет обсуждения. Остановимся только на некоторых
неточных инструкциях, которые несут неполную
информацию. Вот одна из них: "филе жарят 20-25 минут". Так 20 или
25? Без должного поварского опыта, который никак не отражен в
описании, остается определенный риск завершить "алгоритмическую
обработку" несъедобным результатом.
Чтобы исключить подобный исход вычислительного
процесса, нужно при конструировании алгоритма строго
определить каждый его шаг, предусмотрев любые возможные
состояния процесса и соответствующие инструкции для их обработки.
Только такой алгоритм гарантирует однозначное получение требуемого
результата, и классифицируется как детерминированный.
Относительно такого алгоритма можно утверждать, что его
неоднократное применение к одинаковым входным данным всегда приводит
к одному итогу.
В противоположность детерминированному, в алгоритме
стохастическом заложена некоторая неопределенность в выборе
очередной инструкции. Таков был случайный выбор рецепта жаркого: при
повторении манипуляции с поваренной книгой я, скорее всего, открою
ее на другой странице. Но это не значит, что вычислительному
устройству угрожает положение буриданова осла и оно может перейти в
состояние летаргической паузы. Напротив, выбор конкретной инструкции
непременно происходит, только - на основе вероятностного
механизма. При этом разработчик алгоритма планирует, что, независимо
от выбранного продолжения, конечный результат будет удовлетворять
условиям поставленной задачи. Так, нашему мясному полуфабрикату не
повредят ни 20 минут прожаривания, ни 25 минут, ни любое
промежуточное значение, и в итоге заказчик получит именно ростбиф.
Нередко, перечисляя непременные свойства алгоритма,
к их числу относят "массовость", имея в виду возможность
его применения "для решения однотипных задач". Универсальность этого
требования вызывает сомнения, поскольку "штучное" предназначение
некоторых алгоритмов представляется достаточно разумным. Например,
рассказав друзьям анекдот, станете ли вы пересказывать его в той же
аудитории, или - удастся ли вам в другой компании повторить процесс
без малейших отклонений? А как здесь иначе интерпретировать
"однотипность", я не знаю.
Если говорить только о вычислительных процедурах,
то предлагаю в качестве контрпримера компьютерную программу,
существующую в единственном экземпляре на жестком диске. Будучи
запущенной, она форматирует винчестер, а стало быть, стирает и себя,
что делает повторное исполнение алгоритма невозможным.
Наконец, читателям-скептикам, которые сомневаются в
правомерности последних примеров для опровержения свойства
"массовости", предлагаю выполнить алгоритмическое
| Упражнение #1. |
|
Как известно из замечательной книги Л.Лагина,
однажды со Стариком Хоттабычем приключился неприятный
инцидент: он съел много эскимо, отчего сильно простыл.
Предположим, для упрощения, что за 5 минут выполняется 1 шаг
алгоритма: съедается очередная порция (в действительности,
старик справился со всем запасом мороженого за пять минут).
Подсчитайте (процесс - вычислительный!), сколько вам
понадобится алгоритмических шагов для достижения того же
результата (Хоттабычу "хватило" 43 порций). Если найдется хотя
бы пара читателей, повторивших или превзошедших славное
достижение Хоттабыча, то автор готов признать за указанным
алгоритмом свойство массовости. |
Назад
|