この記事について
- チームで過去に投稿した記事一覧をここで管理したいと思います
- 新たに記事を投稿する都度、このページもアップデートしていきたいと思います
なお、下記アドベントカレンダにて、1から順を追って説明していますので、
まずはこちらを見ていただければ幸いです。
投稿ログ一覧
概論
イメージでざっくり理解する量子コンピュータ
- 数式等を用いず量子コンピュータの量子ビットや並列計算をイメージでお伝えします。
- 正確性より分かりやすさを優先しており、補足事項は脚注に記載しています。
量子ゲート
初級編
マウスだけ!で作る量子テレポーテーション
- 最近ニュース等でも取り上げられる量子テレポーテーション
- 量子回路シミュレータを用いて、「マススだけ!」で作ってみようという記事です。
マウスだけ!で作る超高密度符号化実験
- 量子テレポーテーションの対となる、超密度符号化実験(Superdense coding)
- 量子回路シミュレータを用いて、「マススだけ!」で作ってみようという記事です。
パウリゲート(XZY)を細かく見てみる
- 導入として量子状態が複素数とketの線形結合で表現できる点説明しています
- 量子ゲート演算は、アダマールを導入する前にまずは、パウリゲートを説明しています
ブロッホ球と各種ゲートの関係
- Z基底以外のX,Y基底を導入しブロッホ球を用いて説明します
- そして、量子状態の重ね合わせがある・ない状況におけるゲートと基底の関係を整理します
- 状態遷移についてはチートシート形式で最後にまとめています
ブロッホ球とグローバル位相について
- 正規直交基底にたいしてパウリゲートを計算し、数式上、グローバル位相が出現することを確認します。
- ちょっと自信がない内容ですがコメント等頂ければ幸いです。
パウリゲートを各基底で書き下す
- パウリゲートXYZを、XYZ基底を用いて書き下しています。
- braket記法での計算の基本の「キ」にあたる部分と理解しています。
各基底(XYZ)間で行き来するメモ
- X基底→Z基底やその逆等の、基底間を行き来する計算のメモです。
- あまり、中身は有りません(計算過程のメモです。)
量子ゲートがユニタリーなわけ
- 基本の「キ」ですが、量子ゲートがユニタリーな理由を整理してみました。
- 時間発展での規格化条件の遵守がゲート演算にどう関係してくるかを考察します。
パウリゲートと線形代数と量子力学
- 線形代数の固有値問題、量子力学でのシュレディンガー方程式とゲート適用を見比べてみるという話です。
- 量子力学の方は若干自信が無いので、詳しい方、補足、コメント等お待ちしております。
その量子状態、もつれあってます?
- 2量子系について、もつれ合いのベル状態とそうでないものについて考察しています。
量子ビット、右から見るか?左から見るか?
- 量子ビットの位取りについて、最上位ビットを右にとるか左に取るか
- 流派によって扱いが異なるようで、その詳細について説明しています
制御ビット、右を使うか?左を使うか?
- 上記に合わせて、Controlled-Uゲートに関して制御ビットをどの位にとるか
- その場合のユニタリーゲートのテンソル積の形について説明しています
2量子制御ユニタリゲートチートシート
- 2量子系の制御ユニタリゲートのチートシートです
中級編
マウスで量子誤り訂正(①ビットフリップ)
- Shorの誤り訂正符号を理解するために、3回に分けて量子誤り訂正を議論します
- 1回目は、符号反転のビットフリップを扱います。
マウスで量子誤り訂正(②フェーズフリップ)
- 2回目は、位相反転のビットフリップを扱います。
マウスで量子誤り訂正(③Shorの誤り訂正符号)
- 1回目、2回目の誤り訂正回路を組み合わせ、Shorの9bit誤り訂正符号を理解します。
量子誤り訂正(Stabilizer code/スタビライザー符号)
- Shorの誤り訂正符号に続き、スタビライザー符号を扱います。
- スタビライザー群、生成元等が出てくるので、群論や部分群の超入門から始めます。
アダマールテストと位相キックバック
- kitaevの量子位相推定アルゴリズム($QPE$)等のベースとなる位相キックバックを説明します。
- Controlled-Uの制御ビットに重ね合わせ状態を与えると、相対位相として固有値を得られる面白い仕組みです。
Grover Search①:Oracleを丁寧に説明してみる
- Groverの探索アルゴリズムについて、処理の構成などを説明しています。
- Oracleが答えをカンニングしているのでは?といった疑念が持たれがちですがその点も考察しています。
Grover Search②:Oracle work bit(補足記事)
- 上記記事では、$CtrlZ$でOracleを構成しましたが、$CtrlZ$では位相反転出来ない状況があります。
- そういった状況に備えて、補助ビットを用いたOracleの指定を説明しています。
Grover Search③:3-bit Grover Search(補足記事)
- 最後に、3bit版のGrover Searchを確認していきます。
- 探索対象データが増えるので、Grover Operatorの適用回数も増えます。
「いい塩梅」が重要なGrover Search
- Grover Searchはデータ数Nに対して、$O(\sqrt{N})$のオペレータ適用でデータ検索ができますが
- 実際にはオペレータの適用回数が$\sqrt{N}$回よりも、大きくても小さくても、所望の状態を得られない。が実際であり事実であると理解しています。
- この塩梅について、実験結果とともに説明しています。
量子ゲートテレポーテーション
- 量子テレポーテーションは量子状態を転送しますが、ゲートテレポーテーションはゲートの作用を転送します。
- 量子ビットに直接ゲートを作業させることなく、ゲートの作用や効果をどのように量子状態に反映するか見ていきます。
分数ゲート?の計算方法
- $X^{1/2},X^{1/4}$の手計算の方法を説明しています。
- ニッチな記事ですが、ご興味あれば。
Vゲートとは?
- Vという見慣れないゲートですが、IonQで実装されているようです。
- 何者かを見ていきます。小ネタです。
Hadamardゲートとはどんな回転なのか?
- Hadamardゲート。どんな回転か?を意識せずに使ってしまいがちですが、この動きについて詳しく見てみました。
- $Z^{\frac{1}{2}} = S = HVH$、$X^{\frac{1}{2}}=V= HSH$などの関係式の理解に苦しんでいる方は、お目通しいただければと。
Solovay-Kitaevの定理を「見える化?」する
- ユニバーサルゲートセット$\{H,T\}$が、そこそこの数あれば任意の量子状態に到達できるか?
- Solovay-Kitaevで語られる誤差$\varepsilon$での近似を、「見える化?」してみました。
応用編
QAOAと量子断熱計算
- リファレンスハミルトニアンとターゲットハミルトニアンについて、QAOA的な説明と、量子断熱計算的な説明を比較してみたという話です。
- リファレンスハミルトニアン(初期ハミルトニアン)って数式上どこに出てくるんだ?と感じられた方向けの記事です。
QAOAの回路を丁寧に計算しながら作る話
- QAOAでの回路やハミルトニアンについて、少数量子ビット(2,3qubit)で実際にテンソル積を計算してみたという話です。
- 実際に行列計算やテンソルの計算を進めることで、メカニズムが詳しく理解できます。
量子アニーリングとQAOAと、時々量子力学
- 量子アニーリングと量子ゲートでのQAOAを比較した記事です。
- 量子力学の概念とこれらがどう対応しているかも考察しています。
- (が、量子力学が専門ではないので、詳しい方補足いただければと)
量子コンピュータでRSA暗号を解くのに必要な物は?
- 量子コンピュータによるRSA暗号解読について、Googleの論文を参考にしながら必要なハードスペック等を考察します。
量子アニーリング
最適化
量子アニーリングマシンD-Waveで良い解を出すためのコツ(前編)
- D-Waveを用いた量子アニーリングにおいて所望の結果を得るため手筈をまとめています。
量子アニーリングマシンD-Waveで良い解を出すためのコツ(後編)
- D-Waveのパラメータチューニング(チェーン強度とサンプリング回数)についてまとめています。
機械学習
量子コンピュータを機械学習モデル(ボルツマンマシン)で利用する方法(その1)
- ボルツマンマシンを用いた機械学習を量子アニーリングで実装していきます。
- まずは、ボルツマンマシンの説明とD-Waveでの事例をご紹介しています。
量子コンピュータを機械学習モデル(ボルツマンマシン)で利用する方法(その2)
- D-Waveのサンプルとして公開されている、RBM(制限付きボルツマンマシン)を動かしていきます。
その他
D-Waveのキメラの各種表現とペガサスを見比べてみる
- D-Waveのキメラとペガサスのトポロジの話をまとめています
- ペガサスに関してはユニットセル単位で見ていくと意外に難しくなかったです
- 一方でユニットセル間の接続が変わっているのでそこを理解する必要があるのですが
マクドナルドの記事を量子コンピュータでやってみた
- こちらの記事を、D-WaveとFixstars Amplifyで最適化するという内容です。
- 小ネタですので、お手柔らかにお付き合いいただければと。
Amazon Braket系
入門編
AmazonBraketで学ぶ量子コンピュータ⓪
- Amazon Braketを利用するための環境準備についてまとめています
- 始められるかたは、こちらの記事から
AmazonBraketで学ぶ量子コンピュータ①
- Braket上で、量子もつれ(H+CNOT)を作っていきます。
- まずは、Jupyter上で動作するローカルシミュレータを動かしていきます。
AmazonBraketで学ぶ量子コンピュータ②
- Braket上で、量子もつれを連鎖的に発生させるGHZ回路の動きを見ていきます。
- ローカルシミュレータとともに、マネージドシミュレータ(SV1、TN1)も使っていきます。
AmazonBraketで学ぶ量子コンピュータ③
- いよいよ、Braket上で実機(IonQ、Regetti Aspen-8)を用いてベル状態を作っていきます。
- 各マシンで対応しているゲート演算についても触れています。
AmazonBraketで学ぶ量子コンピュータ④
- Braketでの、量子回路の確認方法や実行結果の確認方法等を見ていきます。
- また、実行結果の取り出し方についても触れていきます。
AmazonBarketで学ぶ量子コンピュータ⑤
- Braketで、超高密度符号化実験(Super Dense Coding)を扱っていきます。
- コーディングに加えて、数式的な説明も行っています。
Amazon Braket のゲート型量子コンピュータで指定できる量子回路
- Amazon Braketでは、IonQ、Rigetti Aspen-8と量子シミュレータであるSV1シミュレータでどんな量子回路を使うことができるかを確認する方法を示します。
- 記事作成日は 2021/01/18のものなのでその時に使えている量子回路群を示しています。
応用編
AWS Braket を使ってQAOAを実装してみる①
- Githubに公開されているAmazon Braketを利用したQAOAのサンプルコードの解説記事です
AWS Braket を使ってQAOAを実装してみる②
- ①で解説したQAOAのコードを一部修正し、線形項(ハミルトニアンでの対角項)の扱いを検討しています。
その他小ネタ
GHZ状態の作成回路のいろいろ
- すべて0とすべて1の重ね合わせであるGHZ状態を作成する回路はバリエーションがあるようです。
- 見つけたものを、列挙してみただけの記事です。
Rx(π/2)とHSHの結果が一致しない
- 言われてみれば当たり前なのですが、ブロッホ球だけ見ていると混乱します。
- グローバル位相分ズレているだけではあるのですが、、小ネタです。
qiskit.visualizationの関数まとめ
- qiskit の可視化系関数のまとめです。
qiskitのplot_state_paulivec(複数ビット時)
- plot_state_paulivecの複数量子ビットの計算の説明をしています。
量子回路をキレイにお手軽に作図したい
- 量子回路をお手軽に作図する方法をさがしました。
- 結論は、お手軽。。ではないのですが、環境構築不要のそこそこ良い方法を見つけられたかと。
QuTiPでブロッホ球を描くと歪む
- 投稿にブロッホ球を使いたく、QuTiPで描いてみたら歪んていたので対応まとめました
- matplotlibのダウングレードで対応できました
量子コンピュータの実機のロケーション
- 主にクラウドで提供されている量子コンピュータの実機の配置場所を公開情報を元に整理しています。
qutipで状態ベクトルをプロットする
- qutipでブロッホ球を書く際に、Qiskitやblueqatで計算した状態ベクトルの値をどう扱えばよいかわからなかったでメモにまとめました。
- 小ネタです。
Drag&Dropな量子回路シミュレータQuirk
- ブラウザベースでマウスで量子回路がつくれるシミュレータQuirkの操作方法を紹介しています