Участник:Masha

Материал из Викиконспекты
Версия от 11:44, 29 декабря 2020; 93.185.28.157 (обсуждение) (Алгоритм декодирования кодов Прюфера)
Перейти к: навигация, поиск

Алгоритм декодирования кодa Прюфера

Пусть есть массив [math]P = {p_1, ..., p_{n - 2}}[/math] - код Прюфера какого-то дерева и массив вершин дерева [math]V[/math]. Для получения дерева по коду Прюфера необходимо выполнять следующие действия, пока массив [math]P[/math] не станет пустым. В массиве [math]V[/math] найти вершину [math]v_{min}[/math] с минимальным номером, не содержащуюся в массиве [math]P[/math]. Добавить ребро {[math]p_1[/math], [math]v_{min}[/math]} в дерево, удалить найденные вершины из соответствующих массивов. В конце работы алгоритма в массиве [math]V[/math] останется две вершины, составляющих последнее ребро дерева.

Реализация

function buildTree(P, V):
   while not P.empty():
      u = P[0]
      v = min(x [math]\in[/math] V: P.count(x) == 0)
      G.push({u, v})
      P.erase(0)
      V.erase(indexOf(x))
   G.push({v[0], v[1]})
   return G