Научная статья на тему 'Алгоритмическое моделирование'

Алгоритмическое моделирование Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
1405
221
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
АЛГОРИТМ / ПРОГРАММИРОВАНИЕ / МОДЕЛИРОВАНИЕ / ПРОЕКТИРОВАНИЕ / СТРУКТУРНЫЙ АНАЛИЗ / ЛОГИЧЕСКИЙ АНАЛИЗ / ALGORITHM / PROGRAMMING / MODELING / DESIGN / STRUCTURAL ANALYSIS / LOGICAL ANALYSIS

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Раев Вячеслав Константинович

Статья анализирует методы построения алгоритмов с использованием разных подходов. Каждый подход позволяет рассматривать алгоритм с разных позиций: как сложную систему, как функциональную систему, как информационную конструкцию. Обосновывается включение всех качеств систем в модель алгоритма. В целом проведенный анализ дает основание ввести новое понятие алгоритмическое моделирование

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Algorithmic modeling

The article analyzes methods for constructing algorithms using different approaches. The article considers the algorithm from different positions: as a complex system, as a functional system, as an information structure. The article substantiates the inclusion of all system qualities in the algorithm model. In general, the analysis provides a basis for introducing a new concept of «algorithmic modeling»

Текст научной работы на тему «Алгоритмическое моделирование»

УДК 004.02; 004.03; 004.8; 52-38; 528

АЛГОРИТМИЧЕСКОЕ МОДЕЛИРОВАНИЕ

Вячеслав Константинович Раев, профессор, д-р техн. наук, профессор кафедры инструментального и прикладного программного обеспечения,

e-mail: kafipp @bk.ru, Институт информационных технологий.

Московский технологический университет (МИРЭА), https://www.mirea.ru

Статья анализирует методы построения алгоритмов с использованием разных подходов. Каждый подход позволяет рассматривать алгоритм с разных позиций: как сложную систему, как функциональную систему, как информационную конструкцию. Обосновывается включение всех качеств систем в модель алгоритма. В целом проведенный анализ дает основание ввести новое понятие - алгоритмическое моделирование.

Ключевые слова: алгоритм; программирование; моделирование; проектирование; структурный анализ; логический анализ.

DOI: 10.21777/2312-5500-2017-1-36-40

Введение

Интерес к моделированию вычислительных процессов [1, 2] в информатике повысился в связи с развитием вычислительных методов и увеличением числа различных задач по обработке информации [3, 4]. Это обуславливает связь информационного моделирования в информатике с методами разработки и проектирования алгоритмов. Моделирование в информатике основано на информационном подходе [5, 6]. В свою очередь, информационный подход включает применение информационных единиц [7, 8], информационных моделей [9], информационных конструкций [10-12], информационных ситуаций [13, 14]. В упрощенном понимании информационная конструкция или информационная модель может быть представлена как набор параметров или показателей, образующих взаимосвязанную систему [15], включающую связи и отношения. Информационные модели выполняют в первую очередь дескриптивные функции и во вторую - прескриптивные [16]. Моделирование алгоритмов в информатике использует специальные модели. При этом основой моделирования алгоритмов являются проектные процедуры [17, 18]. Алгоритмы представляют собой системный информационный ресурс, что обусловлено использованием системного подхода при их построении. Некоторые алгоритмы обладают свойством ресурсности. Ресурсность означает возможность накопления и использования опыта для улучшения свойств алгоритма.

Материал и методы исследования. В качестве материала использовались существующие описания проектирования алгоритмов и составления компьютерных программ. Использовался опыт информационного моделирования в информатике и теории вычислительной математики. В качестве методики исследования применялся системный подход, логический анализ, теоретико-множественные отношения. Как инструмент анализа применялся дихотомический анализ и структурный анализ.

Системный подход к построению алгоритмов. Результатом построения алгоритма является блок-схема. Системный подход [19] к построению алгоритмов дает основание рассматривать блок-схему как сложную систему. Сложная система включает: подсистемы, части, элементы и связи между ними. Алгоритм как сложная система включает: блоки (повторяющиеся части блок-схемы), части блоков, элементы и связи между ними. Алгоритм может строиться на основе декомпозиции (разбиения) задачи на

В. К. Раев

подзадачи и так до элементов. Это построение «сверху вниз». Алгоритм может строиться на основе композиции (объединения) элементов в части, в блоки и так до подсистем. Это построение «снизу верх». Оба построения используют системный подход.

