Wilkinson power divider: Difference between revisions

From formulasearchengine
Jump to navigation Jump to search
en>Swen
m DOI
→Theory: minor format change
 
Line 1: Line 1:
In [[combinatorics|combinatorial]] [[mathematics]], the '''Prüfer sequence''' (also '''Prüfer code''' or '''Prüfer numbers''') of a [[labeled tree]] is a unique [[sequence]] associated with the tree.  The sequence for a tree on ''n'' vertices has length ''n''&nbsp;&minus;&nbsp;2, and can be generated by a simple iterative algorithm.  Prüfer sequences were first used by [[Heinz Prüfer]] to prove [[Cayley's formula]] in 1918.<ref>{{cite journal | author=Prüfer, H. | title=Neuer Beweis eines Satzes über Permutationen | journal=Arch. Math. Phys. | year=1918 | volume=27 | pages=742–744}}</ref>
I'm Ina and I live in a seaside city in northern Germany, Templin. I'm 37 and I'm will soon finish my study at Environmental Management.<br><br>My web-site; FIFA coin generator ([http://www.tsztad.com/plus/guestbook.php click the following page])
 
==Algorithm to convert a  tree into a Prüfer sequence==
One can generate a labeled tree's Prüfer sequence by iteratively removing vertices from the tree until only two vertices remain.  Specifically, consider a labeled tree ''T'' with vertices {1, 2, ..., ''n''}.  At step ''i'', remove the leaf with the smallest label and set the ''i''th element of the Prüfer sequence to be the label of this leaf's neighbour.
 
The Prüfer sequence of a labeled tree is unique and has length ''n''&nbsp;&minus;&nbsp;2.
 
===Example===
[[File:Tree graph.svg|right|frame|A labeled tree with Prüfer sequence {4,4,4,5}.]]
Consider the above algorithm run on the tree shown to the right.  Initially, vertex 1 is the leaf with the smallest label, so it is removed first and 4 is put in the Prüfer sequence.  Vertices 2 and 3 are removed next, so 4 is added twice more.  Vertex 4 is now a leaf and has the smallest label, so it is removed and we append 5 to the sequence.  We are left with only two vertices, so we stop.  The tree's sequence is {4,4,4,5}.
 
==Algorithm to convert a Prüfer sequence into a tree==
 
Let <code>{a[1], a[2], ..., a[n]}</code> be a Prüfer sequence:
 
The tree will have <code>n+2</code> nodes, numbered from <code>1</code> to <code>n+2</code>.
For each node set its degree to the number of times it appears in the sequence plus 1.
For instance, in pseudo-code:
 
  '''Convert-Prüfer-to-Tree'''(''a'')
  1 ''n'' ← ''length''[''a'']
  2 ''T'' ← a graph with ''n'' + 2 isolated nodes, numbered 1 '''to''' ''n'' + 2
  3 ''degree'' ← an array of integers
  4 '''for''' each node ''i'' in ''T''
  5    '''do''' ''degree''[''i''] ← 1
  6 '''for''' each value ''i'' in ''a''
  7    '''do''' ''degree''[''i''] ← ''degree''[''i''] + 1
 
Next, for each number in the sequence <code>a[i]</code>, find the first (lowest-numbered) node, <code>j</code>, with degree equal to 1, add the edge <code>(j, a[i])</code> to the tree, and decrement the degrees of <code>j</code> and <code>a[i]</code>. In pseudo-code:
 
  8 '''for''' each value ''i'' in ''a''
  9    '''for''' each node ''j'' in ''T''
10          '''if''' ''degree''[''j''] = 1
11            '''then''' Insert ''edge''[''i'', ''j''] into ''T''
12                  ''degree''[''i''] ← ''degree''[''i''] - 1
13                  ''degree''[''j''] ← ''degree''[''j''] - 1
14                  '''break'''
 
At the end of this loop two nodes with degree 1 will remain (call them <code>u</code>, <code>v</code>). Lastly, add the edge <code>(u,v)</code> to the tree.<ref>{{cite journal | author=Jens Gottlieb, Bryant A. Julstrom, Günther R. Raidl, and Franz Rothlauf. |
title=Prüfer numbers:  A poor representation of spanning trees for evolutionary search |
journal=Proceedings of the Genetic and Evolutionary Computation Conference (GECCO-2001) | year=2001 | pages=343–350 |
url=http://www.ads.tuwien.ac.at/publications/bib/pdf/gottlieb-01.pdf
}}
</ref>
 
14 ''u'' ← ''v'' ← 0
15 '''for''' each node ''i'' in ''T''
16    '''if''' ''degree''[''i''] = 1
17        '''then''' '''if''' ''u'' = 0
18            '''then''' ''u'' ← ''i''
19            '''else''' ''v'' ← ''i''
20                  '''break'''
21 Insert ''edge''[''u'', ''v''] into ''T''
22 ''degree''[''u''] ← ''degree''[''u''] - 1
23 ''degree''[''v''] ← ''degree''[''v''] - 1
24 '''return''' ''T''
 
==Cayley's formula==
 
The Prüfer sequence of a labeled tree on ''n'' vertices is a unique sequence of length ''n''&nbsp;&minus;&nbsp;2 on the labels 1 to ''n'' &mdash; this much is clear.  Somewhat less obvious is the fact that for a given sequence ''S'' of length ''n''&ndash;2 on the labels 1 to ''n'', '''there is a ''unique'' labeled tree whose Prüfer sequence is ''S'''''. 
 
The immediate consequence is that Prüfer sequences provide a [[bijection]] between the set of labeled trees on ''n'' vertices and the set of sequences of length ''n''&ndash;2 on the labels 1 to ''n''.  The latter set has size ''n''<sup>''n''&minus;2</sup>, so the existence of this bijection proves [[Cayley's formula]], i.e. that there are
''n''<sup>''n''&minus;2</sup> labeled trees on ''n'' vertices.
 
==Other applications==
* Cayley's formula can be strengthened to prove the following claim:
:The number of spanning trees in a complete graph <math>K_n</math> with degrees <math>d_1, d_2, ..., d_n</math> is equal to the [[multinomial coefficient]]
::<math>\binom{n-2}{d_1-1,\,d_2-1,\,\dots,\,d_n-1}=\frac{(n-2)!}{(d_{1}-1)!(d_{2}-1)!\cdots(d_{n}-1)!}.</math>
:The proof follows by observing that in the Prüfer sequence number <math>i</math> appears exactly <math>(d_{i}-1)</math> times.
 
* Cayley's formula can be generalized:  a labeled tree is in fact a [[spanning tree (mathematics)|spanning tree]] of the labeled [[complete graph]].  By placing restrictions on the enumerated Prüfer sequences, similar methods can give the number of spanning trees of a complete [[bipartite graph]].  If ''G'' is the complete bipartite graph with vertices 1 to ''n''<sub>1</sub> in one partition and vertices ''n''<sub>1</sub>&nbsp;+&nbsp;1 to ''n'' in the other partition, the number of labeled spanning trees of ''G'' is <math>n_{1}^{n_2-1} n_{2}^{n_1-1}</math>, where ''n''<sub>2</sub> = ''n''&nbsp;&minus;&nbsp;''n''<sub>1</sub>.
 
* Generating uniformly distributed random Prüfer sequences and converting them into the corresponding trees is a straightforward method of generating uniformly distributed random labelled trees.
 
==References==
{{reflist}}
 
==External links==
* [http://mathworld.wolfram.com/PrueferCode.html Prüfer code] – from [[MathWorld]]
 
{{DEFAULTSORT:Prufer Sequence}}
[[Category:Enumerative combinatorics]]
[[Category:Trees (graph theory)]]

Latest revision as of 19:36, 22 April 2014

I'm Ina and I live in a seaside city in northern Germany, Templin. I'm 37 and I'm will soon finish my study at Environmental Management.

My web-site; FIFA coin generator (click the following page)