Термин алгоритмизация в научно-технической литературе имеет множество несовпадающих значений, поэтому прежде чем обсуждать тему алгоритмизации представим спектр мнений по данному вопросу.
Так, в материале из Википедии (свободной энциклопедии) нам сообщают, что для разработки алгоритмов и программ используется алгоритмизация — процесс систематического составления алгоритмов для решения поставленных прикладных задач. Алгоритмизация считается обязательным этапом в процессе разработки программ и решении задач на ЭВМ. Именно для прикладных алгоритмов и программ принципиально важны детерминированность, результативность и массовость, а также правильность результатов решения поставленных задач.
В Большом Энциклопедическом словаре и просто в Энциклопедическом словаре нам предлагают более лаконичные определения алгоритмизации:
алгоритмизация - этап решения задачи, состоящий в нахождении по формулировке задачи алгоритма её решения;
алгоритмизация - раздел информатики, изучающий методы, приёмы построения алгоритмов и их свойства (иногда также называется алгоритмикой).
В Геологической энциклопедии алгоритмизация – описание очередности выполнения различных операций, необходимых для решения той или иной задачи в форме алгоритма.
В статье "Основы алгоритмизации и программирование" я нахожу такое объяснение:
Алгоритм означает точное описание некоторого процесса, инструкцию по его выполнению. Разработка алгоритма является сложным и трудоемким процессом. Алгоритмизация – это техника разработки (составления) алгоритма для решения задач на ЭВМ.
Наконец, в Большой Советской энциклопедии в статье Н. П. Бусленко "Алгоритмизация процессов" я нахожу следующее развернутое описание алгоритмизации в части алгоритмизации процессов:
Алгоритмизация процессов – алгоритмическое описание процессов, описание процессов на языке математических символов для получения Алгоритма, отображающего элементарные акты процесса, их последовательность и взаимосвязь. Алгоритмы, получающиеся путём А. п., предназначаются, как правило, для реализации на ЭВМ.
Построение алгоритмов, описывающих реальные процессы, связывается обычно с двумя задачами: нахождением эффективных систем обработки информации и исследованием математическими методами процессов функционирования больших систем (См. Большая система). В задачах 1-го типа для построения алгоритма управления необходимо к алгоритму, описывающему процесс функционирования системы, присоединить алгоритм определения оптимального решения или оптимальных значений параметров управления. В задачах 2-го типа А. п. функционирования большой системы позволяет провести количественное и качественное исследования, связанные с оценкой основных её свойств (эффективности, надёжности и др.).
Для проведения алгоритмизации процесс расчленяется на элементарные акты (подпроцессы), применительно к которым может быть дано математическое описание, исходя из известных математических схем алгебры логики (См. Алгебра логики), конечных автоматов (см. Автоматов теория), случайных процессов (См. Случайный процесс), массового обслуживания теории (См. Массового обслуживания теория) и др. Соотношения, описывающие элементарные акты процесса, объединяются в систему, дополняются описанием взаимосвязей между актами и представляются в виде алгоритма.
Операции и процедуры, являющиеся элементами алгоритмического описания процесса, для программирования и реализации на ЭВМ удобно записывать на языке программирования (См. Язык программирования), с которого при помощи трансляторов-программ алгоритм автоматически переводится на язык команд (операций) конкретной ЭВМ. При этом одной операции алгоритма может соответствовать в общем случае несколько операций ЭВМ.
Лит.: Глушков В. М., Синтез цифровых автоматов, М., 1962; Бусленко Н. П., Математическое моделирование производственных процессов на цифровых вычислительных машинах, М., 1964; Алгоритмизация производственных процессов [Доклады семинара], в. 1, К., 1966.
Итак, согласно спектру представленных мнений, алгоритмизация – это процесс составления алгоритмов; этап решения задачи; раздел информатики (алгоритмика); описание очередности выполнения операций; техника разработки (составления) алгоритма. Кроме того, алгоритмизация процессов – это алгоритмическое описание процесса с целью получения алгоритма.
Алгоритмизацию, как раздел информатики, мы отнесем к алгоритмике ради меньшей путаницы в понятиях, а с остальным попробуем разобраться. Прежде всего, ответим на вопрос: кто должен заниматься алгоритмизацией? – Естественно, алгоритмисты. Следовательно алгоритмизация – это род деятельности алгоритмистов. Деятельность – это процесс. Но и слова с окончанием "ция" в русском языке тоже используются для обозначения процесса. Плюс к этому, я лично занимался алгоритмизацией десятки лет и не могу вспомнить ни единого случая, чтобы алгоритмизация протекала не как процесс: анализ исходной информации, выделение в ней ключевых моментов, их формализация на уровне осмысления и символьного представления и т.д. Итак, алгоритмизация, как мы выяснили, – это процесс.
Затем нам нужно выяснить к чему прилагается этот процесс. Перебрав все известные мне варианты, в том числе из личной практики, я должен отметить, что алгоритмизация всегда сводиться к последующей автоматизации деятельности людей. В моей практике, это разработка алгоритмов (или компьютерных программ) для автоматизации вычислений, прежде выполняемых вручную, или для автоматизации управления оборудованием.
Далее я предлагаю вашему вниманию фрагмент статьи по алгоритмизации, который был подготовлен мною года полтора назад.
Алгоритмизация – это главный или сопутствующий предмет многих статей нашего сайта. И это тот предмет, которым занимаются алгоритмисты, в том числе и я – один из авторов статей этого сайта. Поэтому стоит поговорить об этом термине отдельно. Если коротко, то алгоритмизация – это преобразование исходной информации к алгоритмическому виду.
Но прежде чем давать какое-то определение понятию "алгоритмический вид информации", позволю себе, с вашего разрешения конечно, один пример. Как-то (более 30 лет назад) мы проводили химическую очистку энергоблока Углегорской ГРЭС. Получилось так, что наша смена заканчивалась, а на следующую смену приходили более молодые и менее опытные коллеги. Мой товарищ, Миша Фичоряк, не стал в очередной раз рассказывать молодым коллегам что и как надо делать, он поступил проще. А именно: взял несколько листов бумаги, написал на них номера 1, 2, 3 и т.д. и нацепил их на актуальные, т.е. участвующие в операции, задвижки. Далее написал для молодых коллег примерно следующее: включить аммиачный насос, открыть задвижку 1, затем открыть задвижку 2, затем закрыть задвижку 3... и так далее.
Что сделал мой товарищ? – Отвечаю: он занимался алгоритмизацией – преобразовал исходную текстовую информацию из инструкции в алгоритмический вид. А именно. Он выделил участвующие в операции объекты, т.е. задвижки, и идентифицировал их, т.е. присвоил им обозначения: задвижка 1, задвижка 2 и т.д. Далее он указал для исполнителей алгоритмические действия, не допускающие многозначных толкований: открыть, закрыть, ну и еще до этого – включить насос, что тоже было уже освоенным алгоритмическим действием на тот момент.
Итак, что такое алгоритмический вид информации:
алгоритмический вид информации – это форма информации, вырабатываемая в процессе алгоритмизации, не допускающая многозначных интерпретаций и понимаемая исполнителем без каких-либо дополнительных пояснений и условий.
Алгоритмизация, как процесс преобразования исходной информации к алгоритмическому виду, включает в себя:
выделение актуальных (задействованных в операциях) объектов;
идентификация выделенных объектов;
выделение операций, понятных исполнителю и не допускающих неоднозначных интерпретаций;
указание порядка выполнения операций.
Исполнителем результатов алгоритмизации могут быть: человек, компьютер, автоматизированное устройство. Порядок операций в разработанном алгоритме может быть: линейный, с разветвлениями, с циклами, смешанный. Линейный порядок предусматривает пошаговое выполнение операций в последовательности: начиная с первой и заканчивая последней операцией без каких-либо отклонений и вариантов изменения этой последовательности.
Ветвление в алгоритме предполагает возможность изменения последовательности выполнения операций в зависимости от условия, выявленного в результате выполнения предшествующей или нескольких предшествующих операций. Однако ветвление не предполагает переход к какой-либо из предшествующих (предыдущих) операций.
Цикл от ветвления отличается тем, что он предусматривает возможность перехода (возвращения) к одной из предыдущих операций.
Смешанный порядок в алгоритме предполагает наличие участков с неодинаковым типом последовательностей операций. Смешанный порядок выполнения операций всегда присутствует в сложных алгоритмах и программах. Даже в "примере с задвижками" часто приходится менять порядок действий в зависимости от складывающейся походу дела ситуации и обстановки. Например, менять порядок открытия задвижек из-за неисправности одной из них (ветвление) или повторно включать подремонтированный насос, повторяя порядок открытия-закрытия задвижек (цикл), и т.п.
Еще один пример: разработка алгоритмов для АСУ ТП. Там сплошная алгоритмизации. Есть, например, методики расчета ТЭП (технико-экономических показателей), но их надо в процессе алгоритмизации переложить на язык блок-схем, затем программистам предстоит переложить порядок действий с языка блок-схем (алгоритмов) на алгоритмический язык, понятный ЭВМ.
Желаете иметь пример представления информации в алгоритмическом виде? Попробую что-то подобрать...
Пошаговая программа «подключения потока» («on-line»)
Шаг 1
Подать команду на открытие:
• клапана на общем входе в предварительный фильтр очистки B10/20-AA500;
• клапана F10/20-AA503 на входе в ФСД для нагнетания давления.
Проверить условия:
• открыт клапан на входе в предварительный фильтр очистки B10/20-AA500;
• открыт клапан F10/20-AA503 на входе в ФСД для нагнетания давления;
• давление F10/20-CP001 в ФСД больше 0,50 бар.
При выполнении выше перечисленных условий перейти к выполнению шага 2, иначе – действия прекратить.
Шаг 2
Подать команду на открытие:
• основного клапана F10/20-AA502 на входе в ФСД;
• клапана F10/20-AA515 отбора проб на выходе ФСД.
• клапана F10/20-AA516 на выходе из ФСД на всас рециркуляционых насосов промывки.
Подать команду на закрытие:
• клапана F10/20-AA503 нагнетания давления в ФСД.
Подать команду на включение:
• насоса рециркуляционой промывки F31/32-AP001.
Проверить условия:
• открыт основной клапан F10/20-AA502 на входе в ФСД;
• открыт клапан F10/20-AA515 отбора проб на выходе из ФСД.
• открыт клапан F10/20-AA516 на выходе из ФСД на всас рециркуляционых насосов промывки;
• закрыт клапан F10/20-AA503 нагнетания давления в ФСД;
• включен насос рециркуляционой промывки F31/32-AP001;
• перепад давления на ФСД ниже 3 бар (F10/20-CP001, F10/20-CP002);
• расход на рециркуляционную промывку выше 100000 кг/ч, (100м3/ч) (F00-CF001).
При выполнении выше перечисленных условий перейти к выполнению шага 3.
И так далее...
Обычные технологические инструкции часто являются предварительным этапом алгоритмизации. В исполнительных инструкциях объектами являются физические объекты – например, задвижки и клапана, а действиями являются физические действия – например, открыть и закрыть. В вычислительных инструкциях объектами являются математические объекты – например, формулы, обрабатываемы значения или таблицы значений, а действиями являются математические действия – например, вычисления по формулам и обработка таблиц. Кроме этого, в инструкциях могут быть проверки выполнения логических условий: например, достигнуто ли нужное давление в емкости или не является ли делитель нулем. Еще есть "Позвони начальству" или "Обратись к разработчику" – это для внештатный ситуаций.
Желаете узнать как можно преобразовать исходную информацию к алгоритмическому виду? Ну, я уже говорил о том, что надо выделить и обозначить актуальные объекты и действия. Затем надо расположить обозначенные действия с обозначенными объектами в надлежащем порядке. Все подобного рода алгоритмические преобразования можно проделать множеством разных способов. Но есть и одно непременное для всех вариантов общее условие: надо пошевелить мозгами. Успехов!
27.04.2013 Ваш Протасов Н.Г.
P.S. Перечитал свою статью, которую составил уже где-то с месяц тому назад.
Для меня алгоритмизация в большинстве, хотя и не во всех случаях – это процесс. Процесс преобразования информации к алгоритмическому виду. Например, алгоритмизация расчетов ТЭП – см. в разделе Программы для аппроксимации, это именно процесс, начинающийся с изучения исходной ситуации, включающей "наличие/отсутствие необходимой документации, местные особенности эксплуатации, мнения и пожелания эксплуатационного персонала, ну и прочее, что выявляется в каждой конкретной обстановке". И т.д. – не буду повторяться.
В более широком плане возможны и другие толкования этого термина. Например, процесс составления четких по своему смыслу инструкций – это тоже своего рода алгоритмизация. Однако там есть свои нюансы и своя специфика – статья О составлении инструкций, раздел Составление инструкций.
О некоторых других нюансах толкования этого термина в том плане, в котором я сталкивался в своей работе, постараюсь сообщить вам в следующий раз.
Смежные темы: