Path: blob/main/translations/ja/algorithms/phase-kickback.ipynb
4050 views
位相キックバック
このページでは、制御量子ゲートの振る舞いとして知られている「位相キックバック」を取り上げます。この興味深い量子効果は、Shorの因数分解アルゴリズムやGroverの探索アルゴリズムなど、多くの有名な量子アルゴリズムの構成要素となっています。
固有ベクトル
固有ベクトルと固有値についてはすでによくご存知のはずですが、そうでない場合はここに書かれた入門書を読むとよいでしょう。もしあなたが精通しているなら、固有ベクトル方程式を理解することができるはずです。
ParseError: KaTeX parse error: Undefined control sequence: \class at position 1: \̲c̲l̲a̲s̲s̲{_matrix-A}{A}\…量子コンピューターではもっと簡単です。すべての状態ベクトルの大きさが1なので、固有値も1である必要があります。つまり、 となります。故に、量子ゲート とその固有状態 について、以下のようになります。
ParseError: KaTeX parse error: Undefined control sequence: \class at position 1: \̲c̲l̲a̲s̲s̲{_matrix-U}{U}\…要約: あるゲートが状態ベクトルの全ての振幅を同じだけ回転させる(そして回転させるのみの)場合、その量子状態はそのゲートの固有状態です。
固有ベクトルを見つけてみよう
下のウィジェットを使って、単一量子ビットのゲートが単一量子ビットの状態をどのように変換するかを見てみましょう。どの状態がどのゲートの固有状態であるかわかりますか?
制御ゲートと固有状態
固有状態の概念に慣れたら、これらの回路を別の量子ビットの状態で制御するとどうなるかを考え始めることができます。例えば、Zゲートが作用している状態 は負のグローバル位相 () を与えることが分かっていますが、この操作を制御するとどうなるかを考えてみましょう。
制御Zゲート
|10〉
もし制御量子ビットが であれば、動きは単純で何も起こりません。
|11〉
制御量子ビットが の場合、ゲートはグローバルな位相を与えますが(右図のマイナス記号に注意)、量子ビットの状態は変化しません。
|1+〉
制御Zゲートは制御量子ビットが の時何もせず、 の時に負の位相を与えます。制御量子ビットが重ね合わせ状態にあるとき、そのゲートは制御量子ビットの と の相対位相を変化させます。
制御量子ビットが で標的量子ビットが の時、制御Zゲートは制御量子ビットの状態は変化させますが、標的量子ビットは変化させません。この効果は「位相キックバック」と呼ばれ、固有値が制御量子ビットの状態に戻ってくるからです。
より一般的には、量子ゲート があり、その固有状態が であれば、 が に作用すると、上で見たようにグローバル位相 が与えられる。
ParseError: KaTeX parse error: Undefined control sequence: \class at position 1: \̲c̲l̲a̲s̲s̲{_matrix-U}{U}\…の操作を と の重ね合わせの別の量子ビットで制御すると、制御量子ビットをZ軸周りに角度 だけ回転させる効果がある。すなわち
ParseError: KaTeX parse error: Undefined control sequence: \class at position 1: \̲c̲l̲a̲s̲s̲{_matrix-CU}{CU…上の例では、制御Zゲートの「制御量子ビット」が実際にZ回転していることがわかります。つまり、その量子ビットを見るだけであったはずが、実際には変化してしまっているのです。このため、制御Zゲートは2つの制御として描かれることがよくあります。
CNOTゲート
位相キックバックの効果を別の2量子ビットゲートで見てみましょう。 状態はXゲートの固有値 であるため、次のようになります。
ParseError: KaTeX parse error: Undefined control sequence: \class at position 1: \̲c̲l̲a̲s̲s̲{_matrix-CX}{CX…この場合も位相変化 なので、制御量子ビットはZ軸の周りで反転します。
例
ドイチの問題
先ほど、ある量子ビットの状態に条件付けをすると、制御している量子ビットの状態を実際に変化させることができることを見てきました。これは「量子」効果であり、古典ビットでは起こらない現象です。
量子コンピューターでは、古典的なコンピューターが実行できないようなアルゴリズムを作りたいので、この効果を解決すべき問題として捉え直すことが良い出発点となります。そうすることで、少なくとも量子コンピューターが古典的なコンピューターよりもわずかに優れていることを証明することができるのです。
ドイチの問題は、まさにこれを実現したものです。ドイチの問題は「ブラックボックス」問題です。人工的な問題で、ある関数をビットに適用することは許されていますが、その関数がどのように機能するかを見ることは許されていません。この問題では、異なる入力と出力を試すことによって、ブラックボックスの特性を発見します。
ドイチの問題は次のようなものです。 と の2つのビットに作用する古典的な可逆関数(以下では と略記)が与えられます。この関数はビット をそのままにしておきますが、ビット はそのまま、もしくは反転させる場合があります。 ドイチの問題は が の値によって異なる振る舞いをするのか(これを「分布型」の振る舞いと呼ぶ)、もしくは に関係なく に対して同じ作用をするのか(「定値型」の振る舞い)を判別する問題です。この問題は の適応回数をできるだけ少なくしながら判別を行うことです。
この問題に対する最も優れた古典的アルゴリズムは、 の値を変えて を2回適用し、 の振る舞いが異なるかどうかを調べるものである。
ドイチのアルゴリズム
お気づきかもしれませんが、古典アルゴリズムよりもさらに優れた量子アルゴリズムを作るために、位相キックバックを利用することができます。量子ビット を 状態に、そして量子ビット を 状態とすると、 を条件とした反転は負の相対位相をキックバックし、量子ビット を から に反転させます。そして にHゲートを作用させることで、位相キックバックが起こったかどうかを確認することができます。
より詳しい情報
この問題は非常に特殊な設定であり、ブラックボックス問題は通常は見かけないため、量子力学のスピードアップの例としてはあまり印象的ではありません。その代わり、ドイチの問題では我々にとって励みになる結果を得ることができ、また、いくつかの興味深い効果を調べることができます。このコースの残りの部分では、この単純な実験を拡張して、因数分解を含むより印象的な問題を解いていきます。
定値型ならその関数は何もしないか、量子ビット を反転させます。分布型なら が の時のみ を反転させるか、 が の時のみ を反転させます。 下の画像で4つのシナリオを見ることができます。
定値型関数では、両方とも一番上の量子ビットは変化せず(一番上の量子ビットに対して何もしていないため)、分布型関数では、キックバックの効果で一番上の量子ビットが から に反転します。
練習問題
ドイチ関数を QuantumCircuit で受け取る deutsch() という関数を作り、量子シミュレーター上でドイチのアルゴリズムを使って問題を解きましょう。作成する関数は、ドイチ関数が分布型であれば True を、定値型であれば False を返さなければなりません。
deutsch_problem() 関数を使って QuantumCircuit を作成し、 deutsch() 関数の入力として使うことができます。
まとめ
このページでは、以下を学びました。
固有値と固有ベクトルの概念を再考しました。
位相キックバックの効果を調べ、いくつかの例を取り上げました。
量子コンピューターが古典コンピューターよりも優位であるシナリオとしてドイチの問題を紹介しました。
このページから他のすべての内容を忘れたとしても、覚えておくべき最も重要なことは、以下の位相キックバックの要約です。
リマインダー:位相キックバック
量子ゲート があり、その固有状態が であれば、 が に作用すると、グローバル位相 が与えられる。
ParseError: KaTeX parse error: Undefined control sequence: \class at position 1: \̲c̲l̲a̲s̲s̲{_matrix-U}{U}\…の操作を と の重ね合わせの別の量子ビットで制御すると、制御量子ビットをZ軸周りに角度 だけ回転させる効果がある。すなわち
ParseError: KaTeX parse error: Undefined control sequence: \class at position 1: \̲c̲l̲a̲s̲s̲{_matrix-CU}{CU…