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

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

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

       Николай Гребенщиков, 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

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

  • 1.
    Хакасский государственный университетим. Н.Ф. Катанова Структуры и алгоритмы обработки данных Лекция: Введение Николай Гребенщиков, www.grebenshikov.ru
  • 2.
    Объем курса •17 лекций • 17 семинаров • 17 лабораторных работ • более 100 часов самостоятельной работы 1
  • 3.
    Модульно рейтинговая система • 9 модулей • 9 лабораторных работ (команда 2-3 чел.) • 15 оцениваемых семинарских занятий • Реферат • Зачет автоматом - 701 балл и выше из 1000 баллов 2
  • 4.
    Лабораторные работы •Автоматизированная система проверки. • Языки программирования: Java, C#, C++. • Решение засчитывается, если оно проходит автоматиче- ское тестирование и каждый из команды понимает, что это решение делает. • Сложные ⇒ посещение обязательно. 3
  • 5.
    Зачет • ≤700 баллов (≤ 602 балла для магистров). • Вопрос: один из вопросов для семинаров. • Задача: одна из задач с лабораторных работ. • Время: 2 часа. 4
  • 6.
    Список литературы •Ахо А., Хопкрофт Д., Ульман Д. Структуры данных и алгоритмы. - М. : Издательский дом “Вильямс”, 2000. • Кормен Т., Лейзерсон Ч., Ривест Р., Штайн К. Алгорит- мы: построение и анализ, 2-е издание. - М. : Издатель- ский дом “Вильямс”, 2007. • Кнут Д, Искусство программирования, том 1. Основные алгоритмы, 3-е изд. - М. : Издательский дома “Вильямс”, 2000. • http://algolist.manual.ru. 5
  • 7.
    СиАОД - теорияи практика. • Структурный подход к программированию ⇒ ООП • Производительность ⇒ Алгоритмы ⇒ Анализ • Примеры решений классических задач (структуры + ал- горитмы) 6
  • 8.
    Построение программы 1. Формализация. 2.Разработка алгоритма. 3. Кодирование, тестирование, отладка, документиро- вание. 4. Выполнение программы, получение результата. 7
  • 9.
  • 10.
    Способы формализации задачи • математическое описание; • конечные автоматы; • формальные грамматики; • и так далее. 9
  • 11.
    Разработка алгоритма •алгоритм строится в терминах формальной модели; • “четкий смысл” инструкций; • конечность вычислительных затрат - ходные данные не могут инициировать бесконечное вычисление. 10
  • 12.
    Построение программы 1. Формализация. 2.Разработка алгоритма. 3. Кодирование, тестирование, отладка, документирование. 4. Выполнение программы, получение результата. 11
  • 13.
  • 14.
  • 15.
  • 16.
    Алгоритм: раскраска графа • Оптимальный. • Исключение полного перебора. • Эвристический. 15
  • 17.
    Жадная раскраска графа 1.Выбираем произвольную незакрашенную вершину и на- значаем ей новый цвет. 2. Просматриваем список не закрашенных вершин и для каждой определяем, соединина ли она ребром с верши- ной, уже закрашенной в новый цвет. Если нет, то к этой вершине также применяется новый цвет. 3. Повторяем с начала пока все вершины не будут закраше- ны. 16
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
    Входное тестирование 1. Напишителюбой алгоритм вычисления факториала чис- ла X. 2. Напишите любой алгоритм сортировки массива. 3. Что означает запись - Θ(N )? 22