Bir n-bit girişine nasıl izin verilir (yeniden karıştırılır)?


14

Giriş olarak bir n-bit dizisi alır ve çıkış olarak bu n-bit dizisinin bir karma (izin verilen) sürümünü üreten bir kuantum algoritması ile ilgileniyorum.

Örneğin, giriş 0,0,1,1 ise (bu durumda n = 4), o zaman olası cevaplar:

  • 0,0,1,1
  • 0,1,0,1
  • 0,1,1,0
  • 1,0,0,1
  • 1,0,1,0
  • 1,1,0,0

Mümkün olan tüm geçerli çıkışlar arasından rastgele seçilen tek bir çıkışın oluşturulması gerektiğini unutmayın.

Bu en iyi nasıl bir kuantum algoritmasında uygulanabilir ?

Bunun için bir çözüm , eşit sayıda 1-bit ile 2 n-bit dizisi üreten bir kuantum algoritması nasıl oluşturulur? . Ancak bu çözümün sorunu, bunun (n2) yardım kubasını gerektirmesidir ki bu da n büyükse hızla büyür.

Not:

  • Lütfen, klasik algoritmanın adımlarının evrensel bir kuantum bilgisayarı ile nasıl eşleştirilebileceğine dair herhangi bir açıklama yapmadan klasik bir algoritma sunmayın.
  • benim için "olası tüm iyi çıktılar arasından rastgele seçilmiş" yorumlamak için 2 iyi yol vardır : (1) olası her iyi çıkışın seçilme şansı eşittir. (2) olası her iyi çıktının seçilme şansı> 0'dır.

1
Giriş uzunluğu ikili bir dizge olup bit 1'ler bulunmaktadır ve çıkış herhangi bir bunun muhtemel permütasyonları? Bu, 1 adımda klasik bir bilgisayarda yapılabilir. İstediğiniz musunuz alll olası çıkışları? nk(nk)1
user1271772

Hayır, tüm olası çıktılar arasından rastgele seçilen tek bir çıktı oluşturulmalıdır.
JanVdA

Klasik bir algoritma yeterince iyi olur mu? (Yine de bir kuantum bilgisayarda çalıştırabilirsiniz.) Yoksa sth'ye ihtiyacınız var mı. hangisi en iyi klasik algoritmadan daha iyi performans gösterir?
Norbert Schuch

1
@JanVdA: Neden sadece herhangi bir 1 ve 0 seçip ikisini klasik bir bilgisayarda değiştirmiyorsunuz?
user1271772

1
İstediğiniz rastgele dağılımı belirtmediğiniz için, bunları burada bırakacağım: Dilbert ve XKCD ;)
Ali

Yanıtlar:


4

Bu satırlar boyunca ek ile yapılabilir :logn

  1. Ek qubitleri , rasgele bir şekilde seçilen sayısını kodlayacak şekilde dönüştürün.k{0,,n1}

  2. Giriş kubitlerini döngüsel olarak kez kaydırın .k

  3. Orijinal giriş kübitlerinin sonuncusunun, geri kalan 1'lerine bir çıktı ve özyineleme olarak sabitlenmesine izin verin .n1

Bu klasik bir algoritmadır, ancak Norbert'in bir yorumda önerdiği gibi, onu kuantum bir bilgisayarda çalıştırabilirsiniz. (Algoritmanın kuantum olduğu konusunda kararlı olan soru bana hala açık değil, bu yüzden bir kuantum bilgisayarda önerdiğim gibi klasik bir algoritma çalıştırmak yeterli değilse, sorunun açıklığa kavuşturulmalıdır.)

Soru rastgele bir çıktı istediğinden, algoritmanın muhtemelen bir noktada entropi üretmek zorunda kalacağını, muhtemelen ölçümler yoluyla veya kübitler üzerinde diğer üniter olmayan işlemleri (örneğin başlatma) gerçekleştirmesi gerektiğini unutmayın. Yukarıdaki algoritmada entropi üreten ilk adımdır: 1. adımdaki işlem yapılmadan önce ek kubitlerin durumuna bakılmaksızın, durumuna sahip olmalıdırlar. , 1. adım gerçekleştirildikten sonra ( ikili kodlanmış olarak diyelim).

1nk=0n1|kk|
k

Cevap için teşekkürler. Sorun için gerçek bir kuantum algoritmasıyla ilgileniyorum - eğer klasik algoritmanın üzerinde bir kuantum programına eşleyebilirseniz, o zaman da iyi ama bunu nasıl yapacağım hakkında hiçbir fikrim yok.
JanVdA

2
Bence soru şimdi odaklanıyor: Gerçekten bir algoritma aramıyorsunuz, kod arıyorsunuz. Tarif ettiğim şey bir algoritma ve kalan görev, bu algoritmayı (veya farklı bir algoritmayı) bir dilde kod olarak veya bir kuantum devresinin düşük seviye açıklaması olarak uygulamaktır. Bunu daha açık hale getirmek için soruyu gözden geçirmenizi öneriyoruz - ancak birisinden sizin için sıkıcı ve kavramsal olarak ilginç bir iş yapmasını istediğinizi unutmayın. Bunu kendiniz nasıl yapacağınızı öğrenmenin alternatifi göz korkutucu görünebilir, ancak uzun vadede daha iyi bir çözüm olabilir.
John Watrous

Soruya bir not ekledim. Sanırım kuantum algoritması kavramını farklı yorumladık . Benim için a_classical algoritması: Bir değil kuantum algoritması ama dönüþtürülmelidir olabilir kuantum algoritması .
JanVdA

