Введение в теорию алгоритмов. Блок-схема алгоритма

Содержание

Слайд 2

Структуры и алгоритмы обработки данных

Структуры и алгоритмы обработки данных

Слайд 3

Структуры и алгоритмы обработки данных Литература Вирт Н. Алгоритмы и структуры

Структуры и алгоритмы обработки данных

Литература
Вирт Н. Алгоритмы и структуры данных. М.:

Мир, 1989. – 360 с.
Вирт Н. Алгоритмы + структуры данных = программы / Пер. с англ.- М.: Мир, 1985.
Ахо А.В., Хопкрофт Д.Э., Ульман Д.Д. Структуры данных и алгоритмы. Пер. с англ.-М. : Издательский дом «Вильямс», 2001
Кормен Т., Лейзерсон Ч., Ривест Р., Штайн К.. Алгоритмы. Построение и анализ. 2-е издание. М: Изд. Дом «Вильямс», 2007
Д. Кнут. Искусство программирования для ЭВМ. Т. 1-3, М.: Мир, 1978, 1995 и др..
Сибуя М., Ямамото Т. Алгоритмы обработки данных. - М: Мир, 1986 -218с.
Лэгсам Й, Огенстайн М. Структуры данных для персональных ЭВМ - М: Мир, 1989 -586с.
Ключарев А. А., Матьяш В. А., Щекин С. В. Структуры и алгоритмы обработки данных: Учеб. пособие/ СПбГУАП. СПб., 2003. 172 с.: ил
Слайд 4

Понятие алгоритма Историческая справка Содержательные явления, приведшие к возникновению понятия «алгоритм»,

Понятие алгоритма Историческая справка

Содержательные явления, приведшие к возникновению понятия «алгоритм», прослеживаются

в математике в течении всего его времени существования
алгоритм Евклида нахождения наибольшего общего кратного натуральных чисел, найденный еще в III веке до нашей эры и доживший до наших дней
в XV веке был известен алгоритм, разработанный самаркандским астрономом Аль-Каши, вычисления
числа π, которое он вычислил с 17 верными значащими
цифрами после запятой
……..
Слайд 5

Первоначально понятие алгоритма - словесные правила, схемы, формулы, использовались для описания

Первоначально понятие алгоритма -
словесные правила, схемы, формулы, использовались для описания

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

Понятие алгоритма Историческая справка

Слайд 6

Понятие алгоритма Историческая справка 20-х - 30-х гг XX века: вопросы

Понятие алгоритма Историческая справка

20-х - 30-х гг XX века:
вопросы обоснования

математики
развитие вычислительной математики
развитие вычислительной техники
Необходимо уточнить понятия алгоритм как объекта математической теории
Появился раздел дискретной математики называемый теорией алгоритмов
Основоположники теории алгоритмов –
великие математики XX века А.И. Колмогоров,
А.А. Марков, А.П. Ершов, А.И. Мальцев, В.А. Успенский,
А.М. Тьюринг, К. Гёдель, А. Чёрчь, А. Туэ, Э.Л. Пост и др.
Слайд 7

Этапы решения задач на ЭВМ отладка и документирование программы тестирование кодирование

Этапы решения задач на ЭВМ

отладка и документирование программы

тестирование

кодирование

разработка алгоритма решения задачи

создание

технического задания на исходную задачу

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

Этапы

Этапы решения задач на ЭВМ

Слайд 8

Схема процесса создания программ для решения прикладных задач Создание программы можно

Схема процесса создания программ для решения прикладных задач

Создание программы можно рассматривать

как процесс последовательного преобразования информации от первоначальной неформальной постановки задачи,
до получения завершенной программы на языке программирования
Это преобразование затрагивает как описания информационных объектов задачи (данные) так и описания действий над этими объектами (алгоритмы)
Слайд 9

Определение алгоритма Алгоритм является базовым основополагающим понятием информатики, а алгоритмизация (программирование)

Определение алгоритма

Алгоритм является базовым основополагающим
понятием информатики, а алгоритмизация
(программирование) – основным

разделом курса
информатики (ядром курса)
Понятие алгоритма, как и понятие информации, точно
определить невозможно. Поэтому встречаются самые
разнообразные определения – от "наивно-интуитивных"
("алгоритм – это план решения задачи") до "строго
формализованных" (нормальные алгоритмы Маркова).
Слайд 10

Определение алгоритма Определения современной математики: последовательность действий со строго определенными правилами

Определение алгоритма

Определения современной математики:
последовательность действий со строго определенными правилами выполнения;
предписание, определяющее

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

Определение алгоритма Алгоритм — это всякая система вычислений, выполняемых по строго

Определение алгоритма

Алгоритм — это всякая система вычислений,
выполняемых по строго определённым

правилам, которая
после какого-либо числа шагов заведомо приводит
к решению поставленной задачи
А. Колмогоров
Алгоритм — это точное предписание, определяющее
вычислительный процесс, идущий от варьируемых
исходных данных к искомому результату
А. Марков
Слайд 12

