らんだむな記憶

blogというものを体験してみようか!的なー

2022-01-01から1ヶ月間の記事一覧

逆量子 Fourier 変換 (1)

先へ進みたいが、逆 Fourier 変換の回路図を押さえておきたいので、量子 Fourier 変換 - らんだむな記憶 の内容を可視化したい。Quantum Fourier Transform のコードをそのまま利用する。 import numpy as np from numpy import pi # importing Qiskit from …

DVD-Video 作成

もう久しく・・・20 年くらい?DVD-Video なんて焼いてないけど。 【2022年最新版】誰でもできる!MP4をDVDに書き込む方法 mp4をDVDへ書き込む方法!DVDに変換するフリーソフトもご紹介|思い出レスキュー|写真プリントはカメラのキタムラ あたりを見ると、…

Qiskit (31) ― 量子位相推定

量子位相推定に突入。ユニタリ演算子 $U$ と固有ベクトル $\ket{\psi}$ が与えられた時に、固有値の位相(従って固有値そのもの)を求めるアルゴリズムであるとのこと。つまり、$U \ket{\psi} = e^{2 \pi i \theta} \ket{\psi}$ の $\theta \in [0, 1)$ を推…

量子 Fourier 変換

Qiskit (30) - らんだむな記憶 で詳細は端折ったが、少し分りにくい計算ではあるので、備忘録として $n=3$ の時について確認してみる。$$ \begin{align*} | \tilde{k} \rangle &= U_{QFT} \ket{k} \\ &= \frac{1}{\sqrt{2^3}} (\ket{0} + e^{2 \pi i k \frac…

Qiskit (30) ― 量子 Fourier 変換

計算はさぼってそのまま書き出すとして、n 量子ビットでの量子 Fourier 変換は$$ | \tilde{k} \rangle = U_{QFT} \ket{k} = \frac{1}{\sqrt{N}} (\ket{0} + e^{2 \pi i k \frac{1}{2^1}} \ket{1}) \otimes (\ket{0} + e^{2 \pi i k \frac{1}{2^2}} \ket{1}) …

離散 Fourier 変換

離散 Fourier 変換について確認してみたい。簡単のため長さ 3 の複素数列 $\{x_0, x_1, x_2\}$ を考える。$$ \begin{align*} y_m = \sum_{k=0}^2 x_k e^{-2 \pi i \frac{mk}{3}},\ 0 \leq m \leq 2 \tag{1} \end{align*} $$と置く。次に $\{y_0, y_1, y_2\}$…

Qiskit (29) ― 量子 Fourier 変換

通常の Fourier 変換は\begin{align*} \hat{f}(y) = \int f(x) e^{2\pi i xy} dy \end{align*}と書けるのであった。ここでは書籍との整合性のために、指数部の $-1$ を消している。これを元に、離散 Fourier 変換*1を書くと\begin{align*} y_j = \frac{1}{\s…

Qiskit (28) ― Simon のアルゴリズム

Simon のアルゴリズムの確認の最後として 1-to-1 の場合を見る。書籍のコードでは 1-to-1 の条件なら何でも良いということでランダム気味な回路が作られる。ある時に作られた回路を見る:この時に 1 つ目のレジスタを測定するとというようにすべての量子状態…

Qiskit (27) ― Simon のアルゴリズム

書籍のコードと同様に textbook のコードでも $U_f: \ket{x}\ket{0} \to \ket{x} \ket{f_s(x)}$ と 2-to-1 の時に $f_s(s^*) = f_s(0)$ であることを確認する。オラクルの問い合わせ関数だけの回路を通すと 2 つ目のレジスタから $\ket{f_s(x)}$ が観測され…

Qiskit (26) ― Simon のアルゴリズム

漸く実装を見ていく。その前に Simon's Algorithm がとても分りやすく感じるのでこれをみてから実装に入るのが良いだろう。tools/__init__.py#L26-L41 で定義された simon_oracle がなかなか。textbook での $Q_f$、書籍での $U_f$ にあたるものだ。書籍のコ…

Qiskit (25) ― Simon のアルゴリズム

さて、書籍 p.125 によると異なる 1st レジスタの値を $n$ 個 ($y_1,\cdots,y_n$) 測定できたとすると、以下の $\mod2$ の方程式が Gauss の消去法 (吐き出し法) などで解けるとのことである。\begin{align*} \begin{cases} y_1 \cdot s &= 0 \\ &\vdots \\ …

Qiskit (24) ― Simon のアルゴリズム

書籍 p.125 からがよく分からない。また、Simon's Algorithm を見ると書籍と条件が違うように見える。書籍では $x^\prime = x \oplus s \Rightarrow f_s(x) = f_s(x^\prime)$ だが、Qiskit-textbook ではちょっと形が違う。書籍の条件だと、$x^\prime = x \o…

Qiskit (23) ― Simon のアルゴリズム

Simon のアルゴリズムに突入。サイモンのアルゴリズム も参考にしたい。 $s \in \{0,1\}^n$ に対し、$f_s: \{0,1\}^n \to \{0,1\}^n$ を考える。 オラクル $f_s$ に対するユニタリゲートは・・・書籍のは誤植っぽく見える書き方だが、ここまでの書き方に倣う…

Qiskit (22) ― Bernstein-Vazirani アルゴリズム

Bernstein-Vazirani アルゴリズムに突入。ベルンシュタイン・ヴァジラニ アルゴリズム も参考にしたい。ここでも $a \cdot x$ はそれぞれの 2 進表現 $\{a_i\}$, $\{x_i\}$ に関する 2 を法とする内積 $\sum_i a_i x_i \mod 2$ として考える。数式類は Deuts…

Qiskit (21) ― Deutsch-Jozsa アルゴリズム

Deutsch-Jozsa アルゴリズムのコードではゲートの用意から測定までが入り混じったコードになっていて、コードを実行しても「ふぅん・・・」という感想になってしまったので、少し書き換えて barrier を挟んでみた: n = 3 # オラクル f の定義 oracle = "b" i…

VS Code で MathJax

VS Code はデフォルトで KaTeX をレンダラに使っているらしい。KaTeX についてはよく分かっていないので今回は MathJax を利用したい。このためには、Markdown Preview Enhanced を使えば良いらしい。KaTeX がデフォルトのレンダラであることは同じだが、Mat…

Qiskit (20) ― Deutsch-Jozsa アルゴリズム

Deutsch-Jozsa アルゴリズムの回路を見る前におさらいをしたい。ここだけの記号として $S_n = \{0, 1\}^n$ と置く。 今回 $f: S_n \to \{0, 1\}$ なる、定数あるいはバランス関数を考えるのであった。こういうコンテキストでは $f$ は “オラクル” と呼ばれる…

Qiskit (19) ― Deutsch-Jozsa アルゴリズム

前回の続き。$\oplus$ をここでは XOR と考えることにする。$x_1, x_2,\cdots, y_1, y_2, \cdots \in \{0,1\}$ とする時に、\begin{align*} \bigoplus_{i=1}^n x_i y_i \equiv \sum_{i=1}^n x_i y_i \mod2 \tag{1} \end{align*}が成立するのかを見たい。 ま…

Qiskit (18) ― Deutsch-Jozsa アルゴリズム

書籍 p.114 に謎の式が出てくる。\begin{align*} H^{\otimes n} \ket{x} = \frac{1}{\sqrt{2}^n} \sum_{y=0}^{2^n-1} (-1)^{x\cdot y}\ket{y} \tag{1} \end{align*}が気になるので確認してみよう。ここで $\ket{x}$ は $n$ 量子ビットのテンソル積であること…

Qiskit (17) ― Deutsch-Jozsa アルゴリズム

Deutsch-Jozsa アルゴリズムの話。ドイチ-ジョサのアルゴリズム も参考にしたい。$\ket{\psi_0} = \ket{0}^{\otimes n}\ket{1}$ として\begin{align*} \ket{\psi_1} &= H^{\otimes n + 1}\ket{\psi_0} \\ &= (H\ket{0})^{\otimes n} H\ket{1} \end{align*}を…

Jacques Salomon Hadamard

ジャック・アダマール - Wikipedia によると、アダマールゲートのアダマールは偏微分方程式論の適切性で知られるアダマールらしい。アマダール行列の最初の例はシルヴェスターの慣性法則で知られる James Joseph Sylvester によって作られたのだとか。初めて…

Qiskit (16)

\begin{align*} \ket{0}^{\otimes n} = \overbrace{\ket{0} \otimes \cdots \otimes \ket{0}}^{n} \end{align*}ということに注意して読み進めていきたい。p.106 から量子テレポーテーション。概要がざっくりしていてイメージしにくい。ニールセン&チャン I p…

Qiskit (15)

$\mathrm{CNOT}_{1,2} \mathrm{CNOT}_{2,1} \mathrm{CNOT}_{1,2}$ を計算したい。$\mathrm{CNOT}_{1,2} = \ket{0}\bra{0} \otimes I + \ket{1}\bra{1} \otimes X$, $\mathrm{CNOT}_{2,1} = I \otimes \ket{0}\bra{0} + X \otimes \ket{1}\bra{1}$ を使って計…

Qiskit (14)

$H_2 \mathrm{CNOT}_{1,2} H_2$ を計算したい。$X = \ket{0}\bra{1} + \ket{1}\bra{0}$, $Z = \ket{0}\bra{0} - \ket{1}\bra{1}$, $H = \frac{1}{\sqrt{2}}(X+Z)$, $\mathrm{CNOT} = \ket{0}\bra{0} \otimes I + \ket{1}\bra{1} \otimes X$ からうまく計算で…

Qiskit (13)

書籍 p.88 まで進むと、急に qc.barrier() が出てきて(絵的には既に何度か登場しているようだが)よく分からないので、Qiskit textbook のほうも読んでみたい・・・。qiskit.circuit.QuantumCircuit.barrier — Qiskit 0.34.1 documentation を見てもよく分…

Qiskit (12)

書籍 p.82 のコードの通りだと現時点でうまくバックエンドを掴めない。 from qiskit import IBMQ provider = IBMQ.load_account() try: backend = provider.get_backend('ibmq_5_yorktown') print(backend.configuration().basis_gates) except: available_c…

PyTorch 公式チュートリアル

GitHub - YutaroOgawa/pytorch_tutorials_jp: PyTorch公式チュートリアル(日本語翻訳版)の各ノートブックファイル(Google Colab用)です こんなものが。

AWS Web 問題集

AWS

AWS WEB問題集で学習しよう こういうのがあるのか。普段そこそこ触っていても全然ダメだな。数値的なものとか全然意識してないや。Free Exam Prep By IT Professionals | ExamTopics これも良いんだとか・・・。

Qiskit (11)

backend = Aer.get_backend('qasm_simulator') shots = 1024 result = sim.run(qc, backend=backend, shots=shots).result() answer = result.get_counts() print(answer) 現時点では Qiskit (8) - らんだむな記憶 で触れた aer_simulator との差が分かって…

Qiskit (10)

複数量子ビットともつれ状態 を読んでいき、unitary_simulator のところまで来た。 qc = QuantumCircuit(2) qc.h(0) qc.x(1) qc.draw('mpl') は次のような回路で表される。これについて backend = Aer.get_backend('unitary_simulator') unitary = execute(q…