Изменения

Перейти к: навигация, поиск

Участник:Masha

709 байт добавлено, 18:44, 6 января 2021
Алгоритм декодирования кодa Прюфера
== Алгоритм декодирования кодa Прюфера ==
Пусть есть массив В массиве вершин исходного дерева <tex>P = V</tex> найдём вершину <tex>v_{p_1, ..., p_{n - 2}min}</tex> - код с минимальным номером, не содержащуюся в массиве с кодом Прюфера какого-то дерева и массив вершин дерева <tex>VP</tex>, т.е. такую, что она является листом или концом уже добавленного в граф ребра, т.е. Для получения дерева она стала листом в процессе построения кода Прюфера (по коду Прюфера необходимо выполнять следующие действия, пока массив первому пункту построения). Вершина <tex>Pp_1</tex> не станет пустым. В массиве была добавлена в код Прюфера как инцидентная листу с минимальным номером (по второму пункту построения), поэтому в исходном дереве существует ребро {<tex>Vp_1</tex> найти вершину , <tex>v_{min}</tex> с минимальным номером}, не содержащуюся добавим его в массиве список ребер. Удалим первый элемент из массива <tex>PР</tex>. Добавить ребро , а вершину <tex>v_{min}</tex>p_1- из массива <tex>V</tex>т.к. она больше не может являться листом (по третьему пункту построения). Будем выполнять вышеуказанные действия, пока массив <tex>v_{min}P</tex>} в дерево, удалить найденные вершины из соответствующих массивовне станет пустым. В конце работы алгоритма в массиве <tex>V</tex> останется останутся две вершины, составляющих составляющие последнее ребро дерева(это следует из построения).
=== Реализация ===
# P - код Прюфера # V - вершины
'''function''' buildTree(P, V):
'''while'' '''not'' P.empty():
G.push({u, v})
P.erase(0)
V.erase(indexOf(xv))
G.push({v[0], v[1]})
'''return''' G
49
правок

Навигация