科学しよう

量子計算のプログラミングの解説をメインに、データサイエンス・機械学習について勉強したことをご紹介します

MENU

密度演算子・密度行列

お久しぶりです。
色々忙しくて前回から随分間が空いてしまいました。

当初アダマールテストとかのアルゴリズムの記事を書こうとしましたが、それらを勉強したり説明するうえで、部分系や測定や確率分布の話が避けて通れませんでした。
先に密度演算子について解説して、部分系の取り扱い方法を整理しようと思います。

対象とする読者

  • 量子プログラミングに興味を持ち始めたばかりのエンジニア
  • 量子計算に興味を持ち始めたばかりの高校生・大学生

など

前提とする知識

  • ブラケットを使った線形代数がわかること
  • 量子状態をブラケットないしBloch球で表現できること
  • ユニタリー発展がわかること
  • 射影測定がわかること

バージョン情報

目次

定義

密度演算子・密度行列 \rhoは以下で定義されます。

\displaystyle{
\rho = \sum_i{p_i | \psi_i \rangle \langle \psi_i |}
}

ここで、 | \psi_i \rangleは量子系のとりうる状態で、 p_iはそれに対する確率(実数)です。

性質

トレースは1

トレースとは行列の対角成分だけの和を取ることで、以下となります。


\begin{aligned}
\mathrm{tr} (\rho) &= \mathrm{tr} \left( \sum_i {p_i | \psi_i \rangle \langle \psi_i |} \right) \\
&= \sum_i {p_i \mathrm{tr} \left(| \psi_i \rangle \langle \psi_i | \right)} \\
&= \sum_i {p_i} \\
&= 1
\end{aligned}

つまり、トレースは確率の和を示しています。

なお、3行目から4行目の計算において、

\displaystyle{
| \psi_i \rangle = \sum_j{\alpha_j | \psi_{ij} \rangle} \left( \sum_j{| \alpha_j |^2} = 1 \right)
}

 | \psi_{ij} \rangleは正規直交基底のため、 \mathrm{tr}(| \psi_i \rangle \langle \psi_i |) = \sum_j{| \alpha_j |^2} = 1となることを利用しています。

対角成分はゼロ以上

対角成分は確率を示すのでそれはそうなのですが、ちゃんと式の上で確かめられます。 ある量子状態を | \phi \rangleとした場合以下となります。


\begin{aligned}
\langle \phi | \rho | \phi \rangle &= \langle \phi | \left( \sum_i{p_i | \psi_i \rangle \langle \psi_i |} \right) | \phi \rangle \\
&= \sum_i{p_i \langle \phi | \psi_i \rangle \langle \psi_i | \phi \rangle} \\
&= \sum_i{p_i | \langle \phi | \psi_i \rangle |^2} \\
&\geq 0 \ (\because p_i \geq 0, | \langle \phi | \psi_i \rangle |^2 \geq 0)
\end{aligned}

確率を示す物理量とも言えるので、その期待値がちゃんと確率になっているというのがわかります。

定理

密度演算子のユニタリー発展

状態 | \psi_i \rangleがユニタリー発展して \hat{U} | \psi_i \rangleとなるので


\begin{aligned}
\rho_{\mathrm{init}} = \sum_i{p_i | \psi_i \rangle \langle \psi_i |} &\xrightarrow{\hat{U}} \sum_i{p_i \hat{U} | \psi_i \rangle \langle \psi_i | \hat{U}^{\dagger}}\\
&= \hat{U} \left( \sum_i{p_i | \psi_i \rangle \langle \psi_i |} \right)\hat{U}^{\dagger} \\
&= \hat{U} \rho_{\mathrm{init}} \hat{U}^{\dagger} \equiv \rho_{\mathrm{final}}
\end{aligned}

ということで、元の状態 \rho_{\mathrm{init}}とユニタリー発展 \hat{U}が既知であれば計算から求められます。

測定後の密度演算子

測定値 mが得られる測定演算子 \hat{M}_m(射影演算子とは限らない)を使って量子状態 | \psi \rangleを測定した時に、測定値 mが得られる確率 p(m)こちらで説明したように、以下の式で求まります。

\displaystyle{
p(m) = \langle \psi | \hat{M}^{\dagger}_m \hat{M}_m | \psi \rangle 
}

 iで示されるいくつかの量子状態 | \psi_i \rangleがある場合も同様に、その iに対する条件付き確率は以下で求まります。


