Алгоритмы для программистов

Информация о курсе:
Длительность курса: 31,5 часов
Субботние группы: 7 занятий х 4,5 часа
Дата начала:
Записаться в группу
Сложные алгоритмы для программистов - простыми словами.
Каждый программист обязан знать хотя бы десяток самых базовых алгоритмов.
Если вы пишете программы - значит вы используете алгоритмы. Нет необходимости изобретать велосипед - многие поколения математиков давно разработали множество алгоритмов для различных целей.
- Оценка сложности алгоритмов. Основные обозначения. Асимптотическая оценка сложности. Классификация алгоритмов.
- Алгоритмы сортировки. Сортировка пузырьком. Сортировка вставками. Быстрая сортировка. Сортировка слиянием. Пирамидальная сортировка. Оценка сложности алгоритмов сортировок.
- Основные структуры данных. Односвязный список. Двусвязный список. Очередь. Стек. Реализация основных операций для списков.
- Деревья. Бинарные деревья. Сбалансированные и несбалансированные деревья. Представление деревьев в виде массива и связанной структуры. Рекурсивные и не рекурсивные алгоритмы обхода деревьев. Бинарное дерево поиска AVL дерево. Красно-черное дерево. Пример использования деревьев: алгоритм Хафманна.
- Динамическое программирование. Основные алгоритмы динамического программирования.
- Жадные алгоритмы. Задача о размене монет. Задача о рюкзаке.
- Графы. Понятие графа. Представление графов. Связанный и несвязанный граф. Компоненты связанности. Остовное дерево. Применение графов.
- Основные алгоритмы на графах. Поиск в ширину. Поиск минимального пути (алгоритм Дейкстры). Поиск в глубину. Топологическая сортировка. Поиск мостов в графе. Циклы в графе.
- Генетические алгоритмы. Использование и реализация генетических алгоритмов.
- Элементы криптографии. Алгоритм RSA. Алгоритм Эль-Гамаль. Атаки на криптографические алгоритмы.
- Параллельное программирование. Построение алгоритмов работающих в многопоточной среде.
