Лекция №1. Введение. Предмет "Структуры и алгоритмы...

Preview:

Citation preview

Хакасский государственный университет им. Н.Ф. Катанова

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

Лекция: Введение

Николай Гребенщиков, www.grebenshikov.ru

Объем курса

• 17 лекций

• 17 семинаров

• 17 лабораторных работ

• более 100 часов самостоятельной работы

1

Модульно рейтинговая система

• 9 модулей

• 9 лабораторных работ (команда 2-3 чел.)

• 15 оцениваемых семинарских занятий

• Реферат

• Зачет автоматом - 701 балл и выше из 1000 баллов

2

Лабораторные работы

• Автоматизированная система проверки.

• Языки программирования: Java, C#, C++.

• Решение засчитывается, если оно проходит автоматиче-ское тестирование и каждый из команды понимает, чтоэто решение делает.

• Сложные ⇒ посещение обязательно.

3

Зачет

• ≤ 700 баллов (≤ 602 балла для магистров).

• Вопрос: один из вопросов для семинаров.

• Задача: одна из задач с лабораторных работ.

• Время: 2 часа.

4

Список литературы

• Ахо А., Хопкрофт Д., Ульман Д. Структуры данных иалгоритмы. - М. : Издательский дом “Вильямс”, 2000.

• Кормен Т., Лейзерсон Ч., Ривест Р., Штайн К. Алгорит-мы: построение и анализ, 2-е издание. - М. : Издатель-ский дом “Вильямс”, 2007.

• Кнут Д, Искусство программирования, том 1. Основныеалгоритмы, 3-е изд. - М. : Издательский дома “Вильямс”,2000.

• http://algolist.manual.ru.

5

СиАОД - теория и практика.

• Структурный подход к программированию ⇒ ООП

• Производительность ⇒ Алгоритмы ⇒ Анализ

• Примеры решений классических задач (структуры + ал-горитмы)

6

Построение программы

1. Формализация.

2. Разработка алгоритма.

3. Кодирование, тестирование, отладка, документиро-вание.

4. Выполнение программы, получение результата.

7

Формализация

Имеет ли задача решение?

8

Способы формализации задачи

• математическое описание;

• конечные автоматы;

• формальные грамматики;

• и так далее.

9

Разработка алгоритма

• алгоритм строится в терминах формальной модели;

• “четкий смысл” инструкций;

• конечность вычислительных затрат - ходные данные немогут инициировать бесконечное вычисление.

10

Построение программы

1. Формализация.

2. Разработка алгоритма.

3. Кодирование, тестирование, отладка, документирование.

4. Выполнение программы, получение результата.

11

Пример: Сложный перекресток

12

Граф

13

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

14

Алгоритм: раскраска графа

• Оптимальный.

• Исключение полного перебора.

• Эвристический.

15

Жадная раскраска графа

1. Выбираем произвольную незакрашенную вершину и на-значаем ей новый цвет.

2. Просматриваем список не закрашенных вершин и длякаждой определяем, соединина ли она ребром с верши-ной, уже закрашенной в новый цвет. Если нет, то к этойвершине также применяется новый цвет.

3. Повторяем с начала пока все вершины не будут закраше-ны.

16

Результат

17

Кристаллизация алгоритма: шаг №1

18

Кристаллизация алгоритма: шаг №2

19

Кристаллизация алгоритма: шаг №3

20

Процесс создания программы

21

Входное тестирование

1. Напишите любой алгоритм вычисления факториала чис-ла X.

2. Напишите любой алгоритм сортировки массива.

3. Что означает запись - Θ(N)?

22

Recommended