Изменения

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

Участник:Masha

844 байта убрано, 13:03, 3 июня 2021
Нет описания правки
== Алгоритм декодирования кодa Прюфера Формула Бержа ==
В массиве вершин исходного дерева {{Утверждение|statement= <tex>V(n + |S| + odd(G \setminus S)) \; mod \; 2 = 0</tex> найдём вершину , где <tex>v_{min}G</tex> - граф с минимальным номером, не содержащуюся в массиве с кодом Прюфера <tex>Pn</tex>вершинами, т.е. такую, что она является листом или концом уже добавленного в граф ребра, т.е. она стала листом в процессе построения кода Прюфера (по первому пункту построения). Вершина <tex>p_1S \in {V}_{G}</tex> была добавлена в код Прюфера как инцидентная листу с минимальным номером (по второму пункту построения), поэтому в исходном дереве существует ребро {|proof= Удалим из графа <tex>p_1G</tex>, множество <tex>v_{min}S</tex>}, добавим его в список ребер. Удалим первый элемент из массива получим <tex>Рt</tex>компонент связности, а вершину содержащих <tex>v_{min}k_1, k_2 ... k_t</tex> - из массива вершин соответсвенно.<tex>V|S|\; + \; \sum_{i=1}^{k}k_i = n</tex> т.кв сумме это все вершины исходного графа <tex>G</tex>. она больше не может являться листом Возьмем данное равенство по модулю два: <tex>(|S|\; mod\; 2 \; + \; \sum_{i=1}^{k}(по третьему пункту построенияk_i \; mod \; 2)). Будем выполнять вышеуказанные действия, пока массив \; mod \; 2 = n \; mod \; 2</tex>В сумме <tex>P\sum_{i=1}^{k}(k_i \; mod \; 2)</tex> не станет пустым. В конце работы алгоритма в массиве число единиц равно числу нечетных компонент <tex>Vodd(G \setminus S)</tex> останутся две вершины. Таким образом, составляющие последнее ребро дерева <tex> \forall S \in V \; (odd(это следует из построенияG \setminus S) + |S|).\; mod \; 2 = n \; mod \; 2 </tex>}}
=== Реализация === # P - код Прюфера # V - вершины '''function''' buildTree(P, V):{{Теорема '''while'' '''not'' P.empty(): u = P[0] v |statement= min(x '''<tex>def G = \max\limits_{S \inV} (odd(G \setminus S) - |S|)</tex>''' V: P.count(x) |proof== 0) G.push({u, v}) P.erase(0) V.erase(indexOf(v)) G.push({v[0], v[1]}) '''return''' G
49
правок

Навигация