Функциональный подход к построению алгоритмов. Алгоритм после его создания должен выполнять одну или несколько функций. Типовое функциональное моделирование реализуется с помощью стандартного программного обеспечения, реализующего эти технологии. Наиболее известный подход - SADT [20] и его подмножество IDEF [21, 22]. При этом следует оговорить, что главная цель этих технологий - проектирование. Система SADT (Structured Analysis and Design Technique) разработана Дугласом Россом (SoftTech, Inc.) в 1969 г. для моделирования искусственных систем средней сложности. Эта методика используется для решения широкого круга задач. SADT-модель дает полное, точное и адекватное описание целенаправленной информационной системы, т. е. системы, имеющей конкретное целевое назначение. Этап проектирования модели такой системы всегда начинается с разработки целей системы и ее компонентов. Формулировка целей позволяет создать такую информационную систему, которая будет оптимальным образом направлять ее к поставленным целям. С этих позиций алгоритм является сложной системой, имеющей цель и функциональное назначение.

Практически во всех методах моделирования SADT используются три группы средств моделирования:

• диаграммы, иллюстрирующие функции, которые система должна выполнять, и связи между этими функциями - для этой цели чаще всего используются DFD или SADT (IDEF0);

• диаграммы, моделирующие данные и их взаимосвязи (ERD);

• диаграммы, моделирующие поведение системы (STD).

Все эти средства моделирования применимы для построения алгоритма.

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

Алгоритмическое структурное моделирование. Одним из принципов построения программ считается построение структуры алгоритма [23, 24]. Один из основных способов задания алгоритма - это построение блок-схемы алгоритма программы на основе структурного моделирования. При этом термин структурное моделирование не употребляют, но фактически метод построения блок-схемы является выраженным структурным моделированием. Блок-схема является функциональной структурной моделью, поскольку отражает последовательность действий в виде различных пиктограмм или информационных единиц. Блок-схема - структурное представление алгоритма, которое включает условные обозначения функциональных блоков. Каждое действие в блок-схеме графически изображается в виде структурной информационной единицы. Построение алгоритма сводится к нахождению информационного соответствия между вычислительной операцией и информационной графической единицей языка алгоритмов.

В Российской Федерации действует единая система программной документации (ЕСПД), частью которой является Государственный стандарт - ГОСТ 19.701-90 «Схемы алгоритмов программ, данных и систем». Данный ГОСТ соответствует международному стандарту ISO 5807:1985.

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

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

В табл. 1 приведены информационные графические единицы как элементы блок-схемы.

Таблица 1

Некоторые информационные графические единицы обозначений на блок-схемах алгоритмов

Единица

Наименование

Содержание

Блок вычислений

Вычислительные действия или последовательность действий

Логический блок

Логический переход в зависимости от некоторого условия

Данные

1. Данные

2. Ввод/вывод данных

Начало (конец)

Начало или конец алгоритма, вход или выход в программу

Процесс пользователя

Вычисление по стандартной программе или подпрограмме

Блок модификации

Действия, изменяющие содержание значений (например, циклические вычисления)

о

Соединитель

Соединение потоков или процессов. Знак контакта с другой частью схемы

Внешняя память

Обозначение внешней памяти

и

Межстраничные соединения

Указание связи между информацией на разных листах

Ручная операция

Действия оператора

На рис.1 в качестве примера приведена блок-схема алгоритма нахождения минимума в последовательности чисел.

Составление алгоритмов без всяких ограничений создает «неструктурные» программы и порождает ряд проблем. В этих случаях сложно разобраться в такой про-

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

В качестве развития идей структурного моделирования необходимо отметить направление структурного программирования. Структурное программирование [25] предполагает при разработке программ на языках высокого уровня использование только так называемых «структурных» конструкций. С современных позиций информационного подхода это не что иное, как частный случай информационной конструкции [10], ограниченной определенными условиями.

Свойство «структурности» программирования обеспечивают три основные информационные единицы: следование, ветвление и цикл с условием на входе («цикл-пока»), и три дополнительные: выбор, цикл с заданным числом повторений («счетный») и цикл с условием на выходе («цикл-до»).

Понятие «структурное программирование» связано не столько со структурным моделированием, сколько с логическим проектированием. Если обычное применение элементов блок-схем создает формальную структуризацию, то применение методов структурного программирования создает дополнительное свойство алгоритмов и программ - «логическую структуризацию». Логическая структуризация в структурном программировании (по существу, проектировании) повышают логику и верифицируемость алгоритмов. Алгоритмы и, соответственно, программы, составленные на их основе, обладают более высокой надежностью. Это главное преимущество структурного программирования. Задача логической структуризации не нова. Она ставилась как самостоятельно, так и в качестве подзадачи при решении других задач, например задачи декомпиляции, задачи распараллеливания алгоритмов и задачи анализа вычислительной сложности.