\begin{aligned}
p (m | i) &= \langle \psi_i | \hat{M}^{\dagger}_m \hat{M}_m | \psi_i \rangle \\
&= \mathrm{tr} \left( \hat{M}^{\dagger}_m \hat{M}_m | \psi_i \rangle \langle \psi_i | \right)
\end{aligned}

ここでの式変形では次の行列の性質を利用しています。

\displaystyle{
\mathrm{tr} \left( \hat{A} | \psi \rangle \langle \psi | \right) = \langle \psi | \hat{A} | \psi \rangle
}

さまざまな iについての p (m | i )を合計することで p (m)が得られます。 (確率論の言葉では「周辺化」と言います。)


\begin{aligned}
p(m) &= \sum_i{p(m | i) \cdot p_i} \\
&= \sum_i{p_i \cdot \mathrm{tr}\left( \hat{M}^{\dagger}_m \hat{M}_m | \psi_i \rangle \langle \psi_j | \right)} \\
&= \mathrm{tr} \left( \hat{M}^{\dagger}_m \hat{M}_m \sum_i{p_i | \psi_i \rangle \langle \psi_i |} \right)
\end{aligned}

以上を用いて測定後の密度演算子を求めるが、そのために測定後の量子状態を確認するとこちらで説明したように

\displaystyle{
| \psi_i^m \rangle = \frac{\hat{M}_m | \psi_i \rangle}{\sqrt{\langle \psi_i | \hat{M}_m^{\dagger} \hat{M}_m | \psi_i \rangle}}
}

となることを用いて、測定後の密度演算子 \rho_mは以下になる


\begin{aligned}
\rho_m &= \sum_i{p(i | m) | \psi_i^m \rangle \langle \psi_i^m |} \\
&= \sum_i{p(i | m) \frac{\hat{M}_m | \psi_i \rangle \langle \psi_i | \hat{M}^{\dagger}_m}{\langle \psi_i | \hat{M}^{\dagger}_m \hat{M}_m | \psi_i \rangle}}
\end{aligned}

ここで、 p(i | m)については確率の乗法法則

\displaystyle{
p(i | m) = \frac{p(m, i)}{p(m)} = \frac{p(m | i) \cdot p_i}{p(m)}
}

より


\begin{aligned}
\rho_m &= \sum_i{\frac{p(m | i) \cdot p_i}{p(m)} \cdot \frac{\hat{M}_m | \psi_i \rangle \langle \psi_i | \hat{M}^{\dagger}_m}{\langle \psi_i | \hat{M}^{\dagger}_m \hat{M}_m | \psi_i \rangle}} \\
&= \sum_i{\frac{\langle \psi_i | \hat{M}^{\dagger}_m \hat{M}_m | \psi_i \rangle}{\mathrm{tr} \left( \hat{M}^{\dagger}_m \hat{M}_m \rho \right)} \cdot p_i \cdot \frac{\hat{M}_m | \psi_i \rangle \langle \psi_i | \hat{M}^{\dagger}_m}{\langle \psi_i | \hat{M}^{\dagger}_m \hat{M}_m | \psi_i \rangle}} \\
&= \sum_i{p_i \cdot \frac{\hat{M}_m | \psi_i \rangle \langle \psi_i | \hat{M}^{\dagger}_m}{\mathrm{tr} \left( \hat{M}^{\dagger}_m \hat{M}_m \rho \right)}} \\
&= \frac{\hat{M}_m \sum_i{p_i | \psi_i \rangle \langle \psi_i |} \hat{M}^{\dagger}_m}{\mathrm{tr} \left( \hat{M}^{\dagger}_m \hat{M}_m \rho \right)} \\
&= \frac{\hat{M}_m \rho \hat{M}^{\dagger}_m}{\mathrm{tr} \left( \hat{M}^{\dagger}_m \hat{M}_m \right)}
\end{aligned}

確率的に分布する量子状態

ある状態 \rho_i = \sum_j{p_j | \psi_j \rangle \langle \psi_j |}が確率 p_iで存在するとき、全体の密度演算子


\begin{aligned}
\rho &= \sum_{i, j}{p_i p_j | \psi_j \rangle \langle \psi_j |} \\
&= \sum_i{p_i \rho_i}
\end{aligned}

なぜ密度演算子が必要なのか

量子状態(波動関数状態ベクトル)はまさに状態そのものを示していますがその係数は確率振幅であるので測定に直接結びつきません。 一方で、密度演算子は確率そのものでそのもので表されているため、測定と直接結びつけることができます。

