Алгоритмы программирования

Содержание

Слайд 2

Кафедра медицинской кибернетики и информатики РНИМУ им. Н.И. Пирогова Минздрава РФ

Кафедра медицинской
кибернетики и информатики
РНИМУ им. Н.И. Пирогова Минздрава РФ

Отделение

медицинской кибернетики МБФ и кафедра медицинской кибернетики и информатики
основаны в 1973 году
заслуженным деятелем науки РФ,
профессором С.А. Гаспаряном.

Заведующий кафедрой -
д.м.н. профессор Зарубина Т.В.

Завуч кафедры и зав. курсом Медицинская информатика – к.м.н. доцент Николаиди Е.Н.

Слайд 3

Инструктаж по технике безопасности и противопожарной безопасности требования, обязательные для исполнения

Инструктаж по технике безопасности и противопожарной безопасности

требования, обязательные для исполнения студентами

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

Действия при пожаре: Студент, обнаруживший пожар или его признаки (задымление, запах

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

Студент, обнаруживший пожар или его признаки (задымление, запах гари

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

Специальные требования: Студент обязан выполнять только ту работу, которая поручена и

Специальные требования:

Студент обязан выполнять только ту работу, которая поручена и соответствует

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

Категорически запрещается: Работать на неисправном оборудовании. Приносить в учебные классы еду

Категорически запрещается:

Работать на неисправном оборудовании.
Приносить в учебные классы еду и
напитки.
Изменять

настройки компьютеров.
Загромождать проходы сумками и верхней
одеждой.
Класть на рабочие части устройства
посторонние предметы.
Искать и устранять самостоятельно неисправности приборов и устройств.
В случае внезапного прекращения подачи электроэнергии немедленно сообщить преподавателю или дежурному инженеру.
После окончания работы студент должен убрать за собой рабочее место.
Слайд 7

Что бывает ЗА НАРУШЕНИЕ Лица, нарушающие требования инструкции: отстраняются от работы

Что бывает ЗА НАРУШЕНИЕ

Лица, нарушающие требования инструкции:
отстраняются от работы
направляются на

повторный инструктаж с последующим оповещением деканата,
при повторном нарушении несут административную ответственность.
Слайд 8

Общие требования к учащимся на кафедре Медицинской кибернетики и информатики Наличие

Общие требования к учащимся на кафедре Медицинской кибернетики и информатики
Наличие белых

халатов
Выполнение правил техники безопасности
Наличие конспектов лекций и теоретического материала занятий (обязательно)
На занятиях по модульному контролю использование любых электронных средств (мобильные телефоны, планшеты и т.п.) НЕДОПУСТИМО
Слайд 9

Алгоритмы программирования.

Алгоритмы программирования.

Слайд 10

1.Принципы архитектуры ЭВМ фон Неймана Использование двоичной системы счисления в вычислительных

1.Принципы архитектуры ЭВМ фон Неймана

Использование двоичной системы счисления в вычислительных машинах.


Программное управление ЭВМ.
Память компьютера используется не только для хранения данных, но и программ.
Ячейки памяти ЭВМ имеют адреса, которые последовательно пронумерованы.
Возможность условного перехода в процессе выполнения программы.
Слайд 11

Слайд 12

ЭВМ Эниак 1946г. Компьютер 2019

ЭВМ Эниак 1946г.

Компьютер 2019

Слайд 13

2.Области применения компьютеров: Обработка и хранение информации Анализ данных в различных

2.Области применения компьютеров:

Обработка и хранение информации
Анализ данных в различных областях
Работа с

Big Data
Обработка изображений
Мультимедиа – аудио-, видео- и звук
Телекоммуникации – сети и связь и т.д.
Робототехника
Исследования космоса
Использование в цифровой медицине и электронное здравоохранение и.т.д.
Слайд 14

Стоматология

Стоматология

Слайд 15

Новейщие информационные медицинские технологии . Телемедицина.

Новейщие информационные медицинские технологии . Телемедицина.

Слайд 16

Единая государственная система здравоохранения РФ ИЭМК-Интегрированная электронная медицинская карта» ФХД-Финансово-хозяйственная деятельность

Единая государственная система здравоохранения РФ

ИЭМК-Интегрированная электронная медицинская карта»
ФХД-Финансово-хозяйственная деятельность
Задание

1 – весь состав ЕГИСЗ.
Слайд 17

Компьютерная томография

Компьютерная томография

Слайд 18

Основные направления IT будущего: По данным на 2019-2021гг ведущих аналитических изданий

Основные направления IT будущего:

По данным на 2019-2021гг ведущих аналитических изданий Cnews

и Gartner, в целом для IT-сферы, наиболее перспективными “горячими технологиями” являются направления:
аналитика больших данных
искусственный интеллект
облачные решения
интернет вещей
сети 5G
автономные системы (дроны, роботы, беспилотные автомобили и т. д.)
виртуальная и дополненная реальность
квантовые технологии
периферийные вычисления
цифровые двойники предприятий, организаций процессов и систем.
Слайд 19

Темы докладов: Системы искусственного интеллекта в мед и здравоохранении Использование облачных

Темы докладов:

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

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

3. Основные понятия IT Опр. 1. Информация – это сведения об

3. Основные понятия IT Опр. 1. Информация – это сведения об объектах

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

Опр. 2.Информационный процесс это перенос и восприятие информации от исследуемого объекта к воспринимающему

Опр. 2.Информационный процесс

это перенос и восприятие информации от исследуемого объекта

к воспринимающему
Слайд 22

4. Основные понятия Опр. 3 . Компьютер – это комплекс тех.

4. Основные понятия

Опр. 3 . Компьютер – это комплекс тех. И

программных средств, предназначенных для обработки информации в процессе решения вычислительных и информационных задач.
Опр. 4. Информационная система – это система, предназначенная для хранения, поиска и обработки информации и соответствующие организационные ресурсы ( чел., тех, фин.), которые обеспечивают работу ИС
Опр. 4. Информационная технология -IT – это технология, использующая совокупность тех. И прогр. Средств, методов сбора, обработки, хранения и передачи данных, для получения качественно новой информации о состоянии объекта, процесса или явления.
Слайд 23

Хранение информации в памяти компьютера Так человек видит изображение: 1111 1111

Хранение информации в памяти компьютера Так человек видит изображение:
1111 1111

1101 1000 1111 1111 1110 0000 0000 0000 0001 0000 0100 1010 0100 0110 0100 1001 0100 0110 0000 0000 0000 0001 0000 0001 0000 0000 0000 0000 0000 0001 0000 0000 0000 0001 0000 0000 0000 0000 1111 1111 1101 1011 0000 0000 0100 0011 0000 0000 0000 0011 0000 0010 0000 0010 0000 0011 0000 0010 0000 0010 0000 0011

Компьютер видит набор «0» и «1»
(первые две строчки файла):

Слайд 24

Процессор — электронный блок, либо интегральная схема (микропроцессор), исполняющая машинные инструкции

Процессор — электронный блок, либо интегральная схема (микропроцессор), исполняющая машинные инструкции (код

программ), главная часть аппаратного обеспечения компьютера 
Слайд 25

Общая схема компьютера

Общая схема компьютера

Слайд 26

5.Единицы измерения информации Опр. 8. Бит (bit) – базовая единица измерения

5.Единицы измерения информации

Опр. 8. Бит (bit) – базовая единица измерения информации, может

содержать только одну двоичную цифру. Бит может принимать только два значения: «0» или «1».
Опр. 9. Байт (byte) – также единица количества информации, один байт равен восьми битам (1 Байт = 8 бит).
Слайд 27

6. Основные направления теории кодирования

6. Основные направления теории кодирования

Слайд 28

П.6 Алгоритмы и их свойства? Опр. Алгоритм – это совокупность действий,

П.6 Алгоритмы и их свойства?

Опр. Алгоритм – это совокупность действий, приводящих

к достижению результата за конечное число шагов.
Слайд 29

Свойства алгоритмов: Дискретность– это разбиение алгоритма на ряд отдельных законченных действий-шагов.

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

Дискретность– это разбиение алгоритма на ряд отдельных законченных действий-шагов.
Детерминированность -

любое действие алгоритма должно быть строго и недвусмысленно определено в каждом случае. Например, алгоритм проезда к другу, если к остановке подходят автобусы разных маршрутов, то в алгоритме должен быть указан конкретный номер маршрута 5, указать точное число остановок.
Конечность – каждое действие в отдельности и алгоритм в целом должны иметь возможность завершения.
Массовость – один и тот же алгоритм можно использовать с разными исходными данными.
Результативность – алгоритм должен приводить к достоверному решению.
Основная цель алгоритмизации – составление алгоритмов для ЭВМ с дальнейшим решением задачи на ЭВМ.
Слайд 30

Существует несколько способов записи алгоритмов На практике наиболее распространены следующие формы

Существует несколько способов записи алгоритмов
На практике наиболее распространены следующие формы представления

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

Виды алгоритмов Три основных вида алгоритмов: линейный алгоритм, разветвляющийся алгоритм, циклический алгоритм.

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

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

Слайд 32

Словесный алгоритм. 1. Линейный алгоритм Алгоритм перехода через улицу на светофоре:

Словесный алгоритм. 1. Линейный алгоритм

Алгоритм перехода через улицу на светофоре:
Подойти к переходу
Дождаться

включения зеленого света
Перейти улицу.
Слайд 33

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

Задание

1.Написать словесный алгоритм включения компьютера
2. Написать словесный алгоритм измерения площади

учебного стола прямоугольной формы
Слайд 34

2.Разветвляющийся алгоритм – алгоритм с вариантами ( с условиями) Пример 1.

2.Разветвляющийся алгоритм – алгоритм с вариантами ( с условиями)

Пример 1. Алгоритм

перехода через улицу
(какие варианты)?
На доске
Слайд 35

Задание 1. Написать словесный алгоритм с условием для покупки книги 2.

Задание

1. Написать словесный алгоритм с условием для покупки книги
2. Написать

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

П.7. Графическая форма представления алгоритма. Блок-схемы. Таб 2. Основные виды блоков представлены в блок-схемах

П.7. Графическая форма представления алгоритма. Блок-схемы. Таб 2. Основные виды блоков представлены

в блок-схемах
Слайд 37

Пример 1. Александр хочет позвонить Пете по городскому телефону. Надо: составить блок-схему, описывающую порядок действий Александра.

Пример 1. Александр хочет позвонить Пете по городскому телефону.
Надо: составить

блок-схему, описывающую порядок действий Александра.
Слайд 38

Пример 2. Ученику требуется купить учебник. Составить блок-схему, описывающую порядок действий ученика.

Пример 2.
Ученику требуется купить учебник.
Составить блок-схему, описывающую порядок действий

ученика.
Слайд 39

Блок-схема для примера 2

Блок-схема для примера 2

Слайд 40

Пример 3. Даны числа a=2, b=7 . Вычислить сумму S и разность R чисел.

Пример 3.
Даны числа a=2, b=7 .
Вычислить сумму S и

разность R чисел.
Слайд 41

Блок-схема к примеру 3

Блок-схема к примеру 3

Слайд 42

Графическая реализация разветвляющегося алгоритма

Графическая реализация разветвляющегося алгоритма

Слайд 43

Пример 4. Джон звонит Полу по городскому телефону, но трубку может

Пример 4.
Джон звонит Полу по городскому телефону, но

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

Блок-схема для примера 4.

Блок-схема для примера 4.

Слайд 45

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

Пример 5.
Ученику требуется купить учебник. В магазине в наличии

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

Блок-схема для примера 5

Блок-схема для примера 5

Слайд 47

3.Циклические алгоритмы. Блок-схемы с циклом. Циклы бывают двух видов: с предусловием

3.Циклические алгоритмы. Блок-схемы с циклом.

Циклы бывают двух видов:
с предусловием
с постусловием.

1.

В цикле с предусловием сначала проверяется условие входа в цикл, а затем выполняется тело цикла, если условие верно.

2. В цикле с постусловием сначала выполняется тело цикла, а потом проверяется условие.

Слайд 48

1.Цикл с предусловием

1.Цикл с предусловием

Слайд 49

2.Цикл с постусловием.

2.Цикл с постусловием.

Слайд 50

Пример 3. Вася звонит Пете, но у Пети может быть занята

Пример 3. Вася звонит Пете, но у Пети может быть занята

линия. Составить блок-схему действий Васи в этом случае.
Решение. Когда телефонная линия занята, то необходимо снова и снова набирать номер, пока Петя не закончит предыдущий разговор, и телефонная линия не окажется вновь свободной.
Слайд 51

Пример 4. Ученику требуется купить учебник. Составить блок-схему, описывающую действия ученика

Пример 4. Ученику требуется купить учебник. Составить блок-схему, описывающую действия ученика

в случае, если учебника нет в ряде магазинов.
Решение. Действия ученика: когда он приходит в первый и любой последующий магазины, то возможны два варианта – учебник имеется в наличии или учебника нет в продаже. Если учебника нет в продаже, то ученику следует пойти в другой книжный магазин и спросить данный учебник, и т.д. пока учебник не будет куплен.
Слайд 52

Пример 5. Даны числа a,b. Известно, что число a меняется от

Пример 5. Даны числа a,b. Известно, что число a меняется от

-10 до 10 с шагом 5,
b=7 (не изменяется).
Вычислить сумму S и разность R чисел a, b и для всех значений a и b.
Решение. В отличие от примеров 3 и 4 здесь число a меняется от -10 до 10 с шагом 5. Это означает, что число a является переменной цикла.
Сначала a=-10 – это первоначальное задание переменной цикла.
Слайд 53

Проверочная работа 2.

Проверочная работа 2.

Слайд 54

Занятие 3.Циклические алгоритмы Опр. . Тело цикла – это набор инструкций,

Занятие 3.Циклические алгоритмы

Опр. . Тело цикла – это набор инструкций, предназначенный

для многократного выполнения.
Опр. . Итерация – это единичное выполнение тела цикла.
Опр. . Переменная цикла(счетчик цикла) – это величина, меняющаяся на каждой следующей итерации(повторении) выполнения цикла.
Каждый цикл должен содержать следующие необходимые элементы:
первоначальное задание переменной цикла(счетчика),
проверку условия,
выполнение тела цикла,
изменение переменной цикла(счетчика).
Слайд 55

Виды циклов: 1. С предусловием – если условие верно, то выполняется

Виды циклов:

1. С предусловием – если условие верно, то выполняется тело

цикла
2. С постусловием – пока условие верно выполняется тело цикла
3. Со счетчиком – указываем сколько раз конкретно выполнится тело цикла
Слайд 56

Цикл с предусловием- сначала проверяется условие, потом выполняется тело цикла

Цикл с предусловием- сначала проверяется условие, потом выполняется тело цикла

Слайд 57

Задача 1 Найти сумму всех чисел от 5 до 45.

Задача 1

Найти сумму всех чисел от 5 до 45.

Слайд 58

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

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

Слайд 59

Задача 2 Вычислить и вывести сумму степеней числа 2, пока она не станет больше 2500

Задача 2

Вычислить и вывести сумму степеней числа 2, пока она не

станет больше 2500
Слайд 60

Цикл со счетчиком. Выполнение цикла фиксированное число раз.

Цикл со счетчиком. Выполнение цикла фиксированное число раз.

Слайд 61

Задача 3 Найти произведение m чисел

Задача 3

Найти произведение m чисел

Слайд 62

Расчет по алгоритму на тестовых данных. Задача 4. Произвести расчет по

Расчет по алгоритму на тестовых данных.

Задача 4. Произвести расчет по алгоритму

задачи 3, представленному в графическом виде( блок-схеме) при m=7
Слайд 63

Глава 2. Оценка эффективности алгоритмов. Псевдокод. П. 1. Оценка эффективности алгоритмов.

Глава 2. Оценка эффективности алгоритмов. Псевдокод.

П. 1. Оценка эффективности алгоритмов.
Этапы:
1.Теоретический анализ
2.Проверочные

испытания: измерение производительности
3. Реализация алгоритма
4.Измерение использования ресурсов. Измерения обычно выражаются как F(n) - функция от размера входных данных n.
Слайд 64

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

Измерение использования ресурсов.

Измерения обычно выражаются как функция от размера входных

данных n.
Группа параметров А:
1.Время работы алгоритма.
Теоретический анализ - используется асимптотический анализ временной сложности алгоритма, чтобы оценить время работы как функцию от размера входных данных. Результат обычно выражается в терминах О большое.
Практический анализ - используются сравнительные тесты времени работы алгоритма.
Этот вид тестов существенно зависит также от выбора языка программирования, компилятора и его опций, так что сравниваемые алгоритмы должны быть реализованы в одинаковых условиях.
2. Память: количество памяти для кода и количество памяти для данных, с которыми код работает. Для анализа алгоритма обычно используется анализ пространственной сложности алгоритма, чтобы оценить необходимую память времени исполнения как функцию от размера входа.
Результат обычно выражается в терминах О большое
Слайд 65

Группа Б. Для компьютеров, питающихся от батарей (например, ноутбуков) или для

Группа Б. Для компьютеров, питающихся от батарей (например, ноутбуков) или для

очень длинных/больших вычислений (суперкомпьютеры), измеряют также:
Прямое потребление энергии: энергия, необходимая для работы компьютера.
Косвенное потребление энергии: энергия, необходимая для охлаждения, освещения, и т. п.
Группа С. Доп . измерения:
Размер передачи: пропускная способность канала может оказаться ограничивающим фактором. Для уменьшения количества передаваемых данных используют сжатие данных.
Внешняя память: память, необходимая на диске или другом устройстве внешней памяти. Эта память может использоваться для временного хранения или для будущего использования
Время отклика: параметр важен для приложений, работающих в реальном времени, когда компьютер должен отвечать быстро на внешние события.
Общая стоимость владения: параметр важен, когда предназначен для выполнения одного алгоритма.
В результате, для решения конкретной задачи выбирается алгоритм, оптимальный (эффективный) в соответствии с выбранным критерием оптимальности
Слайд 66

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

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

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

Рассмотрение входных данных большого размера и оценка порядка роста времени работы

Рассмотрение входных данных большого размера и оценка порядка роста  времени работы алгоритма

приводят к понятию асимптотической сложности алгоритма.
Для записи асимптотической сложности алгоритмов используются асимптотические обозначения.
В оценке нас интересует не само количество операций, а то, как оно будет расти, если мы начнём увеличивать N. Скажем, при сложении значений одномерного массива мы, задав любое N, получаем столько же операций. Такая зависимость записывается как O(N).
O – это от слова Order, то есть порядок. O(N) значит, что для выполнения выбранного нами алгоритма с параметром N потребуется порядка N операций.
Слайд 68

Слайд 69

Слайд 70

Различные виды нотаций

Различные виды нотаций

Слайд 71

Проверочная работа Задача 1. Разработать блок-схему алгоритма : Вычислить сумму нечетных

Проверочная работа

Задача 1. Разработать блок-схему алгоритма :
Вычислить сумму нечетных чисел от

1 до n Использовать цикл с предусловием.
Задача 2. Сделать расчет по алгоритму задачи 1 для n=5
Задача 3. Разработать блок-схему для задачи:
Найти количество натуральных чисел, сумма которых не превышает 100. Цикл с постусловием
Слайд 72

П. Основные понятия теории множеств Опр.1. Множеством называется совокупность некоторых элементов,

П. Основные понятия теории множеств


Опр.1. Множеством называется совокупность некоторых элементов, объединенных каким-либо

общим признаком. Элементами множества могут быть числа, фигуры, предметы, понятия и т.п.
Опр.2.Объекты, из которых состоит множество, называются его элементами (например, буква К – элемент множества букв русского алфавита).
Опр.3. Множества, состоящие из одних и тех же элементов, называются равными (одинаковыми). Пишут А=В.
Слайд 73

Опр.4. Множество, которое не содержит ни одного элемента, называется пустым и

Опр.4. Множество, которое не содержит ни одного элемента, называется пустым и

обозначается символом ∅.
Опр.5. Множество В, состоящее из некоторых элементов данного множества А (и только из них), назы вается подмножеством (частью) этого множества.
Это записывается так: В⊂ А или А⊃В. Говорят, что «В – подмножество А»
Слайд 74

Основные числовые множества: N={1,2,3,4,…} – множество натуральных чисел; Z={…,-4,-3,-2,-1,0,1,2,3,4,…} – множество

Основные числовые множества:

N={1,2,3,4,…} – множество натуральных чисел;
Z={…,-4,-3,-2,-1,0,1,2,3,4,…} – множество целых чисел

(содержит все натуральные числа и числа, им противоположные), N⊂Z;
Q={x⏐ , где p∈Z, q∈N} – множество рациональных чисел (состоит из чисел, допускающих представление в виде дроби), N⊂Z⊂Q;
R=(-∞;+∞) – множество действительных чисел, Q⊂R (кроме всех рациональных чисел, содержит иррациональные числа, содержащие в своей записи знаки радикалов: ).
Слайд 75

Основные свойства отношений включения между множествами: ∅⊂А для любого множества А;

Основные свойства отношений включения между множествами:

∅⊂А для любого множества А;
А⊂А для

любого множества А (рефлексивность);
из того, что В⊂А не следует А⊂В (несимметричность);
если А⊂В и В⊂А, то А=В (антисимметричность);
если А⊂В и В⊂С, то А⊂С (транзитивность).
Слайд 76

Операции над множествами Опр.6 Пересечением множеств А и В называется множество

Операции над множествами
Опр.6 Пересечением множеств А и В называется множество С,

состоящее из всех тех и только тех элементов, которые принадлежат каждому из данных множеств: С={х ⏐х∈А и х∈В}. Обозначается, А∩В.
Слайд 77

1.Свойства операции пересечения: А∩А=А; А∩∅=∅; А∩А’=∅; А∩U=А; А∩В=В∩А.

1.Свойства операции пересечения:

А∩А=А;
А∩∅=∅;
А∩А’=∅;
А∩U=А;
А∩В=В∩А.

Слайд 78

Операция объединения множеств Опр. 7 Объединением множеств А и В называется

Операция объединения множеств

Опр. 7 Объединением множеств А и В называется множество

С, которое состоит из всех элементов данных множеств А и В и только из них: С={х⏐х∈А или х∈В}. Обозначается, А∪В.
Слайд 79

2.Свойства операции объединения: А∪А=А; А∪∅=А; А∪А’=U; А∪U=U; А∪В=В∪А.

2.Свойства операции объединения:

А∪А=А;
А∪∅=А;
А∪А’=U;
А∪U=U;
А∪В=В∪А.

Слайд 80

Опр.8 Разностью множеств А и В называется множество С, состоящее из

Опр.8 Разностью множеств А и В называется множество С, состоящее из

всех элементов множества А, не принадлежащих множеству В: С={х ⏐х∈А и х∉В}. Обозначается, А\В.
Слайд 81

3.Свойства операции разности: 1) А\А=∅; 2) А\∅=А; 3) А\А’=А; 4) А\U=∅;

