Часть 2. Нечисленные и получисленные алгоритмы

1. Элементы дискретной математики. Множества и их свойства. Множества и последовательности. Алгоритмы генерации множеств. Разложение числа на слагаемые и на множители. Множество простых чисел. Реализация операций над множествами.

2. Отношения и их свойства. Замыкание отношения, построение транзитивного замыкания отношения, алгоритм Уоршалла. Понятие о классах эквивалентности.

3. Элементы комбинаторики. Сочетания и перестановки. Порождение комбинаторных объектов. Коды Грея и аналогичные задачи. Подсчет мощности множеств комбинаторных объектов.

4. Элементы булевой алгебры. СДНФ булевой функции. Алгоритм построения таблиц истинности для СДНФ.

5. Поиск с возвратами. Задача о восьми ферзях. Задача о выходе из лабиринта. Рекурсивные алгоритмы.

6. Алгоритмы на последовательностях (сравнение последовательностей, поиск, нахождение общей подпоследовательности).

7. Основные понятия теории графов. Представления графов. Элементарные алгоритмы на графах. Поиск в глубину и в ширину. Поиск кратчайших путей.

8. Элементы растровой графики. Построение отрезка. Отсечение отрезков. Заполнение многоугольников. Заполнение произвольных областей.