Изменения

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

Участник:Masha

151 байт добавлено, 3 июнь
Формула Бержа
== Алгоритм декодирования код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>.}}
  {{Теорема|statement=<tex>def G =\max\limits_{S \in V} (odd(G \setminus S) - |S|)</tex>|proof= Реализация ==<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 = min(x '''1) Если <tex>\max\limits_{S \inV}(odd(G \setminus S) - |S|) = 0 </tex>''' , тогда <tex>\forall \; S \in \; V: P.count\; odd(x) == 0G \setminus S)\leq |S| \; </tex> и выполнен критерий Татта, значит, в графе есть совершенное паросочетание, т.е. его дефицит равен нулю. G.push({u, v}) P.erase(02) Если <tex> \max\limits_{S \in V.erase}(indexOfodd(vG \setminus S)- |S|) = k </tex>, тогда рассмотрим исходный граф <tex>G</tex> и полный граф <tex>K_k</tex> с <tex>k</tex> вершинами и каждую вершину вспомогательного графа соединим с каждой вершиной <tex>G</tex>.push({v[0]Получим новый граф <tex>H \; = \; K_k + G</tex>, докажем, v[1]что для него выполнено условие Татта.}}) '''return''' G
49
правок

Навигация