はじめに
量子コンピューターは興味はあったものの、全然読んだことがなかったので、まずはとっかかりとして『いちばんやさしい量子コンピューターの教本』を読了。
pythonを使った具体的なプログラミングコードも掲載されていて、わかりやすかった。

量子コンピューターの特徴
量子とは:粒子+波の性質
量子とは、電位や光子など物理学で出てくる様々な小さい単位の物質やエネルギーの総称を指す。量子は粒子の性質だけではなく波の性質も併せ持つという特徴があり、これにより重ね合わせの原理や干渉など特有の現象を持つ。
量子コンピューターはこうした量子の特徴をコンピューター技術に活かしたものである。

量子重ね合わせによる並列計算
従来のコンピューターは「0」か「1」の二進法で動作するが、量子コンピューターは「量子重ね合わせ(Superposition)」の状態を活用し、「0」と「1」を同時に保持したまま(「0と1の重ね合わせ状態」を持つ量子ビット (Qビット)を使う)計算を進める。これにより並列計算が可能となり、従来技術を凌駕する計算能力を発揮する。
N個のQビットが存在すると、理論的にはそれらがもつれ合い、「2のN乗通り」の状態が同時に存在しているように扱うことができる。
例)Qビットが3個の場合
- 通常のコンピュータなら「000」「001」「010」…「111」の8通りを1つずつ計算する。
- 量子コンピュータなら、「すべての状態 (8通り)」が同時に存在して計算が進む。

量子もつれによる計算結果の絞り込み
そして、量子の持つもう一つの特徴「量子もつれ(=片方の状態が確定すると、もう片方も瞬時に確定する)」の活用により、計算結果を絞り込むことができる。
ただし、量子もつれは、複数のQビット間の「関連性」を作る技術であり、状態間の関連付けだけを行うので、そもそも答えを選ぶプロセスではなく、この時点で答えを確定的に1つに絞り込めない。

正解を選ばれやすくする工夫が必要:Groverのアルゴリズム
量子コンピューターでは観測時にはランダムに答えが1つ選ばれるため、間違った結果が出る可能性がある。そのため、量子アルゴリズムでは、「正しい答えが選ばれやすくなるような工夫」を行う必要があり、各社この部分に力を入れている。工夫のアルゴリズムの1つとしてはGroverのアルゴリズムなどがある。
Groverのアルゴリズムは、全体の平均に対して「すべての状態を対称に反転」させるという、振幅増幅反転を繰り返すことで、目的の状態の振幅を他の状態よりも大きくすることで、目的の状態が選ばれる確率を高めている。
量子もつれとGroverアルゴリズムの具体例
- 例えば、3つのQビットを使って「8通りの状態」を作るとする。
- 量子もつれを使えば、「状態Aが0なら、状態Bも0」といった相関関係は作れるが、「A = 5が正解」という情報は、もつれだけでは強調されない。
- そこで、「A = 5の状態が選ばれる確率を増やす」ために振幅増幅が必要になる。
量子力学と量子情報科学
ちなみに量子コンピューターは、量子の性質を計算に活かす「量子情報科学」をもとにしており、量子情報科学は量子力学の一部分。つまり、量子力学そのものを全て理解する必要はなくても量子コンピューターは利用できる。

量子コンピュータを導入するには?
冷却装置
量子コンピューターの実現には冷却装置が不可欠である。QPU(量子プロセッシング・ユニット)を超伝導状態に保つことで量子状態を維持するが、これには極低温が必要。超伝導状態では電気抵抗が0になり、量子ビットに影響を与えるノイズがゼロになるため、正確な量子計算が可能となる。
量子コンピューティングには量子の性質を利用するので個々の電子を取り扱う必要がある。そのため内外の微弱なノイズの影響が問題になる。

一般的なPCからでも量子コンピューターは利用可能
ただ、量子コンピューターを導入するには、上記の冷却装置冷却装置を備えたハードウェアを自社で設置する必要はなくなっている。
量子コンピューターはクラウドで提供されているため、インターネットに接続できる自宅の PC さえあれば量子コンピューターフロントサーバーに接続して量子コンピューターに問題を送れば計算完了後に答えが送り返されてくる。つまり、研究者や開発者は自前のPCで、量子コンピューターのプログラムを書いて、手軽に量子演算を試せるようになっている。
量子ゲートの具体的操作
量子ゲートは量子アルゴリズムの根幹を成す。ブロッホ球を用いて量子ビットの状態を視覚的に捉えることができる。以下に主要な量子ゲートとその操作を示す。

- Xゲート(パウリX): 量子ビットの状態を反転させる。|0⟩→|1⟩、|1⟩→|0⟩
- Hゲート(アダマール): 量子ビットを重ね合わせ状態にする。
- CNOTゲート: 制御量子ビットが1の時にターゲットビットを反転させる。
- Tゲート: 位相をπ/4だけ回転させる。
- トフォリゲート: 2つの制御ビットに基づいてターゲットビットを反転する。



Pythonとblueqatによる量子プログラミング
以下にPythonとblueqatを用いた基本的な量子プログラムを示す。
from blueqat import Circuit
# 量子ビットを初期化
circuit = Circuit(2)
# アダマールゲートで重ね合わせ
circuit.h[0]
# CNOTゲートを適用
circuit.cx[0, 1]
# 実行して状態を確認
result = circuit.m[:].run(shots=1024)
print(result)
このプログラムは量子もつれを利用し、アダマールゲートとCNOTゲートを適用することで量子ビットの重ね合わせをシミュレートしている。結果を複数回実行することで量子的な確率分布が観測される。