また、行列成分の現れ方でノイズの影響下にあるのか、エンタングルメント状態なのかなどを判断できます。 測定結果を理論と照らし合わせるために非常に重要です。

一方で、元々使っていた量子状態(波動関数状態ベクトル)はどういう時に使うかというと位相を解析したい時ですかね、、。
詳しい方いらしゃったらコメントいただけますと嬉しいです。

密度演算子の具体例

よくある例ですけど、せっかくなのでQiskit使って測定まで含めて確認してみます。

純粋状態

測定対象となる状態は

\displaystyle{
| \psi \rangle = \frac{1}{\sqrt{2}} \left( | 0 \rangle + | 1 \rangle \right)
}

です。 この1つの状態が単一で存在します。

\displaystyle{
| 0 \rangle \equiv 
\begin{pmatrix} 1 \\ 0 \end{pmatrix}
}
\displaystyle{
| 1 \rangle \equiv 
\begin{pmatrix} 0 \\ 1 \end{pmatrix}
}

とすると、密度演算子


\begin{aligned}
\rho &= | \psi \rangle \langle \psi | \\
&= \frac{1}{2} \left( | 0 \rangle \langle 0| + | 0 \rangle \langle 1 | + | 1 \rangle \langle 0 | + | 1 \rangle \langle 1 | \right) \\
&= \frac{1}{2} \begin{pmatrix} 1 & 1 \\ 1 & 1 \end{pmatrix}
\end{aligned}

対角要素が各状態の確率に等しく、 |0 \rangle | 1 \rangleの確率はそれぞれ 1 / 2です。

また、


\begin{aligned}
\mathrm{tr} \left( \rho^{2} \right) &= \frac{1}{4} \begin{pmatrix} 2 & 2 \\ 2 & 2 \end{pmatrix} \\
&= 1
\end{aligned}

となるのですが、このように

\displaystyle{
\mathrm{tr} \left( \rho^{2} \right) = 1
}

となる状態を純粋状態(Pure State)と言います。

これをZ測定します。 この時の量子回路は以下となります。

図1. 重ね合わせ状態のZ測定

この測定結果は下図です。 1024回測定しました。

図2. 図1の回路の測定結果

なお、この時のソースです。

qr = QuantumRegister(1)
cr = ClassicalRegister(1)
circuit = QuantumCircuit(qr, cr)

circuit.h(0)
circuit.barrier()

circuit.measure(qr, cr)

backend = Aer.get_backend('qasm_simulator')
job = execute(circuit, backend=backend, shots=1024)
job_monitor(job, interval = 2)

result = job.result()
count = result.get_counts()

混合状態

測定対象となる状態は

\displaystyle{
| \psi_0 \rangle = | 0 \rangle
}

\displaystyle{
| \psi_1 \rangle = | 1 \rangle
}

がそれぞれ確率50%です。 従って密度演算子


\begin{aligned}
\rho &=  \frac{1}{2} | \psi_0 \rangle \langle \psi_0 | + \frac{1}{2} | \psi_1 \rangle \langle \psi_1 | \\
&= \frac{1}{2} \left( | 0 \rangle \langle 0| + | 1 \rangle \langle 1 | \right) \\
&= \frac{1}{2} \begin{pmatrix} 1 & 0 \\ 0 & 1 \end{pmatrix}
\end{aligned}

また、


\begin{aligned}
\mathrm{tr} \left( \rho^{2} \right) &= \frac{1}{4} \begin{pmatrix} 1 & 0 \\ 0 & 1 \end{pmatrix} \\
&= \frac{1}{2}
\end{aligned}

となるのですが、このように

\displaystyle{
\mathrm{tr} \left( \rho^{2} \right) < 1
}

となる状態を混合状態(Mixed State)と言います。

これをZ測定します。
こちらも対角要素が各状態の確率に等しく、 |0 \rangle | 1 \rangleの確率はそれぞれ 1 / 2です。

ただし、量子回路は以下のどちらかを50%のランダムで実行することになります。

図3. 混合状態をZ測定する量子回路

量子ビットにXゲートがかかるかかからないかを乱数で50%の確率で決めます。

この測定結果は下図です。

図4. 図3の量子回路の測定結果

なお、この時のソースです。(※実行するには時間がかかります)

gates = [1 if val >= 0.5 else 0 for val in np.random.rand(1024)]