Определение алгоритма Алгоритм – формально описанная вычислительная процедура, получающая исходные данные

Определение алгоритма
Алгоритм – формально описанная вычислительная
процедура, получающая исходные данные (вход


алгоритма или аргумент) и выдающая результат
вычислений на выход
Томас Х. Кормен и др., Алгоритмы: построение и анализ, 2-е изд.: Пер. с англ.-М. : Издательский дом "Вильямс", 2005
Слайд 13

Определение алгоритма Алгоритм может быть предназначен для выполнения его человеком или

Определение алгоритма

Алгоритм может быть предназначен для выполнения его человеком или автоматическим

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

Виды алгоритмов В ЗАВИСИМОСТИ ОТ ЦЕЛИ, НАЧАЛЬНЫХ УСЛОВИЙ ЗАДАЧИ, ПУТЕЙ ЕЕ

Виды алгоритмов

В ЗАВИСИМОСТИ ОТ ЦЕЛИ, НАЧАЛЬНЫХ УСЛОВИЙ ЗАДАЧИ, ПУТЕЙ ЕЕ РЕШЕНИЯ,

ОПРЕДЕЛЕНИЯ ДЕЙСТВИЙ ИСПОЛНИТЕЛЯ:
Вероятностный (стохастический) алгоритм -
дает программу решения задачи несколькими путями или способами, приводящими к вероятному достижению результата
Слайд 15

Виды алгоритмов В ЗАВИСИМОСТИ ОТ ЦЕЛИ, НАЧАЛЬНЫХ УСЛОВИЙ ЗАДАЧИ, ПУТЕЙ ЕЕ

Виды алгоритмов

В ЗАВИСИМОСТИ ОТ ЦЕЛИ, НАЧАЛЬНЫХ УСЛОВИЙ ЗАДАЧИ, ПУТЕЙ ЕЕ РЕШЕНИЯ,

ОПРЕДЕЛЕНИЯ ДЕЙСТВИЙ ИСПОЛНИТЕЛЯ:
Эвристический алгоритм -
достижение конечного результата программы действий однозначно не предопределено, так же как не обозначена вся последовательность действий, не выявлены все действия исполнителя
К эвристическим алгоритмам относят, например, инструкции и предписания. В этих алгоритмах используются универсальные логические процедуры и способы принятия решений, основанные на аналогиях, ассоциациях и прошлом опыте решения схожих задач
Слайд 16

Виды алгоритмов В ЗАВИСИМОСТИ ОТ ЦЕЛИ, НАЧАЛЬНЫХ УСЛОВИЙ ЗАДАЧИ, ПУТЕЙ ЕЕ

Виды алгоритмов

В ЗАВИСИМОСТИ ОТ ЦЕЛИ, НАЧАЛЬНЫХ УСЛОВИЙ ЗАДАЧИ, ПУТЕЙ ЕЕ РЕШЕНИЯ,

ОПРЕДЕЛЕНИЯ ДЕЙСТВИЙ ИСПОЛНИТЕЛЯ:
Линейный алгоритм -
набор команд (указаний), выполняемых последовательно друг за другом
Разветвляющийся алгоритм -
алгоритм, содержащий хотя бы одно условие, в результате проверки которого ЭВМ обеспечивает переход на один
из двух возможных шагов
Слайд 17

Виды алгоритмов В ЗАВИСИМОСТИ ОТ ЦЕЛИ, НАЧАЛЬНЫХ УСЛОВИЙ ЗАДАЧИ, ПУТЕЙ ЕЕ

Виды алгоритмов

В ЗАВИСИМОСТИ ОТ ЦЕЛИ, НАЧАЛЬНЫХ УСЛОВИЙ ЗАДАЧИ, ПУТЕЙ ЕЕ РЕШЕНИЯ,

ОПРЕДЕЛЕНИЯ ДЕЙСТВИЙ ИСПОЛНИТЕЛЯ:
Циклический алгоритм -
алгоритм, предусматривающий многократное повторение одного и того же действия (одних и тех же операций) над новыми исходными данными
К циклическим алгоритмам сводится большинство методов вычислений перебора вариантов
Цикл программы — последовательность команд ,
которая может выполняться многократно (для новых
исходных данных) до удовлетворения некоторому условию
Слайд 18

Виды алгоритмов В ЗАВИСИМОСТИ ОТ ЦЕЛИ, НАЧАЛЬНЫХ УСЛОВИЙ ЗАДАЧИ, ПУТЕЙ ЕЕ

Виды алгоритмов

В ЗАВИСИМОСТИ ОТ ЦЕЛИ, НАЧАЛЬНЫХ УСЛОВИЙ ЗАДАЧИ, ПУТЕЙ ЕЕ РЕШЕНИЯ,

