LabHub

ブログ

開発者(かいはつしゃ)のための量子(りょうし)コンピューティング完全ガイド2025:Qiskit、Cirq、量子アルゴリズム、量子優位性(ゆういせい)

한국어English日本語

はじめに:なぜ量子コンピューティングか?

量子コンピューティングは古典(こてん)計算のパラダイムを根本的(こんぽんてき)に変(か)える技術(ぎじゅつ)です。2019年Google Sycamoreが量子優位性を初(はじ)めて実証(じっしょう)し、2024年IBM Condorが1121量子ビットを突破(とっぱ)、2025年現在IBM、Google、Quantinuum、IonQ、PsiQuantumが激(はげ)しく競争(きょうそう)しています。量子計算は万能(ばんのう)ではありませんが、特定(とくてい)問題(もんだい)(素因数分解(そいんすうぶんかい)、特定最適化(さいてきか)、量子シミュレーション)では古典計算で数千年(すうせんねん)かかる計算を数時間(すうじかん)で解(と)く潜在力(せんざいりょく)を持(も)ちます。

本(ほん)ガイドは物理学者(ぶつりがくしゃ)ではなくソフトウェア開発者を対象(たいしょう)とします。線形代数(せんけいだいすう)の基礎(きそ)さえあれば理解(りかい)できるよう直感的(ちょっかんてき)説明(せつめい)とQiskit/Cirqコードを提供(ていきょう)します。

1. 量子計算の重要性(じゅうようせい)

1.1 古典 vs 量子の計算量(けいさんりょう)

問題古典量子高速化(こうそくか)
素因数分解指数(しすう)O(n^3) Shor指数的
非構造(ひこうぞう)探索(たんさく)O(N)O(sqrt(N)) Grover二次的(にじてき)
量子シミュレーション指数O(poly(n))指数的
線形方程式(ほうていしき)O(n^3)HHL O(log n)条件付(じょうけんつ)き

1.2 量子計算が役立(やくだ)つ分野(ぶんや)

1.3 量子計算が役立たない分野

2. 古典ビット vs 量子ビット

2.1 違(ちが)い

古典ビット:0または1。量子ビット:ψ=α0+β1|\psi\rangle = \alpha|0\rangle + \beta|1\rangleの重ね合わせ状態、α2+β2=1|\alpha|^2 + |\beta|^2 = 1

測定時(そくていじ)にα2|\alpha|^2の確率(かくりつ)で0、β2|\beta|^2で1を得ます。

2.2 n個の量子ビット

300量子ビットの状態ベクトルは宇宙(うちゅう)の原子(げんし)数(すう)より多(おお)い23002^{300}複素数を持ちます。

3. 量子力学(りょうしりきがく)基礎

3.1 重ね合わせ(Superposition)

+=12(0+1)|+\rangle = \frac{1}{\sqrt{2}}(|0\rangle + |1\rangle)

3.2 量子もつれ(Entanglement)

Φ+=12(00+11)|\Phi^+\rangle = \frac{1}{\sqrt{2}}(|00\rangle + |11\rangle)

離(はな)れた量子ビットでも完全(かんぜん)な相関を保ちます。

3.3 測定

測定すると状態は崩壊(ほうかい)します。量子アルゴリズム設計(せっけい)の鍵(かぎ)は、測定結果が有意義(ゆういぎ)な情報を含(ふく)むよう干渉(かんしょう)パターンを設計することです。

3.4 複製(ふくせい)不可(ふか)定理(ていり)

任意(にんい)の未知(みち)の量子状態を完全にコピーすることは不可能(ふかのう)です。

4. Bloch球(きゅう)視覚化(しかくか)

単一量子ビットの純粋(じゅんすい)状態は3次元球面(きゅうめん)の点(てん)で表現可能。

ψ=cos(θ/2)0+eiϕsin(θ/2)1|\psi\rangle = \cos(\theta/2)|0\rangle + e^{i\phi}\sin(\theta/2)|1\rangle

5. 量子ゲート

5.1 単一量子ビットゲート

Pauli:X(NOT)、Y、Z

Hadamard (H):重ね合わせ生成(せいせい)

H0=+H|0\rangle = |+\rangle

位相(いそう)ゲート:S、T

回転(かいてん)ゲート:Rx、Ry、Rz

