@yuichirominato 2019.02.14更新 204views

【量子計算】量子コンピュータの計算原理と量子計算


はじめに

MDRは量子コンピュータ(ほぼ)専業で、日々新しい知識や情報が世界中から入ってきます。最近では量子コンピュータベンチャーネットワークも世界中で構築できて、日本では手に入らないような話が先に入ってくるようになってきました。

https://quantumcomputingreport.com/scorecards/software-partners/より作成

量子計算

これまで、僕はあまり量子計算を使ってきませんでした。正直数学が苦手で量子計算を理解していなかった&量子計算を勉強したことがなかったからですが、本日弊社の開発者から教えてもらって急に天から量子計算が降ってきました。早速確認してみましょう。

ブラケット

ブラ・ケットは大事です。ブラベクトルは横一列の状態ベクトルで、ケットベクトルの複素共役となっている。

$$(a_0*,a_1*,a_2*,…a_n*)$$

基本的には並び方は状態ベクトルと似ているけれど、計算しやすいように式変形されている。

ケットベクトル

ケットベクトルは縦一列の状態ベクトルで、計算の基本となる。現在の量子状態が無次元の複素数ベクトルとして表現されている。

$$a_0\\
a_1\\
a_2\\
…\\
a_n$$

ユニタリ変換

上記の状態ベクトルを変化させる。つまり、ゲート操作を行って演算に対応させるにはユニタリ変換を使用します。量子コンピュータの超電導量子ビットは閉じた空間で演算をします。全演算の系全体のエネルギーは保存され、可逆計算と呼ばれる全体の系の状態が保存されているのが大事です。そのため私たちが量子ビットに対して操作できるのはユニタリ変換と呼ばれる回転演算のみです。

回転の演算に対応するユニタリ変換を連続的に行うことで、量子コンピュータの演算は進みます。よく用語がわかってませんが、エルミート行列というのがとても大事ではないでしょうか。対角化できることで、答えを導き出すことができて、固有値も求まるし、可逆計算もできるような気がします。とても大事なトピックのようですがまだよく理解してないのでまたブログで取り上げたいと思います。

ユニタリ変換は量子ゲートに対応します。

X = [[0 1
      1 0]]

上記はXゲートです。Xゲートは0状態を1状態に反転させるNOTゲートです。このユニタリ変換は元あった状態ベクトルのうち、1量子ビットの状態ベクトルに対応する。[1,0]をかけることで、[0,1]を得ます。

[1,0]をケット表記で|0>とします。ブロッホ球では上を向きます。[0,1]をケット表記で|1>とします。Xゲートは|0>状態と|1>状態に対して関係性を持たせます。

  |0> |1>

 [[0   1    |0>
  1   0]]   |1>

当たり前の話だったのですが、行列変換では縦の状態ベクトルに行列の行成分をかけて出力を得ます。ユニタリ行列の|0>と|1>の確率振幅に0,1をかけることで、|0>の確率振幅が|1>の確率振幅に変換され、|1>は|0>に移ります。

状態ベクトルと確率振幅

状態ベクトルは現在の量子状態を表現するベクトルです。複素数で表現されます。状態ベクトルは取りうるあたいが2進数で表現されたビットに対応して上から順番に量子ビットの数だけ用意されます。たとえば1量子ビットでは、0と1が表現されて、

$$\alpha|0> + \beta |1>$$

というのが状態ベクトルですが、初期状態では|0>からスタートするので、

$\alpha = 1, \beta = 0$より、$|0>$だけがのこり、ベクトルの表現として、

[[1
  0]]

となります。2量子ビットでは、

$a|00>+b|01>+c|10>+d|11>$

の4通りの表現があります。同様に3量子ビットでは、$a|000>+b|001>+c|010>+d|011>e|100>+f|101>+g|110>+h|111>$

この状態ベクトルの各成分の前に付いている係数が確率振幅で、確率振幅を二乗することで出現確率を計算できます。

シミュレータの場合にはこの出現確率をうまく設計することで大幅にシミュレーションを高速化することができるでしょう。

計算基底と測定

計算基底と測定は大事ぽいです。量子コンピュータでは3次元でデータを扱います。軸は基本的に私たちが認識できるのはZ軸ですが、XやY軸を利用した計算が内部では進みます。測定に応じて状態はZ軸に射影されますが、せっかくX軸やY軸で行った計算は一様にZ軸に位相に関わらず射影されていしまいます。これでは量子計算の醍醐味が減ってしまう気がします。

Z軸に一様に射影されないように、うまく位相計算や測定と射影を使いこなすことにより複雑な計算ができそうです。

しかし今の技術では任意の計算規定で測定を行うのは厳しそうです。かつ、現在のNISQ時代の量子コンピュータでは任意の計算規定で測定を行うほどゲートの深さを確保できないでしょう。誤り訂正後に期待です。

まとめ

ブラケットベクトルはユニタリ行列と組み合わせて使うに関してとても便利なツールに思えます。測定時にも感覚的に計算が把握できますし、ブロッホ球の回転とユニタリ行列の対応、状態ベクトルとユニタリ行列の対応、などたくさんの解釈があり、物理の世界にしろ、数学の世界にしろ同じ量子計算を見ているけど、捉える人によって頭の中に思い浮かべる演算方式が違うんだなという不思議な感覚を得ました。

2進数表記という計算機科学の大事な部分とユニタリ変換、そして測定、物理と数学と計算機科学をどのように融合して素敵な理論と発展が生まれるのかとても楽しみになりました。

Recommended


Wikiへ移動