Results 1 
1 of
1
Developing new locality results for the Prüfer Code using a remarkable lineartime decoding algorithm
"... The Prüfer Code is a bijection between the n n−2 trees on the vertex set [1, n] and the n n−2 strings in the set [1, n] n−2 (known as Prüfer strings of order n). Efficient lineartime algorithms for decoding (i.e., converting string to tree) and encoding (i.e., converting tree to string) are wellkn ..."
Abstract

Cited by 1 (0 self)
 Add to MetaCart
The Prüfer Code is a bijection between the n n−2 trees on the vertex set [1, n] and the n n−2 strings in the set [1, n] n−2 (known as Prüfer strings of order n). Efficient lineartime algorithms for decoding (i.e., converting string to tree) and encoding (i.e., converting tree to string) are wellknown. In this paper, we examine an improved decoding algorithm (due to Cho et al.) that scans the elements of the Prüfer string in reverse order, rather than in the usual forward direction. We show that the algorithm runs in linear time without requiring additional data strutures or sorting routines, and is an ‘online ’ algorithm — every time a new string element is read, the algorithm can correctly output an additional tree edge without any knowledge of the future composition of the string. This new decoding algorithm allows us to derive results concerning the ‘locality’ properties of the Prüfer Code (i.e., the effect of making small changes to a Prüfer string on the structure of the corresponding tree). First, we show that mutating the µth element of a Prüfer string (of any order) causes at most µ + 1 edgechanges in