5.2 多(た)量子ビットゲート

CNOT:制御(せいぎょ)が1ならターゲット反転(はんてん)

Toffoli:3量子ビット、古典汎用(はんよう)計算可能

SWAPControlled-Z

5.3 汎用ゲートセット

{H, T, CNOT}で任意の量子演算(えんざん)を近似(きんじ)可能です。

6. 量子回路と測定

6.1 回路図(ず)

左(ひだり)から右(みぎ)へ時間が流(なが)れます。

6.2 可逆性(かぎゃくせい)

測定以外(いがい)のすべての量子ゲートはユニタリで可逆です。

7. Qiskit 深(ふか)掘(ぼ)り

7.1 インストール

pip install qiskit qiskit-aer qiskit-ibm-runtime

7.2 基本回路

from qiskit import QuantumCircuit, transpile
from qiskit_aer import AerSimulator

qc = QuantumCircuit(2, 2)
qc.h(0)
qc.cx(0, 1)
qc.measure([0, 1], [0, 1])

print(qc)

simulator = AerSimulator()
compiled = transpile(qc, simulator)
result = simulator.run(compiled, shots=1024).result()
counts = result.get_counts()
print(counts)

Bell stateを生成し、00または11のみが観測(かんそく)されます。

7.3 トランスパイラー

from qiskit import transpile

compiled = transpile(qc, backend, optimization_level=3)
print(f"Depth: {compiled.depth()}")

7.4 IBM Quantum ハードウェア

from qiskit_ibm_runtime import QiskitRuntimeService, SamplerV2 as Sampler

service = QiskitRuntimeService(channel="ibm_quantum", token="YOUR_TOKEN")
backend = service.least_busy(operational=True, simulator=False)
sampler = Sampler(backend)
job = sampler.run([compiled])
result = job.result()

7.5 シミュレーター種類(しゅるい)

from qiskit_aer.noise import NoiseModel, depolarizing_error

noise_model = NoiseModel()
error = depolarizing_error(0.01, 1)
noise_model.add_all_qubit_quantum_error(error, ['h', 'x'])
sim = AerSimulator(noise_model=noise_model)

8. Cirq 深掘り

8.1 基本例

import cirq

q0, q1 = cirq.LineQubit.range(2)

circuit = cirq.Circuit()
circuit.append([
    cirq.H(q0),
    cirq.CNOT(q0, q1),
    cirq.measure(q0, q1, key='result'),
])

simulator = cirq.Simulator()
result = simulator.run(circuit, repetitions=1024)
print(result.histogram(key='result'))

8.2 Cirq vs Qiskit

9. 有名(ゆうめい)量子アルゴリズム

9.1 Deutsch-Jozsa

定数(ていすう)か均衡(きんこう)か判別(はんべつ)。古典:指数、量子:1回。

9.2 Grover探索(たんさく)

O(N)O(\sqrt{N})探索。

from qiskit.algorithms import Grover, AmplificationProblem

oracle = QuantumCircuit(3)
oracle.cz(0, 2)
problem = AmplificationProblem(oracle, is_good_state=['101'])
grover = Grover(quantum_instance=simulator)
result = grover.amplify(problem)

9.3 Shor素因数分解

RSA暗号(あんごう)の基盤(きばん)を脅(おびや)かす多項式(たこうしき)時間アルゴリズム。

Shorアルゴリズム概要(がいよう):
1. ランダム数(すう)a選択(せんたく)(1 < a < N)
2. gcd(a, N)計算。1でなければ因数(いんすう)発見
3. 量子段階(だんかい):a^x mod Nの周期(しゅうき)r探索
4. rが偶数(ぐうすう)ならgcd(a^(r/2) +/- 1, N)で因数取得(しゅとく)

9.4 Quantum Fourier Transform (QFT)

def qft(n):
    qc = QuantumCircuit(n)
    for j in range(n):
        qc.h(j)
        for k in range(j+1, n):
            qc.cp(np.pi / (2 ** (k-j)), k, j)
    return qc

9.5 Bernstein-Vazirani

隠(かく)されたビット列(れつ)を1回の問(と)い合(あ)わせで発見。

10. 変分(へんぶん)量子アルゴリズム

10.1 VQE

