- •1.Трудоемкость алгоритмов
- •2.Алгоритмы сортировки
- •3.Сортировка слиянием
- •4.Бинарные поисковые деревья
- •5.2-3-4 Деревья
- •6.Хеширование
- •7. Поиск подстроки. Алгоритм Кнута-Морриса- Пратта.
- •8. Графы. Структуры данных для представления графов
- •9. Алгоритм нахождения Эйлерова цикла
- •10 .Поиск в ширину(волновой алгоритм)
- •11.Поиск в глубину
- •12.Жадные алгоритмы и матроиды
- •13.Задача об остовном дереве. Алгоритмы Прима и Краскала, их реализация
- •14. Алгоритм Дийкстры
- •15. Алгоритм Флойда
- •16. Паросочетания в двудольных графах
- •17. Потоки и разрезы в сетях. Алгоритм Форда-Фалкерсона
- •18. Задача о рюкзаке
- •21. Классы p и np. Полиномиальное сведение.
- •22. Np- полные задачи. Теорема Кука-Карпа-Левина. Np-полнота задачи о клике
- •23. Алгоритмы с гарантированной оценкой точности. Задача упаковки
- •24.Метод локального поиска и поиска с запретами. Задача о максимальном разрезе.
- •25.Метод ветвей и границ. Задача коммивояжера.
- •26. Задача коммивояжера с неравенством треугольника. Алгоритм Кристофидеса
- •27.Задача о независимом множестве, точные и эвристические алгоритмы ее решения
- •28.Задача о раскраске графа, точные и эвристические алгоритмы ее решения.
- •31.Задача о раскраске хордальных графов
- •32.Генетические алгоритмы
- •33. Page Rank
- •34 Криптосистема с открытым ключом. Криптосистема rsa
- •35.Задача разделения секрета.
- •36. Алгоритмы сжатия информации
10 .Поиск в ширину(волновой алгоритм)
Метка вершины – ее расстояние до начальной вершины.
Первой вершине метка 0,смежным с ней – 1, смежным с 1 -2 и тд. С помощью очереди заносим новые вершины (если в буквах) и удаляем те которые уже исследованы.
Трудоемкость – O(n+m)
Применение:
1. Проверка связности графа
2. Распознавание деревьев (дерево – связный граф без циклов)
Утверждение. В графе нет циклов тогда и только тогда, когда в ходе выполнения алгоритма поиска в ширину каждая вершина исследуется на предмет необходимости присвоения ей метки ровно один раз.
Множество вершин графа называется независимым,
если все вершины из этого множества попарно несмежны.
Граф называется двудольным, если множество его
вершин можно разбить на два независимых множества
(доли)
Теорема. Граф является двудольным если и только
если он не содержит циклов нечетной длины
11.Поиск в глубину
1.Выбираем вершину v0. Помечаем ее как текущую. Полагаем D(v0) = 1, k = 1.
i.Пусть x – текущая вершина.
i.1.Если существует непомеченное ребро xy, то а) если y уже имеет номер, то помечаем ребро xy как обратное и продолжаем поиск непомеченного ребра, инцидентного x б) если y не имеет номера, то k++, D(y) = k, переходим в y.
i.2. Если непомеченного ребра xy не существует, то возвращаемся в вершину, из которой x получила свою метку.
k:=1, v:=v0, D(v):=k; push(Q,v), D(v):=-1 "uÎV(G)\{v}
while (Q¹Æ)
{
с = false;
v:=top(Q);
for (uÎN(v))
if (D(u)=-1)
uv – прямое; k++; D(v)=k; push(Q,u);
c = true; break;
else
uv – обратное
if (!c)
pop(Q);
}
Утверждение 1. Прямые ребра образуют корневое остовное дерево с корнем в начальной вершине.
Утверждение 2. Обратное ребро направлено от вершины с большей меткой к вершине с меньшей меткой.
Применение поиска в глубину:
Проверка графа на связность, на двусвязность.
Граф называется двусвязным, если между любыми двумя его вершинами существуют два непересекающихся пути . Двусвязная компонента графа (или блок) – максимальный двусвязный подграф графа.
Трудоемкость - O(n+m)
Утв. Пусть V не явл-ся корнем. Тогда V точка сочленения для некоторого ее сына s не существует ребра (x,y) что х – потомок s или =s, а y – предок V.
12.Жадные алгоритмы и матроиды
E – конечное множество, w: E ® R+
Для XÍ E w(X) = , IÍ B(E) , w(X) ® min (max) , XÎ I
Жадный алгоритм
1.Выбираем элемент x1 максимального веса такой, что {x1}Î I.
2.Выбираем элемент x2Î E\{x1} максимального веса такой, что {x1,x2} Î I
i.Выбираем элемент xi Î E\{x1,…,xi-1} максимального веса такой, что
{x1,x2,…,xi-1,xi} Î I
Матроид – это пара (X,B), где X – конечное множество, а B – непустое множество его подмножеств (элементы B - базы), удовлетворяющая следующим условиям:
1.Никакая база не содержится в другой базе (аксиома максимальности);
2.Если B1 и B2 – базы, то для любого элемента bÎ B1 элемент сÎ B2 такой, что B1\{b}È{c} – база.
Матроид – это пара (X,I), где X – конечное множество, а I – непустое множество его подмножеств (элементы I - независимые множества), удовлетворяющая следующим условиям:
1.Для любого I1Î I и I2Í I1 I2 Î I
2.Если I1 и I2 – независимые множества и |I1| < |I2|, то элемент сÎ I2\I1 такой, что I1È{c} Î I
Пара (X,I), для которой выполняется аксиома 1) – система независимости
Примеры матроидов
1/(X,{X})
2.X – конечное множество векторов некотороговекторного пространства, B – максимальные линейно независимые системы векторов из X (базисы X).
3.X – множество ребер некоторого графа G,B – подмножества ребер, составляющих остовные деревья G.
Теорема. Жадный алгоритм, примененный к системе независимости (E,I), всегда находит оптимальное решение тогда и только тогда, когда (E,I) – матроид.