Bagaimana komputasi kuantum akan mengubah pemrograman? [Tutup]

33

Bagaimana pemrograman algoritma kuantum berbeda? Akan seperti apa bahasa C jika dirancang untuk qubit? Apakah tipe akan berubah?

Viktor Maia
sumber
Catatan: Saya tidak yakin apakah ini pertanyaan yang valid. Maaf jika tidak.
MaiaVictor
4
Aku rasa ini. Kemudian lagi, saya tidak begitu tahu aturan situs ini dengan sangat baik. Dan saya tidak benar-benar memiliki jawaban yang bagus untuk pertanyaan ini, tetapi saya tahu algoritma ini yang dapat digunakan untuk faktor bilangan bulat jauh lebih efisien: arxiv.org/abs/0812.0380
John Davis
3
Saya pikir meskipun topik ini masih dalam penelitian ilmiah, dasar-dasar komputer kuantum hipotetis adalah AFAIK yang terkenal, jadi pertanyaannya harus dapat dijawab oleh pakar domain (yang saya tidak tahu). Jadi saya memilih untuk tidak menutupnya.
Doc Brown

Jawaban:

17

Ketika saya melihat ini beberapa waktu yang lalu, jelas bahwa algoritma kuantum, meskipun tidak terlalu cepat, memungkinkan paralelisme masif secara eksponensial. Jadi mereka akan bersinar dalam kasus yang melibatkan pencarian di ruang yang tidak praktis dengan perangkat keras sekuensial, bahkan perangkat keras sekuensial paralel besar-besaran.

Salah satu sifat dari algoritma kuantum adalah mereka harus dapat dibalik . Algoritma apa pun yang diberikan dapat diterjemahkan ke dalam satu yang dapat dibalikkan, dengan menambahkannya pada pencatatan yang cukup untuk memungkinkannya dijalankan mundur.

Properti lainnya adalah bahwa mendapatkan jawaban dari algoritma kuantum adalah masalah hit-and-miss, karena apa yang Anda dapatkan pada akhir perhitungan adalah beberapa jawaban, masing-masing dengan probabilitasnya sendiri. Itu perlu dijalankan sedemikian rupa sehingga jawaban yang Anda inginkan memiliki probabilitas tinggi. Ini mungkin melibatkan menjalankan algoritme maju dan mundur beberapa kali.

Lihat Algoritma Pencarian Grover .


Dimasukkan untuk menunjukkan operasi dasar dari algoritma Grover. Misalkan ada masalah pencarian. Jawaban yang mungkin adalah 0, 1, 2, dan 3, tetapi jawaban yang tepat adalah 2. Jadi komputer kuantum ditempatkan di superposisi keempat negara, dan ia melewati serangkaian langkah-langkah untuk melihat mana yang benar, dan membalikkan amplitudonya, seperti titik dan panah hitam di bawah ini:

masukkan deskripsi gambar di sini

Anda dapat melihat bahwa panah 2 telah terbalik di dalam mesin, tetapi tidak ada cara untuk mengatakannya di luar, karena hanya probabilitas yang terlihat di luar, yang merupakan amplitudo kuadrat , dan ketika kuadrat mereka semua sama.

Namun, amplitudo memiliki rata-rata, ditunjukkan oleh garis merah, dan komputer dapat dibuat untuk melewati serangkaian langkah yang membalikkan setiap amplitudo tentang rata-rata . Ketika itu selesai, amplitudo, dan probabilitas, pindah ke status 2, jawaban yang tepat ! Jadi jika mesin diamati, nyatakan 2 bersinar.

Tidak sesederhana ini. Umumnya dibutuhkan beberapa siklus mesin, maju dan mundur, membalik pada akhir setiap siklus, untuk memaksimalkan probabilitas jawaban yang benar. Juga, seseorang harus berhati-hati untuk tidak melakukannya lebih dari itu beberapa kali, karena dapat dengan mudah membalikkan dirinya sendiri.

Jadi mengapa mereka mengatakan komputer kuantum sangat cepat ? Karena setiap kali Anda menggandakan jumlah qubit, Anda menyejajarkan paralelisme, tetapi Anda tidak menguadratkan lamanya waktu, sehingga akhirnya ia menang.

Bukankah itu menyenangkan?


Saya pribadi tertarik pada bagaimana ini dapat diterapkan untuk verifikasi kebenaran perangkat lunak. Sekarang kita menguji perangkat lunak dengan melemparkan banyak input uji padanya dan (terlalu sederhana) melihat apakah itu mengenai Assert. Dalam komputer kuantum dimungkinkan untuk menjalankannya secara paralel terhadap serangkaian input yang jauh lebih padat dan melihat apakah ada kasus yang mengenai Assert.

Seperti jika input ke algoritme adalah 128 byte, atau 1024 bit, ada 2 ^ 1024 atau 10 ^ 308 kemungkinan input yang berbeda. Tidak ada cara untuk menguji banyak input pada komputer konvensional, tetapi komputer kuantum dapat mencoba semuanya secara paralel.