3.Свойства операции разности:
1) А\А=∅;
2) А\∅=А;
3) А\А’=А;
4) А\U=∅;
5)

U\А=А’;
6) ∅\А=∅;
7) А\В ≠ В\А.
Слайд 82

Дополнение множества А

Дополнение множества А

 

Слайд 83

Приоритет выполнения операций Порядок выполнения операций над множествами: Равноправные действия слева

Приоритет выполнения операций

Порядок выполнения операций над множествами:
Равноправные действия слева

направо,
Сначала Скобки,
далее Операция дополнения,
затем Пересечение,
затем равноправные операции Объединения и Вычитания.
Слайд 84

Задачи по теории множеств.

Задачи по теории множеств.

Слайд 85

Проверочная работа по теории множеств. На листочках

Проверочная работа по теории множеств.

На листочках

Слайд 86

П.2. Псевдокод Приведем основные управляющие структуры псевдокода

П.2. Псевдокод Приведем основные управляющие структуры псевдокода

Слайд 87

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

Пример 1 хорошего начального псевдокода
Если номер счета и пароль подходят, то

показать основную информацию счета.
Слайд 88

Пример псевдокода 2. Программа должна заменять сочетание букв "to" в текстовом

Пример псевдокода 2.

Программа должна заменять сочетание букв "to" в текстовом

файле на сочетание “on”.
Программа прочитает каждую строку в этом файле, поищет нужное сочетание в каждой строке и заменит его на другое.
Первоначальный набросок псевдокода может выглядеть так:
Начало
открыть файл
в каждой строке файла:
найти сочетание
удалить сочетание
вставить другое сочетание
закрыть файл
Конец
Слайд 89

Этапы написания псевдокода Сначала опишите цель процесса. Если с помощью псевдокода

Этапы написания псевдокода

Сначала опишите цель процесса. Если с помощью псевдокода можно

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

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

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

одному обращению в строке. Каждое обращение в псевдокоде должно задавать компьютеру лишь одно действие.
Пишите большими буквами первое слово основной функции. Важными ключевыми словами могут быть READ, WRITE, IF, ELSE, ENDIF, WHILE, ENDWHILE, REPEAT и UNTIL.
Когда пишите - отделяйте шаги блоками. С помощью блоков можно упорядочивать информацию или объединять ее.
Слайд 91

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

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

с тестовыми входными данными и разберитесь в том, как он работает.
Исправьте ошибки.
На базе вашего алгоритма в псевдокоде напишите программу на нужном вам языке программирования.
Слайд 92

Команды языков программирования в псевдокоде Важными ключевыми словами могут быть: READ,

Команды языков программирования в псевдокоде

Важными ключевыми словами могут быть:
READ,
WRITE,
IF,


ENDIF,
ELSE,
WHILE,
ENDWHILE,
REPEAT
UNTIL
Слайд 93

Конструкции языков в псевдокоде 1. IF Условие THEN Команды. Это означает,

Конструкции языков в псевдокоде

1. IF Условие THEN Команды.
Это означает,

что отдельная инструкция будет срабатывать лишь в том случае, если будет выполняться отдельное условие.
2. WHILE Условие DO Команды. Это означает, что инструкцию нужно повторять снова и снова, пока условие не перестанет выполняться.
DO Команды WHILE Условие. Эта конструкция похожа на while CONDITION do INSTRUCTION. В первом случае условие проверяется до того, как начинает
4. REPEAT Команды UNTIL Условие
5. FOR a = NUMBER1 TO NUMBER2 DO Команды.
Это означает, что переменная "a" будет автоматически принимать значение NUMBER1. "a" будет увеличиваться на единицу в каждом шаге, пока значение переменной не достигнет NUMBER2. Для обозначения переменной можно использовать любую другую букву.
Слайд 94

Структуризация алгоритма в псевдокоде и программе BLOCK1 BLOCK2 BLOCK3 BLOCK2 BLOCK3 BLOCK1

Структуризация алгоритма в псевдокоде и программе

BLOCK1
BLOCK2
BLOCK3
BLOCK2

BLOCK3
BLOCK1
Слайд 95

Задача 1. Алгоритм решения квадратного уравнения на псевдокоде

Задача 1. Алгоритм решения квадратного уравнения на псевдокоде

Слайд 96

Решение

Решение

Слайд 97

Задача 2. Написать алгоритм в псевдокоде для расчета значения выражения a=k+b/n.

Задача 2. Написать алгоритм в псевдокоде для расчета значения выражения a=k+b/n.

k,b,n вводятся по одному. Задача 3. Сделать расчет по алгоритму на тестовых данных k=2, b=3, n=5.
Слайд 98

Проверочная работа 2. Задача 1.Посчитать в тексте кол-во вхождений последовательности “шин”

Проверочная работа 2.

Задача 1.Посчитать в тексте кол-во вхождений последовательности “шин” во

входной строке символов. Признак конца строки – пробел.
Начертить блок-схему для алгоритма решения задачи
Задача 2. Написать псевдокод для алгоритма решения задачи 1. Можно использовать команды и структуры языков программирования, рассмотренные на занятии.
Задача 3.Сделать построчный тестовый расчет по псевдокоду для текста примера 1 на слайде:
.
Слайд 99

Слайд 100

П.1. Основные понятия Опр. 1. Символ — любой печатный знак Опр.2.

П.1. Основные понятия
Опр. 1. Символ — любой печатный знак
Опр.2. Алфавит

— конечное множество символов
( русский алфавит, греческий, др.)

А

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

Слайд 101

Опр. 3. Слово — конечная последовательность символов из алфавита: Опр. 4.

Опр. 3. Слово — конечная последовательность символов из алфавита:
Опр. 4. Длина

слова — количество символов в слове - 11 символов.

АННА

Кибернетика

Слайд 102

1.Объектами алгоритма являются слова и только они. 2.Алгоритм — описание способа

1.Объектами алгоритма являются слова
и только они.
2.Алгоритм — описание способа

преобразования одного (входного) слова в другое (выходное).
Слайд 103

Опр 5. Алгоритмы В и С эквивалентны в алфавите А (на

Опр 5. Алгоритмы В и С эквивалентны в алфавите А (на

множестве А*), если к каждому слову из A* они – либо одновременно неприменимы, – либо одновременно применимы и выдают одинаковое выходное слово.
Теорема 1. Не существует алгоритма, который для заданных двух алгоритмов по их записи определяет, являются они эквивалентными (в заданном алфавите) или нет. (рассматриваем без доказательства)
Слайд 104

Опр.6. Алгоритмические языки это формальные языки используемые для записи, реализации или

Опр.6. Алгоритмические языки это формальные языки используемые для записи, реализации или

изучения алгоритмов. 
Опр. 7. Языки программирования это формальные языки, предназначенный для записи компьютерных программ.
Слайд 105

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

Описание языков

Описание алгоритмического языка – это описание, которое содержит:
алфавит —

набор символов, используемых при записи программ,
синтаксис — правила, указывающие, какие тексты допустимы в языке, а какие — нет.
семантику — правила, определяющие смысл синтаксически правильного текста.
Прагматику.
Описание языка программирования – это описание, которое содержит набор лексических, синтаксических и грамматических  правил, определяющих внешний вид программы и действия, которые выполнит исполнитель (обычно — компьютер) под её управлением.
Слайд 106

ОСНОВНЫЕ СПОСОБЫ КОМПОЗИЦИИ АЛГОРИТМОВ: 1) Суперпозиция алгоритмов. При суперпозиции двух алгоритмов

ОСНОВНЫЕ СПОСОБЫ КОМПОЗИЦИИ АЛГОРИТМОВ:

1) Суперпозиция алгоритмов. При суперпозиции двух алгоритмов A

