День 7. Локальные оптимимизации, отжиг, перебор (4 января)
Лектор: [Сережа.K]
- C++: use algorithm, -std=c++11
- Структуры: list initialization
- lambda, передача функций, функции в функциях
- auto, foreach
- set, map, unordered_set, unordered_map
- count, accumulate, min_element, max_element, count_if, find, find_if
- sort, unique, merge, set_intersection, set_union, set_difference
- Локальные оптимизации
- timus : 1128 Все степени не более 3. Разбить вершины на два подмножества так, чтобы у каждого было не более одного врага.
- Алгоритм поиска паросочетания максимального размера
- Приближенноё решение задачи коммивояжёра (2-приближение через MST и локальные оптимизации, устранение точек пересечения)
- Найти трисочетание минимального веса в трехдольном графе
- timus : 1130 Выбрать для каждого вектора ориентацию так, чтобы суммарная длина была не более L*sqrt(2)
- Метод отжига
- Дана функция, давайте попробуем найти локальный минимум (локальные оптимизации, несколько точек начала процесса, отжиг)
- А функция бывает от нескольких переменных, давайте найдём локальный минимум (локальные оптимизации, несколько точек начала процесса, отжиг)
- Задача про ферзей
- Перебор: гамильтонов путь, решение на простых тестах
- Шахматная доска, правило Warnsdorff'а
- Рекурсивный перебор, перебор вершин в порядке возрастания степени
- Идти в одну из двух первых вершин, запускаться несколько раз
- Отсечение запоминанием, отсечение по связности, отсечение по времени