Уровень алгоритмического обеспечения процесса управления.

Процесс моделирования процедур управления завершается определением требований к будущему набору алгоритмов.

Чтобы определить эти требования, в математике существует раздел теории алгоритмов.

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

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

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

- однозначность;

- индуктивность построения;

- детерминированность;

- результативность;

- конечность.

1) Свойство однозначности относится к процессу реализации алгоритма на уровне программы, когда каждому действию алгоритма однозначно соответствует определенная команда компьютера(символическая , мнемоход, машинный код);

2) Индуктивность построения – алгоритм должен позволять строить новые более сложные объекты с помощью исходных, более простых (числа – слова – формулы). Разработка ранее рассмотренных стандартных структур данных;

3) Детерминированность алгоритма, т.е. определенная заранее последовательность действий (т.е. указывается после каждого шага новый шаг).

4) Результативность – после останова через определенное количество шагов дается указание, что считать результатом выполнения алгоритма;

5) Конечность – заключается в конечном числе процедур и операндов;

Одной из самых распространенных графических форм алгоритмов являются блок-схемы.

Способ изображения алгоритмов в виде блок-схем представляет собой единые правила, подтвержденные стандартом.

Линейный блок – прямоугольный;

Блок условных операторов – ромб;

Каждый блок - либо элементарное действие, либо отдельный алгоритм (Это свойство используется модульным программированием).

 
  Уровень алгоритмического обеспечения процесса управления. - student2.ru

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

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

За основу модели алгоритма в этом разделе математики принято понятие рекурсивной функции.

Рекурсивная функция – это функция, определения которой используют саму определяемую функцию (это скорее форма описания функции, чтоб однозначно определить процедуру ее вычисления).

2. Второй тип моделей рассматривает алгоритм как детерминированное устройство, способное выполнять в каждый фиксированный момент времени элементарные операции.

Основной теоретической моделью этого типа алгоритма является машина Тьюринга.

Машина Тьюринга - (Turing machine) – это абстрактная машина, использованная Тьюрингом для такого определения понятий алгоритма и свойства вычислимости его.

3. Третий тип моделей основан на преобразовании слов в произвольных алфавитах.

Суть метода:

С помощью элементарных операций и подстановок заменяют части слов (полслова) другим словом.

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

Этот тип моделей довольно близок к машине Тьюринга и они легко сводимы друг к другу.

Сложность алгоритмов.

Сложность алгоритма является основным параметром, по которому можно определить эффективен тот или иной алгоритм.

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

Понятно, что при сравнении двух алгоритмов, обрабатывающих один и тот же объем данных, время обработки является достаточно точным критерием наиболее эффективного алгоритма при прочих равных условиях.

Формально сложность алгоритма определяется как порядок функции, выражающей время его работы.

Это выражается следующим образом:

Функции Уровень алгоритмического обеспечения процесса управления. - student2.ru и Уровень алгоритмического обеспечения процесса управления. - student2.ru считаются одного порядка, если для больших Уровень алгоритмического обеспечения процесса управления. - student2.ru существует такая константа Уровень алгоритмического обеспечения процесса управления. - student2.ru ,

что Уровень алгоритмического обеспечения процесса управления. - student2.ru .

Выражение, характеризующее сложность алгоритма при этом запишется как

Уровень алгоритмического обеспечения процесса управления. - student2.ru

Определим формально сложность алгоритма для метода обменной сортировки массива данных.

Алгоритм обменной сортировки массива, состоящего из n элементов списка, можно описать следующим образом:

1) определяется наименьший элемент списка данных;

2) осуществляется обмен наименьшего элемент с первым элементом списка;

3) в полученном списке снова определяется наименьший элемент;

4) производится обмен полученного последнего наименьшего элемента списка со вторым элементом.

При этом при определении первого наименьшего элемента производится Уровень алгоритмического обеспечения процесса управления. - student2.ru сравнений;

