ПРОГРАММА ДИСЦИПЛИНЫ С Алгоритмы программирования

advertisement
ПРОГРАММА ДИСЦИПЛИНЫ
Алгоритмы программирования
СОДЕРЖАНИЕ РАЗДЕЛОВ ДИСЦИПЛИНЫ
1. Базовые конструкции языка Паскаль
a. Программа на паскале.
b. Оператор присваивания.
c. Переменная. Раздел описания переменных.
d. Тип. Раздел описания типов.
e. Процедуры ввода/вывода.
f. Работа с файлами
2. Операторы языка паскаль
a. Оператор ветвления
b. Операторы цикла
i. Оператор цикла с итератором
ii. Оператор цикла с предусловием
iii. Оператор цикла с постусловием
iv. Операторы контроля исполнения цикла
c. Оператор выбора
d. Оператор безусловного перехода
3. Массивы
a. Использование массивов для организации данных
b. Описание массивов
c. Массивы переменной длины
4. Процедуры и функции
a. Подпрограммы, концепции использования подпрограмм
b. Описание процедур
c. Описание функций
d. Методы передачи параметров в процедуры и функции
e. Рекурсия
5. Базовые алгоритмы обработки массивов данных
a. Поиск минимума и максимума в массиве
b. Поиск элемента по локальному критерию
c. Изменение структуры массива
d. Алгоритм изменения длины массива с копированием
6. Алгоритмы сортировки
a. Квадратичные сортировки
i. Сортировка пузырьком
ii. Сортировка выбором
iii. Сортировка обменом
b. Сортировки за n log n
i. Сортировка пирамидой
ii. Сортировка слиянием
iii. Быстрая сортировка
7. Системы счисления
a. Использование различных систем счисления
2
b. Позиционные системы счисления
i. Системы с положительным основанием
ii. Системы с отрицательным основанием
iii. Системы с переменным основанием
1. Факториальная система счисления
2. Фибоначчиева система счисления
c. Алгоритмы перевода чисел из одной системы счисления в другую
d. Длинная арифметика, арифметические операции с числами в различных
системах счисления
8. Программы без массивов
Развитие техники программирования с использованием специальных задач,
разработанных для решения без использования массивов.
a. Обмен чисел
b. Быстрое возведение в степень
c. Наибольший общий делитель, алгоритм Евклида
d. Обращение по модулю, расширенный алгоритм Евклида
e. Разложение на множетели
f. Работа с десятичной записью числа
g. Число точек в окружности
h. Период десятичной дроби
9. Обработка массивов
Развитие техники программирования с использованием специальных задач,
разработанных для решения с использованем массивов.
a. Подсчет числа элементов по критерию
b. Циклический сдвиг без использования вспомогательных массивов
c. Вычисление значения многочлена
d. Умножение многочленов
e. Количество общих элементов в упорядоченных массивах
f. Слияние упорядоченных массивов
g. Пересечение упорядоченных массивов
h. Сумма упорядоченных массивов
i. Общее число в трех упорядоченных массивах
j. Двоичный поиск
k. Задача о рюкзаке
l. Рассечение по элементу
10. Комбинаторные объекты
a. Комбинаторные объекты
i. Перестановки
ii. Сочетания
iii. Размещения
iv. Разбиения на слагаемые
v. Разбиения на множества
vi. Разбиения на циклы
vii. Разбиения на упорядоченные множества
viii. Вектора из нулей и единиц
b. Подсчет числа комбинаторных объектов
i. Прямое произведение множеств
ii. Биномиальные коэффициенты
iii. Числа Стирлинга первого и второго рода
c. Перечисление комбинаторных объектов
i. Перечисление элементов прямого пересечения
3
ii. Лексикографический порядок
iii. Наследованный лексикографический порядок, перечисление
разбиений на подмножества
iv. Коды Грея
v. Перечисление перестановок с отличием в одну транспозицию
11. Применение сортировок
a. Сортировка чисел в массиве
b. Поиск количества различных чисел
c. Поиск гамильтонова пути на плоскости без самопересечений
12. Конечные автоматы и обработка текста
a. Конечный автомат
b. Основы построения лексических анализаторов
c. Конечный преобразователь
d. Рекурсивный спуск и вычисление выражений
13. Абстрактные типы данных
a. Стек
b. Очередь
c. Список, семейство списков
d. Реализация АТД с использованием массивов, построение менеджера
памяти на основе циклического списка свободных ячеек
e. Использование стеков и очередей
i. обратная польская запись, перевод в обратную польскую запись,
вычисление значения выражения в обратной польской записи
ii. правильные скобочные последовательности
iii. числа с фиксированным набором простых множетелей
14. Базовые алгоритмы на графах
a. Понятие графа
b. Представление графа в памяти
c. Обход графа в глубину
d. Обход графа в ширину
e. Компоненты связности и их построение
f. Свойства обхода в глубину, использование обхода в глубину для
построения декомпозиции графа
i. Компоненты реберной двусвязности, мосты
ii. Компоненты вершинной двусвязности, точки сочленения
iii. Топологическая сортировка
iv. Компоненты сильной связности
g. Взвешенные графы
h. Пути в графах
i. Кратчайший путь между двумя вершинами во взвешенном графе
i. Случай неотрицательных ребер, алгоритм Дейкстры
ii. Алгоритм Беллмана-Форда
iii. Поиск отрицательного цикла в графе
j. Кратчайший путь между всеми парами вершин
i. Алгоритм Флойда
ii. Перевзвешивание графа и использованием потеницалов
iii. Алгоритм Джонсона
k. Остовное дерево, построение остовного дерева минимального веса
i. Алгоритм Прима, связь с алгоритмом Дейкстры
ii. Алгоритм Краскала
l. Задача о максимальном паросочетании в двудольном графе
4
m. Задача о максимальном потоке
i. Алгоритм Форда-Фалкерсона
ПРАКТИЧЕСКИЕ ЗАНЯТИЯ
Наименование практических занятий
Базовые конструкции языка паскаль
Операторы языка паскаль
Использование массивов в программах
Процедуры и функции
Базовые алгоритмы обработки массивов данных
Алгоритмы сортировки
Системы счисления
Программы без массивов
Обработка массивов
Подсчет комбинаторных объектов
Перечисление комбинаторных объектов
Нумерация комбинаторных объектов
Применение сортировок
Конечные автоматы и обработка текста
Рекурсивный спуск
Абстрактные типы данных
Применение поиска в ширину и поиска в глубину
Поиск кратчайших путей в графе
Декомпозиция графа
Задачи типа Форда-Фалкерсона
Download