Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект лекций СиАОД.docx
Скачиваний:
8
Добавлен:
01.03.2025
Размер:
4.62 Mб
Скачать

Министерство образования и науки Российской Федерации

Государственное образовательное учреждение высшего

профессионального образования

«Новгородский государственный университет имени Ярослава Мудрого»

Кафедра информационных технологий и систем

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

Дисциплина по направлению

230100.62 – Информатика и вычислительная техника

Лекции

Разработал

ст. преподаватель кафедры ИТИС

________________П.М. Довгалюк

_____ ________________2012 г.

Принято на заседании кафедры

Заведующий кафедрой

______________А.Л. Гавриков

_____ ________________2012 г.

Оглавление

1 Стандартная постановка задачи 4

1.1 Пример постановки задачи 8

1.2 Пример постановки задачи в стандартной форме 8

2 Алгоритмы и их сложность 8

3 Основы анализа программ 12

3.1 Пример анализа алгоритмов 22

4 Выполнение операторов программы 23

4.1 Основы доказательства корректности 25

4.2 Правила вывода 25

4.2.1 Правило вывода Р1 – усиление предусловия и ослабление постусловия 25

4.2.2 Правило вывода А1 – получение предусловия оператора присваивания 26

4.2.3 Правило вывода IF1 - Проверка предусловия условного оператора 26

4.2.4 Правило вывода IF2 – Получение предусловия условного оператора 26

4.2.5 Правило вывода IF3 –Условный оператор 27

4.2.6 Правило вывода IF4 – Условный оператор 27

4.2.7 Правило вывода S1 – Последовательность операторов 27

4.2.8 Правило вывода W1 – Цикл с условием продолжения без инициализации 27

4.2.9 Правило вывода W2 – Цикл с условием продолжения с инициализацией 28

4.2.10 Правило вывода DC1 – разделяй и властвуй 29

4.2.11 Правило вывода DC2 – разделяй и властвуй 29

4.2.12 Правило вывода DC3 – разделяй и властвуй 29

4.2.13 Правило вывода DC4 – разделяй и властвуй 29

5 Инвариант цикла 30

6 Динамическое программирование 32

6.1 Перемножение нескольких матриц 33

6.2 Когда применимо динамическое программирование 37

6.3 Наибольшая общая подпоследовательность 37

7 Жадные алгоритмы 40

7.1 Задача о выборе заявок 40

8 Абстрактные типы данных 41

8.1 АТД «Список» 42

8.2 АТД «Стек» 43

8.3 АТД «Очередь» 43

8.4 Множества 45

9 Хеширование 46

10 Поиск слова в тексте 49

11 Сортировка 51

11.1 Сортировка вставками 51

11.2 Корневая сортировка 52

11.3 Пирамидальная сортировка 53

11.3.1 Переформирование пирамиды 53

11.3.2 Построение пирамиды 55

11.4 Сортировка слиянием 55

12 Управление с помощью таблиц 58

13 Графы 58

13.1 Способы представления графа 59

13.1.1 Матрица смежности 59

13.1.2 Матрица инцидентности 59

13.1.3 Список рёбер 59

13.2 Алгоритмы обхода графа 59

13.2.1 Поиск в ширину 60

13.3 Задача о кратчайшем пути 61

13.4 Алгоритм Дейкстры 65

13.5 Алгоритм Беллмана-Форда 69

13.6 Задача перекресток 73

13.7 Максимальный поток 76

13.8 Метод Форда-Фалкерсона 77

13.9 Минимальные покрывающие деревья 84

13.9.1 Алгоритм Крускала 88

13.9.2 Алгоритм Прима 89

13.10 Минимальные покрывающие деревья 90

13.11 Поиск в глубину 93

13.12 Топологическая сортировка 101

14 Деревья 102

14.1 АВЛ-деревья 103

  1. Стандартная постановка задачи

Стандартная постановка задачи

Включает:

  • наименование задачи (схематическое определение);

  • общее описание (краткое изложение задачи);

  • ввод;

  • вывод;

  • ошибки (явно перечислены необычные варианты ввода и указаны те действия, которые предпримет машина в подобных ситуациях);

  • пример (передает сущность задачи и иллюстрирует различные случаи)

Шаги процесса программирования

Шаг1

Шаг 2

Шаг 3

Шаг 4

Шаг 5

Шаг 6