0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめに

前回は、機械としての量子コンピュータについて、物理方式、制御、測定、誤り訂正あたりをざっくり整理しました。

今回は第3回、量子回路を見ていきます。

量子コンピュータを勉強していると、|0⟩HCNOT、テンソル積、ユニタリ行列みたいな記号が出てきます。 数学的な新しい概念で、迷子になりがちですが、ここでわからなくなるのは、「情報はどこに載っているのか」です。

1 qubit や 2 qubit くらいなら、|0⟩, |1⟩, |00⟩, |01⟩, |10⟩, |11⟩ と手で並べられるので、なんとなくわかった気になれます。でも n qubit と言われた瞬間に、ベクトル要素は「n 個なのか、2n個なのか、2^n 個なのか」等で一気に迷子になります。

特に厄介なのは、qubit の数とビット列の桁数、状態ベクトルの要素数が一致しないことです。ここがズレていることに気づけないまま読むと、以降の説明がずっと噛み合わなくなります。自分はここで何度も混乱しました。この記事を書きながらも混乱してます。。。

古典ビットなら、情報は 01 という値そのものに載っています。一方、量子回路では、|0⟩|1⟩ のような基本パターンそれぞれに対応する確率振幅に情報が載ります。状態はベクトルで表し、ゲートはそのベクトルを変える行列として表します。もう意味わかんないですよね。。。

この記事では、特に「なぜ n qubit の状態が長さ 2^n のベクトルになるのか」、「ビット列、ベクトル、行列がどうつながっているのか」を中心に整理します。

qubit.png

量子回路は状態、ゲート、測定で見る

量子回路をものすごくざっくり書くと、次の流れです。

初期状態を用意する → 量子ゲートで状態を変える → 測定して古典ビットとして読む。

量子回路では、qubit の状態をベクトルとして表し、ゲートを行列として表し、測定で確率的に結果を取り出します。まずは「状態 = ベクトル」「ゲート = 行列」「測定 = 確率的な読み出し」と分けて見ると理解しやすいです。

1 qubit は長さ2のベクトル

1 qubit の状態を表すときは、まず |0⟩|1⟩ という2つの基本パターンを用意します。これを基底状態と呼びます。基底状態は、状態を表すための座標軸みたいなものです。平面上の点を x 軸方向と y 軸方向の成分で表すように、1 qubit の状態を |0⟩ 方向と |1⟩ 方向の成分で表します。

ベクトルで書くとこうです。

|0⟩ = [1, 0]
|1⟩ = [0, 1]

一般の1 qubit 状態は、次のように書けます。

α|0⟩ + β|1⟩

αβ は確率振幅です。測定して 0 が出る確率は |α|²1 が出る確率は |β|² です。つまり、1 qubit の状態は「|0⟩|1⟩ に対応する振幅を1つずつ持つ」と見られます。

n qubit はなぜ長さ 2^n のベクトルなのか

2 qubit では、それぞれの qubit の基底状態の組み合わせを考えます。

|0⟩⊗|0⟩ = |00⟩
|0⟩⊗|1⟩ = |01⟩
|1⟩⊗|0⟩ = |10⟩
|1⟩⊗|1⟩ = |11⟩

つまり、各 qubit の基底状態の組み合わせを作っています。ここで出てくる がテンソル積です。数学的な新しい概念で混乱しがちですが、組み合わせを演算子にしたイメージです。余計混乱させちゃってるかもですが。。。2 qubit なら、各 qubit に 0 / 1 の2通りがあるので、基底状態は 2 × 2 = 4 個です。n qubit では、

2 × 2 × ... × 2 = 2^n

なので、基底状態は 2^n 個あります。nでも2n でもありません。n 個の qubit それぞれに2成分あるから 2n、と並べたくなりますが、量子状態は qubit ごとの成分を単純に連結するのではなく、基底状態の組み合わせ全体それぞれに振幅を持ちます。

任意の n qubit 状態は、この 2^n 個の基底状態の重ね合わせとして表されます。
各基底状態 |x⟩ に確率振幅 α_x が1つずつ必要なので、状態ベクトルの長さは 2^n になります。

整理すると、こうです。

見ているもの
qubit の数 n
量子回路図の線の本数 n
各 qubit の基底状態数 2
全体の基底状態数 2^n
状態ベクトルの要素数 2^n

