Bagaimana komputer kuantum melakukan matematika dasar di tingkat perangkat keras?


27

Saat membaca utas Reddit ini, saya menyadari bahwa bahkan setelah beberapa bulan belajar tentang komputasi kuantum, saya sama sekali tidak tahu bagaimana cara kerja komputer kuantum.

Untuk membuat pertanyaan lebih tepat, katakanlah kita memiliki komputer kuantum 5-qubit berbasis superkonduktor qubit (seperti IBM Quantum Computer 5-qubit). Saya mengetik menggunakan keyboard ke monitor (katakanlah dalam aplikasi kalkulator dasar komputer kuantum mungkin). Setelah itu harus mengembalikan saya 5 . Tetapi apakah terjadi pada tingkat perangkat keras? Apakah ada semacam sinyal listrik yang sesuai dengan input 2 , 3 dan + yang menuju ke unit pemrosesan komputer? Apakah itu entah bagaimana "menginisialisasi" pasangan elektron Cooper? Apa yang terjadi pada pasangan elektron Cooper qubit setelah itu (kira mereka akan dikerjakan oleh beberapa gerbang kuantum , yang pada gilirannya lagi2+3523+kotak hitam )? Bagaimana akhirnya mengembalikan saya output ?5

Saya terkejut betapa sedikit yang bisa saya munculkan tentang kerja dasar komputer kuantum dengan mencari di internet.

Jawaban:


27

Pertama, komputer klasik melakukan matematika dasar pada tingkat perangkat keras di unit aritmatika dan logika (ALU). Gerbang logika mengambil tegangan input rendah dan tinggi dan menggunakan CMOS untuk mengimplementasikan gerbang logika yang memungkinkan gerbang individu dilakukan dan dibangun untuk melakukan operasi yang lebih besar dan lebih rumit. Dalam hal ini, mengetik pada keyboard mengirim sinyal listrik, yang akhirnya berakhir dengan perintah (dalam bentuk lebih banyak sinyal listrik) dikirim ke ALU, operasi yang benar dilakukan dan lebih banyak sinyal dikirim kembali, yang kemudian dikonversi menjadi menampilkan piksel dalam bentuk angka di layar Anda.

Bagaimana dengan komputer kuantum?

Ada dua cara yang memungkinkan prosesor kuantum digunakan: sendiri, atau bersamaan dengan prosesor klasik. Namun, sebagian besar (termasuk contoh superkonduktor Anda) prosesor kuantum tidak benar-benar menggunakan sinyal listrik, meskipun ini masih bagaimana mouse, keyboard, dan monitor Anda, dll. Mengirim dan menerima informasi. Jadi, perlu ada cara untuk mengubah sinyal listrik menjadi sinyal apa pun yang digunakan prosesor kuantum (yang akan saya bahas nanti), serta beberapa cara untuk memberi tahu prosesor apa yang ingin Anda lakukan. Kedua masalah ini dapat diselesaikan sekaligus dengan pra-dan pasca-pemrosesan klasik, seperti dalam QISKit IBM . Microsoft mengambil sedikit lebih banyak dari pendekatan top-down di Q #, di mana program untuk prosesor kuantum ditulis lebih seperti program 'klasik', bukan skrip, kemudian dikompilasi dan berpotensi dioptimalkan untuk perangkat keras. Artinya, jika Anda memiliki fungsi, ia dapat melakukan operasi klasik, serta membuat panggilan ke prosesor kuantum untuk melakukan operasi kuantum yang diperlukan. Ini menuntun saya ke poin pertama:

2+3

OK, katakanlah Anda memaksa prosesor klasik untuk menggunakan prosesor kuantum, yang dalam hal ini adalah salah satu chip superkonduktor IBM, menggunakan qubit transmon , katakanlah, IBM QX4 . Ini terlalu kecil untuk koreksi kesalahan, jadi mari kita abaikan itu. Ada tiga bagian untuk menggunakan prosesor model sirkuit: inisialisasi, evolusi kesatuan dan pengukuran, yang dijelaskan secara lebih rinci di bawah ini. Sebelum itu,

Apa itu transmon?

EJ=IcΦ0/2π Φ0=h/2eIcVgCgEC=(2e)2/2CC

H=EC(nng)2EJcosϕ,
nϕng=CgVg/2e|n=|0|n=|1E0=ω0E1=ω1ω=ω1ω0EC=5EJEJEC

Akhirnya , kita sampai pada pertanyaan utama:

Bagaimana kita menginisialisasi, mengembangkan, dan mengukur transmon?

  • E(t)=Ex(t)cos(ωdt)+Ey(t)sin(ωdt)0<t<tgωd
    H=(ω1ωd12Ex(t)i2Ey(t)12Ex(t)+i2Ey(t)ω22ωd)
  • ωrgωωr±g2/(ωωr) tergantung pada kondisi qubit, jadi gunakan pulsa microwave dan analisis transmitansi dan reflektansi (oleh komputer) kemudian dapat digunakan untuk mengukur qubit.
  • |2|0|1|1. Penghindaran yang dihindari antara kondisi-kondisi ini berarti bahwa gerbang fase 2-qubit dapat diimplementasikan, meskipun secara umum gerbang 2-qubit diimplementasikan dengan kurang baik (memiliki kesetiaan yang lebih rendah) daripada gerbang qubit tunggal.
  • X|1|0

Menambahkan 2 dan 3 sekarang menjadi masalah 'sederhana' untuk menginisialisasi qubit, melakukan gerbang yang setara dengan adder klasik yang dapat dibalik dan mengukur hasilnya, semua diimplementasikan secara otomatis. Hasil pengukuran kemudian dikembalikan oleh komputer klasik seperti biasa.

Sebagai bonus , sepertinya tidak ada gunanya melewati semua itu untuk mengimplementasikan gerbang yang bisa dilakukan pada komputer klasik, jadi ternyata mungkin untuk menerapkan kira-kira penguat kuantum , yang menambahkan dua kuantum (sebagai lawan ke klasik) menyatakan, dengan beberapa kesalahan, pada salah satu prosesor IBM.


15

Inilah proses saya untuk melakukan aritmatika pada komputer kuantum.

Langkah 1: Temukan sirkuit klasik yang melakukan hal yang Anda minati.

Dalam contoh ini, penambah penuh.

penambah penuh klasik

Langkah 2: Ubah setiap gerbang klasik menjadi gerbang yang dapat dibalik.

Siapkan bit output Anda sejak awal, dan inisialisasi dengan CNOT, CCNOT, dll.

penambah penuh semi-reversibel

Langkah 3: Gunakan output sementara.

Jika Anda melakukan penambahan ini untuk misalnya mengontrol apakah fase Grover oracle dengan -1 atau tidak, sekarang saatnya untuk menerapkan gerbang Z ke qubit output Anda.

Langkah 4: Singkirkan nilai menengah dengan melakukan kebalikan dari apa yang Anda lakukan untuk menghitungnya.

Ini mungkin termasuk atau tidak termasuk menyingkirkan bit output, tergantung pada bagaimana rangkaian cocok dengan keseluruhan algoritma Anda.

penambah penuh semi-reversibel 2

Langkah 5: (Terkadang) untuk setiap bit output yang Anda simpan, singkirkan bit input.

Dan maksud saya bukan "menjatuhkan mereka ke lantai", maksud saya menerapkan operasi yang menyebabkan mereka menjadi 0 pasti.

Ketika Anda menghitung c+=a, meninggalkan salinan nilai asli ccenderung buruk. Itu menghancurkan koherensi. Jadi, Anda harus melihat sirkuit penambah Anda (atau apa pun), dan berpikir keras tentang apakah ada cara untuk menggunakan bit output Anda untuk menyingkirkan bit input Anda. Sebagai contoh, setelah menghitung c+aAnda dapat melakukan pengurangan out-of-place sementara ke register r, xor r ke register menyimpan salinan yang tidak diinginkan c, kemudian mengembalikan pengurangan sementara.

(Pengecualian penting untuk "jika Anda menyimpan output Anda, jangan menyimpan begitu banyak input Anda" adalah algoritma Shor. Algoritma Shor menentukan inputnya dengan sengaja , tetapi dengan cara yang sangat khusus yang membantu dalam menemukan periode.)

Langkah 6: Efisien

Pada langkah 5 saya katakan Anda bisa menghitung input dari inplace tambahan dengan melakukan penambahan di luar tempat diikuti dengan pengurangan sementara di luar tempat. Ini agak konyol. Keseluruhan proses penambahan akan menjangkau span 4n qubit (n untuk menahan a, n untuk menahan c, n untuk menahan c+a, n untuk menahan (c+a)-a). Jika Anda lebih pintar, Anda bisa memasukkan semuanya ke 2nqubit atau (sedikit lebih mudah) ke 2n+1qubit :

penambah cuccaro

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.