results = list()
for idx, gate in enumerate(gates):
    qr = QuantumRegister(1)
    cr = ClassicalRegister(1)
    circuit = QuantumCircuit(qr, cr)

    if gate:
        circuit.x(0)
    circuit.barrier()

    circuit.measure(qr, cr)
    
    backend = Aer.get_backend('qasm_simulator')
    job = execute(circuit, backend=backend, shots=1)
    job_monitor(job, interval = 2)

    result = job.result()
    count = result.get_counts()
    
    results.append(count)

counts_classic = {'0': 0, '1': 0}
for result in results:
    for bit, count in result.items():
        counts_classic[bit] += count

plot_histogram(counts_classic)

重ね合わせ状態と混合状態の見分け方

重ね合わせ状態も古典的混合も似たような結果になりました。
数式だとはっきり違いがわかりますが、測定だと違いがわかりません。
測定対象の量子系が重ね合わせ状態か混合状態かどちらなのか予めわからない場合、またより一般的に対象の系がどのような理論やモデルに基づくのかがわからない場合にどうやって測定から見分けたらいいでしょうか?
これが密度演算子で理解できます。

先ほどの例ではZ測定するつもりで、密度演算子もZ基底で記述しました。
これをX測定してみます。

重ね合わせ状態

測定対象となる状態は

\displaystyle{
| \psi \rangle = \frac{1}{\sqrt{2}} \left( | 0 \rangle + | 1 \rangle \right) \equiv | + \rangle
}

です。 この1つの状態が単一で存在します。

\displaystyle{
| + \rangle \equiv 
\begin{pmatrix} 1 \\ 0 \end{pmatrix}
}
\displaystyle{
| - \rangle \equiv 
\begin{pmatrix} 0 \\ 1 \end{pmatrix}
}

とすると、密度演算子


\begin{aligned}
\rho &= | \psi \rangle \langle \psi | \\
&= | + \rangle \langle + | \\
&= \begin{pmatrix} 1 & 0 \\ 0 & 0 \end{pmatrix}
\end{aligned}

 | + \rangle状態である確率100%です。

今度の量子回路はこちらになります。

図5. 重ね合わせ状態のX測定

この測定結果は下図です。 1024回測定しました。

図6. 図5の量子回路の測定結果

予定通り100%で観測されました。(アダマールゲートで基底変換しているので、この図の | 0 \rangle | + \rangleに相当します。)

この時のソースは以下です。

qr = QuantumRegister(1)
cr = ClassicalRegister(1)
circuit = QuantumCircuit(qr, cr)

circuit.h(0)
circuit.barrier()

circuit.h(0)
circuit.measure(qr, cr)

backend = Aer.get_backend('qasm_simulator')
job = execute(circuit, backend=backend, shots=1024)
job_monitor(job, interval = 2)

result = job.result()
count = result.get_counts()
plot_histogram(count)

混合状態

一方で混合状態をX基底で記述すると以下になります。

\displaystyle{
| \psi_0 \rangle = | 0 \rangle = \frac{1}{\sqrt{2}} \left( | + \rangle + | - \rangle \right)
}

\displaystyle{
| \psi_1 \rangle = | 1 \rangle = \frac{1}{\sqrt{2}} \left( | + \rangle - | - \rangle \right)
}

がそれぞれ確率50%です。 従って密度演算子


\begin{aligned}
\rho &=  \frac{1}{2} | \psi_0 \rangle \langle \psi_0 | + \frac{1}{2} | \psi_1 \rangle \langle \psi_1 | \\
&= \frac{1}{2} \left\{ \frac{1}{2} \left( | + \rangle + | - \rangle \right) \left( \langle + | + \langle - | \right) + \frac{1}{2} \left( | + \rangle - | - \rangle \right) \left( \langle + | - \langle - | \right) \right\} \\
&= \frac{1}{4} \left\{ \begin{pmatrix} 1 & 0 \\ 0 & 0 \end{pmatrix} + \begin{pmatrix} 0 & 1 \\ 0 & 0 \end{pmatrix} + \begin{pmatrix} 0 & 0 \\ 1 & 0 \end{pmatrix} + \begin{pmatrix} 0 & 0 \\ 0 & 1 \end{pmatrix} \right\} \\
&+  \frac{1}{4} \left\{ \begin{pmatrix} 1 & 0 \\ 0 & 0 \end{pmatrix} - \begin{pmatrix} 0 & 1 \\ 0 & 0 \end{pmatrix} - \begin{pmatrix} 0 & 0 \\ 1 & 0 \end{pmatrix} + \begin{pmatrix} 0 & 0 \\ 0 & 1 \end{pmatrix} \right\} \\
&= \frac{1}{2} \begin{pmatrix} 1 & 0 \\ 0 & 1 \end{pmatrix}
\end{aligned}

