|
Алгоритм ПримаАлгоритм Прима, алгоритм построения минимального остовного дерева взвешенного связного неориентированного графа. Алгоритм впервые был открыт в 1930 году чешским математиком Войцехом Ярником, позже переоткрыт Робертом Примом в 1957 году, и, независимо от них, Э. Дейкстрой в 1959 году. Построение начинается с дерева, включающего в себя одну (произвольную) вершину. В течение работы алгоритма дерево разрастается, пока не охватит все вершины исходного графа. На каждом шаге алгоритма к текущему дереву присоединяется самое лёгкое из рёбер, соединяющих вершину из построенного дерева, и вершину не из дерева. Вход:
Обозначения:
{} Для каждой вершины
Пока Q не пуста Для каждой вершины u смежной с v Если и w(v,u) < d[u]
Асимптотика алгоритма зависит от способа хранения графа и способа хранения вершин, не входящих в дерево. Если приоритетная очередь Q реализована как обычный массив d, тоExtract.Min(Q) выполняется за O(n), а стоимость операции составляет O(1). Если Q представляет собой бинарную пирамиду, то стоимость Extract.Min(Q) снижается доO(log n), а стоимость возрастает до O(log n). При использовании фибоначчиевых пирамид операция Extract.Min(Q) выполняется за O(log n), а за O(1).
|
Loading
|