теория алгоритмов.ppt
- Количество слайдов: 26
Основные требования к алгоритмам. Блок-схемы алгоритмов Предмет теории алгоритмов и формальных систем заключается в определении того, какие объекты и действия над ними следует считать точно определенными, какими свойствами и возможностями обладают комбинации действий, что можно и чего нельзя сделать с их помощью Понятие «алгоритм» относится фундаментальных понятий математики к числу С точки зрения современной практики алгоритм – это программа (процедура), приводящая к результату. Критерием алгоритмичности процесса является возможность его запрограммировать
Алгоритм точное предписание о выполнении в определённом порядке некоторой системы операций, ведущих к решению всех задач данного типа Например, алгоритм приготовления манной каши или алгоритм сложения двух произвольных натуральных чисел, записанных в десятичной системе счисления
Происхождение слова «алгоритм» Происхождение слова «алгоритм» связано с алгоритмами позиционной арифметики, например, при выявлении правил с числами, записанными в десятичной системе счисления, которые были впервые найдены в средневековой Индии
Европейцы познакомились с ними по книге арабского ученого IX века Мухаммеда ибн Муса аль-Хорезми (т. е. Мухаммед сын Мусы, уроженец Хорезма) В те времена Аральское море называлось «озером Хорезм» , а сам город Хорезм располагался южнее этого моря в бассейне реки Амударьи Имя ученого аль Хорезми латинизировалось и стало звучать «алхоризм» , «алгорифм» , «алгоритм»
Алгоритм – это однозначно трактуемая процедура, осуществляемая черным ящиком (вычислительная машина, человек или устройство) для получения выхода из входа. Процедура – это конечная последовательность точно определенных шагов или операций, для выполнения каждой из которых требуется конечный объем оперативной памяти и конечное время Для создания алгоритма необходимо: 1. Определить процедуру, которую должен выполнять алгоритм. 2. Выявить входные данные. 3. Выявить выходные данные.
При создании любого алгоритма надо понимать, что: 1. Алгоритм будет получать определенные входные данные 2. Алгоритм будет преобразовывать их для создания требуемых выходных данных 3. Необходимо определить порядок выполнения отдельных процессов 4. Необходимо определить, какие отдельные процессы будут взаимодействовать между собой, а какие зависят от тех или иных других процессов
Основные принципы построения алгоритмов 1. Алгоритм применяется к исходным данным и выдает результаты, т. е. что алгоритм имеет входы и выходы. При этом в ходе работы алгоритма появляются промежуточные результаты, которые используются в дальнейшем. Каждый алгоритм имеет дело с данными – входными, промежуточными и выходными Формализованные представления информации составляют данные алгоритма Данные – это объекты, с которыми работает алгоритм Эти объекты должны быть четко определены и отличимы как друг от друга, так и от «необъектов»
В теории алгоритмов фиксируют конкретные конечные наборы исходных объектов, называемых элементарными, а также конечный набор средств построения объектов из элементарных. Набор элементарных объектов образует конечный алфавит исходных символов (цифр, букв, слов и т. д. ), из которых строятся другие объекты. Типичным средством построения неэлементарных объектов являются индуктивные определения. Индуктивное определение основано на построение новых объектов из уже имеющихся или вновь построенных Например, правило образования членов арифметической прогрессии есть индуктивное определение арифметической прогрессии
Слова конечной длины (числа, формулы и т. д. ) – тип алгоритмических данных Число символов в слове – естественная единица измерения объема обрабатываемой информации Более сложный случай алгоритмических объектов – формулы. Они также определяются индуктивно и также являются словами в конечном алфавите Не каждое слово в этом алфавите является формулой. В этом случае перед основным алгоритмом идут вспомогательные, которые проверяют, удовлетворяют ли исходные данные нужным требованиям (быть формулой). Такая проверка называется синтаксическим анализом
Основные принципы построения алгоритмов 2. Единицы измерения объема данных и памяти согла сованы, при этом память может быть бесконечной Данные для своего размещения требуют памяти. Память обычно считается однородной и дискретной, т. е. состоит из одина ковых ячеек, причем каждая ячейка может содержать один символ алфа вита данных.
Основные принципы построения алгоритмов 3. Алгоритм состоит из отдельных элементарных шагов, причем множество различных шагов, из которых составлен алгоритм – конечно. Обычно элементарный шаг имеет дело с фиксированным числом символов, однако это требование не всегда выполняется
Основные принципы построения алгоритмов 4. Последовательность шагов алгоритма детерминирована, т. е. после каждого шага указывается, какой шаг делать дальше, либо дается команда «остановка» , после чего работа алгоритма считается законченной
Основные принципы построения алгоритмов 5. Алгоритму свойственна результативность (сходимость), т. е. остановка после конечного числа шагов с указанием того, что считать результатом. Проверить результативность гораздо труднее, чем предыдущие требования. Сходимость обычно не удается установить простым просмотром алгоритма. Общего метода проверки сходимости пригодного для любого алгоритма и любых данных вообще не существует
Основные принципы построения алгоритмов 6. Следует различать: описание алгоритма (программу); механизм реализации алгоритма (включающий средства запуска, остановки, реализации элементарных шагов, выдачи результатов и обеспечения управления ходом вычисления (использование ЭВМ); процесс реализации алгоритма, т. е. последо вательность шагов, которая будет порождена применении алгоритма к конкретным данным
Задача Из последовательности Р из n положительных чисел, где n – конечное произвольное число, построить возрастающую последовательность Решение Дана последо вательность Р из n положительных чисел ( n – конечное произвольное число). Требуется упорядочить их, т. е. построить последовательность R, в которой эти же числа расположены в порядке возрастания
Простейший способ: просматриваем Р и находим наименьшее число; вычеркиваем его из Р и выписываем его как первое число последовательности R; снова просматриваем Р и находим наименьшее число, приписываем его справа к R и т. д. , до тех пор, пока в Р не будут вычеркнуты все числа. Возникает вопрос: «Что значит «и т. д. » ?
Описание алгоритма в более четкой форме, с указанием переходов между шагами: Шаг 1. Ищем в Р наименьшее число Шаг 2. Найденное число записываем справа к R и вычеркиваем из Р Шаг 3. Если в Р нет чисел, переходим к шагу 4, иначе переходим к шагу 1 Шаг 4. Конец. Результатом считать последовательность R, построенную к этому моменту
Что значит «дана последо вательность исел? » ч Является ли таковой запись: В описании алгоритма не сказано, как найти наименьшее среди таких чисел, и вообще не говорится о том, как искать наименьшие числа. Предполагается, что речь идет о числах, представленных в виде десятичных дробей и известно, как их сравнивать
При описании алгоритма необходимо уточнить формы представления данных. Нельзя заявить, что допустимо любое представление чисел, т. к. для каждого представления существует свой алфавит, который помимо цифр может включать запятые, скобки, знаки операций и функций, и свой способ сравнения чисел (например, способ перевода в десятичную дробь). Представление чисел в виде десятичных дробей тоже не решает всех проблем. Например, сравнение 10 20 и разрядных чисел уже не может считаться элементарным действием. Например, сравните, какое число больше 90811557001, 15 или 32899901467, 0048
В машинных алгоритмах само представление числа требует уточнения: нужно ограничить число разрядов в числе (от этого зависит, сколько ячеек памяти будет занимать число), договориться о способе размещения десятичной запятой в числе (с фиксированной или с плавающей запятой), т. . к. способы обработки этих представлений различны. на шаге 1 требуется узнать: 1) само число (чтобы записать его в R) и 2) его место в Р, т. е. адрес в той части памяти, где хра нится (чтобы вычеркнуть его Р из Р), а следовательно, нужно иметь средства указания этого адреса. Таким образом, в примере приведенное описание не является алгоритмом, хотя выглядит достаточно определенным и ясным.
В приведенном описании только два требования выполнены в достаточной мере: довольно очевидна сходимость алгоритма (после шагов 1 и 2 либо работа заканчивается, либо из Р вычеркивается число, поэтому после n выполнений 1 и 2 шагов алгоритм остановится) не вызывает сомнения детерминированность (если учесть общепринятое соглашение): если шаг не содержит указаний о дальнейшем переходе, выполняется шаг, следующий за ним в описании
Блок-схемы алгоритмов Связи между шагами можно изобразить в виде графа. Граф, в котором вершинам соответствуют шаги, а ребрам – переходы между шагами, называется блоксхемой алгоритма Вершины графа могут быть двух видов: 1) из которой выходит одно ребро – операторы; 2) из которой выходит два ребра – логические условия или предикаты
Кроме того, имеется единственный оператор конца (из которого не выходит ни одного ребра) и единственный оператор начала Особенность блок-схем: связи блок схем, не зависят от того, являются ли шаги элементарными или представляют собой самостоятельные алгоритмы – блоки Для данного блока неважно, как устроены другие блоки Для программирования блока достаточно знать: 1) где лежит исходная информация, 2) какова форма её предcтавления, 3) что должен делать блок и 4) куда записывать результат
Наглядность блок схем отражает связи лишь по управлению. Блок схемы не содержат сведений ни о данных, ни о памяти, ни о используемом наборе элементарных шагов. Например, если в блок схемах нет циклов, это не значит, что циклов нет в алгоритме. По существу, блок схема это не язык, а средство для описания детерминизма
Понятия, связанные с алгоритмом Каждый алгоритм имеет исполнителя (устройство или человек, выполняющий алгоритм) Алгоритм задает вычислительный (алгоритмический) процесс, состоящий из отдельных (элементарных) шагов – тактов алгоритма Алгоритм перерабатывает исходный набор данных Р (входной объект) в результат работы Q (объект на выходе) Каждый такт работы алгоритма завершается переходом в новое состояние, среди которых некоторые опознаются как заключительные состояния
Пусть алгоритм имеет исходный набор данных Р Алгоритмический процесс может протекать: 1. На некотором шаге возникает заключительное состояние. При этом происходит остановка вычислений и выдается результат 2. Каждое следующее состояние сменяется последующим до бесконечности, т. е. процесс вычислений никогда не останавливается (например, зацикливание алгоритма) 3. В некотором состоянии процесс вычислений обрывается без выдачи результата – произошла безрезультатная остановка (например, ошибка – деление на ноль)
теория алгоритмов.ppt