Aracılığıyla paylaş


Kuantum kahinlerini anlama

Kahin O$$, başka bir algoritmaya giriş olarak kullanılan kullanıma sunulmamış bir işlemdir. Genellikle, bu tür işlemler n$ bit ikili girişi alan $ve m bit ikili çıktısı üreten $klasik bir f işlevi $kullanılarak tanımlanır: \{0, 1\}^n \to \{0, 1\}^m$$. Bunu yapmak için belirli bir ikili girişi $göz önünde bulundurun x = (x_{0}, x_{1}, \dots, x_{n-1})$. Kubit durumlarını x=\ket{}}x_\ket{{0}}{\otimesx_x_\otimes{{1}}\otimes\cdots\ket{n-1}}$ olarak $\ket{\vec{etiketleyebilirsiniz.

İlk olarak O$ $x f(x=\ket{})}$'i tanımlamak için O\ket{tanımlayabilirsiniz$, ancak bu yöntemde birkaç sorun vardır. İlk olarak, $f$ farklı bir giriş ve çıkış boyutuna ($n \ne m$) sahip olabilir; örneğin, O'nun$ uygulanması $yazmaçtaki kubit sayısını değiştirebilir. İkinci olarak, n m olsa $bile işlev ters çevrilemez olmayabilir: bazı $x \ne y için f(x) = f(y$)$ ise$, O\ket{$ x=} O\ket{y}$ ama $O^\dagger O x\ne} O\ket{^\dagger O\ket{y.}$$= Bu, O^\dagger$ adjoint işlemini $oluşturamayacağınız ve kahinler için tanımlanmış bir adjoint olması gerekebileceği anlamına gelir.

Bir kahini hesaplama temeli durumları üzerindeki etkisiyle tanımlama

Yanıtı tutmak için ikinci bir m$ kubit kaydı $ekleyerek bu sorunların her ikisini de çözebilirsiniz. Ardından, kahinin tüm hesaplama temel durumları üzerindeki etkisini tanımlayın: tüm x \0, 1\}^n$ ve $y \in \{0, 1\}^m$,{\in $

$$\begin{\begin{align}O(\ket{x}\ket{\otimesy})\ket{= x\otimes}\ket{y \oplus f(x).} \end{align} $$

Şimdi $O = ^\dagger$ yapım aşamasındadır ve her iki önceki sorunu da çözmüş olursunuz.

İpucu

O^'yi ${\dagger}$görmek için, tüm a, b{\in 0, 1}$ için $\oplus b \oplus b = a'dan$ bu yana $O^2'nin\mathbf{1}$ =olduğunu unutmayın.$= Sonuç olarak, $O \ket{x}\ket{x y \oplus f(x)\ket{}=x}\ket{y \oplus f(x) \oplus f(x)}\ket{=x}\ket{y.}$

Önemli olan, her hesaplama temeli durumu $\ket{x}\ket{y}$ için bu şekilde bir kahin tanımlamak, O'un$ diğer herhangi bir durum için nasıl $hareket ettiğini de tanımlar. Bu davranış, tüm kuantum işlemleri gibi O'un $$da üzerinde işlem yaptığı durumda doğrusal olması gerçeğinden hemen sonra gelir. Örneğin, H +}$ ve $H=\ket{0}\ket{-}$=\ket{1}\ket{ tarafından $tanımlanan Hadamard işlemini göz önünde bulundurun. H'nin + üzerinde nasıl davrandığını öğrenmek istiyorsanız, bu H'nin $$ doğrusal olduğunu kullanabilirsiniz.$$\ket{}$$

$$\begin{align}H\ket{+}& =\frac{1}{\sqrt{{2}} H(\ket{0} + \ket{{1}) ={2}}\frac{1}{\sqrt{(H\ket{0} + H\ket{1}) \\& =\frac{1}{\sqrt{2}} (\ket{+} + \ket{{-}) =\frac12 ({0}\ket{ + + \ket{\ket{{0}{1} -{1}\ket{ ) . =\ket{{0} \end{align} $$

Oracle $O'sını$ tanımlarken, n + m$ kubitlerindeki $herhangi bir durumun $\ket{\psi}$ şöyle yazılabilmesini de benzer şekilde kullanabilirsiniz:

$$\begin{align}\ket{\psi}&Amp; =\sum_{x \in \{0, 1\}^n, y \in \{0, 1\}^m}\alpha(x, y) \ket{x}\ket{y}\end{\end{align}$$

burada $\alpha : \{0, 1\}^n \times \{0, 1\}^m \to\mathbb{C}$ , durumun $\ket{\psi}$katsayılarını temsil eder. Bu nedenle,

$$\begin{\begin{align}O \ket{\psi}&ve = O \sum_{x \in \{0, 1\}^n, y \in \{0, 1\}^m\alpha}(x, y) \ket{x\ket{}y\\&}amp; =\sum_{x \in \{0, 1\}^n, y \in \{0, 1\}^m}\alpha(x, y) O \ket{x}\ket{y\\&}amp; =\sum_{x \in \{0, 1\}^n, y \in \{0, 1\}^m\alpha}(x, y) \ket{x}\ket{y \oplus f(x)}. \end{align} $$

Aşama kahinleri

Alternatif olarak, O girişine dayalı bir aşama uygulayarak f'yi$ bir kahin$ $O'ya $$kodlayabilirsiniz$. Örneğin, O x (-1)^{f(x)\ket{}x} şeklinde\begin{align}\begin{$$ O}\ket{= tanımlayabilirsiniz.$$ \end{align} $$

Aşama kahini başlangıçta x}$ hesaplama temeli durumundaki $\ket{bir yazmaca göre hareket ederse, bu aşama genel bir aşamadır ve bu nedenle gözlemlenemez. Ancak böyle bir kahin, süper pozisyona veya denetimli bir işlem olarak uygulandığında güçlü bir kaynak olabilir. Örneğin, tek kubitli f işlevi$$ için bir faz kahini $O_f$ düşünün. Ardından , $$\begin{align} +amp; O_f \ket{}&= O_f (\ket{0} +{1}\ket{ ) /\\&\sqrt{{2} amp; = ((-1)^{f(0)}\ket{0} + (-1)^{f(1)\ket{1}}) /&\sqrt{2}\\ amp; = (-1)^{f(0)} ({0}\ket{ + (-1)^{f(1) - f(0){1}\ket{}) /\\{2}&\sqrt{ amp; = (-1)^{f(0)} Z^{f(0) - f(1)}\ket{+.} \end{align} $$

Not

$Z^Z^{-1}={\dagger}=Z$ ve dolayısıyla $Z^{f(0)-f(1)}=Z^{f(1)-f(0)}.$

Daha genel olarak, her iki kahin görünümü de yalnızca tek bir bit yerine gerçek sayılar döndüren klasik işlevleri temsil eden şekilde genişletilebilir.

Bir kahini uygulamanın en iyi yolunu seçmek, bu kahinin belirli bir algoritmada nasıl kullanılacağına büyük ölçüde bağlıdır. Örneğin, Deutsch-Jozsa algoritması ilk yoldan uygulanan kahini kullanırken Grover algoritması ikinci şekilde uygulanan kahini kullanır.

Daha fazla bilgi için Bkz. Gilyén ve diğerleri. 1711.00465'teki tartışma.