При определении второго элемента Уровень алгоритмического обеспечения процесса управления. - student2.ru сравнений и т.д.

Общий объем операции сравнения определяется по формуле:

Уровень алгоритмического обеспечения процесса управления. - student2.ru ;

т.к. число сравнений выражается полиномом 2ой степени сложности этого алгоритма квадратичная и ее можно формально записать как Уровень алгоритмического обеспечения процесса управления. - student2.ru .

Сейчас рассмотрим операцию перемножения матриц.

Каждое перемножение дает квадратичную полиномиальную сложность, равную: Уровень алгоритмического обеспечения процесса управления. - student2.ru .

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

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

Уровень алгоритмического обеспечения процесса управления. - student2.ru .

Таким образом, общая сложность алгоритма операций перемножения двух матриц может быть определена как:

Уровень алгоритмического обеспечения процесса управления. - student2.ru .

Алгоритм с оценкой сложности равной Уровень алгоритмического обеспечения процесса управления. - student2.ru , работает быстрее, чем алгоритм с оценкой равной Уровень алгоритмического обеспечения процесса управления. - student2.ru .

Таким образом, выбор оптимального алгоритма прямым образом зависит от оценки его сложности.

Распространенной сложностью алгоритма является экспоненциальная сложность.

Например, задача выбора одного из двух вариантов перемещения объекта двумя исполнителями.

Исполнители получают доступ к процедуре выбора по очереди.

При этом у каждого исполнителя существует только два варианта перемещения объекта.

Если процедура заканчивается через n ходов, то это означает, что осуществлено Уровень алгоритмического обеспечения процесса управления. - student2.ru перемещений.

Т.е. для анализа всех вариантов требуется количество времени пропорциональное Уровень алгоритмического обеспечения процесса управления. - student2.ru вариантов или формально сложность такого алгоритма может быть оценена как: Уровень алгоритмического обеспечения процесса управления. - student2.ru .

Т.е. сложность оценивается экспоненциальной зависимостью.

В таблице приведена сравнительная оценка различных степеней сложности алгоритмов в зависимости от числа членов n.

Уровень алгоритмического обеспечения процесса управления. - student2.ru Уровень алгоритмического обеспечения процесса управления. - student2.ru Уровень алгоритмического обеспечения процесса управления. - student2.ru Уровень алгоритмического обеспечения процесса управления. - student2.ru
» 106
109
104 1030

Линейная зависимость в параметре сложность алгоритма является более предпочтительной, чем полиномиальная, а тем более - экспоненциальная.

Применение алгоритмов.

Основная сфера применения алгоритмов – это описание задач для решения их с помощью компьютеров.

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

Здесь могут быть две ситуации:

1) задача решается однозначно прямыми методами, без дополнительной информации;

2) для решения задачи существует несколько способ решения и необходимы правила выбора наилучшего решения.

В первом случае метод решения называется детерминированным, раз и навсегда определенным, и в этом случае алгоритм имеет регулярную сущность.

Регулярная сущность, регулярный объект – это объект, существование которого не зависит от существования других объект.

Примерами таких задач являются задачи, решаемые с помощью математических уравнений, задачи вывода результатов, проверки данных и т.п.

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

Во втором случае классы задач требуют выбора метода решения из нескольких существующих и называется недетерминированными.

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

К таким задачам относятся, например, задачи нахождения кратчайших путей, задачи поиска объектов при отсутствии явных параметров поиска, задачи выбора оптимума и т.п.

Уровень программного обеспечения процесса управления.

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

Понятие программное обеспечение (ПО, Software) определяется как совокупность программ, процедур, правил и документации, входящих в состав вычислительной системы (т.е. компьютера, совокупности их, включая сети).

программное обеспечение в настоящее время прогрессирует наиболее стремительно и динамично.

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

Разработчики приложений разных отраслей науки и техники не успевают синхронно освоить все новые предложения в области программного обеспечения.

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

Выполним условную классификацию средств программного обеспечения:

