Algorithm & Code Sharing ⋅ Writings ⋅ Arts ⋅ About |
Algoritma Quantum Fourier Transform n-Qubits Quantum Fourier Transform (QFT) adalah sebuah transformasi yang mengubah dari Computational basis (Z basis) menjadi Fourier basis. Banyak algoritma Quantum yang menggunakan QFT, sebagai contoh adalah algoritma Shor dan Quantum Phase Estimation (QPE). Persamaan QFT adalah sebagai berikut: $$QFT_N\ket{\psi} = \frac{1}{\sqrt{N}} \sum_{x=0}^{N-1} \exp\left(\frac{2\pi i kx}{N}\right) \ket{x}$$ Dimana \(N = 2^n\), \(n\) adalah jumlah Qubit. State \(\ket{\psi} = \ket{\psi_0 \dots \psi_{n-1}}\). Sebagai contoh adalah \(n = 2, N = 4, \ket{\psi} = \ket{01}\), \(k = 1\), maka \(QFT_4\ket{\psi}\) adalah sebagai berikut: $$\begin{aligned}QFT_4\ket{\psi} & = \frac{1}{\sqrt{4}} \sum_{x=0}^{3} \exp\left(\frac{2\pi i kx}{4}\right) \ket{x} \\ & = \frac{1}{2} \sum_{x=0}^{3} \exp\left(\frac{2\pi i kx}{4}\right) \ket{x}, \ \text{dimana masing-masing} \ \ket{x} = \ket{0}, \ket{1}, \ket{2}, \ket{3} \\ & = \frac{1}{2} \left[ \exp \left(0\right) \ket{0} + \exp \left(\frac{\pi i}{2}\right) \ket{1} + \exp \left(\pi i\right)\ket{2} + \exp \left(\frac{3 \pi i}{2}\right) \ket{3} \right] \end{aligned}$$ Ingat bahwa dalam persamaan Euler \(e^{i\theta} = \cos \theta + i \sin \theta\), dan \(\ket{0} = \ket{00}, \ket{1} = \ket{01}, \ket{2} = \ket{10}, \ket{3} = \ket{11}\), maka: $$QFT_4\ket{\psi} = QFT_4\ket{01} = \frac{1}{2} \left[\ket{00} + i\ket{01} - \ket{10} - i\ket{11} \right]$$ Implementasi Quantum Circuit untuk QFT 2-Qubit dan 3-Qubit adalah sebagai berikut: Source Code: from qiskit import * from qiskit.visualization import plot_bloch_multivector, plot_histogram from math import pi import matplotlib.pyplot as plt def qft(circuit, n): qft_rotations(circuit, n) qft_swap(circuit, n) def qft_rotations(circuit, n): if n == 0: return n -= 1 circuit.h(n) for qubit in range(n): circuit.cu1(pi / 2 ** (n - qubit), qubit, n) qft_rotations(circuit, n) def qft_swap(circuit, n): for qubit in range(n // 2): circuit.swap(qubit, n - qubit - 1) n = 2 qc = QuantumCircuit(n) qc.x(0) qft(qc, n) qc.draw('mpl') backend = Aer.get_backend('statevector_simulator') final_state = execute(qc, backend).result() plot_bloch_multivector(final_state.get_statevector()) plt.show() Lihat semua daftar ACS - Download: qft.py - Tanggal: 19 April 2020 - Kategori: Quantum Computing |
© 2025 Muhammad Faruq Nuruddinsyah. All rights reserved. |