ということで、Z基底で記述した時と同じく、 | + \rangle | - \rangle状態が50%ずつの確率となります。

この時の量子回路は以下のどちらかとなります。

図7.  | 0 \rangle | 1 \rangleの混合状態をX測定する場合

この測定結果は以下となります。

図8. 図7の量子回路の測定結果

ということで、密度演算子から考えた通り、 | + \rangle | - \rangle状態が約50%ずつで観測されました。

このように未知の量子系であっても、適切な測定方法を用いることで得られる確率分布と理論を照らし合わせて、モデル・量子系を推定することができます。

この時のソースは以下です。

gates = [1 if val >= 0.5 else 0 for val in np.random.rand(1024)]

results = list()
for idx, gate in enumerate(gates):
    qr = QuantumRegister(1)
    cr = ClassicalRegister(1)
    circuit = QuantumCircuit(qr, cr)

    if gate:
        circuit.x(0)
    circuit.barrier()

    circuit.h(0)
    circuit.measure(qr, cr)

    if idx < 10:
        fig, ax = plt.subplots(1, 1)
        circuit.draw(output='mpl', ax=ax)
        plt.show()
        plt.close()
    
    backend = Aer.get_backend('qasm_simulator')
    job = execute(circuit, backend=backend, shots=1)
    job_monitor(job, interval = 2)

    result = job.result()
    count = result.get_counts()
    
    results.append(count)
    
counts_classic = {'0': 0, '1': 0}
for result in results:
    for bit, count in result.items():
        counts_classic[bit] += count

plot_histogram(counts_classic)

量子状態トモグラフィー

上記では簡単な例で実験結果と理論を比較して状態を推定するということを紹介しました。 実際にはより多量子ビット系になりますが要領は同じで、さまざまな測定から密度演算子の要素を推定し、理論と照らし合わせて量子状態を推定します。 このような手法を「量子状態トモグラフィー」と言います。 「トモグラフィー」は物理学に限らず一般的な言葉で、日常で触れるところではMRIの画像がそうです。 磁気共鳴の空間分布を解析することによって、脳や臓器の構造と状態を指定しそして可視化しています。

参考までに量子状態トモグラフィーについて以下の記事を紹介します。

qiita.com

arxiv.org

いずれこのブログでも解説してみたいですが、いつになることやら、、。

部分系・部分トレース

量子系Aと量子系Bの複合系がある時の全体系の密度演算子 \rho^{AB}とします。
例えば、二つの量子ビットからなる一つの量子系でも良いです。

この時、二つの量子ビットをどちらも測定すれば | 00 \rangle, | 01 \rangle, | 10 \rangle, | 11 \rangleの4状態の確率は密度演算子の対角成分に示された通りになるでしょう。

では、量子ビットAだけを測定した場合、量子ビットAの状態  | 0 \rangle_A, | 1 \rangle_Aが測定される確率、またAの密度演算子 \rho^{A}はどのようになるでしょうか?という問題です。

結論としては次の式です。

\displaystyle{
\rho^{A} = \mathrm{tr}_B \left( \rho^{AB} \right)
}

Bについてだけトレースを取ります。(トレースアウトする、とよく言います。)

実際にはより具体的に \rho^{AB}の成分を計算する際に以下のように計算します。

\displaystyle{
\mathrm{tr}_B \left( | a_i \rangle \langle a_j | \otimes | b_k \rangle \langle b_l | \right) = | a_i \rangle \langle a_j | \mathrm{tr} \left( | b_k \rangle \langle b_l | \right)
}

もしくは \rho^{AB} = \rho^{A} \otimes \rho^{B}のように簡単に表せる場合は以下で計算できます。


\begin{aligned}
\rho^{A} &= \mathrm{tr}_B \left( \rho^{A} \otimes \rho^{B} \right) \\
&= \rho^{A} \mathrm{tr} \left( \rho^{B} \right) \\
&= \rho^{A} \left( \because \mathrm(tr) \left( \rho^{B} \right) = 1 \right)
\end{aligned}