Все программное обеспечение делятся на три функционально различные группы:

- системное;

- прикладное;

- средства интерфейса пользователя.

Рассмотрим каждую из групп программного обеспечения:

I. Системное программное обеспечение.

Системное ПО (System Software) – это ПО, используемое для разработки и выполнения прикладных программ.

В составе системного ПО можно выделить* три группы программ:

- системы программирования;

- операционные системы (ОС);

- сервисные программы или утилиты;

*Данное разделение весьма условно

1) Система программирования.

Система программирования (programming system) – это один или более языков программирования в совокупности со средой, необходимой для их использования на данном компьютере.

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

Каждый язык программирования имеет свою собственную систему программирования.

Средства системы программирования содержат следующий набор программ:

- транслятор;

- компоновщик;

- загрузчик;

- библиотеки подпрограмм;

- текстовые и графические редакторы;

- файлы описания системы;

- обучающие программные системы.

а) Программа транслятор (translator) – это программа, транслирующая (преобразующая) текст на одном из языков программирования в текст на машинном языке.

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

Трансляторы могут быть реализованы по принципу работы в виде программ компиляторов либо программ интерпритаторов.

Компилятор (compiler) – это программа, переводящая текст программы на языке программирования высокого уровня в эквивалентную программу на машинном языке.

Интерпритатор (interpreter) – это программа, анализирующая команды и операторы программы на языке программирования и немедленно их выполняющая.

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

б) Компоновщик (linker) – программа, строящая загрузочный модуль из объектных модулей.

Загрузочный модуль отличается от объектного только тем, что с помощью компоновщика он настраивается на конкретные адреса памяти и тем самым становится готовым к загрузке.

в) Загрузчик (loader) – программа, считывающая загрузочный модуль в оперативную память, настраивающая и выполняющая его.

Таким образом, при компиляции исходный модуль (т.е. программа на языке программирования, введенная в компьютер) претерпевает три этапа преобразования:

- компиляция в объектный модуль;

- компоновку в загрузочный модуль;

- загрузку.

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

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

д) Текстовый редактор (text editor) – программа, обеспечивающая редактирование текстов программ и документов в соответствии с задаваемыми пользователем командами.

Графический редактор или редактор изображений – программа, обеспечивающая редактирование графических элементов и изображений на экране дисплея.

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

2) Операционные системы (ОС).

Операционная система (operating system) – это совокупность программных средств, обеспечивающих управление аппаратными ресурсами вычислительной системы и взаимодействие программных процессов с аппаратурой, другими процессами и пользователем.

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

Это определение больше относится к традиционным ОС, таким как MS DOS, т.к. с появлением ОС нового поколения (WINDOWS NT, WINDOWS 95, OS/2 WARP) появились новые функции:

- средства поддержки объектно-ориентированного программирования; сетевых протоколов, средств мультимедиа, поддержки средств удаленного доступа, в том числе протокола TCP/IP сети Internet; поддержка игровых услуг и т.д.

Любая ОС начинает свою работу с вызова в память своего ядра, которое находится в памяти резидентно, т.е. постоянно, на все время работы компьютера до выключения его из сети.

Ядро ОС (operation system kernel) – это постоянно находящаяся в памяти часть операционной системы, управляющая всем другими процессами ОС и распределяющая для них ресурсы.

Несколько отдельной группой выглядят специальные сетевые ОС, которые обслуживают вычислительные сети различного масштаба и назначения( NET WARE(Novell), IBM MANAGER и др.).

3) Сервисные программы или утилиты.

Сервисные программы или утилиты (Service routine, utility) – это набор программ, предназначенных для выполнения вспомогательных функций при работе пользователя.

К таким программам можно отнести следующие:

- форматирование документов;

- создание текстовых файлов;

- калькулятор;

- календарь;

- обработчики гипертекстов;

- таблица символов;

- программа обмена информацией между пользователями;

и т. д.

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

Наши рекомендации