<?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=Riffle_shuffle_permutation</id>
	<title>Riffle shuffle permutation - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://en.formulasearchengine.com/index.php?action=history&amp;feed=atom&amp;title=Riffle_shuffle_permutation"/>
	<link rel="alternate" type="text/html" href="https://en.formulasearchengine.com/index.php?title=Riffle_shuffle_permutation&amp;action=history"/>
	<updated>2026-06-02T22:56:23Z</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=Riffle_shuffle_permutation&amp;diff=29952&amp;oldid=prev</id>
		<title>en&gt;David Eppstein: boldface merged term</title>
		<link rel="alternate" type="text/html" href="https://en.formulasearchengine.com/index.php?title=Riffle_shuffle_permutation&amp;diff=29952&amp;oldid=prev"/>
		<updated>2013-09-10T23:30:02Z</updated>

		<summary type="html">&lt;p&gt;boldface merged term&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;The &amp;#039;&amp;#039;&amp;#039;BHT algorithm&amp;#039;&amp;#039;&amp;#039; is a [[quantum algorithm]] that solves the [[collision problem]].  In this problem, one is given &amp;#039;&amp;#039;n&amp;#039;&amp;#039; and an &amp;#039;&amp;#039;r&amp;#039;&amp;#039;-to-1 function &amp;lt;math&amp;gt;f:\,\{1,\ldots,n\}\rightarrow\{1,\ldots,n\}&amp;lt;/math&amp;gt; and needs to find two inputs that &amp;#039;&amp;#039;f&amp;#039;&amp;#039; maps to the same output.  The BHT algorithm only makes &amp;lt;math&amp;gt;O(n^{1/3})&amp;lt;/math&amp;gt; queries to &amp;#039;&amp;#039;f&amp;#039;&amp;#039;, which matches the lower bound of &amp;lt;math&amp;gt;\Omega(n^{1/3})&amp;lt;/math&amp;gt; in the [[black box]] model.&amp;lt;ref&amp;gt;&lt;br /&gt;
{{cite journal&lt;br /&gt;
 |last=Ambainis |first=A.&lt;br /&gt;
 |year=2005&lt;br /&gt;
 |title=Polynomial Degree and Lower Bounds in Quantum Complexity: Collision and Element Distinctness with Small Range&lt;br /&gt;
 |journal=[[Theory of Computing]]&lt;br /&gt;
 |volume=1 |issue=1 |pages=37–46&lt;br /&gt;
 |arxiv=&lt;br /&gt;
 |bibcode=&lt;br /&gt;
 |doi=10.4086/toc.2005.v001a003&lt;br /&gt;
}}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;&lt;br /&gt;
{{cite journal&lt;br /&gt;
 |last1=Kutin |first1=S.&lt;br /&gt;
 |year=2005&lt;br /&gt;
 |title=Quantum Lower Bound for the Collision Problem with Small Range&lt;br /&gt;
 |journal=[[Theory of Computing]]&lt;br /&gt;
 |volume=1 |issue=1 |pages=29–36&lt;br /&gt;
 |arxiv=&lt;br /&gt;
 |bibcode=&lt;br /&gt;
 |doi=10.4086/toc.2005.v001a002&lt;br /&gt;
}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The algorithm was discovered by Brassard, Hoyer, and Tapp in 1997.&amp;lt;ref&amp;gt;{{cite arXiv&lt;br /&gt;
| last1 = Brassard&lt;br /&gt;
| first1 = Gilles&lt;br /&gt;
| last2 = Hoyer&lt;br /&gt;
| first2 = Peter&lt;br /&gt;
| last3 = Tapp&lt;br /&gt;
| first3 = Alain&lt;br /&gt;
| eprint = quant-ph/9705002&lt;br /&gt;
| title = Quantum Algorithm for the Collision Problem&lt;br /&gt;
| year = 1997}}&amp;lt;/ref&amp;gt;  It uses [[Grover&amp;#039;s algorithm]], which was discovered in the previous year.&lt;br /&gt;
&lt;br /&gt;
==Algorithm==&lt;br /&gt;
Intuitively, the algorithm combines the square root speedup from the [[birthday paradox]] using (classical) randomness with the square root speedup from Grover&amp;#039;s (quantum) algorithm.&lt;br /&gt;
&lt;br /&gt;
First, &amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;lt;sup&amp;gt;1/3&amp;lt;/sup&amp;gt; inputs to &amp;#039;&amp;#039;f&amp;#039;&amp;#039; are selected at random and &amp;#039;&amp;#039;f&amp;#039;&amp;#039; and is queried at all of them.  If there is a collision among these inputs, then we return the colliding pair of inputs.  Otherwise, all the these inputs map to distinct values by &amp;#039;&amp;#039;f&amp;#039;&amp;#039;.  Then Grover&amp;#039;s algorithm is used to find a new input to &amp;#039;&amp;#039;f&amp;#039;&amp;#039; that collides.  Since there are only &amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;lt;sup&amp;gt;2/3&amp;lt;/sup&amp;gt; such inputs to &amp;#039;&amp;#039;f&amp;#039;&amp;#039;, Grover&amp;#039;s algorithm can find one (if it exists) by making only &amp;lt;math&amp;gt;O(\sqrt{n^{2/3}}) = O(n^{1/3})&amp;lt;/math&amp;gt; queries to &amp;#039;&amp;#039;f&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
*[[Element distinctness problem]]&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
{{reflist}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Quantum algorithms]]&lt;/div&gt;</summary>
		<author><name>en&gt;David Eppstein</name></author>
	</entry>
</feed>