Fungsi QuantumROM
Peringatan
Dokumentasi ini mengacu pada QDK Klasik, yang telah digantikan oleh QDK Modern.
Silakan lihat https://aka.ms/qdk.api dokumentasi API untuk QDK Modern.
Namespace: Microsoft.Quantum.Preparation
Paket: Microsoft.Quantum.Standard
Peringatan
QuantumROM sudah tidak digunakan lagi. Silakan gunakan fungsi PurifiedMixedState sebagai gantinya.
Menggunakan teknik Quantum ROM untuk mewakili matriks kepadatan tertentu.
Mengingat daftar koefisien $N$ $\alpha_j$, ini mengembalikan unitary $U$ yang menggunakan teknik Quantum-ROM untuk menyiapkan perkiraan $\tilde\rho\sum_{j=0}^{N-1}p_j\ket{j}\bra{j}$ dari pemurnian matriks kepadatan $\rho=\sum_{j=0}^{N-1}\frac{|alpha_j|} {\sum_k |\alpha_k|} \ket{j}\bra{j}$. Dalam perkiraan ini, kesalahan $\epsilon$ sia-sia sehingga $|p_j-\frac{|alpha_j|} {\sum_k |\alpha_k|}|\le \epsilon / N$ dan $|\tilde\rho - \rho| \le \epsilon$. Dengan kata lain, $$ \begin{align} U\ket{0}^{\lceil\log_2 N\rceil}\ket{0}^{m}=\sum_{j=0}^{N-1}\sqrt{p_j} \ket{j}\ket{\text{garbage}_j}. \end{align} $$
function QuantumROM (targetError : Double, coefficients : Double[]) : ((Int, (Int, Int)), Double, ((Microsoft.Quantum.Arithmetic.LittleEndian, Qubit[]) => Unit is Adj + Ctl))
Input
targetError : Ganda
Kesalahan target $\epsilon$.
koefisien : Double[]
Array koefisien $N$ yang menentukan probabilitas status dasar. Angka negatif $-\alpha_j$ akan diperlakukan sebagai positif $|\alpha_j|$.
Output : ((Int,(Int,Int)),Double,(LittleEndian,Qubit[]) =>Unit is Adj + Ctl)
Parameter pertama
Tuple (x,(y,z))
di mana x = y + z
adalah jumlah total kubit yang dialokasikan, y
adalah jumlah qubit untuk LittleEndian
register, dan z
merupakan Jumlah qubit sampah.
Parameter kedua
$\sum_j satu norma |\alpha_j|$ dari array koefisien.
Parameter ketiga
Unitary $U$.
Contoh
Cuplikan kode berikut menyiapkan pemurnian status $3$-qubit $\rho=\sum_{j=0}^{4}\frac{|alpha_j|} {\sum_k |\alpha_k|} \ket{j}\bra{j}$, where $\vec\alpha=(1.0,2.0,3.0,4.0,5.0)$, dan kesalahannya adalah 1e-3
;
let coefficients = [1.0,2.0,3.0,4.0,5.0];
let targetError = 1e-3;
let ((nTotalQubits, (nIndexQubits, nGarbageQubits)), oneNorm, op) = QuantumROM(targetError, coefficients);
using (indexRegister = Qubit[nIndexQubits]) {
using (garbageRegister = Qubit[nGarbageQubits]) {
op(LittleEndian(indexRegister), garbageRegister);
}
}
Referensi
- Pengodean Spektra Elektronik di Sirkuit Quantum dengan Linear T Complexity Ryan Babbush, Craig Gidney, Dominic W. Berry, Nathan Wiebe, Jarrod McClean, Alexandru Paler, Austin Fowler, Hartmut Neven https://arxiv.org/abs/1805.03662