19.
NOTゲート ANDゲート CNOTゲート
可逆 非可逆(量子計算では使えない) 可逆
19
可逆コンピュータ
LangEdge,Inc.
情報が失われる時にエネルギー(熱)が消費される。
可逆コンピュータが実現すると低電力化が可能となる。
IBMから1960年代に出た理論で今も研究が続いている。
※ 量子コンピュータは可逆コンピュータの一種である(詳細は次ページ)。
A X X
A
B
A
B
X
Y
A X
1 0
0 1
A B X
0 0 0
0 1 0
1 0 0
1 1 1
A B X Y
0 0 0 0
0 1 0 1
1 0 1 1
1 1 1 0
energy
Yだけ見るとXOR
出力から入力が
再現できるので可逆
可逆コンピュータは非量子な場合には
低電力になっても低性能になる為に
ほぼ実用化されていない。
出力から
入力が
再現でき
ない
23.
23
NISQの時代(今後5~10年程度)
LangEdge,Inc.
Q2B: QUANTUM FOR BUSINESS 2017
物理学者 John Preskill による基調講演の論文
「Quantum Computing in the NISQ era and beyond 」
https://arxiv.org/abs/1801.00862
NISQ: Noisy Intermediate-Scale Quantum
ノイズエラーがあり中規模量子ビット数の時代
現在は標準ハードウェアと標準ソフトウェア(アルゴリズム)
を確立する時期で、特にソフトウェアは量子シミュレータを
使って勉強しておくことで量子プログラミング時代に備える。
50~数百量子ビット程度
35.
35LangEdge,Inc.
数学: 複素数と共役(複素共役)
名称 定義 例
実数 実在する数 0, 2, 0.4, 1/3, 2
虚数
2乗してマイナスになる数
i をつけて表す
i 1, i3 3, i4 4
i0 1, i1 i, i2 1, i3 i
複素数
実数と虚数で示される数
実数部/虚数部が0も含む
5 i3, 2 – i4, 0.2 i0.2,
2 i0 2, 0 – i3 3i
0
y
y
x
r
r
Re 実軸
Im 虚軸
z x iy
z r cos θ i sin θ
z reiθ
𝒛 x – iy
𝒛 re iθ
複素平面における共役関係
θ 偏角
θ
複素共役(ふくそきょうやく)
虚数部がマイナスになっているペア値。
複素数 に対して と書く。
1. z が実数なら、z z
2. z z z1 z2
3. z z z1×z2
4. z z z1 z2
5. z z |z|2
共役
48.
48LangEdge,Inc.
数学: 固有値問題式変形 (固有値問題1)
は正方行列、 は固有値(スカラー値)、 は列ベクトル
a11 a12
a21 a22
λ x
y
λ 1 0
0 1
x
y
λ 0
0 λ
x
y
0
0
λ 0
0 λ
x
y
x
y
11 12
21 22
a11 a12
a21 a22
x
y
a11 λ a12
a21 a22 λ
x
y
単位行列を
使って展開
0
0
右辺を左辺に移動
係数をまとめる
x 0
かつ
y 0
a11 λ a12
a21 a22 λ
この行列がゼロで
ある必要がある。
56.
A* A
56LangEdge,Inc.
数学: ユニタリ行列
元行列と共役転置行列を掛けると単位行列Eになる行列:
※ 逆行列と共役転置行列が等しくなる。
※ 内積の値(ベクトルの長さ)は変わらず複素空間の回転が可能。
ex)
1 *
正規行列
1 1
i i
A =
1 i
1 i
1 1
i i
1 0
0 1
A A*
1 1
i i
1 i
1 i
1 0
0 1
物理学の定義: † † (ダガー)
量子ビットの
操作に利用
(後述)
57.
57LangEdge,Inc.
数学: エルミート行列
エルミート行列は元行列と共役転置行列が同じ行列:
エルミート行列の対角は実数になる。
エルミート行列の固有値は実数になる。
ex)
2x2
1 2 i
2 i 3
1 2 i 3 i
2 I 5 4 i
3 i 4 I 6
* * * *
正規行列
ex)
3x3
物理学の定義:行列 のエルミート行列は † (ダガー)
量子ビットの
観測に利用
(後述)
65.
65LangEdge,Inc.
同じベクトルの内積
a0
a1
:
an
a0
* a1
* … an
* ケットベクトル:
0
*
0 1
*
1 n
*
n
がある時に内積計算は、
ブラベクトル:
a0
* a1
* … an
*
a0
a1
:
an
,
量子計算では、内積の結果が1となるように規格化されている。
※ これはベクトルの長さが1と言うことと同じ。
66.
66LangEdge,Inc.
テンソル積 (1階のテンソル積)
|ψ1⟩ a|0⟩ b|1⟩
a
b
|ψ2⟩ c|0⟩ d|1⟩
c
d
つの 次元ベクトル 1 と 2 がある時、
1 と 2 のテンソル積 は 次元ベクトルとなる。
|ψ1⟩ ⊗ |ψ2⟩
ac
ad
bc
bd
テンソル積の記号 は省略されることが多い。
1 2 1 2 1 2
bc|10⟩ bd|11⟩
a
b
c
d
c
d
ac|00⟩ ad|01⟩
93.
93LangEdge,Inc.
軸回転 ゲート
実際の量子プログラミングでは、任意角度での
軸回転(シフト)ゲートが必要になる。
軸回転演算
cos
𝜃
2
𝑖 sin
𝜃
2
𝑖 sin
𝜃
2
cos
𝜃
2
Rx
軸回転演算
cos
𝜃
2
sin
𝜃
2
sin
𝜃
2
cos
𝜃
2
Ry
軸回転演算
e 0
0 e
Rz
94.
94LangEdge,Inc.
測定 (量子ビットを収束させて古典ビットとして取り出す)
from qiskit import * # 量子計算用
from qiskit.tools.visualization import * # 結果表示用
backend = Aer.get_backend('qasm_simulator') # 量子シミュレータ指定
q = QuantumRegister(1) # 量子ビットを1つ用意
c = ClassicalRegister(1) # 古典ビットを1つ用意
qc = QuantumCircuit(q, c) # 量子回路に量子ビットと古典ビットをセット
qc.h(q[0]) # 量子重ね合わせ(アダマール演算)
qc.measure(q[0], c[0]) # 量子ビットq[0]を観測し古典ビットc[0]へ
r = execute(qc, backend, shots=1000).result() # 回路を1000回実行する
rc = r.get_counts() # 結果取得
print(rc) # 結果表示
plot_histogram(rc) # ヒストグラム表示
Jupiter Notebook から以下を実行(コピペで大丈夫です)。
Z
標準基底測定
|0⟩ H
Z
c 0
95.
95LangEdge,Inc.
測定結果の例1: ゲート (アダマール演算)
|0⟩ H
Z
c 0
qc.h(q[0])
qc.measure(q[0],c[0])
‘0’ : 500, ‘1’: 500 となるはずだが…NISQシミュレータなのでノイズを考慮している。
参考:ブロッホ球表示
110.
110LangEdge,Inc.
参考: ( )
IBMが公開している量子回路アセンブラ言語。
Cirq(Google)、Q#(MS)、Blueqat(MDR)等の
ほぼ全ての量子プラットホームがサポートして
いるので相互運用ができる。
Visual Studio Code用の拡張も公開されている。
https://marketplace.visualstudio.com/items?itemName=qiskit.qiskit-vscode
include "qelib1.inc";
qreg q[1];
creg c[1];
h q[0];
measure q[0] -> c[0];
|0⟩ H
Z
c 0
QASM
The IBM Q Experience は
QASMの回路エディタにも使える
111.
111
Part 2:量子ゲート型のプログラミング
LangEdge,Inc.
複数の量子ビットを使った量子アルゴリズムを
使った量子ゲート型プログラミングを説明します。
134.
LangEdge,Inc.
ドイチェ・ジョサ( )問題
ドイチェ問題の入力を複数量子ビットにした問題。
ビット以上だと一定・均等以外のケースもある。
例:2ビットの時に 0010 のように一定でも均等でも無いケースがあり得る。
この為に一定・均等いずれかであることを前提。
|0 ⊗ n⟩
|1⟩ |1⟩
𝑓
H H
H
⊗ n H
⊗ n M
⊗ n 観測
複数ビットに対しても適用可能とすることで、
ビット数が増えても演算は 回で済む。
134
136.
LangEdge,Inc.
その他の量子アルゴリズム問題
ベルンシュタイン・ヴァジラニ(Bernstein-Vazirani)問題
nビットの変数xと定数aの内積を解とする関数𝑓 x がある時に定数aを求める。
𝑓 x x・a x0・a0 ⊕ x1・a1 ⊕…⊕ xn・an
サイモン(Simon)問題
nビット変数xと関数𝑓 x がある時に、𝑓 x 𝑓 x⊕s となる秘密鍵sを得る問題。
ただしs 0とする。古典では2n回かかるが量子ではn回で済む。
|0 ⊗ n⟩
|1⟩ |1⟩
𝑓
H H
H
⊗ n H
⊗ n |an
⊗ n⟩
|xn
⊗ n⟩
|0 ⊗ n⟩ |𝑓 x ⟩
𝑓
H
⊗ n H
⊗ n |s⟩ 秘密鍵
136
147.
LangEdge,Inc.
グローバー検索の応用例
147
充足可能性( :SATisfiability)問題
一つの命題論理式が与えられたとき、それに含まれる変数の値を偽 False
あるいは真 True にうまく定めることによって全体の値を‘真’にできるか、と
いう問題である。オラクルUを解きたいSATに合わせてセットすることで解ける。
例題: の時
解: にすると全体が になる。
素数探索問題
|i⟩がある時に i が素数かどうかを判定するオラクルをグローバーのアルゴリズ
ムを使って用意し、量子フーリエ変換と組み合わせて素数の探索を行う。
Jose I. Latorre, German Sierra
Quantum Computation of Prime Number Functions,
arXiv:1302.6245 [quant-ph] (2013)
https://arxiv.org/abs/1302.6245
※ グローバーのアルゴリズムを使った論文は多く、応用性の高いアルゴリズムです。
172.
LangEdge,Inc.
位数(周期)発見問題
関数 x において、
となる位数 を発見する。
※ 位相が分かればその数から位数が高確率で取得できる。
(逆)量子フーリエ変換を使い、位数を発見する事が可能。
位数発見の量子回路:
※ 量子フーリエ変換は全ビットをアダマール変換すれば良く、逆量子フーリエ変換は既出である。
関数 x の汎用ユニタリ回路が必要。
172
|0…0⟩
|0…0⟩
ユニタリ 𝑓
𝑓 x ax mod N
QFTn
−1H (QFTn ) |x⟩
|𝑓 x ⟩
n
n
現れる固有値の数で
位数 r を得る。
Be the first to comment