Bell状態を使った具体例

Bell状態の一つ

\displaystyle{
| \psi \rangle = \frac{1}{\sqrt{2}} \left( | 00 \rangle + | 11 \rangle \right)
}

の密度演算子は以下です。


\begin{aligned}
\rho^{AB} &= \frac{1}{2} \left( | 00 \rangle + | 11 \rangle \right) \left( \langle 00 | + \langle 11 | \right) \\
&= \frac{1}{2} \left( | 00 \rangle \langle 00 | + | 11 \rangle \langle 00 | + | 00 \rangle \langle 11 | + | 11 \rangle \langle 11 | \right) \\
\end{aligned}

これを実際に Bについてトレースアウトすると以下です。


\begin{aligned}
\rho^{A} &= \mathrm{tr}_B \left( \rho^{AB} \right) \\
&= \frac{1}{2} \left\{ \mathrm{tr}_B \left( | 00 \rangle \langle 00 |  \right) + \mathrm{tr}_B \left( | 11 \rangle \langle 00 | \right) + \mathrm{tr}_B \left( | 00 \rangle \langle 11 | \right) + \mathrm{tr}_B \left( | 11 \rangle \langle 11 | \right) \right\} \\
&= \frac{1}{2} \left\{ \mathrm{tr}_B \left( | 0 \rangle \langle 0 | \otimes | 0 \rangle \langle 0 | \right) + \mathrm{tr}_B \left( | 1 \rangle \langle 0 | \otimes | 1 \rangle \langle 0 | \right) + \mathrm{tr}_B \left( | 0 \rangle \langle 1 | \otimes | 0 \rangle \langle 1 | \right)  + \mathrm{tr}_B \left( | 1 \rangle \langle 1 | \otimes | 1 \rangle \langle 1 | \right)\right\} \\
&= \frac{1}{2} \left\{ | 0 \rangle \langle 0 | \mathrm{tr} \left( | 0 \rangle \langle 0 | \right) + | 1 \rangle \langle 0 | \mathrm{tr} \left( | 1 \rangle \langle 0 | \right) + | 0 \rangle \langle 1 | \mathrm{tr} \left( | 0 \rangle \langle 1 | \right) + | 1 \rangle \langle 1 | \mathrm{tr} \left( | 1 \rangle \langle 1 | \right) \right\} \\
&= \frac{1}{2} \left( | 0 \rangle \langle 0 | \langle 0 | 0 \rangle + | 1 \rangle \langle 0 | \langle 0 | 1 \rangle + | 0 \rangle \langle 1 | \langle 1 | 0 \rangle + | 1 \rangle \langle 1 | \langle 1 | 1 \rangle \right) \\
&= \frac{1}{2} \left( | 0 \rangle \langle 0 | + | 1 \rangle \langle 1 | \right)
\end{aligned}

ということで、量子ビットAは | 0 \rangle | 1 \rangleがそれぞれ確率 1 / 2で観測されます。 また

\displaystyle{
\mathrm{tr} \left\{ \left( \rho^{A} \right)^2 \right\} = \frac{1}{2}
}

から、この状態は混合状態だということがわかりました。

このBell状態を使った例は計算結果と実際に測定される状態のイメージがつきやすいわかりやすい例でしたが、この部分トレースという方法は一般の自明でない状態についての確率を予め計算から見積もりたい時に強力なツールとなります。

まとめ

今回は密度演算子の基礎について説明しました。

  • 密度演算子は各状態の確率を示す演算子
  • 密度演算子のトレース(全状態の確率の和)は1
  • 密度演算子の対角成分は非負
  • 密度演算子の自乗のトレースを計算することでその状態が純粋状態か混合状態かを見分けることが可能
  • 部分的に量子ビットを測定する場合の密度演算子は測定しない量子ビットの分を部分トレースすることで計算可能

次回はこれらを用いてアダマールテストについて解説する予定です。

また、今年、2022年4月よりフリーランスのデータサイエンティストとして活動することになりました。
量子アプリケーション開発というものはまだ市場がほとんどありませんので、主な事業は通常のシステム開発人工知能アプリケーション開発、またデータ分析の業務委託です。
このブログでの機械学習や量子計算・量子コンピュータについての解説や情報発信は引き続き行いますので、今後とも読んでいただけますと嬉しいです。

私の事業用のホームページがこちらになります。

sakuma.wraptas.site

参考文献