分子基底(きてい)状態エネルギー計算。ハイブリッド量子古典。

from qiskit.algorithms.minimum_eigensolvers import VQE
from qiskit.algorithms.optimizers import COBYLA
from qiskit.circuit.library import EfficientSU2

ansatz = EfficientSU2(num_qubits=2, reps=2)
optimizer = COBYLA(maxiter=100)
vqe = VQE(estimator, ansatz, optimizer)
result = vqe.compute_minimum_eigenvalue(hamiltonian)

10.2 QAOA

組合(くみあ)わせ最適化(Max-Cut、TSP)。

from qiskit.algorithms.minimum_eigensolvers import QAOA
qaoa = QAOA(sampler, optimizer, reps=2)
result = qaoa.compute_minimum_eigenvalue(operator=cost_operator)

11. 量子機械学習(きかいがくしゅう)(QML)

11.1 量子ニューラルネットワーク

from qiskit_machine_learning.neural_networks import EstimatorQNN
from qiskit.circuit.library import RealAmplitudes, ZZFeatureMap

feature_map = ZZFeatureMap(feature_dimension=2, reps=1)
ansatz = RealAmplitudes(num_qubits=2, reps=1)
qc = QuantumCircuit(2)
qc.compose(feature_map, inplace=True)
qc.compose(ansatz, inplace=True)

qnn = EstimatorQNN(
    circuit=qc,
    input_params=feature_map.parameters,
    weight_params=ansatz.parameters,
)

11.2 量子カーネル法(ほう)

from qiskit_machine_learning.kernels import FidelityQuantumKernel
from sklearn.svm import SVC

kernel = FidelityQuantumKernel(feature_map=feature_map)
svc = SVC(kernel=kernel.evaluate)
svc.fit(X_train, y_train)

12. 量子優位性(ゆういせい)

12.1 Google Sycamore (2019)

53量子ビットで200秒(びょう)、古典では1万年(まんねん)推定(すいてい)。IBMが後(あと)に反論(はんろん)しましたが最初(さいしょ)の実証例(じっしょうれい)。

12.2 USTC Jiuzhang (2020)

光学(こうがく)ベースのGaussian Boson Samplingで200秒、古典25億年(おくねん)推定。

12.3 IBMロードマップ

12.4 有用(ゆうよう)な量子優位性

優位性は「役立(やくだ)たない問題」への証明(しょうめい)です。有用な問題での量子優位性は未達成(みたっせい)で、これがNISQ時代の目標です。

13. 量子ハードウェアプラットフォーム

プラットフォーム代表会社量子ビットゲート速度(そくど)温度(おんど)
超伝導IBM、Google1000+ns10-20 mK
イオントラップIonQ30-100μs常温(じょうおん)
光学(こうがく)Xanadu数百ps常温
中性原子(ちゅうせいげんし)QuEra数百μsmK
トポロジカルMicrosoftTBD--

14. NISQ時代と誤(あやま)り訂正(ていせい)

14.1 NISQ

John Preskill提唱(ていしょう)。50-1000量子ビット規模のノイズ有(あ)り機(き)。完全な誤り訂正なし、回路深度(しんど)制限(せいげん)、ハイブリッドアルゴリズム流行(りゅうこう)。

14.2 量子誤り訂正(QEC)

複製不可定理のため複雑(ふくざつ)なコード必要。

論理(ろんり)量子ビット1個に数千(すうせん)物理(ぶつり)量子ビット必要。

14.3 Fault-Tolerant Quantum Computing

完全な誤り訂正と耐障害(たいしょうがい)計算。有用なShor(RSA-2048)には数百万(すうひゃくまん)物理量子ビット推定。

15. 量子優位性応用(おうよう)分野

15.1 化学と新薬(しんやく)

15.2 最適化

15.3 金融(きんゆう)

15.4 材料科学

16. 耐量子暗号(たいりょうしあんごう)(PQC)

16.1 必要性

Shorアルゴリズムが多項式時間でRSA、ECCを破れるため。"Harvest Now, Decrypt Later"攻撃(こうげき):現在(げんざい)暗号化(あんごうか)トラフィックを保存(ほぞん)し将来(しょうらい)解読(かいどく)。

16.2 NIST PQC標準(ひょうじゅん)

2024年発表(はっぴょう):

