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 [2022/12/10 09:08]
127.0.0.1 external edit
courses:algorithms_building_and_analysis:lectures [2024/05/11 23:08]
kalishenko
Line 1: Line 1:
 ====== Программа ====== ====== Программа ======
 +===== Сложность алгоритмов =====
 +  - Виды сложности:​
 +    * Операции
 +    * Время
 +    * Память
 +  - Понятие вычислительной сложности в зависимости от размера входа
 +  - Константная сложность на примере vector и unordered_set:​
 +    * Амортизированная
 +    * В среднем
 +    * В худшем
 +
 ===== Поиск с возвращением ===== ===== Поиск с возвращением =====
   - Идея поиска с возвращением (backtracking)   - Идея поиска с возвращением (backtracking)
Line 8: Line 19:
     * Пример на площади фигуры     * Пример на площади фигуры
     * Ограничения и условия применимости ​     * Ограничения и условия применимости ​
 +
 +===== Жадные алгоритмы =====
 +  - Задача об оптимальном расписании
 +  - Задача о префиксном кодировании
 +  - Принцип доказательства оптимальности работы жадного алгоритма
  
 ===== Графы ===== ===== Графы =====
Line 18: Line 34:
  
 ==== Минимальный разрез ==== ==== Минимальный разрез ====
-  - Идея алгоритма на основе поиска потока 
   - Примеры практических задач   - Примеры практических задач
   - Алгоритм Каргера   - Алгоритм Каргера
Line 24: Line 39:
  
 ==== Кратчайшие пути. A* ==== ==== Кратчайшие пути. A* ====
-  - Эвристические алгоритмы +  - Напоминание об алгоритмах поиска пути
-  - Алгоритм ​A*+    - Поиск в ширину 
 +    - Дейкстра 
 +  - A*: 
 +    - Выбор направления пути Дейкстрой при 0-взвешивании рёбер оптимального пути 
 +    - Доказательство неизменности пути при перевзвешивании рёбер 
 +    - Ограничения А*
   - Эвристические функции   - Эвристические функции
-  - Применение в ГИС (обзор алгоритма ALT) 
  
-==== Топологическая сортировка ​====   +==== Кратчайшие ​пути. Расширения A* ==== 
-  - Ограничения на циклы +  - Алгоритм ALT 
-  - Алгоритм ​нумерацией шагов обхода +  - Алгоритм ​REACH 
-  - Алгоритм ​исключения вершины с минимальным количеством входящих рёбер+  - Алгоритм ​Arc flags
  
 ==== Задача о коммивояжёре ==== ==== Задача о коммивояжёре ====
Line 43: Line 62:
     * Имитация отжига ​     * Имитация отжига ​
   - Приближённое решение (2-приближённый алгоритм)  ​   - Приближённое решение (2-приближённый алгоритм)  ​
 +
 +==== Потоки в графах ====
 +  - Напоминание Форда-Фолкерсона
 +    * Идея поиска пути в остаточной сети
 +    * Обратные рёбра
 +    * Сложность ​
 +  - Алгоритм Гольдберга (проталкивания предпотока):​
 +    * Идея push-relabel алгоритмов
 +    * Формализмы и инварианты
 +    * Доказательство корректности
 +    * Сравнение сложности с Фордом-Фалкерсоном ​
 +
 +==== Изоморфизм графов ====
 +  - Задача изоморфизма:​
 +    * Точный изоморфизм
 +    * Поиск подграфа в графе
 +  - Алгоритм Ульмана (переборный с матрицей)
 +  - Применение изоморфизма
  
 ===== Строки ===== ===== Строки =====
Line 54: Line 91:
   - Основные определения   - Основные определения
   - Задача точного поиска образца в строке   - Задача точного поиска образца в строке
-  - Наивный алгоритм +  - Наивный алгоритм ​и его сложность 
-  - КМП+  - Алгоритм ​КМП 
 +  - Наивное построение префикс-функции и его сложность 
 +  - Построение префикс-функции за линейное время 
 +  - Оптимизация сложности по памяти
  
 ==== Алгоритм Ахо-Корасик ==== ==== Алгоритм Ахо-Корасик ====
Line 68: Line 108:
     * Сведение к графу     * Сведение к графу
     * Выделение подзадачи     * Выделение подзадачи
-  - Задача о рюкзаке:​ 
-    * Без повторений (одномерный случай) 
-    * С повторениями (двумерный случай) 
   - Задача о порядке перемножения матриц  ​   - Задача о порядке перемножения матриц  ​
- 
-===== Разное ===== 
-  - Сложность алгоритмов. Виды сложности 
  
 ----- -----
Line 96: Line 130:
 ==== Потоки в графах ==== ==== Потоки в графах ====
   - Алгоритм Форда-Фалкерсона   - Алгоритм Форда-Фалкерсона
-  - Алгоритм Гольдберга (проталкивания предпотока) 
  
 ==== Кратчайшие пути. Дейкстра ==== ==== Кратчайшие пути. Дейкстра ====
Line 112: Line 145:
   - Применения и сложность задачи построения клик графа   - Применения и сложность задачи построения клик графа
   - Алгоритм нахождения клик на основе поиска с возвращением.   - Алгоритм нахождения клик на основе поиска с возвращением.
 +
 +==== Топологическая сортировка ====  ​
 +  - Ограничения на циклы
 +  - Алгоритм нумерацией шагов обхода
 +  - Алгоритм исключения вершины с минимальным количеством входящих рёбер
  
 ==== Алгоритм Рабина-Карпа ==== ==== Алгоритм Рабина-Карпа ====
Line 123: Line 161:
   - Метод расщепления   - Метод расщепления
   - Сведения   - Сведения
 +
 +===== Динамическое программирование =====
 +  - Задача о рюкзаке:​
 +    * Без повторений (одномерный случай)
 +    * С повторениями (двумерный случай)
 </​WRAP>​ </​WRAP>​
courses/algorithms_building_and_analysis/lectures.txt · Last modified: 2024/05/11 23:09 by kalishenko