и B выходное слово первого алгоритма рассматривается как входное слово второго алгоритма.
2) Объединение алгоритмов. Объединением алгоритмов A и B в одном и том же алфавите называется алгоритм C, преобразующий любое слово P, содержащееся в пересечении областей определения алгоритма A и B в записанные рядом слова
3) Разветвление алгоритмов. Разветвление представляет собой композицию D трёх алгоритмов A,B и C, причём область определения алгоритма D является пересечением областей определения трёх алгоритмов A,B,C.
4) Итерация (повтор). Представляет собой такую композицию C двух алгоритмов A и B, что для любого входного слова P, соответствующего слова, получается в результате последовательного многократного применения алгоритма A до тех пор, пока не получится слово, образуемое алгоритмом B.
Слайд 107

Рекурсия. Рекурсивная функция Опр. 8. В программировании рекурсия — вызов функции

Рекурсия. Рекурсивная функция

Опр. 8. В программировании рекурсия — вызов функции (процедуры) из неё же

самой, непосредственно (простая рекурсия) или через другие функции (сложная или косвенная рекурсия),
Опр.9. Количество вложенных вызовов функции или процедуры называется глубиной рекурсии.
Рекурсивная программа позволяет описать повторяющееся или даже потенциально бесконечное вычисление, причём без явных повторений частей программы и использования циклов.
Пример – вычисление факториала.
Пример 1 – написать псевдокод для вычисления n!
Слайд 108

Опр. 10. Частично-рекурсивной функцией называется функция, которую можно построить из набора

Опр. 10. Частично-рекурсивной функцией называется функция, которую можно построить из набора

простых функций путем использования трех операций: суперпозиции, примитивной рекурсии и минимизации.
Примеры простых функций:
1) Тождественно равная нулю функция О(х) = О
2) Набор функций
3) Функция S(x) = x + 1.
Слайд 109

Опр.11

Опр.11

Слайд 110

Понятие вычислений тесно связано с понятием алгоритма, потому, что вычисления являются

Понятие вычислений тесно связано с понятием алгоритма, потому, что вычисления являются

частным случаем процессов преобразования информации - информации, представленной в форме чисел.
Оказывается, что к этому частному случаю может быть сведен любой алгоритм.
1) Каждый алгоритм, определяя частичное отображение А* А* ,
определяет вычислимую функцию
2) Каждая вычислимая функция f(n): N N определяет алгоритм - частичное отображение на множестве слов алфавита A: А* А*
Слайд 111

ТЕЗИС ЧЕРЧА - совокупность всех частично вычислимых функций совпадает с совокупностью

ТЕЗИС ЧЕРЧА - совокупность всех частично вычислимых функций совпадает с совокупностью

частично-рекурсивных функций.
Тезис Черча постулирует возможность
получения значений любой вычислимой
частичной функции процессом, использующим лишь операции суперпозиции,
примитивной рекурсии, минимизации и вычисления функций 0(х), S(х), I n
m (x).
Слайд 112

Термин рекурсивная функция в теории вычислимости используется для обозначения трёх классов

Термин рекурсивная функция в теории вычислимости используется для обозначения трёх классов функций:
примитивно рекурсивные функции;
общерекурсивные функции;
частично

рекурсивные функции.
Слайд 113

Алгоритм — описание способа преобразования одного (входного) слова в другое (выходное).

Алгоритм — описание способа преобразования одного (входного) слова в другое

(выходное).

Рассмотрим алгоритмы, как процессы преобразования конечных слов в конечном алфавите.
Такие формализованные процессы мы будем считать эквивалентными общему понятию алгоритма.
Два подхода к формальному определению алгоритма:
Машина Тьюринга
Нормальные алгоритмы Маркова.

Слайд 114

П.2.Формальное определение алгоритма 1). Машина Тьюринга.

П.2.Формальное определение алгоритма 1). Машина Тьюринга.

Слайд 115

Слайд 116

Автомат может выполнять три элементарных действия: записывать в видимую клетку новый

Автомат может выполнять три элементарных действия:
записывать в видимую клетку новый

символ (менять содержимое других клеток автомат не может);
сдвигаться на одну клетку влево или вправо («перепрыгивать» сразу через несколько клеток автомат не может);
3) переходить в новое состояние. Ничего другого делать автомат не умеет, поэтому все более сложные операции так или иначе должны быть сведены к этим трём элементарным действиям.
Слайд 117

Слайд 118

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

Программа для машины Тьюринга

Слева перечисляются все состояния, в которых может находиться

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

Правила выполнения программы: К началу выполнения программы машина Тьюринга находится в

Правила выполнения программы:
К началу выполнения программы машина Тьюринга находится в начальной

конфигурации:
1) на ленте записано входное
слово, к которому будет применена программа.
Входное слово – это конечная последовательность символов, записанных в соседних клетках ленты; внутри входного слова пустых клеток быть не должно, а слева и справа от него должны быть только пустые клетки.
Пустое входное слово означает, что все клетки ленты пусты.
2) автомат установлен в состояние q1
(указанное в таблице первым) и размещен под его первым (самым левым) символом входного слова:
Слайд 120

3. В таблице отыскивается ячейка на пересечении первой строки (т.к. автомат

3. В таблице отыскивается ячейка на пересечении первой строки
(т.к. автомат

находится в состоянии q1) и того столбца, который соответствует первому символу входного слова (это необязательно левый столбец таблицы),
и выполняется такт, указанный в этой ячейке. В результате автомат окажется в новой конфигурации.
4. Действие 3. повторяется для новой конфигурации
5. Такт останова-это такт, который ничего не меняет: автомат записывает в видимую клетку тот же символ, что и был в ней раньше, не сдвигается и остается в прежнем состоянии
Слайд 121

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

Окончание работы программы и результат

В целом возможны два исхода работы МТ

над входным словом:
1) Первый исход -когда в какой-то момент МТ останавливается (попадает на такт останова).
В таком случае говорят, что МТ применима к заданному входному слову. А то слово, которое к этому моменту получено на ленте, считается выходным словом, т.е. результатом работы МТ, ответом
2) Второй исход – «плохой»- МТ зацикливается, никогда не попадая на такт останова
В этом случае говорят, что МТ неприменима к заданному входному слову.
Результата нет.
Слайд 122

гипотеза Тьюринга – всякий разрешимый алгоритм может быть представлен в виде

гипотеза Тьюринга – всякий разрешимый алгоритм может быть представлен в виде

машины Тьюринга

Опр. Алгоритмически разрешимые задачи – это задачи которые могут решаться машиной Тьюринга за конечное число шагов.
Гипотеза Тьюринга подтверждается:
возможностью построения машин, реализующих конкретные алгоритмы
доказательством возможности построения машин, реализующих различные композиции алгоритмов и их фрагменты.

Слайд 123

П.4. Нормальные алгоритмы Маркова

П.4. Нормальные алгоритмы Маркова

Слайд 124

Уточним:

Уточним:

 

Слайд 125

 

Слайд 126

Слайд 127

Правило выполнения нормального алгоритма Маркова 1.На каждом шаге входящие в НАМ

Правило выполнения нормального алгоритма Маркова

1.На каждом шаге входящие в НАМ формулы

подстановки просматриваются сверху вниз и выбирается первая из формул, применимых к входному слову Р, т.е. самая верхняя из тех, левая часть которых входит в Р.
2. Далее выполняется подстановка согласно найденной формуле. Получается новое слово Р′.
3.На следующем шаге это слово Р′ берется за исходное и к нему применяется та же самая процедура, (1,2) и получается новое слово Р′′.
И далее: Р → Р′ → Р′′ → …
!!! на каждом шаге формулы в НАМ всегда просматриваются начиная с самой первой.
Слайд 128

 

Слайд 129

Применимости НАМ: В обоих случаях говорят, что НАМ применúм к входному

Применимости НАМ:

В обоих случаях говорят, что НАМ применúм к входному слову.


Если НАМ никогда не остановится-тогда говорят, что НАМ неприменим к входному слову.
Слайд 130

Вставка и удаление символов в НАМ

Вставка и удаление символов в НАМ

 

Слайд 131

 

Слайд 132

Правильное решение:

Правильное решение:

Слайд 133

Слайд 134

Слайд 135

Доп. Теорема 2 Маркова Существует такой универсальный алгоритм U, который для

Доп. Теорема 2 Маркова

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

N и любого входного слова Р из области определения алгоритма N
переводит слово NuPu , полученное приписыванием изображения слова P(Pu) к изображению алгоритма N(Nu),
в слово Ru, являющегося изображением соответствующего выходного слова R=N(P), в которое алгоритм N перерабатывает слово Р.
Если же слово Р выбирается так, что алгоритм N к нему не применим, то и универсальный алгоритм U не применим к слову NuPu .
Данная теорема имеет большое значение, так как из нее вытекает возможность построения машины, которая может выполнять работу любого нормального алгоритма, а значит в силу принципа нормализации – работу любого произвольного алгоритма.
Слайд 136

Глава 4. Типы и структуры данных. П.1. формальные языки и языки

Глава 4. Типы и структуры данных. П.1. формальные языки и языки программирования

Опр

1. Формальным языком в программировании называется множество слов, состоящих из слов конечного алфавита.
 Формальный язык может быть определён по-разному, например:
Простым перечислением слов, входящих в данный язык. Этот способ, в основном, применим для определения конечных языков и языков простой структуры.
Словами, порождёнными некоторой формальной грамматикой.
Словами, порождёнными нотациями Бэкуса-Наура.
Словами, порождёнными регулярным выражением.
Словами, распознаваемыми некоторым конечным автоматом.
Слайд 137

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

Языки программирования.

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

вид программы и действия, которые выполнит исполнитель (обычно — компьютер) под её управлением.
Слайд 138

Слайд 139

Слайд 140

Таблица ASCII: символ ASCII код двоичный код Таблица ASCII -название таблицы

Таблица ASCII: символ ASCII код двоичный код

Таблица ASCII -название таблицы кодировки,

в которой распространённым печатным и непечатным символам сопоставлены числовые коды.
Таблица была разработана и стандартизирована в США в 1963 году.
Таблица ASCII определяет коды для символов:
Десятичных цифр
Латинского алфавита
Национального алфавита
Знаков препинания
Управляющих символов
Слайд 141

Коды ASCII

Коды ASCII

Слайд 142

Таблица Unicode — стандарт кодирования символов, включающий в себя знаки почти

Таблица Unicode

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

мира. 1991г. 
В настоящее время стандарт является преобладающим в Интернете.
Стандарт состоит из двух основных частей:
универсального набора символов
семейства кодировок  
Слайд 143

Слайд 144

Цикл работы команды программы 1. Извлечение инструкции из памяти: используя текущее

Цикл работы команды программы

1. Извлечение инструкции из памяти: используя текущее значение

счетчика команд, процессор извлекает некоторое количество байт из памяти и помещает их в буфер команд.
2. Декодирование команды: процессор просматривает содержимое буфера команд и определяет код операции и ее операнды. Длина декодированной команды прибавляется к текущему значению счетчика команд.
3. Загрузка операндов: извлекаются значения операндов
Если операнд размещен в ячейках памяти – вычисляется
исполнительный адрес.
4. Выполнение операции над данными.
5. Запись результата: результат может быть записан в том числе и в счетчик команд для изменения естественного порядка выполнения.
Слайд 145

П.2. Типы данных. Опр. 1. Типом данных называется класс данных, характеризуемый

П.2. Типы данных.

Опр. 1. Типом данных называется класс данных, характеризуемый

членами класса и операциями, которые могут быть к ним применены.
Тип данных определяет:
Набор возможных операций с переменными данного типа
Объем памяти для хранения данных данного типа
Слайд 146

Классификация типов данных

Классификация типов данных

Слайд 147

1). Простые типы данных.

1). Простые типы данных.

Слайд 148

2). Составные типы данных Массив — это набор значений одного типа,

2). Составные типы данных

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

в ЯП позволяют хранить несколько полей и в одной переменной. В других языках могут называться записями или кортежами. Например, данная структура хранит в себе ФИО и диагноз.
Типы указателей
Объединения — это специальные структуры, которые позволяют различным полям разделять общую память. Таким образом в объединении может храниться только одно из полей. Размер объединения равен размеру наибольшего поля. 
Перечисления – позволяющие определять в коде пользовательские типы.
Указатели на функции позволяют передавать одни функции в другие и реализуют механизм обратного вызова
И др.
Слайд 149

Так в Питоне есть следующие типы данных Числа Логические Строки Байты

Так в Питоне есть следующие типы данных

Числа
Логические
Строки
Байты
Массивы байтов
Списки
Кортежи
Множества
Словари

Слайд 150

П.3.Числовой тип данных ОПЕРАЦИИ с переменными и константами числового типа: стандартные

П.3.Числовой тип данных

ОПЕРАЦИИ с переменными и константами числового типа:
стандартные арифметические операции,


операции сравнения,
ввод,
вывод,
присваивание итд
Слайд 151

П.4. Символьный тип данных Операции: Ввод символьных значений Вывод Присваивание Все

П.4. Символьный тип данных

Операции:
Ввод символьных значений
Вывод
Присваивание
Все операции сравнения ( по ASCII

кодам) : =, <=,>=,<,>,<>.
Примеры стандартных символьных функций:
  возвращает в программу символ с кодом N,
  возвращает код символа S,
  возвращает предыдущий символ
  возвращает следующий символ
Слайд 152

П.5. Логический тип данных.Boolean. Основные понятия алгебры логики. Опр. 2. Логический

П.5. Логический тип данных.Boolean. Основные понятия алгебры логики.

Опр. 2. Логический тип

данных - булевский тип, это тип данных, принимающий два возможных значения: истина (true) и ложь (false).
Опр.3. Логическая переменная – это переменная, которая может принимать только два значения - TRUE(1) , FALSE(0)
Слайд 153