回路図の線は n 本なのに、状態ベクトルは 2^n 要素です。この「見た目の本数」と「内部で持っている振幅の数」が一致しないところが、かなり混乱ポイントだと思います。

ここで注意したいのは、一般の n qubit 状態は「各 qubit の状態をただ並べたもの」とは限らないことです。

たとえば次の状態は、2 qubit の状態ですが、1つ目の qubit の状態と2つ目の qubit の状態に分けて書けません。

(|00⟩ + |11⟩) / √2

これがもつれ状態です。テンソル積は、複数 qubit の基底状態の組み合わせを作るためにも、その上の重ね合わせを扱うためにも使われます。

ゲートは状態ベクトルを変える行列

量子ゲートは、状態ベクトルに作用する行列です。1 qubit の状態ベクトルは長さ2なので、1 qubit ゲートは基本的に 2×2 行列です。2 qubit 全体に作用するゲートは、状態ベクトルが長さ4なので 4×4 行列になります。各種ゲートは、まじめに本を読んでもらうのがよいとおもいますが、サイズがどうなってるかをおさえておくのが重要かと思います。

ゲート 対象 状態ベクトル長 行列サイズ
X 1 qubit 2 2×2
H 1 qubit 2 2×2
CNOT 2 qubit 4 4×4
n qubit 全体の操作 n qubit 2^n 2^n × 2^n

個々のゲートの行列や計算は、ここでは深入りしません。同じことをもう一度言いますが、n quibitとそれぞれのサイズの関係を抑えて、学ぶことが重要かと思います。

測定は「状態を読む」けれど、全部は読めない

測定すると、量子状態は古典ビットとして読み出されます。たとえば次の状態を測定すると、01 がそれぞれ 50% の確率で出ます。

(|0⟩ + |1⟩) / √2

ここで大事なのは、測定は単なるログ出力ではないということです。測定した瞬間、重ね合わせ状態から古典的な結果に変わります。なので量子アルゴリズムでは、測定前に欲しい答えの確率が高くなるように状態を作ります。ここが「全パターンを並列に試して全部読む」ではないポイントです。

回路とアルゴリズムは同じではない

量子回路を少し書けるようになると、それだけで量子コンピュータ、量子アルゴリズムを理解した気になりがちですが、量子回路はあくまで表現方法です。H、CNOT、測定がわかることと、Shor や Grover の量子アルゴリズムが何をしているかは別の話です。道のりが長いですよね。。。

古典コンピュータでも、AND、OR、NOT、XOR のようなロジック回路や、加算器の作り方がわかることと、ソート、探索、暗号、機械学習のアルゴリズムがわかることは別です。ロジック回路は計算を実現する部品や表現方法であって、「どんな問題をどう解くか」はその上のレイヤーにあります。

Qiskit で書くと、ベル状態(マックスもつれ状態)を作る回路は qc.h(0)qc.cx(0, 1)qc.measure(...) くらいで書けます。ただ、それはあくまで回路の記述です。量子アルゴリズムでは、問題の構造をどう振幅や位相に埋め込み、どう干渉させて、欲しい答えの確率を上げるかが重要になります。

(ただ悩ましいことに、変分法と呼ばれるようなアルゴリズムでは、パラメータ付き回路を古典最適化で調整する違うアプローチをするタイプもあるようです。)

ここらの量子アルゴリズムについては、うまく説明できるかあやしいですが、次回のお楽しみで。

おわりに

今回は、量子回路を「状態・ゲート・測定」に分けて整理しました。

次のように見ると迷子になりにくいと思います。

  • 状態はベクトル
  • ゲートは状態を変える行列
  • 測定は確率的な読み出し
  • n qubit の基底状態は 2^n 個ある
  • 各基底状態に振幅が1つずつあるので、状態ベクトルは長さ 2^n になる
  • 振幅の符号や位相が干渉に効く
  • 一般の n qubit 状態は、各 qubit の状態を並べただけとは限らない
  • 回路がわかることとアルゴリズムがわかることは別

量子回路は、物理とアルゴリズムの間にある重要なレイヤーです。「状態をどう表し、ゲートでどう動かし、測定でどう読むか」を押さえると、量子コンピュータの話が立体的に見えてきます。

次は、量子アルゴリズム編として、Shor や Grover は何をしているのか、何に効いて何に効かないのかを整理する予定です。

毎回言い訳してみたいですみませんが、間違いや違和感があれば教えてもらえるとうれしいです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?