$$ \def\bra#1{\mathinner{\left\langle{#1}\right|}} \def\ket#1{\mathinner{\left|{#1}\right\rangle}} \def\braket#1#2{\mathinner{\left\langle{#1}\middle|#2\right\rangle}} $$

◇◇Microsoft Q# Coding Contest - Summer 2018 A1- Generate superposition of all basis states◇◇


☆問題URL

https://codeforces.com/contest/1002/problem/A1

☆問題の概要

$N$桁の量子状態$\ket{0}^{\otimes N}$が与えられる。$2^N$個の基底状態が等確率で重ねあわせられた状態 $$\ket{S}=\frac{1}{\sqrt{2^N}}\left( \ket{0...0}+...+\ket{1...1} \right)$$ を作れ。

☆解法

$N$桁の量子状態$\ket{+...+}$は、すべての基底状態が同じ振幅で重ね合わせられた状態になっています。 \begin{align*} H^{\otimes N}\ket{0...0}&=\ket{+...+}\\ &=\left( \frac{\ket{0}+\ket{1}}{\sqrt{2}} \right)\otimes ...\otimes \left( \frac{\ket{0}+\ket{1}}{\sqrt{2}} \right)\\ &=\frac{1}{\sqrt{2^N}}\left( \ket{0...0}+...+\ket{1...1} \right)\\ &=\ket{S} \end{align*} これで、この問題が解けました。

☆ソースコード

                
namespace Solution {
    open Microsoft.Quantum.Primitive;
    open Microsoft.Quantum.Canon;

    operation Solve (qs : Qubit[]) : ()
    {
        body
        {
            ApplyToEach(H,qs);
        }
    }
}
                
            

戻る