Upload
nikolay-grebenshikov
View
1.671
Download
4
Embed Size (px)
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