@JanVdA: Kuantum algoritması ile ne demek istiyorsun? Örneğin, en az bir geçidi içermesini mi istiyorsunuz ? Yoksa en az bir geçidi gerektirdiğini mi? Yoksa başka bir özel kapı seti gerektiriyor mu? Bu algoritmanın hangi geçit kümesini kullanmasını istiyorsunuz? HY
user1271772

Kuantum algoritması, evrensel bir kuantum bilgisayarı için bir programla eşleştirilebilen (adım düzeyinde) bir algoritmadır. Kuantum algoritmasının adımlarının girişi ve çıkışı kübittir (veya bir kubit serisine eşlenebilir). Kuantum algoritmasının son adımı = kubitlerin değerlerini okumak (gözlemlemek) (böylece kübitler gerçek bitlerle eşleşir) Kapı setinde herhangi bir kısıtlama yoktur. Fikir, tüm algoritmanın evrensel bir kuantum bilgisayarda çalışabilmesidir.
JanVdA

3

Not: Bu cevap, permütasyonun tutarlı olmasını istediğiniz anlamına gelir, yani 1/3 yerine istiyorsunuz şansı, 1/3 şansı ve 1/3 şansı .13(|001+|010+|100)001010100

Bu görevi nasıl belirlediğinize dikkat edin, çünkü geri döndürülebilirlik kısıtlamaları nedeniyle çok kolay imkansız olabilir. Örneğin, girişi için GHZ durumunu . Ancak, ve girişi için GHZ durumunu da çıktılamak istiyorsanız , bu çalışmaz. Aynı çıkış durumuna birden fazla giriş durumu gönderemezsiniz (kod çözme olmadan). "Sadece 0000111 gibi sıralı artan girdileri önemsiyorum ama 1110000 veya 0010110 değil; bunlarla ne istersen yapabilirsin" dediğin sürece, bu iyi olacak.|001|31=13(|001+|010+|100)|010|100

Sıralanmış bir girdinin kuantum permütasyonunu üretmenin bir püf noktası, önce her biri tekdüze bir üst üste binmede tohum değerleri listesine bir sıralama ağı uygulayarak bir "permütasyon durumu" hazırlamaktır. Sıralama ağı, sıralanan tohumları tutan kübitler, aynı zamanda sıralama ağı karşılaştırmalarını tutan kübitler verir. Permütasyon durumu sadece karşılaştırma kubitleridir. Girişinize uygulamak için, girişi sıralama ağı üzerinden ters yönde çalıştırmanız yeterlidir. Burada bazı zor detaylar olduğunu unutmayın; bkz. " Fermiyonik Hamiltonyenlerin Özdeğerlerini Hazırlamak için Geliştirilmiş Teknikler ". Bu tekniği, yalnızca benzersiz değerler yerine tekrarlanan değerlere sahip girdiler üzerinde çalışacak şekilde genelleştirmeniz gerekir.

Ayrıca çok yakından bağlı olan " kuantum sıkıştırma ", içine bakmak isteyebilirsinizÜretmek istediğiniz durumları ( bitleri ayarlanmış tüm bit durumlarının tekdüze üst üste binmeleri ). Temel fark, kuantum sıkıştırma devresini ters yönde çalıştırmanız ve "kaç tane var?" "Bana doğru sayıdaki bir durumu ver" yerine.|nknk

Sanırım söylüyorum, bu tür devletleri üretmek beklediğinizden daha karmaşık. Bence bunun karmaşık olmasının sebebi, çıktılarınızdaki genliklerin büyüklüğünün, girdinizin hesaplama temel durumuna bağlı olmasıdır. Örneğin, için dört klasik durumun süperpozisyonu olan bir çıktı istersiniz, böylece içinde bir prefabtorunuz var . Ancak için istenen çıktı altı klasik duruma sahiptir ve bu yüzden nın bir prefactor'unu gizler .|000114|41|0011|4216


Cevabınıza değer vermek için biraz daha çalışmaya ihtiyacım var ama tersinirlik kısıtlaması hakkında 2. paragrafınıza tam olarak katılmıyorum. Eğer kullanmış olduğu Not için çözüm olarak ama biz çalışıyoruz olarak çok daha fazla çözüm bulunmaktadır karmaşık sayılarla (örneğin, aşağıdakiler de olası bir çözüm13(|001+|010+|100)|00113(|001|010+i.|100)
JanVdA

1
@JanVdA Doğru, çeşitli çıkışları dik yapmak için fazları kullanabilirsiniz. Sorunuzu okuduğumda, her durumda aynı aşamayı istemiştiniz.
Craig Gidney

0

Bir kuantum bilgisayarı klasik hesaplamalar yapabilir. En uygun algoritma:

  1. Herhangi bir bit seçin (erişebileceğiniz en hızlı olanı).
  2. Ters değere sahip bir bit bulun (1. adımda 0 varsa, 1 bulun)
  3. Değiştirin (0 1 olur ve 1 0 olur).

Adım 2, klasik işlemleri kullanan işlemlerini alan bir bit dizesi üzerinden arama yapılmasını içerir , ancak bir işlevi değerlendirerek bit değerini alabiliyorsanız, işlemleriyle ters biti bulmak için kuantum algoritmasını kullanma . NO(N)nthO(N)


Teşekkürler ama algoritma sadece 2 biti değiştirirdi (bu yüzden tüm permütasyonları üretmeyecek) ve kuantum algoritmasını görmek isterken hala klasik bir algoritma.
JanVdA
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.