<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://en.formulasearchengine.com/index.php?action=history&amp;feed=atom&amp;title=Sorting_identity</id>
	<title>Sorting identity - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://en.formulasearchengine.com/index.php?action=history&amp;feed=atom&amp;title=Sorting_identity"/>
	<link rel="alternate" type="text/html" href="https://en.formulasearchengine.com/index.php?title=Sorting_identity&amp;action=history"/>
	<updated>2026-05-23T06:39:30Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.0-wmf.28</generator>
	<entry>
		<id>https://en.formulasearchengine.com/index.php?title=Sorting_identity&amp;diff=27857&amp;oldid=prev</id>
		<title>en&gt;Michael Hardy at 03:42, 3 June 2012</title>
		<link rel="alternate" type="text/html" href="https://en.formulasearchengine.com/index.php?title=Sorting_identity&amp;diff=27857&amp;oldid=prev"/>
		<updated>2012-06-03T03:42:22Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[File:Wavelet tree.png|frame|A wavelet tree on the string &amp;quot;abracadabra&amp;quot;. At each node the symbols of the string are projected onto two partitions of the alphabet, and a bitvector denotes to which partition each symbol belongs. Note that only the bitvectors are stored; the strings in the nodes are only for illustratory purposes.]]&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;Wavelet Tree&amp;#039;&amp;#039;&amp;#039; is a [[succinct data structure]] to store strings in compressed space. It generalizes the &amp;lt;math&amp;gt;\mathbf{rank}_q&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;\mathbf{select}_q&amp;lt;/math&amp;gt; operations defined on [[Succinct_data_structure#Succinct_dictionaries|bitvectors]] to arbitrary alphabets. &lt;br /&gt;
&lt;br /&gt;
Originally introduced to represent [[compressed suffix array]]s,&amp;lt;ref name=&amp;quot;GGV03&amp;quot;/&amp;gt; it has found application in several contexts.&amp;lt;ref name=&amp;quot;FGM09&amp;quot;/&amp;gt;&amp;lt;ref name=&amp;quot;Navarro12&amp;quot;/&amp;gt; The tree is defined by recursively partitioning the alphabet into pairs of subsets; the leaves correspond to individual symbols of the alphabet, and at each node a [[Succinct_data_structure#Succinct_dictionaries|bitvector]] stores whether a symbol of the string belongs to one subset or the other. &lt;br /&gt;
&lt;br /&gt;
The name derives from an analogy with the [[wavelet transform]] for signals, which recursively decomposes a signal into low-frequency and high-frequency components.&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
Let &amp;lt;math&amp;gt;\Sigma&amp;lt;/math&amp;gt; be a finite alphabet with &amp;lt;math&amp;gt;\sigma=|\Sigma|&amp;lt;/math&amp;gt;. By using [[Succinct_data_structure#Succinct_dictionaries|succinct dictionaries]] in the nodes, a string &amp;lt;math&amp;gt;s \in \Sigma^*&amp;lt;/math&amp;gt; can be stored in &amp;lt;math&amp;gt;nH_0(s) + o(|s|\log \sigma)&amp;lt;/math&amp;gt;, where &amp;lt;math&amp;gt;H_0(s)&amp;lt;/math&amp;gt; is the order-0 [[Entropy (information theory)|empirical entropy]] of &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
If the tree is balanced, the operations &amp;lt;math&amp;gt;\mathbf{access}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\mathbf{rank}_q&amp;lt;/math&amp;gt;, and &amp;lt;math&amp;gt;\mathbf{select}_q&amp;lt;/math&amp;gt; can be supported in &amp;lt;math&amp;gt;O(\log \sigma)&amp;lt;/math&amp;gt; time.&lt;br /&gt;
&lt;br /&gt;
== Extensions ==&lt;br /&gt;
Several extensions to the basic structure have been presented in the literature. To reduce the height of the tree, multiary nodes can be used instead of binary.&amp;lt;ref name=&amp;quot;FGM09&amp;quot; /&amp;gt; The data structure can be made dynamic, supporting insertions and deletions at arbitrary points of the string; this feature enables the implementation of dynamic [[FM-index]]es.&amp;lt;ref name=&amp;quot;CHLK07&amp;quot;/&amp;gt; This can be further generalized, allowing the update operations to change the underlying alphabet: the Wavelet Trie&amp;lt;ref name=&amp;quot;GO12&amp;quot;/&amp;gt; exploits the [[trie]] structure on an alphabet of strings to enable dynamic tree modifications.&lt;br /&gt;
&lt;br /&gt;
== Further reading ==&lt;br /&gt;
* [http://www.alexbowe.com/wavelet-trees Wavelet Trees]. A blog post describing the construction of a wavelet tree, with examples.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;GGV03&amp;quot;&amp;gt;&lt;br /&gt;
R. Grossi, A. Gupta, and J. S. Vitter, [http://www.di.unipi.it/~grossi/PAPERS/sodaconf03FINAL-LATEST.pdf High-order entropy-compressed text indexes], &amp;#039;&amp;#039;Proceedings of the 14th Annual SIAM/ACM Symposium on Discrete Algorithms (SODA)&amp;#039;&amp;#039;, January 2003, 841-850.&lt;br /&gt;
&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;FGM09&amp;quot;&amp;gt;&lt;br /&gt;
P. Ferragina, R. Giancarlo, G. Manzini, [http://www.ittc.ku.edu/~jsv/Papers/FGM09.wavelettrees.pdf The myriad virtues of Wavelet Trees], &amp;#039;&amp;#039;Information and Computation&amp;#039;&amp;#039;, Volume 207, Issue 8, August 2009, Pages 849-866&lt;br /&gt;
&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;Navarro12&amp;quot;&amp;gt;&lt;br /&gt;
G. Navarro, [http://www.dcc.uchile.cl/~gnavarro/ps/cpm12.pdf Wavelet Trees for All], &amp;#039;&amp;#039;Proceedings of 23rd Annual Symposium on Combinatorial Pattern Matching (CPM)&amp;#039;&amp;#039;, 2012&lt;br /&gt;
&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;CHLK07&amp;quot;&amp;gt;&lt;br /&gt;
H.-L. Chan, W.-K. Hon, T.-W. Lam, and K. Sadakane, Compressed Indexes for&lt;br /&gt;
dynamic text collections, &amp;#039;&amp;#039;ACM Transactions on Algorithms&amp;#039;&amp;#039;, 3(2), 2007&lt;br /&gt;
&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;GO12&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
R. Grossi and G. Ottaviano, [http://arxiv.org/abs/1204.3581 The Wavelet Trie: maintaining an indexed sequence of strings in compressed space], &amp;#039;&amp;#039;In Proceedings of the 31st Symposium on the Principles of Database Systems (PODS)&amp;#039;&amp;#039;, 2012&lt;br /&gt;
&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;/references&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Trees (data structures)]]&lt;br /&gt;
[[Category:Data structures]]&lt;br /&gt;
[[Category:String data structures]]&lt;/div&gt;</summary>
		<author><name>en&gt;Michael Hardy</name></author>
	</entry>
</feed>