Jenis data khusus kuantum

Topik ini menjelaskan jenisnya Qubit , bersama dengan dua jenis lain yang agak spesifik untuk domain kuantum: Pauli dan Result.

Qubit

Q# memperlakukan qubit sebagai item buram yang dapat diteruskan ke fungsi dan operasi, tetapi hanya dapat berinteraksi dengan meneruskannya ke instruksi yang berasal dari prosesor kuantum yang ditargetkan. Instruksi tersebut selalu didefinisikan dalam bentuk operasi, karena niatnya adalah untuk memodifikasi status kuantum. Pembatasan bahwa fungsi tidak dapat memodifikasi status kuantum, meskipun fakta bahwa qubit dapat diteruskan sebagai argumen input, diberlakukan oleh yang mengharuskan fungsi hanya dapat memanggil fungsi lain, dan tidak dapat memanggil operasi.

Pustaka Q# dikompilasi terhadap satu set standar operasi intrinsik, yang berarti operasi yang tidak memiliki definisi untuk implementasinya dalam bahasa. Setelah menargetkan, implementasi yang mengekspresikannya dalam hal instruksi yang asli dengan target eksekusi ditautkan oleh kompilator. Dengan demikian, program Q# menggabungkan operasi ini seperti yang didefinisikan oleh mesin target untuk menciptakan operasi baru dengan tingkat yang lebih tinggi untuk mengekspresikan perhitungan kuantum. Dengan cara ini, Q# membuatnya sangat mudah untuk mengekspresikan logika yang mendasari algoritma kuantum dan hibrida-klasik, selagi juga sangat umum sehubungan dengan struktur mesin target dan realisasi keadaan kuantum.

Dalam Q# itu sendiri, tidak ada jenis atau konstruksi Q# yang mewakili keadaan kuantum. Sebaliknya, qubit mewakili unit fisik terkecil yang dapat dialamatkan dalam komputer kuantum. Dengan demikian, qubit adalah item berumur panjang, jadi Q# tidak memerlukan jenis linier. Oleh karena itu, kami tidak secara eksplisit merujuk ke status dalam Q#, melainkan menggambarkan bagaimana status diubah oleh program, misalnya, melalui aplikasi operasi seperti X dan H. Mirip dengan bagaimana program shader grafis mengakumulasi deskripsi transformasi ke setiap puncak, program kuantum dalam Q# mengakumulasi transformasi ke status kuantum, yang direpresentasikan sebagai referensi buram sepenuhnya ke struktur internal mesin target.

Program Q# tidak memiliki kemampuan untuk introspeksi ke dalam keadaan qubit, dan dengan demikian sepenuhnya agnostik tentang apa itu keadaan kuantum atau bagaimana hal itu direalisasikan. Sebaliknya, sebuah program dapat memanggil operasi seperti Measure untuk mempelajari informasi tentang keadaan kuantum perhitungan.

Pauli

Nilai jenis Pauli menentukan operator Pauli satu qubit; kemungkinannya adalah PauliI, PauliX, PauliY, dan PauliZ. Pauli nilai digunakan terutama untuk menentukan dasar pengukuran kuantum.

Hasil

Jenis Result ini menentukan hasil pengukuran kuantum. Q# mencerminkan sebagian besar perangkat keras kuantum dengan menyediakan pengukuran dalam produk operator Pauli qubit tunggal; Result dari Zero menunjukkan bahwa nilai eigen +1 telah diukur, dan a Result dari One menunjukkan bahwa nilai eigen -1 telah diukur. Artinya, Q# mewakili nilai eigen oleh kekuatan di mana -1 ditingkatkan. Konvensi ini lebih umum dalam komunitas algoritma kuantum, karena memetakan lebih dekat dengan bit klasik.