16.3 アルゴリズム分類(ぶんるい)

16.4 移行(いこう)戦略(せんりゃく)

17. 実習:Bell状態と量子テレポーテーション

17.1 Bell状態

from qiskit import QuantumCircuit

bell = QuantumCircuit(2, 2)
bell.h(0)
bell.cx(0, 1)
bell.measure([0, 1], [0, 1])

17.2 量子テレポーテーション

def teleportation():
    qc = QuantumCircuit(3, 3)
    qc.h(0)
    qc.rz(0.7, 0)
    qc.barrier()
    qc.h(1)
    qc.cx(1, 2)
    qc.barrier()
    qc.cx(0, 1)
    qc.h(0)
    qc.measure([0, 1], [0, 1])
    qc.barrier()
    qc.cx(1, 2)
    qc.cz(0, 2)
    qc.measure(2, 2)
    return qc

18. クイズ

Q1. 複製不可定理(ふくせいふかていり)が量子誤り訂正に与(あた)える影響(えいきょう)?

A:古典コンピューターのように「ビットを3回コピーして多数決(たすうけつ)」のような単純な冗長化(じょうちょうか)が不可能です。そこで量子誤り訂正はエンタングルメントで情報を分散(ぶんさん)する複雑なコード(Shor、Surface、LDPC)を使います。これが論理量子ビット1個に数千の物理量子ビットが必要な理由です。

Q2. ShorアルゴリズムがRSAを脅(おびや)かす原理(げんり)?

A:Shorは整数(せいすう)の素因数分解を多項式時間で解きます。RSAの安全性(あんぜんせい)は大(おお)きな数の素因数分解の困難(こんなん)さに基(もと)づくので、十分(じゅうぶん)大きな耐障害(たいしょうがい)量子計算機ができればRSA-2048を破れます。

Q3. Groverアルゴリズムの高速化は指数的か二次的(にじてき)か?

A:二次的(quadratic)です。NN個のアイテムからの探索を古典はO(N)O(N)、GroverはO(N)O(\sqrt{N})で解きます。指数的でないためNP完全全体を多項式時間で解くことはできません。

Q4. VQEとQAOAがNISQ時代に有用な理由?

A:両方(りょうほう)ともハイブリッド量子古典アルゴリズムで、浅(あさ)い回路のみ使うためノイズの影響が限定的(げんていてき)です。量子部分(ぶぶん)は期待値(きたいち)計算のみし、パラメータ最適化は古典オプティマイザが行(おこな)います。

Q5. PQCにおける"Harvest Now, Decrypt Later"攻撃とは?

A:攻撃者が現在の暗号化トラフィックを保存しておき、将来十分に大きな量子計算機ができたら解読する攻撃です。長期機密性(ちょうききみつせい)が必要なデータ(国家機密、医療記録(いりょうきろく))はPQCに既(すで)に移行する必要があります。

19. 参考資料(さんこうしりょう)

  1. Qiskit Documentation - qiskit.org
  2. Cirq Documentation - quantumai.google/cirq
  3. IBM Quantum Learning
  4. Nielsen and Chuang, Quantum Computation and Quantum Information
  5. Preskill, Quantum Computing in the NISQ era and beyond
  6. Arute et al., Quantum Supremacy, Nature 2019
  7. NIST PQC Project
  8. Google Quantum AI
  9. Shor, Algorithms for quantum computation
  10. Grover, A fast quantum mechanical algorithm
  11. Microsoft Quantum Development Kit
  12. QuTiP Library
  13. Quantum Algorithm Zoo

結論(けつろん)

量子コンピューティングはもはや物理学者だけの領域(りょういき)ではありません。Qiskit、Cirqといったオープンソースのおかげで、ソフトウェア開発者もJupyterノートブックで量子回路を実行(じっこう)し、IBM Quantumクラウドで実際(じっさい)の量子ハードウェアにアクセスできます。NISQ時代は完全ではありませんが、VQE、QAOA、量子機械学習といったハイブリッドアプローチで最初(さいしょ)の有用な量子優位性を追(お)い求(もと)めています。同時(どうじ)にPQCへの移行はすべてのセキュリティインフラの必須(ひっす)課題(かだい)です。

コメント

まだコメントはありません。

ログインするとコメントできます