Доступные операции с этим типом данных: И (логическое умножение) (AND, &,

Доступные операции с этим типом данных:
И (логическое умножение) (AND, &, *),
ИЛИ (логическое сложение) (OR,   |

,+),
исключающее ИЛИ (сложение с переносом) (xor, ^),
Равенство (эквивалентность) (EQV, =)
НЕ - инверсия (NOT,  !)
Сравнение (>, <, <=, >=)
Слайд 154

Основные понятия Алгебры логики. Опр. 4. Логическое высказывание — это любoе

Основные понятия Алгебры логики.

Опр. 4. Логическое высказывание — это любoе повествовательное пpедлoжение,

в oтнoшении кoтopoгo мoжно oднoзначнo сказать, истиннo oнo или лoжнo.
Чтобы обращаться к логическим высказываниям, им назначают имена. 
Пример 1. Пусть через А обозначено высказывание «Ольга
поедет летом на море", а через В — высказывание «Ольга летом отправится в горы".
Тогда составное высказывание   «Ольга летом побывает и на море,  и в горах"   можно кратко записать как  :   А и В. 
Слайд 155

Задание 1. Пусть a = “это утро ясное”, b = “это

Задание 1. Пусть
a = “это утро ясное”,
b = “это

утро теплое”.
Выразите следующие формулы на обычном языке:
Слайд 156

Основные логические операции

Основные логические операции

Слайд 157

Таблицы истинности- значение функции при всех наборах переменных Отрицание Коньюнкция Дизьюнкция

Таблицы истинности- значение функции при всех наборах переменных

Отрицание Коньюнкция Дизьюнкция

Слайд 158

Дополнительные логические операции

Дополнительные логические операции

Слайд 159

Таблицы истинности доп. лог. операций Эквивалентность Следование Искл. ИЛИ - XOR

Таблицы истинности доп. лог. операций

Эквивалентность Следование Искл. ИЛИ - XOR

Слайд 160

Законы алгебры логики

Законы алгебры логики

Слайд 161

Слайд 162

Слайд 163

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

Последовательность выполнения операций:

Скобки
логическое отрицание
логическое умножение
логическое сложение
исключающее ИЛИ
логическое следование
эквивалентность

Слайд 164

Семинар 9.

Семинар 9.

Слайд 165

Алгоритм построения таблицы истинности логической функции(выражения)

Алгоритм построения таблицы истинности логической функции(выражения)

Слайд 166

Слайд 167

Пример 1.таблица истинности для выражения

Пример 1.таблица истинности для выражения

Слайд 168

Задачи 2.Самост. реш

Задачи 2.Самост. реш

 

Слайд 169

Пример 2. Составим таблицу истинности для формулы которая содержит две переменные x и y:

Пример 2. Составим таблицу истинности для формулы 
которая содержит две переменные x

и y:
Слайд 170

Оператор IF и логические выражения

Оператор IF и логические выражения

Слайд 171

Слайд 172

 

Слайд 173

 

Слайд 174

Проверочная работа по теме: Алгебра логики 1.

Проверочная работа по теме: Алгебра логики 1.

 

Слайд 175

Задача 4. Написать псевдокод решения задачи с использованием конструкций IF-THEN-ELSE и

Задача 4. Написать псевдокод решения задачи с использованием конструкций IF-THEN-ELSE

и логических операторов AND, OR, NOT и комментариев:
1.Вводятся через пробел значения массы тела и роста одного пациента.
2.Рассчитайте индекс массы тела (ИМТ) по формуле:
ИМТ = вес (в кг) / рост (в м)^2
Определите, является ли ИМТ пациента нормальным или пациент имеет дефицит/избыток массы тела, выведите на экран данное заключение.
Если ИМТ 18,5-24,99, то ИМТ- Норма
Если ИМТ вне диапазона вывести Нарушение ИМТ
 Задание 5. Построчно просчитать решение по псевдокоду для значений (170 65) и (180 120),
Написать, что будет напечатано на экране
Слайд 176

Семинар 10.

Семинар 10.

Слайд 177

Задание 2. Написать псевдокод решения задачи с Использованием конструкций IF-THEN-ELSE и

Задание 2.

Написать псевдокод решения задачи с
Использованием конструкций IF-THEN-ELSE и логических
операторов AND,

OR, NOT и комментариев:
Вводятся через пробел значения роста и массы тела пациента.
Рассчитайте индекс массы тела (ИМТ) по формуле: ИМТ = вес (в кг) / рост (в м)^2
Определите, является ли ИМТ пациента нормальным или пациент имеет дефицит/избыток массы тела, выведите на экран данное заключение.
Если:
ИМТ<18,49, то напечатать Недостаточная масса тела
ИМТ 18,5-24,99, то Норма
ИМТ>25,00, то Избыточный вес
Построчно просчитать решение по псевдокоду для значений
(160 60) и (170 110) и (170  50)
Вывести , что будет напечатано на экране
Слайд 178

Задание 3. Написать псевдокод решения задачи с использованием конструкций IF-THEN-ELSE и

Задание 3.

Написать псевдокод решения задачи с использованием конструкций IF-THEN-ELSE и логических

операторов AND, OR, NOT и комментариев:
 Вводятся через пробел значения массы тела и роста пациента и код пациента.  Рассчитайте индекс массы тела (ИМТ) по формуле: ИМТ = вес (в кг) / рост (в м)^2
Определите, является ли ИМТ пациента нормальным или пациент имеет дефицит/избыток массы тела, выведите на экран данное заключение.
 Если:
ИМТ<18,49 или код равен 0, то напечатать Недостаточная масса тела
ИМТ 18,5-24,99 и код пациента равен 1, то Норма
ИМТ>25,00, то Избыточный вес
Построчно просчитать решение по псевдокоду для значений (160 60 1) и (160 60 0) и (170  50 1) (170  50 1)
 Вывести, что будет напечатано на экране в каждом варианте, рассчитать таблицу истинности для данных значений и сравнить программный результат
Слайд 179

Задача 4. Псевдокод к задаче, используя цикл с предусловием и for:

Задача 4.

Псевдокод к задаче, используя цикл с предусловием и for:

Вводятся данные 7 пациентов: рост, вес и пол. Посчитать количество мужчин-пациентов, у которых ИМТ в норме.
Слайд 180

Тип данных – Массивы. Опр. Массив — это структура однотипных данных,

Тип данных – Массивы.

Опр. Массив — это структура однотипных данных, занимающих

непрерывную область памяти.
Характеристики массива данных:
Массив имеет размер — количество элементов в нем.
Каждый элемент массива имеет свой номер (индекс), обращение к элементу массива осуществляется путем указания его индекса.
В ЯП элементы нумеруются начиная с 0, поэтому последний элемент массива имеет номер на 1 меньше размера массива;
если нумерация с 1- то последний элемента
имеет номер = размеру массива.
Слайд 181

Объявление массивов: Массив в языках пр-я задается следующим образом: тип_элементов идентификатор[размер

Объявление массивов:

Массив в языках пр-я задается следующим образом:
тип_элементов идентификатор[размер элемента], где

тип_элементов — произвольный тип данных языка пр-я, который будут иметь элементы массива, например, integer, real и т. д.;
идентификатор — имя массива;
размер — число элементов в массиве.
К элементу массива можно обращаться,
как Имя массива[индекс]
Например, если было сделано объявление массива real A[5];
то таким образом создается 5 элементов массива типа real: A[0],A[1], A[2], A[3], A[4]
Слайд 182

Инициализация – заполнение массива: i n t l e a p

Инициализация – заполнение массива:

i n t l e a p [

] ={3 1 , 2 9 , 3 1 , 3 0 , 3 1 , 3 0 ,3 1 , 3 1 , 3 0 , 3 1 , 3 0 , 31} ;
i n t non_leap [ ] ={3 1 , 2 8 , 3 1 , 3 0 , 3 1 , 3 0 ,3 1 , 3 1 , 3 0 , 3 1 , 3 0 , 31} ;
i n t N = s i z e o f ( l e a p ) / s i z e o f ( non_leap [ 0 ] )
Слайд 183

Размерность массивов: Массивы могут быть одномерными, двумерные (матрицы), трехмерные и т.д.

Размерность массивов:
Массивы могут быть одномерными, двумерные (матрицы), трехмерные и т.д.
Размерность массивов

может быть ограничена или неограничена в ЯП, например в C++ никак не ограничивается.
Пример 1: объявление 2-мерного массива - вещественный массив
(3 строки, 2 столбца): double matrix[3][2];
Обращаются к элементам такого массива, указывая два индекса: matrix[1][2];
Слайд 184

Представления 1-, 2-, 3-х мерных массивов

Представления 1-, 2-, 3-х мерных массивов

Слайд 185

Алгебра матриц Матрица – 2-мерный массив данных. Действия: Сложение матриц Вычитание

Алгебра матриц

Матрица – 2-мерный массив данных.
Действия:
Сложение матриц
Вычитание матриц
Умножение матрицы на число
Умножение

матрицы на вектор
Умножение матриц
Умножение массивов – это НЕ УМНОЖЕНИЕ МАТРИЦ
Слайд 186

Слайд 187

Слайд 188

Слайд 189

Умножение матриц

Умножение матриц

Слайд 190

Работа с массивами: Для сложения, вычитания, умножения, деления образования формул массивы должны быть одного размера.

Работа с массивами:

Для сложения,
вычитания,
умножения,
деления
образования формул
массивы должны

быть одного размера.
Слайд 191

Массивы в Питоне Python не имеет встроенной поддержки массивов, но вместо

Массивы в Питоне

Python не имеет встроенной поддержки массивов, но вместо этого

можно использовать списки (list) Python.
Массивы используются для хранения нескольких значений в одной переменной:
cars = ["Ford", "Volvo", "BMW"]
Слайд 192

Двумерные массивы в Питоне.

Двумерные массивы в Питоне.

Слайд 193

Многомерные списки в Питон.

Многомерные списки в Питон.

Слайд 194

Слайд 195

Задачи ДЗ– алгебра матриц Задача1. Сложить и – массив B и

Задачи ДЗ– алгебра матриц

Задача1. Сложить и – массив B и 2B.
Задача

2. Умножить на число (-3) массив А.
Задача 3. Поэлементное умножение массивов B и 2B
Задача 4 – умножить матрицы B и 2B
Слайд 196

Проверочная работа. Задача 4. Написать псевдокод: Описать 2-мерный массив A целых

Проверочная работа.
Задача 4.
Написать псевдокод:
Описать 2-мерный массив A целых чисел

2*8, инициализировать его и сделать расчет суммы S всех элементов.
Задача 5.
Написать псевдокод:
Описать два 2-мерных массива целых чисел A и B размера 2*5; инициализировать их и сделать расчет нового массива С, каждый элемент которого равен c=2a+3b соответствующих элементов массивов А и В.
Задача 6.
Написать псевдокод:
Описать 2-а массива вещественных чисел Aи B размера 3*3.
Инициализировать их.
Рассчитать значения элементов следующих 2-х массивов:
С= произведение матриц A, B;
D= поэлементное произведение матриц A,B.
Слайд 197

На дом. Задача 7. Описать 2-мерный массив ALA размера m*n (вводятся).

На дом.

Задача 7. Описать 2-мерный массив ALA размера m*n (вводятся).

Инициализировать массив.
Найти в этом массиве заданный элемент x, распечатать – значение элемента, адрес (индексы) элемента.
Слайд 198

Рекурсия в программировании Опр. 1. В программировании рекурсия — вызов функции

Рекурсия в программировании

Опр. 1. В программировании рекурсия — вызов функции (процедуры) из неё же

самой, непосредственно (простая рекурсия) или через другие функции (сложная  или косвенная рекурсия),
Примеры:
Функция A(x) вызывает функцию A(x-1),
Функция A вызывает функцию B, а функция B — функцию A.
Опр.2. Количество вложенных вызовов функции или процедуры называется глубиной рекурсии.
Преимущества: рекурсивная программа позволяет описать повторяющиеся вычисления без явных повторений частей программы и использования циклов.
Слайд 199

Одномерные и двумерные массивы – основные задачи. 1.1.Одномерные массивы: Объявление массива

Одномерные и двумерные массивы – основные задачи.

1.1.Одномерные
массивы:
Объявление массива
Инициализация, заполнение
Сортировка
Поиск
Замена

элементов массива
Удаление элементов, сдвиг
Слайд 200

Сортировка массива - преобразование последовательности элементов в неубывающую (или невозрастающую) последовательность.

Сортировка массива - преобразование последовательности элементов в неубывающую (или невозрастающую) последовательность.


Последовательность элементов {Ai} называют неубывающей, если для любых i и j, таких что i < j выполняется неравенство Ai <= Aj. Для строго возрастающей последовательности неравенство принимает вид Ai < Aj. Аналогичным образом определяется невозрастающая и убывающая последовательности.
Слайд 201

Элементы массива можно сортировать: по возрастанию — каждый следующий элемент больше

Элементы массива можно сортировать:
по возрастанию — каждый следующий элемент больше предыдущего

— А[1] < А[2] <... < A[N];
по неубыванию — каждый следующий элемент не меньше предыдущего, то есть больше или равен А[1 ] ≤ А[2] ≤... ≤A[N];
по убыванию — каждый следующий элемент меньше предыдущего А[1 ] > А[2] > ... > A[N];
по невозрастанию — каждый следующий элемент не больше предыдущего, то есть меньше или равен А[1] ≥ А[2] ≥ ... ≥ A[N].
Постановка задачи
Пусть требуется упорядочить массив N элементов по возрастанию, причем в каждом элементе массива хранятся данные одного типа, каждый элемент массива имеет индекс.
Слайд 202

Методы сортировки массива 1. При первой итерации цикла элементы массива попарно

Методы сортировки массива

1. При первой итерации цикла элементы массива попарно сравниваются

между собой. Если теку-щий элемент больше следующего, то произво-дится их обмен местами. Так наименьший элемент становится на последнее место в массиве.
2. При второй итерации попарно сравниваются элементы с первого до предпоследнего….
3. Сортировка заканчива-ется после сравнения 1 и 2-го элементов.
Временная сложность O(n2).

Метод сортировки пузырьком.
(Пример - по убыванию).

Слайд 203

Сортировка методом Пузырька

Сортировка методом Пузырька

Слайд 204

2.Сортировка методом выбора (по возрастанию) в массиве ищется минимальный элемент и

2.Сортировка методом выбора (по возрастанию)
в массиве ищется минимальный элемент и

ставится на первое место (меняется местами с A[1]);
среди оставшихся элементов также производится поиск минимального, который ставится на второе место (меняется местами с A[2]) и т.д.
Временная сложность.
Поиск минимума для каждого элемента массива равен O(n2).
Слайд 205

Начертим блок-схему метода выбора

Начертим блок-схему метода выбора

Слайд 206

Блок-схема алгоритма сортировки методом выбора

Блок-схема алгоритма сортировки методом выбора

Слайд 207

Задача 1.Написать псевдокод для решения задачи : Упорядочить по возрастанию массив

Задача

1.Написать псевдокод для решения задачи :
Упорядочить по возрастанию массив A из

N эл-в методом выбора. N вводится, массив вводится.
Распечатать исходный и упорядоченный массивы.
2.Сделать расчет по псевдокоду
для N=6 входного массива A=[9;8;1;2;4;0]
Слайд 208

3. Сортировка вставками Алгоритм: Временная сложность - O(n2).

3. Сортировка вставками

Алгоритм:
Временная сложность - O(n2).

Слайд 209

Начертим блок-схему метода сортировки вставками

Начертим блок-схему метода сортировки вставками

Слайд 210

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

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

Слайд 211

Задача 2. 1.Написать псевдокод для решения задачи : Упорядочить по возрастанию

Задача 2.

1.Написать псевдокод для решения задачи :
Упорядочить по возрастанию массив B

из
M эл-в методом вставок. M вводится, массив вводится.
Распечатать исходный и упорядоченный массивы.
2.Сделать расчет по псевдокоду
для N=4 входного массива B=[6;1;2;3]
Слайд 212

4.Сортировка Шелла. Усовершенствованный вариант метода сортировки вставками. Алгоритм: сначала сравниваются и

4.Сортировка Шелла.
Усовершенствованный вариант метода сортировки вставками.
Алгоритм:
сначала сравниваются и

сортируются между собой значения, стоящие один от другого на некотором d.
Затем процедура повторяется для некоторых меньших значений  d …
завершается сортировка Шелла упорядочиванием элементов при d=1 – сортировкой вставками.
Эффективность сортировки Шелла в определённых случаях обеспечивается тем, что элементы «быстрее» встают на свои места.
Временная сложность O(nlog2 n)
Слайд 213

5.Быстрая сортировка или quick sort: Алгоритм: Выберем и запомним средний элемент

5.Быстрая сортировка или quick sort:
Алгоритм:
Выберем и запомним средний элемент массива (присвоим X=67):
Инициализируем

две переменные (будущие индексы массива): L:=1, R:=N (N — количество элементов).
Увеличиваем L и ищем первый элемент A[L], который больше либо равен X (в итоге он должен находить-ся справа).
Уменьшаем R и ищем элемент A[R], который меньше либо равен X (в итоге он должен находиться слева).
Смотрим, если L<=R, то меняем местами A[L] и A[R], возвращаемся к пункту 3.
Временная сложность O(nlog2n)
Слайд 214

6.Сортировка слиянием. Алгоритм: 1.Массив делится на два подмассива, а затем происходит:

6.Сортировка слиянием.
Алгоритм:
1.Массив делится на два подмассива, а затем происходит:
Сортировка левой половины

массива (рекурсивно)
Сортировка правой половины массива (рекурсивно)
Слияние, упорядочивание.
Рекурсивное разбиение задачи на меньшие происходит до тех пор, пока размер массива не достигнет единицы (любой массив длины 1 можно считать упорядоченным).
Временная сложность  O(nlog2 n),
Слайд 215

7. Пирамидальная сортировка. Может рассматриваться как усовершенствованная сортировка пузырьком, в которой

7. Пирамидальная сортировка.
Может рассматриваться как усовершенствованная  сортировка пузырьком, в которой элемент

всплывает по многим путям.
Временная сложность  O(nlog2 n)
Слайд 216

ДЗ упорядочить массив по убыванию A=[1,7,9,15,10,0,3,8,18,5] – методами Сортировки Пузырьком и

ДЗ упорядочить массив по убыванию A=[1,7,9,15,10,0,3,8,18,5]

– методами Сортировки Пузырьком и Быстрой

сортировки. Псевдокод.
– методами Сортировки Пузырьком и Сортировки вставками. Псевдокод.
- методами сортировки Пузырьком и методом Выбора. Псевдокод.
Слайд 217

Задачи проверочная: составить блок-схемы к алгоритму: Задача 1. Дан массив из

Задачи проверочная: составить блок-схемы к алгоритму:
Задача 1. Дан массив из

11 элементов. Упорядочить по возрастанию методом выбора.
Задача 2. Дан массив 20 целых чисел, Упорядочить по невозрастанию методом вставок.
Слайд 218

Задача 3. Дан массив 20 целых чисел, часть которых - 0.

Задача 3. Дан массив 20 целых чисел, часть которых -

0. Упорядочить массив, удалив нули со сдвигом влево, следующими ненулевыми элементами.
Задача 4. Дан массив 15 целых чисел. Упорядочить массив, удалив повторяющиеся элементы
Слайд 219

Алгоритмы поиска значения в массиве 1. Линейный поиск – алгоритм: поиск

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

1. Линейный поиск – алгоритм:
поиск

значения осуществляется cравнением значения текущего элемента и искомого - если значения совпадают (с той или иной точностью), то поиск считается завершённым. Временная сложность O(n).
2. Бинарный поиск- алгоритм:
Определение значения элемента в середине структуры данных. Полученное значение сравнивается с ключом.
Если ключ меньше значения середины, то поиск осуществляется в первой половине элементов, иначе — во второй.
Поиск сводится к тому, что вновь определяется значение серединного элемента в выбранной половине и сравнивается с ключом.
Процесс продолжается до тех пор, пока не будет найден элемент со значением ключа или не станет пустым интервал для поиска.
Временная сложность O(log(n))
Слайд 220

3.Интерполяционный поиск - алгоритм производит предсказание области местонахождения элемента по расстоянию

3.Интерполяционный поиск - алгоритм производит предсказание области местонахождения элемента по расстоянию

между ключом и текущим значением элемента.
В сортированном массиве-можно применять линейную интерполяцию
Средняя временная сложность в худшем случае O(n)
Слайд 221

Одномерные и двумерные массивы – основные задачи. 1.1.Одномерные массивы. 1.1.Поиск max, min элемента массива

Одномерные и двумерные массивы – основные задачи.

1.1.Одномерные
массивы.
1.1.Поиск

max, min
элемента массива
Слайд 222

Задачи: Задача 1. Дан массив целых чисел. Количество чисел N вводится

Задачи:
Задача 1. Дан массив целых чисел. Количество чисел N вводится с

клавиатуры. Все числа различны.
Найти:
•максимальный элемент массива и его номер, •минимальный элемент массива и его номер.
Задача 2. Дан одномерный целочисленный массив, заданный случайными числами на промежутке
[-30; 30).
Посчитать количество вхождений элемента со значение 10.
Слайд 223

1.1.Двумерные массивы: Объявление массива Инициализация, заполнение Сортировка элементов в столбце или

1.1.Двумерные массивы:
Объявление массива
Инициализация, заполнение
Сортировка элементов в столбце или строке
Поиск элементов в

столбце или строке или массиве.
Замена элементов массива
Слайд 224

Семестр 2. Дисциплина Вычислительная математика. Алгоримы на Python.

Семестр 2.

Дисциплина
Вычислительная математика.
Алгоримы на Python.

Слайд 225

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

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

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

Вычислительная математика – это раздел математики, включающий в себя теорию численных

Вычислительная математика – это раздел математики, 
включающий в себя теорию численных методов 
и алгоритмов решения  математических задач

В вычислительной математике выделяют следующие

направления:
анализ  математических моделей,
разработка методов и алгоритмов решения стандартных математических задач,
программирование (автоматизация) алгоритмов решения задач.
Слайд 227

Глава 1. Структуры данных: Строки, Списки, Деревья. П.1. Тип - Строки

Глава 1. Структуры данных: Строки, Списки, Деревья.

П.1. Тип - Строки
Опр.

1. Строка – это одномерный массив данных типа char - значениями которого является произвольная последовательность (строка) символов алфавита.
Каждая переменная такого типа (строковая переменная) может быть представлена фиксированным количеством байтов либо иметь произвольную длину.
Под строками в Python подразумевается набор символов между кавычками. В Python можно использовать пары одинарных либо двойных кавычек.
Слайд 228

В языках программирования возможны следующие операции со строками: получение символа по

В языках программирования возможны следующие операции со строками:


получение символа

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

Функции и процедуры со строковыми переменными в ПИТОНЕ

Функции и процедуры со строковыми переменными в ПИТОНЕ

Слайд 230

Продолжение - функции строк в Питоне

Продолжение - функции строк в Питоне

Слайд 231

П.2. Динамические структуры в ЯП. Динамические структуры данных – это структуры

П.2. Динамические структуры в ЯП.

Динамические структуры данных – это структуры данных, память под которые

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

Динамическая структура данных характеризуется тем, что: она не имеет имени; этой

Динамическая структура данных характеризуется тем, что:
она не имеет имени;
этой структуре выделяется память

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

Особенности динамических структур Каждой динамической структуре данных сопоставляется статическая переменная типа

Особенности динамических структур

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

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

Для установления связи между элементами динамической структуры используются указатели, через которые

Для установления связи между элементами динамической структуры используются указатели, через которые

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

Порядок работы с динамическими структурами данных : создать (отвести место в

Порядок работы с динамическими структурами данных :

создать (отвести место в динамической памяти);
работать при

помощи указателя;
удалить (освободить занятое структурой место).
Слайд 236

Классификация динамических структур данных: Для представления данных, у которых конфигурация, размеры

Классификация динамических структур данных:
Для представления данных, у которых конфигурация, размеры и состав

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

Динамическая структура может занимать несмежные участки оперативной памяти. Динамические структуры широко

Динамическая структура может занимать несмежные участки оперативной памяти.
Динамические структуры широко применяют и

для более эффективной работы с данными, размер которых известен, особенно для решения задач сортировки.
Слайд 238

п.3. Тип данных – 2).Списки Опр.2. Списком называется упорядоченное множество, состоящее

п.3. Тип данных – 2).Списки Опр.2. Списком называется упорядоченное множество, состоящее из

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

В языках программирования возможны следующие операции со списками: 1.создание списка; 2.печать

В языках программирования возможны следующие операции со списками:

1.создание списка; 2.печать (просмотр)

списка; 3.вставка элемента в список; 4.удаление элемента из списка; 5.поиск элемента в списке 6.проверка пустоты списка; 7.удаление списка.
Слайд 240

3.1.Односвязные списки. Опр.3. Односвязный список – это структура данных, представляющая собой

3.1.Односвязные списки.
Опр.3. Односвязный список – это структура данных, представляющая собой последовательность элементов,

в каждом из которых хранится  значение и указатель на
следующий элемент списка. В последнем элементе указатель 
на следующий элемент равен NULL.
Слайд 241

3.2. Двусвязный список Опр.4. Двунаправленный (двусвязный) список – это структура данных,

3.2. Двусвязный список

Опр.4. Двунаправленный (двусвязный) список – это структура данных, состоящая из последовательности

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

Списки в Питон – это упорядоченные изменяемые коллекции объектов произвольных типов.

Списки в Питон – это упорядоченные изменяемые коллекции объектов произвольных типов.

В Питоне к списками применимы встроенные функции и методы:
Слайд 243

Продолжение - Методы списков в Питоне

Продолжение - Методы списков в Питоне

Слайд 244

Типы 3.Стек и 4.Очередь -динамические структуры данных, которые можно организовать на

Типы 3.Стек и 4.Очередь -динамические структуры данных, которые  можно организовать на

основе линейного списка.
3). Стек – это структура данных, в которой новый элемент всегда записывается в ее начало (вершину) и очередной читаемый элемент также всегда выбирается из ее начала-вершины.
Слайд 245