Рис. 1. Блок-схема алгоритма нахождения минимума в последовательности чисел

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

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

Литература

1. Самарский А. А. Математическое моделирование и вычислительный эксперимент // Вестник Ан СССР. 1979. Т. 5.

2. Марков А. А. Моделирование информационно-вычислительных процессов. - М.: МГТУ им. Н. Э. Баумана, 1999.

3. Каляев И. А., Левин И. И. Реконфигурируемые мультиконвейерные вычислительные системы для решения потоковых задач обработки информации и управления // Информационные технологии и вычислительные системы. 2011. № 2. С. 12-22.

4. Сергиенко А. Б. Цифровая обработка сигналов. - СПб.: БХВ-Петербург, 2011.

5. Колин К. К. Информационный подход как фундаментальный метод научного познания // Межотраслевая информационная служба. 1998. № 1. С. 3-17.

6. Коваленко Н. И. Информационный подход при построении картины мира // Перспективы науки и образования. 2015. № 6. С. 7-11.

7. Tsvetkov V. Ya. Information Units as the Elements of Complex Models // Nanotechnology Research and Practice. 2014. Vol. 1. Iss. 1. Р. 57-64.

8. Tsvetkov V. Ya. Information objects and information Units // European Journal of Natural History. 2009. Vol. 5. Iss. 2. Р. 99.

9. Павлов А. И. Информационные модели и информационные единицы // Перспективы науки и образования. 2015. № 6. С. 12-17.

10. Tsvetkov V. Ya. Information Constructions // European Journal of Technology and Design. 2014. Vol. 5. Iss. 3. P. 147-152.

11. Дешко И. П. Информационное конструирование: монография. - М.: МАКС Пресс, 2016. 64 с.

12. Rozenberg I. N. Information Construction and Information Units in the Management of Transport Systems // European Journal of Technology and Design. 2016. Vol. 12. Iss. 2. P. 54-62.

13. Tsvetkov V. Ya. Information Situation and Information Position as a Management Tool // European Researcher. Series A. 2012. Vol. 36. Iss. 12-1. P. 2166-2170.

14. Шайтура С. В. Информационная ситуация в геоинформатике // Образовательные ресурсы и технологии. 2016. № 5 (17). С. 103-108.

15. Воробиенко П. П., Струкало М. И. Обобщенная информационная модель взаимодействия систем инфокоммуникаций // Электросвязь. 2004. № 6. С. 24-26.

16. Цветков В. Я. Дескриптивные и прескриптивные информационные модели // Дистанционное и виртуальное обучение. 2015. № 7. С. 48-54.

17. Казеннов Г. Г. Основы проектирования интегральных схем и систем. - М.: Бином. Лаборатория знаний, 2005.

18. Новакова Н. Е., Горячев А. В., Горячев А. А. Концепция управления проектами в САПР // Программные системы и вычислительные методы. 2013. № 3. С. 257-263.

19. Кудж С. А. Системный подход // Славянский форум. 2014. № 1 (5). С. 252-257.

20. Хаймович И. Н. Применение методологии SADT при моделировании бизнес-процессов технологической подготовки производства машиностроительного предприятия // Известия Самарского научного центра Российской академии наук. 2008. Т. 10. № 3.

21. Верников Г. Основные методологии обследования организаций. Стандарт IDEF0 // Управленческое консультирование. 2000. www.consulting.ru.

22. Wang Z. J., Cai Z. X. Indirect Modeling Method by Translating IDEF0 Model into Petri Net Model // Journal of System Simulation. 2008. Vol. 20. Iss. 15. P. 3915-3919.

23. Кормен Т. и др. Алгоритмы. Построение и анализ / пер. с англ. - М.: Вильямс, 2009.

24. Никлаус В. Алгоритмы и структуры данных / пер. с англ. - М.: ДМК Пресс, 2016.

25. Якимов С. П. Структурное программирование. - Красноярск: СибГТУ, 2000

Algorithmic modeling

Vyacheslav Konstantinovich Raev, Prof. Dr., Professor of Chair of Instrumental and Application software

Institute of Information Technology. Moscow Technologies University (MIREA)

The article analyzes methods for constructing algorithms using different approaches. The article considers the algorithm from different positions: as a complex system, as a functional system, as an information structure. The article substantiates the inclusion of all system qualities in the algorithm model. In general, the analysis provides a basis for introducing a new concept of «algorithmic modeling».

Keywords: Algorithm, programming, modeling, design, structural analysis, logical analysis.

i Надоели баннеры? Вы всегда можете отключить рекламу.