Mike Dunlavey
sumber
2
Lihat Algoritma Pencarian Grover ... OH GOD! Saya belum siap untuk itu!
Philip
1
@ Pilip: Saya tahu matematika itu sangat tidak menyenangkan, tetapi ide kuncinya adalah rotasi tentang rata-rata, yang memiliki efek mentransfer probabilitas ke status jawaban. Kemudian Anda lari kembali ke awal dan berlari maju dan melakukannya lagi, beberapa kali. Kemudian jika Anda melakukan pengamatan, Anda telah memaksimalkan probabilitas melihat keadaan jawaban.
Mike Dunlavey
Anda lihat, itu benar-benar tidak begitu buruk ketika Anda mengatakannya seperti itu. Saya kira saya tidak terbiasa dengan notasi yang mereka gunakan atau sirkuit kuantum. Halaman tentang algoritma kuantum juga mengintimidasi. Saya percaya bahwa Qubit adalah tempat untuk memulai. (Wikipedia wikipedia memiliki halaman di komputer Quantum , tetapi bisa menggunakan beberapa pekerjaan)
Philip
@ Pilip: Misalkan Anda memiliki tabel entri 1024, sehingga dibutuhkan 10 bit untuk mengindeksnya. Anda memiliki register bit 10- (qu), dan memiliki 1024 kemungkinan status. OK, jadi Anda membuat alam semesta di mana register adalah 0, yang lain di mana itu adalah 1, hingga 1024 alam semesta paralel. Kemudian "instruksi" kuantum beroperasi pada semua ini secara paralel. Setiap alam semesta memiliki "vektor amplitudo", yang besarnya adalah probabilitasnya, tetapi ia juga memiliki arah, dan itu sedang dimanipulasi. Karena koleksi 1024 vektor memiliki vektor rata-rata non-nol, rotasi membuat satu lebih besar, sisanya lebih kecil.
Mike Dunlavey
Saya seorang ahli fisika yang sudah direformasi dan saya menurunkan jawaban ini karena itu menyesatkan. 1) algoritma quantum sering adalah terutama (asimtotik) cepat - Grover algoritma pencarian berjalan di O (sqrt (n)) sedangkan terbaik komputer klasik dapat lakukan adalah O (n). Jika komputer kuantum tidak lebih cepat tanpa gejala, mereka tidak akan terlalu menarik. Perangkat keras mungkin lambat sekarang tapi itu bukan kesalahan algoritma!
Benjamin Hodgson
7

Akan seperti apa bahasa C jika dirancang untuk qubit? Apakah tipe akan berubah?

Ini akan sangat berbeda secara drastis sehingga tidak bisa dipahami seperti C.

Masalah utama (seperti yang saya mengerti) adalah bahwa komputasi kuantum tidak bekerja dengan cara imperatif yang baik 'lakukan ini, lalu itu, maka hal lain ini'. Mencoba memaksakan kemampuan C untuk melakukan itu ke dalam 'prosesor' komputer kuantum jika tidak mustahil, sangat tidak efisien.

Algoritme pemrograman untuk komputer kuantum (sekali lagi, seperti yang saya pahami) cenderung lebih dekat dengan peta gaya pemrograman fungsional / perkecil, karena komputasi kuantum memungkinkan semua kandidat di bagian 'perkecil' ada secara bersamaan dan "terjatuh" dari komputer saat diamati.

Perhatikan bahwa ada beberapa algoritma yang ada untuk komputer kuantum, meskipun perangkat tidak ada untuk menjalankannya. Algoritma Simon misalnya.

Telastyn
sumber
ELI5 untuk algoritma kuantum akan lebih bagus.
MaiaVictor
3

Untuk membuat penggunaan komputer kuantum seefektif mungkin, seseorang harus mampu menangani input dan output yang merupakan status register kuantum, yang sebenarnya tidak ada analog klasik. Berbicara dari beberapa tahun pengalaman di bidang informasi kuantum, saya harus memperingatkan Anda bahwa tidak ada yang benar-benar memiliki intuisi yang bagus untuk ini di luar matematika abstrak C * aljabar, dan saya diberitahu bahwa bahkan intuisi ini ternyata tidak memadai. jika Anda mulai bertanya-tanya tentang teori relativitas.

Kelas masalah yang dipecahkan secara efisien pada komputer kuantum dikenal sebagai BQP, untuk Bounded Quantum Polynomial. Ini adalah versi kuantum BPP, dan Anda dapat menemukan informasi lebih lanjut dalam makalah ini: http://www.scottaaronson.com/papers/bqpph.pdf

Saya diberitahu tadi malam oleh seorang peneliti algoritma kuantum bahwa ada masalah yang sangat penting yaitu BQP-complete: menyelesaikan sistem linear persamaan N. Secara klasik, ini dapat dipecahkan dalam langkah O (N) dengan eliminasi Gaussian. Algoritma Harrow-Hassidim-Lloyd ( http://arxiv.org/abs/0811.3171 ) memecahkannya dalam polylog (N), asalkan Anda bersedia menerima jawaban yang memiliki solusi yang dikodekan sebagai keadaan kuantum. Jika Anda ingin menggunakan komputer kuantum secara penuh, maka dari itu tampaknya perlu bagi Anda untuk memiliki tipe yang sesuai dengan keadaan register kuantum.

Meskipun saya sedikit di luar keahlian khusus saya saat ini, saya akan menebak bahwa Anda akan dapat memprogram komputer kuantum selama Anda memiliki akses ke jenis yang berkaitan dengan keadaan ajaib. Namun, itu konsep yang sulit, yang membutuhkan studi tentang subjek tersebut.

Berhati-hatilah karena kita sangat lama tidak memiliki bahasa pemrograman kuantum, karena kita berada pada tahap penelitian komputasi kuantum yang sangat primitif. Meminta kuantum C saat ini akan seperti pergi ke Alan Turing dan memintanya untuk mendesain Python. Kami bahkan belum mendapatkan versi kuantum dari tabung vakum!

Inti
sumber