Bunun ahelwer
cevabının algoritmaların karmaşıklığı hakkında düşündüğümüz bazı yollara değindiğini düşünüyorum. Ancak - sorgulamak istediğimiz gerçek dünyada kelimenin tam anlamıyla "oracles" olmadığı göz önüne alındığında, sorgu karmaşıklığı veya oracles fikri hakkında neden endişe duyacağımızı merak edebilirsiniz. Bu konuya bir bakış açısı vermeye çalışacağım ve özellikle de bir "Deutsch – Josza kehaneti" kurmanın yollarını hile yapıyormuş gibi hissetmeyecek şekilde nasıl düşünmeye çalışacağınızı anlatmaya çalışacağım.
(Belirtildiği gibi Norbert Schuch
, Deutsch – Josza'nın temel vakası olan Deutsch sorunu için, içgörüler için fazla bir kapsam yoktur, ancak oracles hakkındaki sorunuzun daha genel olarak da geçerli olmasını bekliyorum. Burada konuşacağım şey budur.)
Orasles hakkında bir sezgi
Bir kehanet kavramı, hesaplama problemleri hakkında konuşmamızı basitleştirmemize izin vermenin bir yoludur.
Bir kehanet kavramının orijinal uygulaması, prensipte bile nasıl yapabileceğimizi taahhüt etmeden, zor problemleri, hatta imkansız problemleri çözebilirsek ne yapabileceğimizi varsayımsal olarak ele almaktı . Ancak bugünlerde hesaplama karmaşıklığında - özellikle de kuantum hesaplamada, örneğin Deutsch – Josza, Bernstein-Vazirani ve diğer kehanet problemlerinde - durum farklıdır: kehanet sorunun temelini oluşturan bir işlevi tanımlar. Bunun bir kâhin olması, sorunun merkezinde yer alan işlevi nasıl tanımladığımızı yapılandırmanın bir yoludur: işlevin nasıl hesaplandığını asla düşünmemeliyiz, ancak bu bilgi sadece bir parçası olarak sağlanmaz ve bu işlevle ilişkili zaman veya diğer karmaşıklıkla ilgilenmiyoruz.
Bu yaklaşımı ele aldığımızda aslında hesaplamadaki çok zor sorularla ilgili cevaplar elde edebiliriz. Örneğin, biz ya kanıtlamak için nasıl bilmiyorum olduğunu anlasın P ≠ NP veya P = NP , ama bunu yapabilirsiniz kahinler olduğunu göstermek A biz göstereceğiz ki böyle P A ≠ NP A . Buradaki kehanet A'nın yaptığı şey bir bilgisayarın (daha kesin olarak, deterministik bir Turing makinesi veya belirsiz bir Turing makinesi) bir sorunu çözmesine yardımcı değildir - bilgisayarın çözmesi gereken problemi temsil eder. Bazı durumlarda P A'nın ≠ NP A , anlamına gelmez P ise gerçekten farklı NP sadece gerekirci olmayan makinalar kullanılarak sadece araçlar için gerçekten hesaplama modeli için önemli bir kaynaktır - bu verimli bazı sorunları çözmek için izin verir ve yolu yoktur: belirleyici olmayan bir bilgisayarda belirsizliği etkin bir şekilde simüle etmek. Dolayısıyla , A'nın hesapladığı şeyle ilgili sorunu çözmek istiyorsanız , kesinlikle A'yı etkili bir şekilde hesaplayabilen herhangi bir fonksiyonun yapısı hakkında bazı bilgilere ihtiyacınız olacaktır .
Onlar hesaplama modelleri ya ki yolları hakkında konuşmak için izin: Bu kahinler üzeresiniz ana şeylerden biridir olamaz sorunun ilgili bilgilerin sınırlı verilmektedir sorunları çözmek.
Oracle olmayan problemleri çözmek için Oracle algoritmalarını kullanma
Deutsch – Josza algoritması veya Bernstein – Vazirani algoritması, prensip olarak, kişinin kendi uğruna gerçekleştirdiği algoritmalar değildir. (Eh, gerçekten - Sonraki Bölüm bakın.) Bunlar için durmak Eğer bir sorunu çözmek anlamına yolları . Hangi sorunları çözüyorlar? İlgilendiğiniz bir işlevin belirli özelliklerini keşfetmenize olanak tanır - ister sabit / dengeli olsun, ister vektörlerdeki skaler değerli doğrusal fonksiyonda hangi vektörün ilişkili olduğu.
Hangi işlevleri yerine getiriyorsunuz? - Bunları, ilgilendiğiniz herhangi bir işlev üzerinde gerçekleştirirsiniz.
Bunların kehanete dayalı algoritmalar olarak tanımlanması noktanın yanındadır. Oracle problemleri temel olarak, ideal bir kuantum bilgisayarı ile, işlevi pratikte verimli bir şekilde değerlendirebilmeniz şartıyla , işlev hakkında çok az şey biliyor olsanız bile sorunu çözebileceğinizi bilmenizi sağlar . Böyle bir işlevi gerçekten değerlendirmek için, elbette bunun nasıl yapılacağına dair bir açıklamaya ihtiyacınız olacak ve böylece kehanet ayarından daha fazla bilgiye sahip olacaksınız ; ancak bu aynı algoritmayı kullanmanızı engellemez.
Ne var ne olur daha oracle ortamda daha bilgi, aniden olmasıdır diğer sorunu çözmek mümkün olabileceğini yolları. Özellikle, problemi klasik olarak verimli bir şekilde çözmek mümkün olabilir . (Bu, P A ≠ NP A ile aynı gözlemdir : NP'de olan ve herhangi bir verimli deterministik algoritmanın en azından çözmesi için gerçek yapısal bilgi gerektireceği problemleri olduğunu kanıtlar - böylece bir açıklama sağladığınızda bir 'kehanet' yerine verimli bir şekilde hesaplanabilir bir fonksiyonun olması, sorununS. ) Kuantum algoritmasının, sunduğunuz problemi çözmede klasik algoritmalara göre aynı avantaja sahip olmayabileceği anlamına gelir - ve aslında klasik yaklaşımın (özellikle şu anda sahip olduğumuz cihazlarla) daha iyi olması olabilir.
Sonuçta, bir şeyi çözmek için bir kuantum algoritmanız olması, bir şeyi çözmenin mutlaka en iyi yol olduğu anlamına gelmez . Deutsch – Josza algoritması için bu kesinlikle doğrudur: kehanet ortamında bile, rasgelelik kullanmak neredeyse aynı derecede iyidir ve henüz büyük güvenilir kuantum bilgisayarlarımız olmadığı göz önüne alındığında çok daha iyidir! Ama sonra tekrar...
Bir kehaneti "uygulamak"
Deutsch – Josza algoritmasının uygulanmasının amacı, “ Merhaba, Dünya! ” Uygulamakla aynıdır - acil çözülmemiş bir sorunu çözmek için değil, başka şeyler yapmak için faydalı olacağını düşündüğünüz bir araç kullanarak pratik yapmak.
Kodlama uygulaması için, kesinlikle rahat ve konforlu hissetmelidir fikri bir kahini uygulanması ve bilgisayar fikri ile değerlendirilmesi kahini. Prensip olarak, bu yapmak istediğiniz şeyin noktasıdır. Klasik bilgisayarın süperpozisyonun tüm dallarını gerçekten değerlendirdiği ve biraz daha dolambaçlı bir şekilde hareket eden bir kuantum bilgisayarı olduğunu iddia etmek için bir sorunun cevabını açıkça bulduğu klasik bir emülatör kullanıyor olsanız bile, olsun - başka şeyler için yararlı olabilecek ve bir gün klasik bir bilgisayarda çalıştırılmayacak bir aracı nasıl kullanacağınızı pratik yapıyorsunuz.
Öyleyse kehanetinizi nasıl hayata geçirmelisiniz?
(i) Sadece alıştırma yaptığınız fikrine gerçekten bağlıysanız, büyülü bir şey yapıyormuş gibi davranmanız gerekmez. Sonuç sabit veya dengeli olsun, sıradan gözlemci için bariz bir şekilde açık olsa bile, oracle işlevini uygulamak için herhangi bir yolla gelin. Sadece bir algoritma gerçekleştirmeye çalışıyorsunuz - birinin sizi bir sahtekâr olmakla suçlayacağından, kanseri tedavi ediyormuş gibi yaptığınızdan ama aslında Lego ile oynadığınızdan endişelenmeyin. Sen asla edildi kanser tedavisi gibi davranarak ve edilmektedir kasıtlı seçimiyle Lego oynuyor. Bunu kucakla ve yap.
f(x)=g(x,r)rg(x,r)xrve klasik olarak nasıl çözüleceği açık değilse, önemsiz değildir.
g(x,r)=x⋅rx,r∈{0,1}ng(x,r)f(x)f(x)r≠0
Yukarıdaki yapının bir şekilde detaylandırılabileceği / gizlenebileceği, sabit bir işlevi veya dengeli bir işlevi değerlendireceği garanti edilen bir yapı elde etmek ve bu ikisinden hangisinin meydana geldiği açık veya hatta zor değildir - ancak Şu anda nasıl olduğunu düşünmeyin.
Bunun aslında çok zor olduğunu unutmayın - ancak bunu yapmanın bir yolunu görebiliyorsanız, çok faydalı olabilir: Bravyi, Gossett ve Koening Bernstein-Vazirani sorunu için böyle bir şey yaptı ve onlara izin verdi kuantum ve klasik karmaşıklık arasında küçük ama koşulsuz bir ayrım sergilemek, ki bu son yıllarda kuantum karmaşıklığında meydana gelmesi daha ilginç şeylerden biriydi.
TL; DR
Bir kehaneti 'değerlendirdiğiniz' gerçeğini terlemeyin.
Herhangi bir şey üzerinde terliyorsanız, sadece işlevin gerçek bir tanımının kuantum bilgisayarı olmadan aynı sorunu kolayca çözebileceğini düşünün.
Motivasyonunuz sadece kuantum programlama ile pratik yapmaksa, bunun için bile endişelenmeyin. Küresel ısınma gibi kayda değer problemler için endişelerinizi koruyun. Bu arada, daha fazla bir şeye inşa ederken Legos ile oynamanın tadını çıkarın.