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
courses:algorithms_building_and_analysis:lectures [2023/05/10 06:12]
kalishenko
courses:algorithms_building_and_analysis:lectures [2024/05/29 17:33] (current)
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
   - Алгоритм REACH   - Алгоритм REACH
-  - Алгоритм Arc flags +  - Оптимизация слияния рёбер
- +
-==== Топологическая сортировка ====   +
-  - Ограничения на циклы +
-  - Алгоритм нумерацией шагов обхода +
-  - Алгоритм исключения вершины с минимальным количеством входящих ​рёбер+
  
 ==== Задача о коммивояжёре ==== ==== Задача о коммивояжёре ====
Line 43: Line 62:
     * Имитация отжига ​     * Имитация отжига ​
   - Приближённое решение (2-приближённый алгоритм)  ​   - Приближённое решение (2-приближённый алгоритм)  ​
- 
  
 ==== Потоки в графах ==== ==== Потоки в графах ====
-  - Алгоритм Гольдберга (проталкивания предпотока)+  ​- Напоминание Форда-Фалкерсона 
 +    * Идея поиска пути в остаточной сети 
 +    * Обратные рёбра 
 +    * Сложность  
 +  ​- Алгоритм Гольдберга (проталкивания предпотока)
 +    * Идея push-relabel алгоритмов 
 +    * Формализмы и инварианты 
 +    * Доказательство корректности 
 +    * Сравнение сложности с Фордом-Фалкерсоном  
 + 
 +==== Изоморфизм графов ==== 
 +  - Задача изоморфизма:​ 
 +    * Точный изоморфизм 
 +    * Поиск подграфа в графе 
 +  - Алгоритм Ульмана (переборный с матрицей) 
 +  - Применение изоморфизма
  
 ===== Строки ===== ===== Строки =====
Line 62: Line 95:
   - Наивное построение префикс-функции и его сложность   - Наивное построение префикс-функции и его сложность
   - Построение префикс-функции за линейное время   - Построение префикс-функции за линейное время
 +  - Оптимизация сложности по памяти
  
 ==== Алгоритм Ахо-Корасик ==== ==== Алгоритм Ахо-Корасик ====
Line 68: Line 102:
   - Задача о словаре   - Задача о словаре
   - Алгоритм Ахо-Корасик   - Алгоритм Ахо-Корасик
 +
 +==== Суффиксные деревья и массивы ====
 +  - Суффиксное дерево - мотивация,​ сложность,​ поиск
 +  - Суффиксный массив - мотивация,​ сложность,​ поиск
 +  - Алгоритм Укконена
  
 ===== Динамическое программирование ===== ===== Динамическое программирование =====
Line 74: Line 113:
     * Сведение к графу     * Сведение к графу
     * Выделение подзадачи     * Выделение подзадачи
-  - Задача о рюкзаке:​ 
-    * Без повторений (одномерный случай) 
-    * С повторениями (двумерный случай) 
   - Задача о порядке перемножения матриц  ​   - Задача о порядке перемножения матриц  ​
- 
-===== Разное ===== 
-  - Сложность алгоритмов. Виды сложности 
  
 ----- -----
Line 117: Line 150:
   - Применения и сложность задачи построения клик графа   - Применения и сложность задачи построения клик графа
   - Алгоритм нахождения клик на основе поиска с возвращением.   - Алгоритм нахождения клик на основе поиска с возвращением.
 +
 +==== Топологическая сортировка ====  ​
 +  - Ограничения на циклы
 +  - Алгоритм нумерацией шагов обхода
 +  - Алгоритм исключения вершины с минимальным количеством входящих рёбер
  
 ==== Алгоритм Рабина-Карпа ==== ==== Алгоритм Рабина-Карпа ====
Line 128: Line 166:
   - Метод расщепления   - Метод расщепления
   - Сведения   - Сведения
 +
 +===== Динамическое программирование =====
 +  - Задача о рюкзаке:​
 +    * Без повторений (одномерный случай)
 +    * С повторениями (двумерный случай)
 </​WRAP>​ </​WRAP>​
courses/algorithms_building_and_analysis/lectures.1683699130.txt.gz · Last modified: 2023/05/10 06:12 by kalishenko