İşte kuantum bilgisayarda aritmetik işlemim.
Adım 1: İlgilendiğiniz şeyi yapan klasik bir devre bulun.
Bu örnekte, dolu bir toplayıcı.
Adım 2: Her klasik geçidi ters çevrilebilir bir geçide dönüştürün.
Çıktı bitlerinizi başlangıçtan itibaren sunun ve bunları CNOT'ler, CCNOT'lar vb. İle başlatın.
Adım 3: Geçici çıkışlar kullanın.
Örneğin, bir Grover oracle'nin -1 ile mi aşamada olup olmadığını kontrol etmek için bu ilaveyi yapıyorsanız, şimdi çıkış kobitinize bir Z geçidi uygulama zamanı.
Adım 4: Hesaplamak için yaptıklarınızın tam tersini yaparak ara değerlerden kurtulun.
Bu, devrenin genel algoritmanıza nasıl uyduğuna bağlı olarak, çıkış bitlerinden kurtulmayı da içerebilir veya içermeyebilir.
Adım 5: (Bazen) sakladığınız her bir çıktı biti için bir girdi bitten kurtulun.
"Onları yere bırakma" demek istemiyorum, kesin olmaları için 0 olmalarına sebep olan işlemleri uygula.
Hesapladığınızda c+=a
, orijinal değerin bir kopyasını geride bırakmak c
kötü olma eğilimindedir. Tutarlılığı yok eder. Bu yüzden toplayıcı devrenize (ya da her neyse) bakmalı ve girdi bitlerinden kurtulmak için çıktı bitlerini kullanmanın bir yolu olup olmadığını düşünmelisiniz. Örneğin c+a
, hesapladıktan c
sonra , istenmeyen bir kopyasını saklayan bir kayıt defterine r, xor r veya geçici bir yerinden çıkarma işlemi yapabilir , ardından geçici çıkarma işlemini geri alabilirsiniz.
("Çıktınızı korursanız, girdilerinizin çoğunu tutmuyorsunuz" un dikkate değer bir istisnası Shor'ın algoritmasıdır. Shor'un algoritması, girişini bilerek , ancak dönem bulmaya yardımcı olan çok özel bir şekilde deşifre eder .)
Adım 6: Verimli olun
5. adımda, yerinde bir toplama işlemi yapıp ardından geçici bir yerde çıkarma işlemini yaparak bir kurum içi ilavenin girişini hesaplayamayacağınızı söyledim. Bu biraz saçma. Genel ekleme işlemi 4n litrelik yayılmaya devam edecektir (n tutmak a
, n tutmak c
, n tutmak c+a
, n tutmak için (c+a)-a
). Daha zeki değilseniz, içine her şeyi sığabilecek 2n
qubits ya da (biraz daha kolay) içine 2n+1
qubits :