Операции со стэком: создание стека; печать (просмотр) стека; добавление элемента в

Операции со стэком:
создание стека;
печать (просмотр) стека;
добавление элемента в вершину стека;
извлечение

элемента из вершины стека;
проверка пустоты стека;
удаление стека.
Слайд 246

4) Очередь – это динамическая структура данных, представляющая собой последовательность элементов,

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

порядке их поступления.
Каждый новый элемент размещается в конце очереди; элемент, стоящий в начале очереди, выбирается из нее первым.
Слайд 247

Основные операции, производимые с очередью: создание очереди; печать (просмотр) очереди; добавление

Основные операции, производимые с очередью:
создание очереди;
печать (просмотр) очереди;
добавление элемента в конец очереди;
извлечение

элемента из начала очереди;
проверка пустоты очереди;
очистка очереди.
Слайд 248

П.5.Тип данных 5.Дэк (дек) Опр.5. Дек (двухсторонняя очередь) – это структура

П.5.Тип данных 5.Дэк (дек)

Опр.5. Дек (двухсторонняя очередь) – это структура данных, представляющая собой последовательность

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

Опр.6.дек с ограниченным входом – из конца дека можно только извлекать

Опр.6.дек с ограниченным входом – из конца дека можно только извлекать элементы;
Опр.7.дек с ограниченным выходом

– в конец дека можно только добавлять элементы.
Слайд 250

Основные операции с деком: 1.создание дека; 2.печать (просмотр) дека; 3.добавление элемента

Основные операции с деком:

1.создание дека;
2.печать (просмотр) дека;
3.добавление элемента в левый конец дека;
4. добавление элемента

в правый конец дека;
5.извлечение элемента из левого конца дека;
6.извлечение элемента из правого конца дека;
7.проверка пустоты дека;
8.очистка дека.
Слайд 251

П.6.Тип данных-Деревья Опр.8. Дерево – это динамическая структура данных, представляющая собой

П.6.Тип данных-Деревья

Опр.8. Дерево – это динамическая структура данных, представляющая собой совокупность элементов

и отношений, образующих иерархическую структуру этих элементов.
Опр.9. Вершина (узел) дерева – это каждый элемент дерева.
Опр.10. Ветви дерева – это направленные дуги, которыми соединены вершины дерева.
Опр.11. Высота (глубина) дерева – это количество уровней, на которых располагаются его вершины.
Слайд 252

Опр. 12. Корень дерева – это начальный узел дерева, ему соответствует

Опр. 12. Корень дерева – это начальный узел дерева, ему соответствует нулевой

уровень.
Опр.13. Листья дерева – это вершины, в которые входит одна ветвь и не выходит ни одной ветви.
Опр.14. Поддерево – это часть древообразной структуры данных, которая может быть представлена в виде отдельного дерева.
Слайд 253

Опр.15. Потомки – это все вершины, в которые входят ветви, исходящие

Опр.15. Потомки – это все вершины, в которые входят ветви, исходящие из

одной общей вершины.
Опр.16. Предок – это вершина, из которой исходят ветви к вершинам следующего уровня.
Опр.17. Сбалансированное дерево – это дерево, у которого длины всех путей от корня к внешним вершинам равны между собой.
Слайд 254

Опр.18.Степень вершины – это количество дуг, которое выходит из этой вершины.

Опр.18.Степень вершины – это количество дуг, которое выходит из этой вершины.
Опр.19.Степень дерева –

это максимальная степень вершин, входящих в дерево.
Опр.20.Упорядоченное дерево – это дерево, у которого ветви, исходящие из каждой вершины, упорядочены по определенному критерию.
Опр.21.Уровень вершины – это количество дуг от корня дерева до вершины.
Слайд 255

Опр. 22. Обход дерева – это упорядоченная последовательность вершин дерева, в

Опр. 22. Обход дерева – это упорядоченная последовательность вершин дерева, в которой

каждая вершина встречается только один раз.
Слайд 256

П.7.Тип данных 7. Бинарные деревья Опр. 23. Бинарное (двоичное) дерево –

П.7.Тип данных 7. Бинарные деревья

Опр. 23. Бинарное (двоичное) дерево – это дерево, в

котором каждая  вершина имеет не более двух потомков.
Опр. 24.Неполное бинарное дерево – это дерево, уровни которого заполнены не полностью.
Опр. 25. Полное бинарное дерево – это дерево, которое содержит только полностью заполненные уровни.
Слайд 257

Каждая вершина бинарного дерева является структурой, состоящей из четырех видов полей:

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

(ключ вершины); 2. служебное поле (их может быть несколько или ни одного); 3.указатель на левое поддерево; 4.указатель на правое поддерево. По степени вершин бинарные деревья делятся на:
Слайд 258

Адресация в бинарном дереве

Адресация в бинарном дереве

Слайд 259

Основными операциями с бинарными деревьями, являются: создание бинарного дерева; печать бинарного

Основными операциями с бинарными деревьями, являются:
создание бинарного дерева;
печать бинарного дерева;
обход бинарного дерева;
вставка элемента в бинарное

дерево;
удаление элемента из бинарного дерева;
проверка пустоты бинарного дерева;
удаление бинарного дерева.
Слайд 260

Глава 2. Задача поиска подстроки в строке. П.1. Определения. Алфавит –

Глава 2. Задача поиска подстроки в строке.
П.1. Определения.
Алфавит – конечное множество символов.
Строка

(слово) – это последовательность символов из некоторого алфавита. 
Длина строки – количество символов в строке.
Строка, не содержащая ни одного символа, называется пустой.
Опр.1. Строка X называется подстрокой строки Y, если найдутся такие строки Z1 и Z2, что Y=Z1XZ2.  Z1 называют левым, а Z2 – правым крылом подстроки.
Опр. 2. Подстрока X называется префиксом строки Y, если есть такая подстрока Z, что Y=XZ.
Опр. 3. Подстрока X называется суффиксом строки Y, если есть такая подстрока Z, что Y=ZX.
Строка является подстрокой, префиксом и суффиксом себя самой.
Слайд 261

Постановка задачи поиска подстроки в строке: Пусть задана строка, состоящая из

Постановка задачи поиска подстроки в строке:
Пусть задана строка, состоящая

