Проектирование алгоритмов и основные их типы.
Процесс решения задачи на ЭВМ можно разбить на ряд этапов:
постановка задачи;
математическое описание задачи — создание математической модели задачи;
составление алгоритма решения задачи;
составление программы;
разработка тестовой задачи;
отладка программы;
расчет на ЭВМ, получение и анализ результатов.
Существенным шагом на пути снижения трудоемкости процесса программирования стал структурный подход к проектированию алгоритмов. Его основным принципами являются нисходящее проектирование и модульное программирование. Нисходящее проектирование заключается в последовательном разбиении задачи на все более мелкие участки, т.е. процесс программирования идет «сверху вниз». Модульное программирование предполагает создание для каждого такого участка отдельной автономной программы —модуля. Специально созданная программа объединяет все модули в целое и управляет их работой.
Процесс последовательного построения алгоритма может выглядеть следующим образом: алгоритм сначала формулируется в самых «крупных» командах, при этом в записи алгоритма могут использоваться команды, выходящие за рамки возможностей исполнителя. Затем на каждом последующем этапе отдельные детали алгоритма уточняются, при этом недоступные исполнителю команды записываются как вызов вспомогательных алгоритмов. После этого строятся вспомогательные алгоритмы. Процесс продолжается до тех пор, пока все алгоритмы не будут состоять из команд, понятных исполнителю. Такой способ построения алгоритма называется методом последовательного уточнения алгоритма (пошаговой детализацией, нисходящей разработкой). Данный под ход к проектированию алгоритмов позволяет повысить качество и надежность разрабатываемых программ. Кроме того, появляется возможность использовать отдельные модули программы при решении других задач.
На практике «чистую» нисходящую разработку осуществить практически невозможно, так как выбор более конкретизированных элементов на каждой стадии должен производиться на основе представления и понимания возможностей языка реализации. Однако даже в данном случае на более поздней стадии часто обнаруживается, что некоторый выбор, сделанный ранее, был неверным. Это приводит к необходимости разработки новых и корректировки уже имеющихся модулей.
Другой подход к созданию программ называется восходящей разработкой. При этом осуществляется последовательное построение программы из уже имеющихся элементов, начиная с примитивов, предоставляемых выбранным языком программирования. Этот процесс заканчивается получением требуемой готовой программы. На каждом этапе из имеющихся элементов строятся новые более мощные (в контексте разрабатываемой программы) элементы. Они в свою очередь используются на следующем этапе для построения еще более сложных элементов и так далее до тех пор, пока не будут получены элементы, из которых можно непосредственно составить требуемую программу. На практике восходящая разработка в чистом виде невозможна; построение каждого нового элемента должно сопровождаться «просмотром вперед» с целью проверки, выполняются ли все требования, предъявляемые к разрабатываемой программе. Но даже при таком подходе на более позднем этапе часто обнаруживается, что использованная ранее последовательность построения была выбрана неправильно и требует корректировки.
Таким образом, на практике при разработке алгоритмов обычно используется сочетание методов нисходящего и восходящего проектирования.
Использование вышеназванных методов позволило создать огромное количество разнообразных алгоритмов, и пришлось обратить серьезное внимание на вопросы их эффективности. В значительной степени эффективность алго-
ритма зависит от его сложности — количественной характеристики, указывающей, сколько времени работает алгоритм (временная сложность) либо какой объем памяти необходим для его выполнения (емкостная сложность). Сложность рассматривается в основном для алгоритмических моделей, поскольку в них время и память присутствуют в явном виде.
Физическое время выполнения алгоритма — это величина, равная произведению n и t, где и число действий (элементарных шагов, команд); t — среднее время выполнения одного действия. Число шагов и определяется описанием алгоритма в данной алгоритмической модели и не зависит от физической реализации модели; t— величина физическая изависит от скорости сигналов в элементах и узлах ЭВМ, Поэтому объективной математической характеристикой трудоемкости алгоритма (его временной сложности) в данной модели является число действий.
Емкостная сложность алгоритма определяется числом ячеек памяти, используемых в процессе его исполнения. Эта величина не может превосходить числа действий п, умноженного на определенную константу (число ячеек, используемых в данной модели на одном шаге). В свою очередь число шагов может сколь угодно сильно превосходить объемпамяти (за счет циклов по одним и тем же ячейкам). Следует отметить, что проблемы памяти технически преодолеваются легче, чем проблемы быстродействия, которое имеетфизический предел — скорость распространения физических сигналов (300 тыс. км/с). Поэтому трудоемкость (временная сложность) считается более существенной характеристикойалгоритма.
Трудоемкость алгоритма, как и другие виды сложности, не является постоянной величиной, а зависит от размерности задачи. Под размерностью задачи понимается либо объем памяти, необходимой для записи данных, либо характеристики задачи, от которых зависит этот объем. В задачах обработки графов размерностью может считаться число вершин или дуг графа, в задачах преобразования логических выражений — число букв в выражении и т. д. Например, сложность простейшего алгоритма сложения двух чисел зависит от длины слагаемых. При сложении столбиком количество элементарных действий (сложений цифр) пропорционально количеству разрядов. При сложении в ЭВМ, использующей параллельный сумматор, трудоемкость сложения равна 1 (одна машинная команда сложения) до тех пор,
пока каждое слагаемое умещается в одной ячейке. Для больших чисел она пропорциональна числу ячеек, необходимых для размещения слагаемых.
Наиболее часто используют два способа определения функции сложности:
1. ее значением является сложность худшего случая (минимальное число действий, достаточное для обработки алгоритмом любых данных размерности n);
2. значением является средняя сложность, взятая по всем данным размерности n.
- Информатика и ее предметная область. Понятие информации и ее свойства
- Инструментальные системы (системы программирования) и прикладные программы.
- Количественные и качественные характеристики информации
- Общие сведения об операционных системах.
- 1.2. Классификация ос
- 1.3. Критерии оценки ос
- 1.4. Основные функции ос
- Единицы измерения информации.
- Основные компоненты ос и основные функции.
- Принципы построения эвм.
- Человеко-машинный интерфейс (на примере ос семейства Windows).
- Программные средства и методы защиты информации
- Классификация вычислительных машин.
- Файловая система (основные понятия).
- Структурная схема персонального компьютера (основные блоки и их назначение). Основные блоки персонального компьютера и их назначение
- Микропроцессор
- Системная шина
- 2.3.1.3. Основная память
- Внешняя память
- Внешние устройства
- Микропроцессоры и интерфейсная система компьютера.
- Понятие алгоритма (свойства алгоритма).
- Запоминающие устройства пк
- Проектирование алгоритмов и основные их типы.
- Устройства ввода и вывода данных
- Классификации компьютерных сетей.
- Прикладные программы офисного назначения.
- Топологии компьютерных сетей.
- Технологии работы с информацией. Кодирование информации Кодирование информации
- Интернет (история развития, структура Интернет).
- Набор, редактирование и оформление текстовых документов ms Word.
- Редактирование текста
- Редактирование существующего текста с помощью команды Правка / Заменить
- Редактирование текста
- Передача информации (адресация) в Интернет.
- Основные возможности сети Интернет.
- Базы данных (бд) и системы управления базами данных (субд)
- Базы данных (общие положения и классификация).
- Виды моделей данных
- Иерархическая модель данных
- Сетевая модель данных
- Реляционная модель данных
- .Базы знаний. Экспертные системы
- Проектирование баз данных.
- Информационная безопасность
- Методы защиты информации. Физические методы защиты данных
- Программные методы защиты данных
- Компьютерные вирусы и их классификация.
- Системное программное обеспечение
- Антивирусные средства
- Информатизация общества, информационное общество
- Основные компоненты сети
- . Виды сетевого коммуникационного оборудования для локализации трафика Локализация трафика и изоляция сетей
- Языки программирования их классификация.
- Средства анализа данных в таблицах в ms Excel. Анализ данных с помощью сводной таблицы