- Randomly choose distinct .small-font[$x_i\in X$ with $i\in\\{1,...,k\\}$]
- .small-font[$K:=\\{x_1,...,x_k\\}$]
- if(.small-font[$\exists x_a,x_b\in K:x_a\neq x_b\wedge F(x_a)=F(x_b)$])
then return collision .small-font[$(x_a,x_b)$]
- Build oracle .small-font[$H:X-K\rightarrow \\{true, false\\}$]
with .small-font[$H(x)=true$] if .small-font[$\exists x_a\in K:F(x)=F(x_a)$], otherwise .small-font[$H(x)=false$]
- .small-font[$x_c:=$] Grover's Search over .small-font[$X-K$] with oracle .small-font[$H$]
- If .small-font[$\exists x_a\in K:F(x_c)=F(x_a)$] then return collision .small-font[$(x_a,x_c)$] else no collision!
- .darkblue[Runtime] .small-font[$O\left(k+\sqrt{\frac{N-k}{k}}\cdot H'\right)$],
.darkblue[for] .small-font.darkblue[$k=\sqrt[3]{N}:O\left(\sqrt[3]{N}\cdot H'\right)$] with .small-font[$H'$] runtime of .small-font[$H$] .darkblue[and space .small-font[$\Theta\left(\sqrt[3]{N}\right)$]]
|


|