User Tools

Site Tools


courses:algorithms_building_and_analysis:lectures

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Last revision Both sides next revision
courses:algorithms_building_and_analysis:lectures [2023/04/19 21:55]
kalishenko
courses:algorithms_building_and_analysis:lectures [2024/05/11 23:09]
kalishenko
Line 1: Line 1:
 ====== Программа ====== ====== Программа ======
 +===== Сложность алгоритмов =====
 +  - Виды сложности:​
 +    * Операции
 +    * Время
 +    * Память
 +  - Понятие вычислительной сложности в зависимости от размера входа
 +  - Константная сложность на примере vector и unordered_set:​
 +    * Амортизированная
 +    * В среднем
 +    * В худшем
 +
 ===== Поиск с возвращением ===== ===== Поиск с возвращением =====
   - Идея поиска с возвращением (backtracking)   - Идея поиска с возвращением (backtracking)
Line 8: Line 19:
     * Пример на площади фигуры     * Пример на площади фигуры
     * Ограничения и условия применимости ​     * Ограничения и условия применимости ​
 +
 +===== Жадные алгоритмы =====
 +  - Задача об оптимальном расписании
 +  - Задача о префиксном кодировании
 +  - Принцип доказательства оптимальности работы жадного алгоритма
  
 ===== Графы ===== ===== Графы =====
Line 22: Line 38:
   - Оптимизация Штейна алгоритма Каргера   - Оптимизация Штейна алгоритма Каргера
  
-==== Кратчайшие пути. A* и его расширения ​==== +==== Кратчайшие пути. A* ==== 
-  ​Напоминание ​о A*+  - Напоминание об алгоритмах поиска пути: 
 +    - Поиск в ширину 
 +    - Дейкстра 
 +  - A*: 
 +    - Выбор направления ​пути Дейкстрой при 0-взвешивании рёбер оптимального пути 
 +    - Доказательство неизменности пути при перевзвешивании рёбер 
 +    - Ограничения А*
   - Эвристические функции   - Эвристические функции
 +
 +==== Кратчайшие пути. Расширения A* ====
   - Алгоритм ALT   - Алгоритм ALT
-  - Алгоритм ​RE +  - Алгоритм ​REACH 
- +  - Алгоритм ​Arc flags
-==== Топологическая сортировка ====   +
-  - Ограничения на циклы +
-  - Алгоритм ​нумерацией шагов обхода +
-  - Алгоритм исключения вершины с минимальным количеством входящих рёбер+
  
 ==== Задача о коммивояжёре ==== ==== Задача о коммивояжёре ====
Line 42: Line 62:
     * Имитация отжига ​     * Имитация отжига ​
   - Приближённое решение (2-приближённый алгоритм)  ​   - Приближённое решение (2-приближённый алгоритм)  ​
 +
 +==== Потоки в графах ====
 +  - Напоминание Форда-Фалкерсона
 +    * Идея поиска пути в остаточной сети
 +    * Обратные рёбра
 +    * Сложность ​
 +  - Алгоритм Гольдберга (проталкивания предпотока):​
 +    * Идея push-relabel алгоритмов
 +    * Формализмы и инварианты
 +    * Доказательство корректности
 +    * Сравнение сложности с Фордом-Фалкерсоном ​
 +
 +==== Изоморфизм графов ====
 +  - Задача изоморфизма:​
 +    * Точный изоморфизм
 +    * Поиск подграфа в графе
 +  - Алгоритм Ульмана (переборный с матрицей)
 +  - Применение изоморфизма
  
 ===== Строки ===== ===== Строки =====
Line 57: Line 95:
   - Наивное построение префикс-функции и его сложность   - Наивное построение префикс-функции и его сложность
   - Построение префикс-функции за линейное время   - Построение префикс-функции за линейное время
 +  - Оптимизация сложности по памяти
  
 ==== Алгоритм Ахо-Корасик ==== ==== Алгоритм Ахо-Корасик ====
Line 69: Line 108:
     * Сведение к графу     * Сведение к графу
     * Выделение подзадачи     * Выделение подзадачи
-  - Задача о рюкзаке:​ 
-    * Без повторений (одномерный случай) 
-    * С повторениями (двумерный случай) 
   - Задача о порядке перемножения матриц  ​   - Задача о порядке перемножения матриц  ​
- 
-===== Разное ===== 
-  - Сложность алгоритмов. Виды сложности 
  
 ----- -----
Line 97: Line 130:
 ==== Потоки в графах ==== ==== Потоки в графах ====
   - Алгоритм Форда-Фалкерсона   - Алгоритм Форда-Фалкерсона
-  - Алгоритм Гольдберга (проталкивания предпотока) 
  
 ==== Кратчайшие пути. Дейкстра ==== ==== Кратчайшие пути. Дейкстра ====
Line 113: Line 145:
   - Применения и сложность задачи построения клик графа   - Применения и сложность задачи построения клик графа
   - Алгоритм нахождения клик на основе поиска с возвращением.   - Алгоритм нахождения клик на основе поиска с возвращением.
 +
 +==== Топологическая сортировка ====  ​
 +  - Ограничения на циклы
 +  - Алгоритм нумерацией шагов обхода
 +  - Алгоритм исключения вершины с минимальным количеством входящих рёбер
  
 ==== Алгоритм Рабина-Карпа ==== ==== Алгоритм Рабина-Карпа ====
Line 124: Line 161:
   - Метод расщепления   - Метод расщепления
   - Сведения   - Сведения
 +
 +===== Динамическое программирование =====
 +  - Задача о рюкзаке:​
 +    * Без повторений (одномерный случай)
 +    * С повторениями (двумерный случай)
 </​WRAP>​ </​WRAP>​
courses/algorithms_building_and_analysis/lectures.txt · Last modified: 2024/05/24 07:34 by kalishenko