ОПРЕДЕЛЕНИЯ ДЕЙСТВИЙ ИСПОЛНИТЕЛЯ:
Вспомогательный (подчиненный) алгоритм (процедура) -
алгоритм, ранее разработанный и целиком используемый при алгоритмизации конкретной задачи
Слайд 19

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

Способы задания алгоритма

словесный - запись последовательности действий на естественном языке
графический -

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

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

Способы задания алгоритма

словесный - запись последовательности действий на естественном языке

Нахождение наибольшего

общего делителя
Слайд 21

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

Способы задания алгоритма

графический - с помощью специальных графических символов

Блок-схема

Слайд 22

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

Способы задания алгоритма

формульный - с помощью математических формул, которые определяют порядок

вычислений

 

Формула для расчета поля электростатического потенциала, созданного двумя точечными зарядами

Слайд 23

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

Способы задания алгоритма

табличный - в виде таблицы, в которой фиксируются этапы

исполнения алгоритма и результаты исполнения

Поиск оптимального решения транспортной задачи методом потенциалов

Слайд 24

Способы задания алгоритма псевдокод – система обозначений и правил, предназначенная для

Способы задания алгоритма

псевдокод – система обозначений и правил, предназначенная
для единообразной

записи алгоритмов; занимает промежуточное место между естественным и формальным языками

Нахождение наибольшего общего делителя

Слайд 25

Способы задания алгоритма Запись на языке программирования Нахождение наибольшего общего делителя

Способы задания алгоритма

Запись на языке программирования

Нахождение наибольшего общего делителя

Слайд 26

Правила построения алгоритма Первое правило – при построении алгоритма необходимо задать

Правила построения алгоритма

Первое правило – при построении алгоритма необходимо задать множество

объектов, с которыми будет работать алгоритм
Формализованное (закодированное) представление этих объектов носит название данных
Алгоритм приступает к работе с некоторым набором данных, которые называются входными, и в результате своей работы выдает данные, которые называются выходными
Алгоритм преобразует входные данные в выходные.
Пока мы не имеем формализованных входных данных,
мы не можем построить алгоритм
Слайд 27

Правила построения алгоритма Второе правило – для работы алгоритма требуется память

Правила построения алгоритма

Второе правило – для работы алгоритма требуется память
В памяти

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

Правила построения алгоритма Третье правило – дискретность Алгоритм строится из отдельных

Правила построения алгоритма

Третье правило – дискретность
Алгоритм строится из отдельных шагов (действий,

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

Правила построения алгоритма Пятое правило – сходимость (результативность) Алгоритм должен завершать

Правила построения алгоритма

Пятое правило – сходимость (результативность)
Алгоритм должен завершать работу после

конечного числа шагов
При этом необходимо указать, что считать результатом работы алгоритма
Слайд 30

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

Свойства алгоритма

Дискретность (прерывность, раздельность) –
алгоритм должен представлять процесс решения задачи

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

Свойства алгоритма Определенность – каждое правило алгоритма должно быть четким, однозначным

Свойства алгоритма

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

свойству выполнение алгоритма носит механический характер и не требует никаких дополнительных указаний или сведений о решаемой задаче
Результативность (конечность) –
алгоритм должен приводить к решению задачи за конечное
число шагов
Слайд 32

Свойства алгоритма Массовость – алгоритм решения задачи разрабатывается в общем виде,

Свойства алгоритма

Массовость – алгоритм решения задачи разрабатывается в общем виде, то

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

Блок-схема алгоритма Блок-схема алгоритма - графическое изображение алгоритма в виде связанных

Блок-схема алгоритма

Блок-схема алгоритма - графическое изображение алгоритма
в виде связанных между

собой с помощью стрелок (линий перехода) и блоков - графических символов, каждый из которых соответствует одному шагу алгоритма
Внутри блока дается описание
соответствующего действия
Слайд 34

Основные типы блоков

Основные типы блоков

Слайд 35

Основные типы блоков

Основные типы блоков

Слайд 36

Основные типы блоков

Основные типы блоков

Слайд 37

Основные типы блоков

Основные типы блоков

Слайд 38

Основные типы блоков

Основные типы блоков

Слайд 39

Основные типы блоков

Основные типы блоков

Слайд 40

Основные типы блоков

Основные типы блоков

Слайд 41

Пример блок-схемы Блок-схема алгоритма вычисления факториала числа N

Пример блок-схемы

Блок-схема алгоритма
вычисления
факториала числа N

Слайд 42

Пример блок-схемы Блок-схема алгоритма нахождения максимального из двух значений

Пример блок-схемы

Блок-схема алгоритма
нахождения максимального из двух значений

Слайд 43

Пример блок-схемы Составить блок-схему алгоритма определения высот ha, hb, hc треугольника

Пример блок-схемы

Составить блок-схему алгоритма определения высот ha, hb, hc треугольника

со сторонами a, b, c, если

 

 

 

 

Слайд 44

Пример блок-схемы

Пример блок-схемы