из некоторого количества символов.
1) . Проверить - входит ли заданная подстрока в данную строку.
2). Если входит, то найдем номер, начиная с какого символа строки начинается первое вхождение заданной подстроки в исходной строке.
Слайд 262

П.2. Наивный (прямой) алгоритм поиска подстроки в строке. Суть алгоритма: 1).

П.2. Наивный (прямой) алгоритм поиска подстроки в строке.
Суть алгоритма:
1). В

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

Алгоритм прямого поиска Идея алгоритма: 1. I=1, 2. сравнить I-й символ

Алгоритм прямого поиска
Идея алгоритма: 1. I=1, 2. сравнить I-й символ массива T с

первым символом массива W, 3. совпадение → сравнить вторые символы и так далее, 4. несовпадение → I:=I+1 и переход на пункт 2, Условие окончания алгоритма: 1. подряд М сравнений удачны, 2. I+M>N, то есть слово не найдено. Сложность алгоритма: Пусть массив T→{AAA….AAAB}, длина │T│=N, образец W→{A….AB}, длина │W│=M. Очевидно, что для обнаружения совпадения в конце строки потребуется произвести порядка
N*M сравнений, то есть O(N*M).
Слайд 264

Вычислительная математика. Лекция 2. Алгоритмы поиска Кнутта-Морис –Пратта. Хэширование. Алгоритм поиска Рабина-Карпа.

Вычислительная математика.

Лекция 2.
Алгоритмы поиска Кнутта-Морис –Пратта.
Хэширование.
Алгоритм поиска Рабина-Карпа.

Слайд 265

П.3.Алгоритм Кнута, Морриса и Пратта. Префикс-функция: Пусть дана строка S длины

П.3.Алгоритм Кнута, Морриса и Пратта. Префикс-функция:

Пусть дана строка S длины n.
Опр.4. Префикс-функция –

это массив, каждый элемент которого вычисляется, как наибольшая длина собственного префикса подстроки S[1,..i], совпадающего с его суффиксом для каждого i=1,n, где n –длина строки.
Префикс-функция вычисляется для строки S и каждого индекса позиции i:
Для построки S[1,1], - длина 1
Для построки S[1,2] - длина 2
……..
Для построки S[1,n] – длина n.
Важно!!! Если найденный на предыдущем шаге префикс не может быть расширен на следующую позицию, то мы пытаемся рассматривать меньшие префиксы до тех пор, пока это возможно.
Слайд 266

Пример 1. Для строки "abcabcd" префикс-функция равна: [0,0,0,1,2,3,0], так как: у

Пример 1. Для строки "abcabcd" префикс-функция равна:  [0,0,0,1,2,3,0], так как:
у строки "a" нет

нетривиального префикса, совпадающего с суффиксом;
у строки "ab" нет нетривиального префикса, совпадающего с суффиксом;
у строки "abc" нет нетривиального префикса, совпадающего с суффиксом;
у строки "abca" префикс длины 1 совпадает с суффиксом;
у строки "abcab" префикс длины 2 совпадает с суффиксом;
у строки "abcabc" префикс длины 3 совпадает с суффиксом;
у строки "abcabcd" нет нетривиального префикса, совпадающего с суффиксом.
Пример 2. ДЗ Вычислить префикс-функцию для строки
"aabaaab" 
Слайд 267

Ответ на пример 2 (она равна: [0,1,0,1,2,2,3])

Ответ на пример 2

(она равна: [0,1,0,1,2,2,3])

Слайд 268

Алгоритм Кнута-Мориса-Пратта Суть алгоритма: сдвиг подстроки выполняется не на один символ

Алгоритм Кнута-Мориса-Пратта

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

на каждом шаге алгоритма, а на некоторое переменное количество символов.
То есть надо каждый раз определять max большую величину сдвига.
Слайд 269

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

Пример 1.

Пример. (Символы, подвергшиеся сравнению, подчеркнуты.)

После частичного совпадения начальной части образа

W
с соответствующими символами строки Т мы фактически знаем
пройденную часть строки и может «вычислить» некоторые сведения
(на основе самого образа W),
с помощью которых потом быстро продвинемся по тексту. Идея КМП-поиска – при каждом несовпадении двух символов текста
и образа образ сдвигается на все пройденное расстояние,
так как меньшие сдвиги не могут привести к полному совпадению.
Слайд 270

П.4. Хеширование Опр. 5. Хеш-функция — функция, которая по определенному алгоритму

П.4. Хеширование

Опр. 5. Хеш-функция — функция, которая по определенному алгоритму преобразовывает

массив входных данных произвольной длины в выходную битовую строку установленной длины.
Хеш-функция формирует  хеш-таблицу.
Опр. 6.Хеширование – это преобразование входного массива данных определенного типа и произвольной длины в выходную битовую строку фиксированной длины.
Слайд 271

Опр. 7.Хеш-таблица – это структура данных, реализующая интерфейс ассоциативного массива, она

Опр. 7.Хеш-таблица – это структура данных, реализующая  интерфейс ассоциативного массива,
она позволяет

хранить пары вида "ключ-значение" и выполнять три операции:
операцию добавления новой пары,
операцию поиска
операцию удаления пары по ключу.
Слайд 272

