Measurement in Q#
たぶん(1)
OpenQL勉強会
@tanaka_733
【宣伝】 n月刊ラムダノート
https://www.lambdanote.com/collections/n
最近のQ#
Q# 0.8 (まで)リリース
◦ https://docs.microsoft.com/en-us/quantum/relnotes/?view=qsharp-preview
◦ 0.6で名前空間の変更など大幅な変更あり
◦ 量子アルゴリズムより、Q#の文法解説に特化した説明が聞きたい場合
アンケートにお願いします。
Quantum Development Kit OSS化
◦ コンパイラー
◦ https://github.com/microsoft/qsharp-compiler/
◦ C#やF#で書かれている
◦ Runtime
◦ https://github.com/microsoft/qsharp-runtime
◦ C#, C++, F# など
今日のテーマ「Q#における測定」
Q#における1量子ビットの測定
◦ そもそも測定とは
◦ |0>と|1>を測定する
◦ 任意の状態を測定する。測定後の量子ビットの状態。
◦ ある正規直交基底にある2状態の識別
◦ 正規直交基底にない2状態の識別
Q#における2量子ビットの測定
◦ (Q#ドキュメントの)Pauli測定の入り口
※資料へのフィードバック歓迎です!
今回の参考資料
Qunatum KatasよりMeasurementとJointMeasurement
◦ ハンズオンの課題はKatasの課題を改変し、
測定前後の状態を出力するなどしたものです。
◦ https://github.com/microsoft/QuantumKatas
Q# Docs
◦ Quantum computing conceptsのThe qubits, Multiple qubits, Pauli
measurements あたり
◦ https://docs.microsoft.com/en-us/quantum/concepts
◦ Q# library reference のM, Measureなど
量子コンピューターにおける測定と
は
1量子ビットを標準基底(computational basis)で測定する場合
θ
|0>|1>
Zeroの確率: cos2θ
Oneの確率: sin2θ
cos 𝜃 0 + sin 𝜃 1
任意の状態に対し、|0>か|1>のどちらかの値が観測されるか調べる。
観測した後、状態は観測された値に変化する。
測定を数式で書いてみる
𝜓 = 𝛼 0 + β 1
𝑃(𝑀 𝑚 𝜓 ) = 𝜓 𝑀 𝑚
†
𝑀 𝑚 𝜓
𝑀 𝑚 𝜓
𝑃(𝑀 𝑚 𝜓 )
𝛼 2 𝛽 2
𝛼
𝛼
0 𝛽
𝛽
1
確率
測定後の状態
元の状態
|0>で測定した場合の確率
|0>で測定した場合の状態
|1>で測定した場合の確率
|1>で測定した場合の状態
Q#における測定(その1)
M operation
https://docs.microsoft.com/en-
us/qsharp/api/qsharp/microsoft.quantum.intrinsic.m?view=qsharp-preview
|0>と|1>のどちらかに揃えて
測定する
𝐻 + = 0
𝐻 − = 1
z軸とx軸の間の軸を中心に
180度回転させる
|0>と|1>のどちらかに揃えて
測定する
y軸周りに-90度回転させる
2量子ビットの測定
2量子以上になるともはやBloch球で表現できない!
◦ 2n次元複素ベクトル空間上の単位球面上
◦ 1量子の場合、2次元複素ベクトル+長さが1の制約から3次元球面上に表現できた
n番目のQubitが|0>か|1>かは測定できるが、測定すると状態が破壊される
エンタングルしていなければ別の量子ビットも測定できるが
エンタングルしていると別の量子ビットの状態が変化するので
別の量子ビットを測定しても意味がない
(という理解でいるが、と主張してよいか自信がない…)
2量子ビット測定の数式
𝜓 = 𝛼 00 + β 01 + 𝛾 10 + 𝛿 11元の状態
𝛼 2
+ 𝛽 2
𝛾 2 + 𝛿 2
最初のQubitを|0>,|1>で測定
𝛼 2 + 𝛾 2
𝛽 2
+ 𝛿 2
2番目のQubitを|0>,|1>で測定
1
𝛼 2 + 𝛽 2
𝛼 00 + β 01
1
𝛾 2 + 𝛿 2
𝛾 10 + 𝛿 11
1
𝛼 2 + 𝛾 2
𝛼 00 + 𝛾 10
1
𝛽 2 + 𝛿 2
β 01 + 𝛿 11
ここからJoint
Measurementへ
1量子ビットの測定と固有値
|0>と|1>は、実はPauliZ演算子の固有ベクトル
測定というのは、+1と-1を固有値にもつ2つの固有ベクトルのどちらであるかを観測す
る。
測定後は観測した固有ベクトルに変化する。
固有値+1がQ#での測定結果Zeroに
固有値-1がQ#での測定結果Oneに対応する
1 0
0 −1
Parity測定
PauliZのテンソル積を考えてみると、2つの固有値がある
𝜎 𝑍⨂𝜎 𝑍 =
1 0
0 −1
0 0
0 0
0 0
0 0
−1 0
0 1
固有値1 固有値-1
それぞれの固有ベクトルが表現する状態については、変更することなく測定できる
1
2
1
0
0
1
1
2
0
1
1
0
次回どちらがよいですか?
測定その2
◦ 通常の測定(Joint Measurementではない)のさらなる応用
◦ Joint Measurementのさらなるパターン
Q#の文法
◦ 量子アルゴリズムはいったんおいて、文法についておさらい
◦ (配列操作、制御構文、基本的な操作の使い方)

20190806 Q# Measurements