Share via


Kuantum kahinleriyle çalışma ve bu kahinleri tanımlama

Kahin O$$, başka bir algoritmaya giriş olarak kullanılan kullanıma sunulmayan bir işlemdir. Bu tür işlemler genellikle bir n$ bit ikili girişi alan $ve m-bit$ ikili çıktısı üreten $klasik bir işlev $f : \{0, 1\}^n \to \{0, 1\}^m$ kullanılarak tanımlanır. 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çin O\ket{tanımlamayı $deneebilirsiniz, ancak bu yöntemin birkaç sorunu 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'ler için f(x) = f(y$)$ ise$, O $\ket{x}= O\ket{y}$ ama $O^ O x\ne} O\ket{^\dagger\dagger O\ket{y.}$$= Bu, O^\dagger$ adjoint işlemini $oluşturamayacağınız ve kahinlerin onlar için tanımlanmış bir ad birleşimine sahip olması gerekebileceği anlamına gelir.

Bir kahini hesaplama temeli durumları üzerindeki etkisine göre tanımlama

Yanıtı tutmak için ikinci bir m$ kubit yazmaçları $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 = O^\dagger$ yapım aşamasındadır ve önceki sorunların ikisini de çözmüş olursunuz.

İpucu

O O^'yi görmek $için, tüm a, b{\in 0, 1}$ için $\oplus b \oplus b = a'dan$ sonra $O^2'ye\mathbf{1}$=dikkat edin$.{\dagger}$= Sonuç olarak, $O \ket{x}\ket{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 bir kahini bu şekilde tanımlamak, O'un}$$ diğer herhangi bir durum için nasıl $davrandığı da 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{ ile $tanımlanan Hadamard işlemini göz önünde bulundurun. H'nin +}$ üzerinde $\ket{nasıl $davrandığını öğrenmek istiyorsanız, H'nin$ doğrusal olduğunu $kullanabilirsiniz.$

$$\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$ tanımlarken, n + m$ kubitlerindeki $tüm durumların $\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 oracle $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 bir kayıt üzerinde işlem tabanlı x durumunda $\ket{}$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, f tek kubitli bir işlev $$için 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)}'a dikkat edin.$

Daha genel olarak, oracle'ların her iki 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, büyük ölçüde bu kahinin belirli bir algoritmada nasıl kullanılacağına bağlıdır. Örneğin , Deutsch-Jozsa algoritması ilk olarak 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 tartışması.

Sonraki adımlar