Опр. 7.Коллизия –ситуация, когда разным ключам соответствует одно значение хеш-функции (ключи

Опр. 7.Коллизия –ситуация, когда разным ключам соответствует одно значение хеш-функции (ключи в этом

случае называются синонимами ).
Слайд 273

Хеш-функция должна удовлетворять следующим условиям: функция должна быть простой с вычислительной

Хеш-функция должна удовлетворять следующим условиям:
функция должна быть простой с вычислительной точки

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

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

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

коллизий:
метод цепочек (внешнее или открытое хеширование);
метод открытой адресации (закрытое хеширование).
Слайд 275

П.5.Разрешение коллизий. 1.Разрешение коллизий при помощи цепочек элементы множества, которым соответствует

П.5.Разрешение коллизий.

1.Разрешение коллизий при помощи цепочек
элементы множества, которым соответствует одно и

то же хеш-значение, связываются в цепочку-список.
В позиции номер i хранится указатель на голову списка тех элементов, у которых хеш-значение ключа равно i ; если таких элементов в множестве нет, в позиции i записан NULL.
На рисунке - на ключ 002 претендуют два значения, которые организуются в линейный список.
Слайд 276

2.Разрешение коллизий при помощи открытой адресации При открытой адресации все записи

2.Разрешение коллизий при помощи открытой адресации

При открытой адресации все записи хранятся

в самой хеш-таблице. Каждая ячейка таблицы содержит либо элемент динамического множества, либо NULL.
Слайд 277

Задача 1. Первое и последнее вхождение Дана строка. Если в этой

Задача 1. Первое и последнее вхождение

Дана строка. Если в этой строке

буква f встречается только один раз, выведите её индекс. Если она встречается два и более раз, выведите индекс её первого и последнего появления. Если буква f в данной строке не встречается, ничего не выводите.
При решении задачи не использовать метод count
Входные данные
Вводится строка.
Выходные данные
Выведите ответ на задачу.
Примеры
входные данные
office
выходные данные
1 2
входные данные
comfort
выходные данные
3
Слайд 278

Задача 2. Дублирование фрагмента Дана строка, в которой буква h встречается

Задача 2. Дублирование фрагмента

Дана строка, в которой буква h встречается как минимум два

раза. Повторите последовательность символов, заключенную между первым и последнием появлением буквы h два раза, сами буквы h повторять не надо.
Слайд 279

Задача 3. Замена подстроки Дана строка. Замените в этой строке все цифры 5 на слово Five.

Задача 3. Замена подстроки

Дана строка. Замените в этой строке все цифры

5
на слово Five.
Слайд 280

Банковские проценты Вклад в банке составляет x рублей. Ежегодно он увеличивается

Банковские проценты

Вклад в банке составляет x рублей. Ежегодно он увеличивается на q процентов, после чего

дробная часть копеек отбрасывается. Определите, через сколько лет вклад составит не менее S рублей.
Слайд 281

Задача ДЗ Написать программу простого поиска подстроки в строке. Можно использовать циклы, if

Задача ДЗ

Написать программу простого поиска подстроки в строке.
Можно использовать циклы, if

Слайд 282

П.6.Алгоритм Рабина — Карпа это алгоритм поиска подстроки в строке, который

П.6.Алгоритм Рабина — Карпа 

это алгоритм поиска подстроки в строке, который ищет шаблон, то

есть подстроку, в тексте, используя хэширование
Алгоритм разработан в 1981-1987 гг. Рабином М. и Карпом Р.
Слайд 283

Слайд 284

Алгоритм Рабина-Карпа Пусть алфавит D={0, 1, 2, 3, 4, 5, 6,

Алгоритм Рабина-Карпа

Пусть алфавит D={0, 1, 2, 3, 4, 5, 6, 7,

8, 9}, то есть каждый символ
в алфавите есть d–ичная цифра, где d=│D│.
Пример 2. Пусть образец имеет вид W = 3 1 4 1 5 Вычисляем значения чисел из окна длины |W|=5 по mod q,
q — простое число.
Слайд 285

23590(mod 13)=8, 35902(mod 13)=9, 59023(mod 13)=9, … k1=31415≡7(mod 13) – вхождение

23590(mod 13)=8, 35902(mod 13)=9, 59023(mod 13)=9, … k1=31415≡7(mod 13) – вхождение образца, k2=67399≡7(mod

13) – холостое срабатывание. Из равенства ki= kj (mod q) не следует, что ki= kj
(например, 31415=67399(mod 13), но это не значит, что 31415=67399).
Если ki= kj (mod q), то надо проверять, совпадают ли строки W[1…m] и T[s+1…s+m] на самом деле.
Слайд 286

Задача на циклы 1

Задача на циклы 1

Слайд 287

Задача 2. Номер числа Фибоначчи

Задача 2. Номер числа Фибоначчи

Слайд 288

Задача 3. Фрагменты. Дана последовательность натуральных чисел, завершающаяся числом 0. Определите,

Задача 3. Фрагменты.

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

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

Задача 4. Монотонный фрагмент Максимальная длина монотонного фрагмента Дана последовательность натуральных

Задача 4. Монотонный фрагмент

Максимальная длина монотонного фрагмента
Дана последовательность натуральных чисел, завершающаяся

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

Задача 5. Банковские проценты Вклад в банке составляет x рублей. Ежегодно

Задача 5. Банковские проценты

Вклад в банке составляет x  рублей.
Ежегодно он увеличивается

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

Функция в Python

Функция в Python

Слайд 292

Слайд 293

ЗАДАЧА 1. Найти число сочетаний

ЗАДАЧА 1. Найти число сочетаний

Слайд 294

Функции в Python Вместо повторения в алгоритме выше лучше сделать одну

Функции в Python

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

данного числа n
и 3-и раза использовать эту функцию в своей программе.
Соответствующая функция может выглядеть так:
def factorial(n):
f = 1
for i in range(2, n + 1):
f *= i
return f
Слайд 295

Синтаксис функции в Python

Синтаксис функции в Python

Слайд 296

Теперь мы можем использовать нашу функцию несколько раз. В этом примере

Теперь мы можем использовать нашу функцию несколько раз.
В этом примере

мы трижды вызываем функцию 
factorial для вычисления трех факториалов:
 factorial(n), factorial(k), factorial(n-k).
n = int(input())
k = int(input())
print factorial(n) // (factorial(k) * factorial(n - k))
Слайд 297

Функция нахождения максимума из двух чисел Итак – задача нахождения наибольшего

Функция нахождения максимума из двух чисел

Итак – задача нахождения наибольшего из

двух или трех чисел.
Функцию нахождения максимума из двух чисел можно написать так:
def max(a, b):
if a > b:
return a
else:
return b
Слайд 298

!!! Внутри функции можно использовать переменные, объявленные вне этой функции def

!!! Внутри функции можно использовать переменные,
объявленные вне этой функции
def f():


print a
a = 1
f()
Здесь переменной a присваивается значение 1,
и функция f печатает это значение, несмотря на то,
что выше функции f эта переменная не инциализируется.
В момент вызова функции f переменной a 
уже присвоено значение, поэтому функция f может
вывести его на экран.
Опр. переменные, объявленные вне функции,
но доступные внутри функции, называются глобальными.
Опр. Переменные, инициализированные внутри
функции, называются локальными и использовать эту переменную вне функции нельзя. 
Слайд 299

Задача 1. Напишите функцию min4(a, b, c, d), вычисляющую минимум четырех

Задача 1. Напишите функцию min4(a, b, c, d), вычисляющую
минимум четырех чисел,

которая не содержит инструкции if,
а использует стандартную функцию min.
Считайте четыре целых числа и выведите их минимум.
Входные данные
Вводятся четыре целых числа.
Выходные данные
Выведите ответ на задачу.
Задача 2. Дано действительное положительное число a
 и целоe число n.
Вычислите a в степени n.
Решение оформите в виде функции power(a, n).
Стандартной функцией или операцией возведения
в степень пользоваться нельзя.
Входные данные
Вводится действительное положительное число a 
и целоe число n.
Выходные данные
Выведите ответ на задачу.
Слайд 300

Задача 3.

Задача 3.

Слайд 301

Задача 4. Минимальный делитель числа

Задача 4. Минимальный делитель числа

Слайд 302

Лекция 3. Суффиксные деревья

Лекция 3. Суффиксные деревья

Слайд 303

П.9. Суффиксные деревья. Суффиксное дерево — это способ представления текста. Опр.8.

П.9. Суффиксные деревья.

Суффиксное дерево — это способ представления текста.
Опр.8. Бором называется

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

Для сокращения количества вершин оптимизируем бор: рассмотрим цепочку вершин бора, такую

Для сокращения количества вершин оптимизируем бор:
рассмотрим цепочку вершин бора, такую

что из каждой вершины исходит единственное ребро в следующую.
Сожмем такую цепочку в одно ребро, а вместо буквы напишем на нем всю последовательность букв с ребер, которые мы заменили.
Эта последовательность букв обязательно является подстрокой некоторой строки si из набора, поэтому запишем на ребре только номер строки, а также начало и конец соответствующей подстроки.
Так получим сжатый бор.
Слайд 305

Опр. 9. Сжатый бор — это корневое дерево, на каждом ребре

Опр. 9. Сжатый бор — это корневое дерево, на каждом
ребре

которого написана непустая строка, обладающее следующими свойствами:
Ни из какой вершины не выходит два ребра, строки для которых начинаются на одну букву.
Если вершина не является корнем или листом дерева, из нее выходит не менее двух ребер.
Утверждение. Количество вершин в сжатом боре составляет O(k), где k — количество строк в наборе.
Слайд 306

Опр.10. Суффиксным деревом строки S называется сжатый бор, построенный на всех

Опр.10. Суффиксным деревом строки S называется сжатый бор, построенный на всех

суффиксах S.
Опр. 11. Суффиксное дерево для m-символьной строки S — это ориентированное дерево с корнем, имеющее ровно m листьев, занумерованных от 1 до m. Каждая внутренняя вершина, отличная от корня, имеет не меньше двух детей, а каждая дуга помечена непустой подстрокой строки S (дуговой меткой). Никакие две дуги, выходящие из одной и той же вершины, не могут иметь пометок, начинающихся с одного и того же символа.
Слайд 307

Пример 1. Рассмотрим строку "алгоритм", у нее есть следующие суффиксы: Номер

Пример 1. Рассмотрим строку "алгоритм", у нее есть следующие суффиксы:
Номер Суффикс
0             "алгоритм"
1             "лгоритм"
2             "горитм"
3             "оритм"
4             "ритм"
5             "итм"
6             "тм"
7             "м"
Первым суффиксом

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

Пример 2. Суффиксное дерево строки abca Пример 3. Суффиксное дерево строки xabxa

Пример 2. Суффиксное дерево строки abca

Пример 3. Суффиксное дерево строки xabxa

Слайд 309

Основные задачи, решаемые с использованием суффиксных деревьев и суффиксных массивов: Определение

Основные задачи, решаемые с использованием суффиксных деревьев и суффиксных массивов:
Определение количества

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

Продолжение. Задачи, решаемые с помощью суффиксных деревьев: 4.Определение длины наибольшего общего

Продолжение. Задачи, решаемые с помощью суффиксных деревьев:

4.Определение длины наибольшего общего префикса

для двух подстрок строки
5.Лексикографическое упорядочивание суффиксов строки s.
6.Определение рефренов:
Опр. 12. Рефреном строки s называется подстрока q, для которой произведение |q| на количество её вхождений максимально. Вхождения при этом могут пересекаться.
7. Нахождение подпалиндромов.
Слайд 311

П. 10. Алгоритм Лемпеля-Зива – алгоритм сжатия данных. В 1977 году

П. 10. Алгоритм Лемпеля-Зива – алгоритм сжатия данных.
В 1977 году Абрахам

Лемпель и Якоб Зив предложили алгоритм сжатия данных, названный позднее LZ77.
Этот алгоритм используется в программах архивирования текстов pkzip и arj и др.
Суть алгоритма - когда ранее прочитанная подстрока встречается повторно, алгоритм пишет вместо неё ссылку на её предыдущее вхождение.
Слайд 312

Алгорим Лемпеля-Зива На каждом шаге выводится тройка: (d-смещение относительно текущей позиции,

Алгорим Лемпеля-Зива

На каждом шаге выводится тройка:
(d-смещение относительно текущей позиции,
L-длина

подстроки, символ a).
В конкретных реализациях может быть: (d; L; a), либо (d, l) и a.
Пример 1. Строка w = abaababa,
её код — (0, 0, a)(0, 0, b)(2, 1, a)(3, 2, b)(0, 0, a).
Или так: ab(2, 1)(3, 3)(2, 2).
Слайд 313

Рассмотрим реализацию 2: Если в тексте встретится повторение строк символов, причем

Рассмотрим реализацию 2:
Если в тексте встретится повторение строк символов, причем

запись о длине данной строки и смещении от текущей позиции короче, чем сама последовательность, то в выходной файл записывается ссылка (Смещение. Длина), а не сама строка.
Пример 2: Строка
"КОЛОКОЛ_ОКОЛО_КОЛОКОЛЬНИ"
с помощью алгоритма LZ77 будет закодирована строкой
"КОЛО(-4,3)_(-5,4)О_(-14,7)ЬНИ".
Пример 3: Строка "ААААААА" с помощью алгоритма LZ77 будет закодирована "А(-1,6)".
Слайд 314

Глава 3. Теория графов и использование графов в алгоритмах. П.1. основные

Глава 3. Теория графов и использование графов в алгоритмах.

П.1. основные термины

теории графов.
Опр. 1 . Графом называется математический объект, представляющий собой множество вершин графа и набор рёбер, то есть соединений между парами вершин.
Опр.2.Если некоторое ребро u соединяет две вершины A и B графа, то говорят, что ребро u инцидентно вершинам A и B, а вершины в свою очередь инцидентны ребру u. 
Опр. 3. Вершины, соединенные ребром,
также называют смежными.
Слайд 315

Опр. 4. Два ребра называются кратными, если они соединяют одну и

Опр. 4. Два ребра называются кратными, если они соединяют одну и ту

же пару вершин. 
Опр.5.Ребро называется петлей, если его концы совпадают.
Опр.6.Степенью вершины называют количество ребер, для которых она является концевой (при этом петли считают дважды).
Опр.7.Ориентированный граф – граф, у ребер которого одна вершина считается начальной, а другая – конечной.
Слайд 316

Опр. 8. Маршрутом в графе называют конечную последовательность вершин, в которой

Опр. 8. Маршрутом в графе называют конечную последовательность вершин, в которой каждая

вершина (кроме последней) соединена со следующей в последовательности вершиной ребром. 
Опр.9.Цепью называется маршрут без повторяющихся рёбер. 
Опр.10.Простой цепью называется маршрут без повторяющихся вершин (откуда следует, что в простой цепи нет повторяющихся рёбер).
Слайд 317

Опр.11.Ориентированным маршрутом (или путём) в орграфе называют конечную последовательность вершин и

Опр.11.Ориентированным маршрутом (или путём) в орграфе называют конечную последовательность вершин и дуг, в

которой каждый элемент инцидентен предыдущему и последующему.
Опр.12.Циклом называют цепь, в которой первая и последняя вершины совпадают.
Опр.13.При этом длиной пути (или цикла) называют число составляющих его рёбер.
Слайд 318

В теории графов два типа объектов называются циклами: 1). замкнутый обход,

В теории графов два типа объектов называются циклами:
1). замкнутый обход, состоит из последовательности вершин,

начинающейся и заканчивающейся в той же самой вершине, и каждые две последовательные вершины в последовательности смежны.
2 простой цикл — это замкнутый обход без повторного прохода по ребру или посещения вершины дважды, за исключением начальной и конечной вершин.
!!! Простые циклы можно описать набором рёбер, в отличие от замкнутых обходов, в которых наборы рёбер (с возможным повторением) не определяют однозначно порядок вершин. 
Слайд 319

Опр.14. Степенью вершины в неориентированном графе называется число инцидентных данной вершине

Опр.14. Степенью вершины в неориентированном графе называется число инцидентных данной 
вершине

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

Свойства графов A. В любом графе число вершин нечетной степени –

Свойства графов

A. В любом графе число вершин нечетной степени – четно.

Этот факт называется «леммой о рукопожатиях» – в любой компании число людей, сделавших нечетное число рукопожатий всегда четно.
Б. Сумма степеней всех вершин равна удвоенному числу ребер в графе.
С. Максимальное число ребер в простом графе с  n- вершинами есть n(n−1)/2.
Слайд 321

П.2. Способы представления графов в памяти. Представление графов в памяти –

П.2. Способы представления графов в памяти.

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

это способ хранения информации о ребрах графа, позволяющий решать следующие задачи:
Для двух данных вершин u и b проверить, соединены ли вершины u и v ребром.
Перебрать все ребра, исходящие из данной вершины u .
Слайд 322

Способы представления графов в памяти: Матрица смежности Списки смежных вершин Список ребер

Способы представления графов в памяти:
Матрица смежности
Списки смежных вершин
Список ребер

Слайд 323

1.Матрица смежности При представлении графа матрицей смежности информация о ребрах графа

1.Матрица смежности

При представлении графа матрицей смежности информация о ребрах графа хранится в квадратной

матрице, где:
элемент A[i][j] равен1, если ребра i и j соединены ребром
равен 0 в противном случае.
Если граф неориентированный, то матрица смежности всегда симметрична относительно главной диагонали.
Слайд 324

2. Хранение графа в виде списка ребер. При представлении графа списком

2. Хранение графа в виде списка ребер.

При представлении графа списком ребер для каждого

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

 

Слайд 325

3. Представление графа списками смежности 1. Для каждой вершины i хранится

3. Представление графа списками смежности

1. Для каждой вершины i хранится список W[i]

смежных с ней вершин.

2.При помощи списков смежности можно представлять и ориентированные графы. 

списки смежности будут следующими:
W[1] = [2]  W[2] = [4, 5]  W[3] = [1, 4]  W[4] = [1, 3]  W[5] = []

Слайд 326

П.3.Алгоритмы поиска в графе. Опр.16. Вершина, которая еще не посещена, называется

П.3.Алгоритмы поиска в графе.


Опр.16. Вершина, которая еще не посещена,

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

Опр.17. Взвешенным графом называется граф, у которого любая пара вершин (ребро)

Опр.17. Взвешенным графом называется граф, у которого любая пара вершин (ребро)

снабжено числом, характеризующим отношение этих вершин (расстояние пунктами теснота связи объектов)
Слайд 328

Опр. 18. Кратчайшим путем называется путь в графе, содержащий наименьшее количество

Опр. 18. Кратчайшим путем называется путь в графе, содержащий наименьшее количество

ребер.
Опр. 19. Связный граф - это граф, у которого для любых двух различных вершин существует путь (последовательность смежных вершин), соединяющий их.
Критерии связности Теорема Менгера
Слайд 329

1.Алгоритм поиска в глубину. Алгоритм поиска (или обхода) в глубину реализует

1.Алгоритм поиска в глубину.
Алгоритм поиска (или обхода) в глубину реализует обход

ориентированного или неориентированного графа, при котором посещаются все вершины, доступные из начальной вершины.
Из активной вершины пойти в какую-нибудь смежную вершину, не посещенную ранее.
Запустить из этой вершины алгоритм обхода в глубину
Вернуться в начальную вершину.
Повторить пункты 1-3 для всех не посещенных ранее смежных вершин.
Слайд 330

Алгоритм является рекурсивным — для обхода всего графа нужно переместиться в

Алгоритм является рекурсивным — для обхода всего графа нужно переместиться

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

Слайд 332

Задачи, решаемые поиском в глубину: Поиск элементов Поиск компонент связности Поиск

Задачи, решаемые поиском в глубину:
Поиск элементов
Поиск компонент связности
Поиск циклов и др.
Оценка

времени работы алгоритма:
Если граф задан списками смежности , то время работы алгоритма можно оценить как O(n+m), где m- число ребер, а n-число вершин.
Если граф задан матрицей смежности – то O(n2)
Слайд 333

Лекция и семинар 7.

Лекция и семинар 7.

Слайд 334

3.2. Поиск в ширину в графе. Идея поиска в ширину состоит

3.2. Поиск в ширину в графе.
Идея поиска в ширину состоит в том, чтобы

посещать вершины в порядке их удаленности от некоторой заранее выбранной или указанной стартовой вершины a.
То есть сначала посещается сама вершина  a, затем все вершины, смежные с a, то есть находящиеся от нее на расстоянии  1 , затем вершины, находящиеся от a  на расстоянии 2, и т.д.
Главное свойство поиска в ширину:
чем ближе вершина к старту, тем раньше она будет посещена.
Для хранения множества открытых вершин очередь - когда новая вершина становится открытой, она добавляется в конец очереди, а активная выбирается в ее начале.
Слайд 335

Оценка времени работы алгоритма поиска в ширину: Если граф задан списками

Оценка времени работы алгоритма поиска в ширину:
Если граф задан списками смежности

, то время работы алгоритма можно оценить как O(n+m), где m- число ребер, а n-число вершин.
Если граф задан матрицей смежности – то O(n2)
Слайд 336

Алгоритм поиска в ширину: Для каждой вершины в массиве d будем

Алгоритм поиска в ширину:
Для каждой вершины в массиве d будем хранить

кратчайшее расстояние до этой вершины, если же расстояние неизвестно — будем хранить значение  -1 или None (в языке Python). В самом начале расстояние до всех вершин равно -1 (None), кроме начальной вершины, до которой расстояние равно 0.
Затем перебираем все вершины, до которых расстояние равно 0, перебираем смежные с ними вершины и для них записываем расстояние равное 1.
Затем перебираем все вершины, до которых расстояние равно 1, перебираем их соседей, записываем для них расстояние, равное 2 (если оно до этого было равно -1 (None)).
4. Затем перебираем вершины, до которых расстояние было равно 2 и тем самым определяем вершины, до которых расстояние равно 3 и т. д.
5. Этот цикл можно повторять либо пока обнаруживаются новые вершины на очередном шаге, либо n−1 раз (где n – число вершин в графе), так как длина кратчайшего пути в графе не может превосходить n−1.
Слайд 337

П.4. Задача 1. Вычисление Количества путей в графе Пусть есть схема

П.4. Задача 1. Вычисление Количества путей в графе

Пусть есть схема

дорог, связывающих города А, Б, В, Г, Д, Е, Ж, И, К. По каждой дороге можно двигаться только в одном направлении, указанном стрелкой.
Сколько существует различных путей из города А в город К?
Слайд 338

Рекуррентная формула: Если в город Z можно приехать только из городов

Рекуррентная формула:
Если в город Z можно приехать только из городов B,

C, D, то число различных путей из города A в город Z
равно сумме числа различных путей проезда:
из A в B, из A в C , из A в D, то есть
NZ=NB+NC+ND,
где NQ обозначает число путей из вершины A в некоторую вершину Q.
Алгоритм обхода графа в ширину.
Слайд 339

Решение Задачи 1

Решение Задачи 1

Слайд 340

Задача 2. На рисунке — схема дорог, связывающих города А, Б,

Задача 2.

На рисунке — схема дорог, связывающих города А, Б, В, Г,

Д, Е, Ж, И, К. По каждой дороге можно двигаться только в одном направлении, указанном стрелкой. Сколько существует различных путей из города А в город К?
Слайд 341

Решение:Начнем считать количество путей с конца маршрута – с города К.

Решение:Начнем считать количество путей с конца маршрута – с города К.

NX — количество различных путей из города А в город X, N — общее число путей.
В "К" можно приехать из И, Ж, или Е, поэтому N = NК = NИ + NЖ + N Е (1)
Слайд 342

Задачи на вычисление путей в графе с избегаемыми вершинами Задача 3.

Задачи на вычисление путей в графе с избегаемыми вершинами

Задача 3. На

рисунке — схема дорог, связывающих пункты А, Б, В, Г, Д, Е, Ж, И, К, Л, М, Н. Сколько существует различных путей из пункта А в пункт Н, не проходящих через пункт В?
Слайд 343

Решение задачи 3:количество путей до города Х = количество путей в

Решение задачи 3:количество путей до города Х = количество путей в

любой из тех городов, из которых есть путь в Х.
 Если путь не должен проходить через вершину, нужно не учитывать эту вершину(город) при подсчёте сумм.
Если вершина обязательна для посещения - тогда для городов, в которые из нужного города идут дороги, в суммах нужно брать только этот город.
Рассчитаем последовательно количество путей до каждого из городов:
Слайд 344

А = 1. Б = А = 1. В = А

А = 1.
Б = А = 1.
В = А + Б

= 2.
Г = А = 1 (В не учитываем, поскольку путь не должен проходить через город В).
Д = Б = 1 (В не учитываем, поскольку путь не должен проходить через город В).
Е = Г + Д = 2 (В не учитываем, поскольку путь не должен проходить через город В).
Ж = Д = 1.
И = Г = 1.
К = Д + Ж + И + Е = 5.
Л = К = 5.
М = К + И = 6.
Н = К + Л + М = 16.
Слайд 345

Задача 4. На рисунке – схема дорог, связывающих пункты А, Б,

Задача 4. На рисунке – схема дорог, связывающих пункты А, Б,

В, Г, Д, Е, Ж, И, К, Л, М, Н, П. Сколько существует различных путей из пункта А в пункт П, не проходящих через пункт Е?

На рисунке – схема дорог, связывающих пункты А, Б, В, Г, Д, Е, Ж, И, К, Л, М, Н, П.

Слайд 346

Решение: А = 1. Б = А = 1. В =

Решение:
А = 1.
Б = А = 1.
В = А = 1.
Г

= А + Б + В = 3.
Д = Г = 3.
И = Г = 3 (Е не учитываем, поскольку путь не должен проходить через город Е).
Ж = Д = 3.
К = И = 3 (Е не учитываем, поскольку путь не должен проходить через город Е).
Л = Д + Ж + К = 3 + 3 + 3 = 9 (Е не учитываем, поскольку путь не должен проходить через город Е).
Н = Л = 9.
М = Л = 9.
П = Н + Л + М = 9 + 9 + 9 = 27.
Ответ: 27.
Слайд 347

П.5. Эйлеров цикл. Опр. 19. Эйлеровым циклом в графе называется цикл,

П.5. Эйлеров цикл.

Опр. 19. Эйлеровым циклом в графе называется цикл, содержащий

все ребра графа.
Опр. 20. Связный граф  называется эйлеровым, если существует замкнутая цепь, проходящая через каждое его ребро.
Такая цепь называется  эйлеровой цепью.
Требуется, чтобы каждое ребро проходилось только один раз.
Опр.21. Эйлеров путь в графе — это путь, проходящий по всем рёбрам графа и притом только по одному разу.
Опр.21. Полуэйлеров граф — граф, содержащий эйлеров путь,
Утв.1. каждый эйлеров граф  будет полуэйлеровым.
Опр.22. Вершина называется четной, если ее степень четная.
Опр.23. Вершина называется нечетной, если ее степень нечетная.
Слайд 348

Эйлеров цикл в графе означает, что следуя вдоль цикла, можно нарисовать

Эйлеров цикл в графе означает, что следуя вдоль цикла, можно нарисовать

граф на бумаге, не отрывая карандаша.
Слайд 349

П.6.Задача 2. Задача о Кенигсбергских мостах: У жителей Кенигсберга была загадка:

П.6.Задача 2. Задача о Кенигсбергских мостах:

У жителей 
Кенигсберга  
была загадка: как пройти

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

В 1736 году фон Эйлер решил Задачу о семи мостах. Решение

В 1736 году фон Эйлер решил Задачу о семи мостах.
Решение

Эйлера:
Нельзя пройти по всем городским мостам через реку Преголя, не проходя ни по одному из них дважды.
Слайд 351

Решение задачи Эйлера: На схеме города - графе мостам соответствуют линии

Решение задачи Эйлера:
На схеме города - графе мостам соответствуют линии -

ребра графа, а частям города — вершины графа.
В ходе рассуждений Эйлер пришёл к следующим выводам:
1.Число нечётных вершин графа должно быть чётно.

2. Если все вершины графа чётные, то можно начертить этот граф без отрыва карандаша от бумаги, при этом можно начинать с любой вершины графа и завершить его в той же вершине.
3. Если ровно две вершины графа нечётные, то можно начертить этот граф без отрыва карандаша от бумаги, при этом нужно начинать с одной из нечётных вершин и завершить его в другой нечётной вершине.
4. Граф с более чем двумя нечётными вершинами невозможно начертить одним росчерком.
Граф кёнигсбергских мостов имел четыре нечётные вершины  — следовательно, невозможно пройти по всем мостам, не проходя ни по одному из них дважды.

Слайд 352

Теорема 1. Если граф обладает эйлеровым циклом, то он является связным,

Теорема 1. Если граф  обладает эйлеровым циклом, то он является связным, а все

его вершины — четными.
Теорема 2. Если граф  связный и все его вершины четные, то он обладает эйлеровым циклом.
Если граф не обладает эйлеровым циклом, то можно поставить задачу об отыскании одного эйлерова пути или нескольких эйлеровых путей, содержащих все ребра графа.
Слайд 353

Теорема 3. Если граф G обладает эйлеровым путем с концами VA

Теорема 3. Если граф  G обладает эйлеровым путем с концами VA и VB  и VA не совпадает с

VB, то граф  G является связным, и  VA и VB    — единственные нечетные его вершины.
Теорема 4. Если граф  G связный и   VA и VB  единственные нечетные вершины его, то граф   обладает эйлеровым путем с концами VA и VB 
Теорема 5. Если связный граф  G имеет 2k нечетных вершин, то найдется семейство из k путей, которые в совокупности содержат все ребра графа в точности по одному разу.
Слайд 354

Контрольная

Контрольная

Слайд 355

Глава 3. Математическое программирование – – это раздел прикладной математики, посвященный

Глава 3. Математическое программирование –
– это раздел прикладной математики, посвященный теории

и методам решения конечномерных задач поиска экстремумов функций на множествах, определяемых линейными и нелинейными ограничениями.
Оптимизационные модели применяются для решения прикладных задач в случаях, когда необходимо найти НАИЛУЧШЕЕ, в каком-то смысле, решение.
Постановка задачи оптимизации в общей форме:
(1)
Где X- вектор внутренних параметров объекта;
Q- вектор параметров воздействия факторов внешней среды.
F- целевая вектор-функция оптимизации.
 Определение 1. Оптимальным решением общей задачи оптимизации (1) называется допустимый вектор X*, обеспечивающий максимальное (минимальное) значение целевой функции F(X,Q).
Слайд 356

пI. Динамическое программирование Сущность метода Динамического программирования - рассмотрим операцию О,

пI. Динамическое программирование

Сущность метода Динамического программирования - рассмотрим операцию О, состоящую

из ряда последовательных m-этапов (шагов);
пусть итоговый выигрыш операции О (или итоговая эффективность операции О) - функция Z складывается из выигрышей на отдельных шагах, то есть Z- аддитивный критерий.
Операция О – является управляемым процесс, то есть мы можем выбирать параметры управления.
От решения, выбираемого на каждом шаге зависит и выигрыш и на данном шаге и итоговый выигрыш операции в целом.
Решения на каждом шаге называются шаговыми. 
Слайд 357

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

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

- X: X( х1, х2, ... , хn ), где компонентами вектора X являются шаговые управления.
Тогда, постановка задачи динамического программирования будет следующей:
требуется найти такое оптимальное управление X*=X*(х1*, х2*, ... , хm*), при котором выигрыш Z обеспечивается максимальное значение критерия эффективности (выигрыша) Z: 
Таким образом, управление xI должно обеспечить максимальный выигрыш не на данном конкретном шаге, а на всей совокупности шагов, входящих в операцию. 
Для задачи можно использовать методы динамического программирования, если она удовлетворяет следующим требованиям:
Задача оптимизации интерпретируется как n-шаговый процесс управления.
Целевая функция равна сумме целевых функций каждого шага (аддитивна).
Слайд 358

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

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

вложенности:

Принцип 1. “Принцип оптимальности” Беллмана:  Каково бы ни было состояние системы S в результате какого-либо числа шагов, на ближайшем шаге нужно выбирать управление так, чтобы оно в совокупности с оптимальным управлением на всех последующих шагах приводило к максимальному выигрышу на всех оставшихся шагах, включая данный. 
Целевая функция fi (Si-1, хi) на i-том шаге называется функцией Беллмана.
Принцип 2. Принцип Вложенности. Природа задачи, допускающей использование метода динамического программирования, не меняется при изменении количества шагов, т. е. форма такой задачи инвариантна относительно N.

Слайд 359

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

Рассмотрим особенности математической модели динамического программирования

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

процесс управления;
целевая функция (выигрыш) является аддитивной и равна сумме целевых функций каждого шага: выбор управления xk на каждом шаге зависит только от состояния системы k этому шагу Sk-1, и не влияет на предшествующие шаги (нет обратной связи);
состояние системы Sk после каждого шага управления зависит только от предшествующего состояния системы Sk-1 и этого управляющего воздействия xh (отсутствие последействия) и может быть записано в виде уравнения состояния: Sk = fk(Sk-1 , xk), k = 1, n;
на каждом шаге управление xk зависит от конечного числа управляющих переменных, а состояние системы Sk зависит от конечного числа параметров;
оптимальное управление представляет собой вектор , определяемый последовательностью оптимальных пошаговых управлений: X = (x*1 , x*2 , ..., x*k , ..., x*n ), число которых и определяет количество шагов задачи.
Слайд 360

Виды задач, решаемых методами динамического программирования Задача о нахождении кратчайшего либо

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

Задача о нахождении кратчайшего либо наилучшего

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

Задача о нахождении кратчайшего пути в графе. Пусть транспортная сеть состоит

Задача о нахождении кратчайшего пути в графе.
Пусть транспортная сеть состоит из 10 узлов,

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

Процедура решения задач методом динамического программирования состоит из 2-х стадий: 1.

Процедура решения задач методом динамического программирования состоит из 2-х стадий:
1.

С конца в начало –предварительной
2.С начала в конец - окончательной.
Преимущества:
Метод динамического программирования дает возможность решать задачи, которые раньше не исследовались из-за отсутствия соответствующего математического аппарата.
Метод динамического программирования в ряде случаев сокращает объем вычислений при поиске оптимальных решений.
Недостатки:
Отсутствие универсального алгоритма, который был бы пригоден для решения всех задач.
Трудоемкость при решении задач большой размерности.
Слайд 363

Слайд 364

Понятие о NP-полных задачах. Примеры. Опр. 2. P – класс задач,

Понятие о NP-полных задачах. Примеры.

Опр. 2. P – класс задач, решаемых

за полиномиальное (от размера входа)
время.
Примеры:
задача о существовании пути в графе,
задача о взаимно простых числах и т.д.
Опр. 3. NP – класс задач, верифицируемых (проверяемых) за полиномиальное время.
NP означает - Нелинейный Полиномиальный - то есть, оценка объема вычислений либо времени выполнения алгоритма выражается нелинейным многочленом от объема входной информации (квадратным, кубическим и т. д.).
Есть 2 варианта оценок:  1) по объему - количеству вариантов, из которых надо выбрать решения (этой оценке соотв. NP-полный класс задач); 2) по времени решения - количеству итераций алгоритма, необходимых для получения решения (этой оценке соотв. NP-трудный класс задач)
Слайд 365

