From eadaedb4dd4bb4d2e5b1e74d7734122e01cc802f Mon Sep 17 00:00:00 2001 From: Ivan Khokhlov Date: Sat, 13 Sep 2025 12:25:50 +0300 Subject: [PATCH 1/3] Update README.md --- doc/README.md | 56 +-------------------------------------------------- 1 file changed, 1 insertion(+), 55 deletions(-) diff --git a/doc/README.md b/doc/README.md index 755f421..1f8fb8a 100644 --- a/doc/README.md +++ b/doc/README.md @@ -1,55 +1 @@ -# Теория по алгоритмам: - -## 1. Обходы гррафа -### 1.1. Ориентированный граф, псевдограф. Неориентированный граф, псевдограф. Связность в неор. графе, компоненты связности. Слабая и сильная связность в ор. графе. Компоненты слабой, сильной связности. -### 1.2. Обход в глубину. Цвета вершин. Времена входа и выхода. Лемма о белых путях(с доказательством). -### 1.3. Проверка связности неориентированного графа. Поиск цикла в неориентированном и ориентированном графе. Топологическая сортировка. -### 1.4. Нахождение компонент сильной связности. Алгоритм Косарайю с доказательством корректности(концепция). Алгоритм Тарьяна без доказательства корректности. -### 1.5. Компоненты реберной двусвязности. Мосты. Поиск мостов. -### 1.6. Компоненты вершинной двусвязности. Точки сочленения. Поиск точек сочленения. -### 1.7. Волновой алгоритм. Обход в ширину (применение очереди в волновом алгоритме). -### 1.8. Критерий существования Эйлерова пути и цикла в ориентированном и неориентированном графе. Поиск эйлерова пути и цикла. - -## 2. Планарность графа -### 2.1. Формула Эйлера. Теорема Портнягина-Куратовского. Теорема Вагнера -### 2.2. Гамма алгоритм. Контактная вершина. -### 2.3. Теорема о корректности Гамма алгоритма. Асимптотика алгоритма. - -## 3. Кратчайшие пути во взвешенном графе. -### 3.1. Алгоритм Дейкстры. Доказательство корректности(с доказательством) Оценка времени работы. Дерево кратчайших путей. -### 3.2. Потенциалы. Условие применимости алгоритма Дейкстры для измененных длин ребер. Потенциал π(v) = ρ(v, t).) = ρ(v) = ρ(v, t)., t). -### 3.3. Алгоритм A*. Условие монотонности на эвристику. Примеры эвристик. -### 3.4. Алгоритм Форда-Беллмана. Хранение в матрице: Dv) = ρ(v, t).k равно длине кратчайшего пути до вершины v) = ρ(v, t). за ровно k ребер (не более k ребер). Доказательство корректности(полное). Оценка времени работы. -### 3.5. Восстановление пути. Детектирование цикла отрицательного веса. Поиск самого цикла. -### 3.6. Нахождение кратчайших путей с учетом циклов отрицательного веса. -### 3.7. Алгоритм Флойда. Доказательство (концепция). Восстановление пути. -### 3.8. Нахождение цикла отрицательного веса. -### 3.9. Алгоритм Джонсона. Добавление фиктивного корня и фиктивных ребер для запуска алгоритма Форда-Беллмана. - -## 4. Остовные деревья -### 4.1. Остовное дерево. Построение с помощью обхода в глубину и в ширину. -### 4.2. Определение минимального остовного дерева. -### 4.3. Теорема о разрезе. Доказательство. -### 4.4. Алгоритм Прима. Аналогия с алгоритмом Дейкстры. Оценка времени работы для различных реализаций очереди с приоритетом: бинарная куча, Фибоначчиева куча (последнее без доказательства). -### 4.5. Алгоритм Прима. Доказательство корректности с помощью теоремы о разрезе. -### 4.6. Алгоритм Крускала. Доказательство корректности. Оценка времени работы. -### 4.7. Система непересекающихся множеств. Эвристика потенциалов без доказательства. Эвристика сжатия пути без доказательства. Почти константное время работы(без доказательства). -### 4.8. Алгоритм Борувки. Доказательство(полное). Оценка времени работы. -### 4.9. Приближение решения задачи коммивояжера с помощью минимального остовного дерева. - -## 5. Потоки в сетях. -### 5.1. Определение сети. Определение потока. Физический смысл. Аналогия с законами Кирхгофа. Определение разреза. Понятия потока через разрез. -### 5.2. Определение разреза. Понятия потока через разрез. Доказательство факта, что поток через любой разрез одинаковый. -### 5.3. Понятие остаточной сети. Понятие дополняющего пути. Необходимость отсутствия дополняющего пути для максимальности потока. -### 5.4. Теорема Форда-Фалкерсона. -### 5.5. Алгоритм Форда-Фалкерсона. Поиск минимального разреза. Пример целочисленной сети, в котором алгоритм работает долго. -### 5.6. Алгоритм Эдмондса-Карпа. Доказательство, что кратчайшее расстояние в остаточной сети не уменьшается. -### 5.7. Общая оценка времени работы алгоритма Эдмондса-Карпа. (не строго) -### 5.8. Слоистая сеть. Алгоритм Диница. Оценка времени работы без доказательства. - -## RMQ. Sparse-table, дерево отрезков. LCA. Декартово дерево по неявному ключу. -### 6.1. RSQ и RMQ. Sparse-table. -### 6.2. Дерево отрезков. Обработка запросов от листьев. Обработка запросов от корня. -### 6.3. Дерево отрезков. Изменение значения в массиве, обновление дерева отрезков. Множественные операции. -### 6.4. LCA. Метод двоичного подъёма. -### 6.5. Декартово дерево по неявному ключу. Интерфейс быстрого массива: Доступ к элементу в позиции i, Вставка элемента в позицию i, Удаление элемента из позиции i, Конкатенация двух массивов, разделение массива на два. +# Теория From 9a6f1674e639b5ba5b884a56fed81bc56f6fa148 Mon Sep 17 00:00:00 2001 From: Ivan Khokhlov Date: Sat, 13 Sep 2025 10:05:15 +0000 Subject: [PATCH 2/3] for test pr --- task_01/src/main.cpp | 5 ++++- task_01/src/sum.cpp | 1 + 2 files changed, 5 insertions(+), 1 deletion(-) create mode 100644 task_01/src/sum.cpp diff --git a/task_01/src/main.cpp b/task_01/src/main.cpp index 0e4393b..887a858 100644 --- a/task_01/src/main.cpp +++ b/task_01/src/main.cpp @@ -1,3 +1,6 @@ #include -int main() { return 0; } +int main() { + std::cout << "Hello, world!\n"; + return 0; +} diff --git a/task_01/src/sum.cpp b/task_01/src/sum.cpp new file mode 100644 index 0000000..e88b354 --- /dev/null +++ b/task_01/src/sum.cpp @@ -0,0 +1 @@ +#include "sum.hpp" \ No newline at end of file From b963616126de9d9052cee0ad5ad0e0a8bfcb4ced Mon Sep 17 00:00:00 2001 From: Ivan Khokhlov Date: Sat, 13 Sep 2025 10:10:41 +0000 Subject: [PATCH 3/3] wip --- task_01/src/main.cpp | 1 + task_01/src/sum.cpp | 4 +++- task_01/src/sum.hpp | 2 +- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/task_01/src/main.cpp b/task_01/src/main.cpp index 887a858..71fca33 100644 --- a/task_01/src/main.cpp +++ b/task_01/src/main.cpp @@ -2,5 +2,6 @@ int main() { std::cout << "Hello, world!\n"; + return 0; } diff --git a/task_01/src/sum.cpp b/task_01/src/sum.cpp index e88b354..345155a 100644 --- a/task_01/src/sum.cpp +++ b/task_01/src/sum.cpp @@ -1 +1,3 @@ -#include "sum.hpp" \ No newline at end of file +#include "sum.hpp" + +int Sum(int first_number, int second_number, int third_number) { return 6; } \ No newline at end of file diff --git a/task_01/src/sum.hpp b/task_01/src/sum.hpp index 97cc293..9c229b4 100644 --- a/task_01/src/sum.hpp +++ b/task_01/src/sum.hpp @@ -1 +1 @@ -int Sum(int first_number, int second_number, int third_number) { return 6; } \ No newline at end of file +int Sum(int first_number, int second_number, int third_number); \ No newline at end of file