
- •Алгоритмическая сложность. Понятие алгоритма. Формы записи. Асимптотический анализ.
- •Линейные структуры данных. Списки. Динамический массив.
- •Линейные структуры данных. Списки. Связный и двусвязный списки.
- •Линейные структуры данных. Очереди. Кольцевые очереди. Стеки. Деки. Алгоритм сортировочной станции.
- •Алгоритм[править | править код]
- •Деревья. Дерево поиска и бинарное дерево поиска. Основные понятия.
- •Сбалансированные деревья. Авл-деревья. Алгоритм добавления нового узла.
- •Сбалансированные деревья. Авл-деревья. Алгоритм удаления существующего узла.
- •21. Сортировка вставками (insertion)
- •25. Сортировка с использованием деревьев. Пирамидальная сортировка (heap-sort).
- •26. Поразрядные, блочные сортировки и сортировка подсчётом.
- •29. Графы. Построение минимального остовного дерева. Алгоритм Прима.
- •28. Графы. Построение минимального остовного дерева. Алгоритм Краскала.
29. Графы. Построение минимального остовного дерева. Алгоритм Прима.
Граф – это совокупность двух множеств – множества вершин и множества их парных связей - ребер.
Остовное дерево графа – это ациклический связный подграф данного графа, содержащий все его вершины.
Минимальное – имеющее минимальный возможный вес, где под весом понимается сумма весов всех входящих в него ребер.
Алгоритм:
Искомый минимальный остов строится постепенно, мы добавляем ребра по одному.
Произвольно выбирается вершина, потом выбирается ребро минимального веса, исходящее из этой вершины, и добавляется в остов. Когда остов имеет две вершины, ищется и добавляется ребро минимального веса, имеющее конец в одной из двух вершин, а другой – нет, во всех остальных, кроме этих двух (чтобы не образовалось циклов).
Эти действия повторяются, пока остов не будет содержать все вершины (n-1 ребер).
28. Графы. Построение минимального остовного дерева. Алгоритм Краскала.
Граф – это совокупность двух множеств – множества вершин и множества их парных связей - ребер.
Остовное дерево графа – это ациклический связный подграф данного графа, содержащий все его вершины.
Минимальное – имеющее минимальный возможный вес, где под весом понимается сумма весов всех входящих в него ребер.
Перед началом работы алгоритма все ребра графа сортируются в порядке неубывания.
Изначально алгоритм помещает каждую вершину в своё дерево, а затем объединяет эти деревья, объединяя неким ребром два разных дерева.
Процесс объединения выглядит так: мы проходим по списку отсортированных ребер, если у текущего ребра его концы принадлежат разным поддеревьям, то эти поддеревья объединяются, а ребро добавляется к ответу. По окончании перебора всех ребер, все вершины будут принадлежать одному поддереву, которое и будет являться минимальным остовным деревом.
Для простой реализации можно использовать список, где для каждой вершины хранится номер дерева, к которому она принадлежит.
Для улучшенной реализации используется система непересекающихся множеств.