Список Карпа — список, состоящий из формулировки и доказательства NP- полноты

Список Карпа — список, состоящий из формулировки и доказательства NP- полноты 21 задачи,

опубликованный Ричардом Карпом в 1972 году, приведем ниже две NP-полных задачи:
1.Задача Штейнера о минимальном дереве состоит в поиске кратчайшей сети, соединяющей заданный конечный набор точек плоскости.

2.Задача о рюкзаке (или задача о ранце) — NP-полная задачи оптимизации. Цель: уложить как можно большее число ценных вещей в рюкзак при условии, что вместимость рюкзака ограничена.

Слайд 366

Алгоритм имитации отжига — алгоритм решения различных оптимизационных задач. Основан на

Алгоритм имитации отжига  — алгоритм решения различных оптимизационных задач.

Основан на моделировании реального физического процесса, который происходит при кристаллизации вещества из жидкого состояния в твёрдое, в том числе при отжиге металлов.
Целью алгоритма является минимизация некоторого функционала, имеющего, в общем случае много локальных максимумов.
Алгоритм имитации отжига
Выбор начального решения и начальной температуры
Оценка начального решения
Основной шаг алгоритма
Случайное изменение текущего решения
Оценка измененного решения
Критерий допуска
Уменьшение температуры и, если температура больше некоторого порога, то переход к основному шагу
Области применения алгоритма имитации отжига
Создание пути
Реконструкция изображения
Назначение задач и планирование
Размещение сети
Глобальная маршрутизация
Обнаружение и распознавание визуальных объектов
Разработка специальных цифровых фильтров
Слайд 367

Слайд 368

Лев Семенович Понтрягин –выдающийся российский ученый

Лев Семенович Понтрягин –выдающийся российский ученый

Слайд 369

Родился 21 августа (3 сентября) 1908 г., Москва.

Родился 21 августа (3 сентября) 1908 г., Москва.

Слайд 370

В 14 лет Лев потерял зрение в результате несчастного случая (взорвавшийся

В 14 лет Лев потерял зрение в результате несчастного случая (взорвавшийся

примус вызвал сильнейший ожог лица).
Помощь одноклассников обеспечила окончание школы.
Помощь матери -1925г – поступление в МГУ
«идёт лекция профессора Бухгольца, все слушают не очень внимательно, вдруг голос Понтрягина: „Профессор, вы ошиблись на чертеже!“ 
Слайд 371

Этапы пути Л. С. Понтрягин окончил физико-математический факультет МГУ по специальности

Этапы пути

Л. С. Понтрягин окончил физико-математический факультет МГУ по специальности «чистая математика»

в 1929 г.
В 1930–1932 гг. Л. С. Понтрягин — доцент кафедры алгебры и сотрудник НИИ математики и механики при МГУ.
В 1932–1933 гг. — сотрудник лаборатории колебаний Института физики при МГУ.
С 1934 г. до конца жизни Л. С. Понтрягин преподавал в МГУ —профессор кафедры высшей геометрии и топологии механико-математического факультета в 1935–1958 гг.,
заведующий кафедрой оптимального управления факультета вычислительной математики и кибернетики МГУ
в 1970–1988 гг.
Слайд 372

Ученая степень доктор физико-математических наук присуждена без защиты диссертации в 1935

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


Звание профессора по Специальности «математика (топология)» присвоено в 1935 г.
Слайд 373

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

Области научных интересов Л. С. Понтрягина

топология и топологическая алгебра,
теория дифференциальных уравнений,


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

ТРУДЫ – более 300. Математическая теория оптимальных процессов. — 2-е изд.

ТРУДЫ – более 300.

Математическая теория оптимальных процессов. — 2-е изд. — М.:

Наука, 1969. — 384 с. — Совместно с В. Г. Болтянским, Р. В. Гамкрелидзе и Е.Ф. Мищенко 
Основы комбинаторной топологии. М: Гостехиздат, 1947. 
Обыкновенные дифференциальные уравнения: Учеб. для гос. ун-тов.— М.: Наука, 1970. 
Понтрягин Л. С. Линейная дифференциальная игра убегания // Тр. МИАН СССР. — 1971. 
Избранные научные труды. В 3 т. — М.: Наука, 1988.
Понтрягин Л. С. Обобщения чисел. — М.: Наука, 1986. —
Знакомство с высшей математикой. Анализ бесконечно малых. — М.: Наука, 1980.
Знакомство с высшей математикой. Алгебра. — М.: Наука, 1987.
Математический анализ для школьников. — 3-изд.,  — М.: Наука, 1988.
Слайд 375

Почетные звания и награды Почётный член Лондонского математического общества (1953) Почётный

Почетные звания и награды

Почётный член Лондонского математического общества (1953)
Почётный

член Международной академии «Астронавтика» (1966)
Вице-президент Международного математического союза (1970—1974)
Почётный член Венгерской академии наук (1972)
Сталинская премия второй степени (1941) — за научную работу «Непрерывные группы» (1938)
Ленинская премия (1962)
Государственная премия СССР (1975) — за учебник «Обыкновенные дифференциальные уравнения», опубликованный (1974, 4-е издание)
Герой Социалистического Труда (1969)
четыре ордена Ленина (1953, 1967, 1969, 1978), орден Октябрьской Революции (1975), орден Трудового Красного Знамени (1945), орден «Знак Почёта» (1940)
Премия имени Н. И. Лобачевского (1966)
Слайд 376

Хобби 1.Музыка 2.Лыжи 3. Коньки 4.Литература

Хобби

1.Музыка
2.Лыжи
3. Коньки
4.Литература