Wedderburn–Etherington number
The Wedderburn–Etherington numbers are an integer sequence named for Ivor Malcolm Haddon Etherington[1][2] and Joseph Wedderburn[3] that can be used to count certain kinds of binary trees. The first few numbers in the sequence are
- 0, 1, 1, 1, 2, 3, 6, 11, 23, 46, 98, 207, 451, 983, 2179, 4850, 10905, 24631, 56011, ...[4]
Contents
Combinatorial interpretation
These numbers can be used to solve several problems in combinatorial enumeration. The nth number in the sequence (starting with the number 0 for n = 0) counts
- The number of unordered rooted trees with n leaves in which all nodes including the root have either zero or exactly two children.[4] These trees have been called Otter trees,[5] after the work of Richard Otter on their combinatorial enumeration.[6] They can also be interpreted as unlabeled and unranked dendrograms with the given number of leaves.[7]
- The number of unordered rooted trees with n nodes in which the root has degree zero or one and all other nodes have at most two children.[4] Trees in which the root has at most one child are called planted trees, and the additional condition that the other nodes have at most two children defines the weakly binary trees. In chemical graph theory, these trees can be interpreted as isomers of polyenes with a designated leaf atom chosen as the root.[8]
- The number of different ways of organizing a single-elimination tournament for n players (with the player names left blank, prior to seeding players into the tournament).[9] The pairings of such a tournament may be described by an Otter tree.
- The number of different results that could be generated by different ways of grouping the expression
for a binary multiplication operation that is assumed to be commutative but neither associative nor idempotent.[4] For instance
can be grouped into binary multiplications in three ways, as
,
, or
. This was the interpretation originally considered by both Etherington[1][2] and Wedderburn.[3] An Otter tree can be interpreted as a grouped expression in which each leaf node corresponds to one of the copies of
and each non-leaf node corresponds to a multiplication operation. In the other direction, the set of all Otter trees, with a binary multiplication operation that combines two trees by making them the two subtrees of a new root node, can be interpreted as the free commutative magma on one generator
(the tree with one node). In this algebraic structure, each grouping of
has as its value one of the n-leaf Otter trees.[10]
Formula
The Wedderburn–Etherington numbers may be calculated using the recurrence relation
beginning with the base case .[4]
In terms of the interpretation of these numbers as counting rooted binary trees with n leaves, the summation in the recurrence counts the different ways of partitioning these leaves into two subsets, and of forming a subtree having each subset as its leaves. The formula for even values of n is slightly more complicated than the formula for odd values in order to avoid double counting trees with the same number of leaves in both subtrees.[7]
Growth rate
The Wedderburn–Etherington numbers grow asymptotically as
where B is the generating function of the numbers and ρ is its radius of convergence, approximately 0.4027 (sequence A240943 in OEIS), and where the constant given by the part of the expression in the square root is approximately 0.3188 (sequence A245651 in OEIS).[11]
Applications
Young & Yung (2003) use the Wedderburn–Etherington numbers as part of a design for an encryption system containing a hidden backdoor. When an input to be encrypted by their system can be sufficiently compressed by Huffman coding, it is replaced by the compressed form together with additional information that leaks key data to the attacker. In this system, the shape of the Huffman coding tree is described as an Otter tree and encoded as a binary number in the interval from 0 to the Wedderburn–Etherington number for the number of symbols in the code. In this way, the encoding uses a very small number of bits, the base-2 logarithm of the Wedderburn–Etherington number.[12]
Farzan (Munro) describe a similar encoding technique for rooted unordered binary trees, based on partitioning the trees into small subtrees and encoding each subtree as a number bounded by the Wedderburn–Etherington number for its size. Their scheme allows these trees to be encoded in a number of bits that is close to the information-theoretic lower bound (the base-2 logarithm of the Wedderburn–Etherington number) while still allowing constant-time navigation operations within the tree.[13]
Iserles & Nørsett (1999) use unordered binary trees, and the fact that the Wedderburn–Etherington numbers are significantly smaller than the numbers that count ordered binary trees, to significantly reduce the number of terms in a series representation of the solution to certain differential equations.[14]
See also
References
- ↑ 1.0 1.1 Lua error in package.lua at line 80: module 'strict' not found..
- ↑ 2.0 2.1 Lua error in package.lua at line 80: module 'strict' not found..
- ↑ 3.0 3.1 Lua error in package.lua at line 80: module 'strict' not found..
- ↑ 4.0 4.1 4.2 4.3 4.4 "Sloane's A001190 ", The On-Line Encyclopedia of Integer Sequences. OEIS Foundation..
- ↑ Lua error in package.lua at line 80: module 'strict' not found..
- ↑ Lua error in package.lua at line 80: module 'strict' not found..
- ↑ 7.0 7.1 Lua error in package.lua at line 80: module 'strict' not found..
- ↑ Lua error in package.lua at line 80: module 'strict' not found..
- ↑ Lua error in package.lua at line 80: module 'strict' not found..
- ↑ This equivalence between trees and elements of the free commutative magma on one generator is stated to be "well known and easy to see" by Lua error in package.lua at line 80: module 'strict' not found..
- ↑ Lua error in package.lua at line 80: module 'strict' not found..
- ↑ Lua error in package.lua at line 80: module 'strict' not found..
- ↑ Lua error in package.lua at line 80: module 'strict' not found..
- ↑ Lua error in package.lua at line 80: module 'strict' not found..
Additional reading
- Lua error in package.lua at line 80: module 'strict' not found..