Bagaimana perhitungan dilakukan dalam array kode permukaan 2D?

10

Dalam kisi kode permukaan 2D, ada beberapa qubit data dan beberapa qubit pengukuran. Misalkan kita ingin melakukan perhitungan 2-qubit, misalnya, katakanlah, sebuah X-gate pada qubit-1 diikuti oleh gerbang CNOT dengan qubit-1 sebagai bit kontrol dan qubit-2 sebagai bit target.

T: Bagaimana perhitungan ini diwujudkan dalam komputer kuantum dengan susunan kode permukaan 2D dari qubit? yaitu gerbang mana yang diterapkan dan pada qubit mana?

Abdullah Ash-Saki
sumber
Anda mungkin ingin mengklarifikasi apakah maksud Anda bahwa semua qubit berada dalam array 2D, atau hanya bahwa qubit yang disandikan berada di segmen yang merupakan array 2D.
Niel de Beaudrap

Jawaban:

9

Saya akan menggambarkan bagaimana seseorang dapat melakukan operasi menggunakan operasi logis pada qubit, dan menggunakan operasi kisi untuk operasi dua-qubit.

Pada diagram di bawah ini, semua 'titik' adalah qubit data: qubit pengukuran dihilangkan untuk membantu menunjukkan prinsip-prinsip dasar dengan lebih jelas. Qubit pengukuran tersedia saat Anda melakukan pengukuran stabilizer, dan hanya pernah terlibat dalam pengukuran stabilizer, jadi ceritanya tentang apa yang Anda lakukan dengan data qubit - termasuk hal-hal seperti pengukuran stabilizer yang Anda lakukan pada data qubit.

Kode permukaan dan operasi Pauli single-qubit logis

Satu dapat menggunakan fragmen pesawat untuk menyimpan qubit. Gambar di bawah ini menunjukkan empat qubit yang dikodekan sebagai bagian dari kisi yang lebih besar: titik-titik cahaya dengan garis hitam adalah qubit yang tidak terlibat dalam qubit yang disandikan, dan pada prinsipnya dapat berada dalam keadaan apa pun yang Anda suka, terlepas dari sisanya.


Dalam setiap fragmen ini, qubit didefinisikan oleh relasi stabilizer yang (idealnya, tanpa adanya kesalahan) berlaku di antara qubit. Untuk kode permukaan dengan jenis kondisi batas yang diilustrasikan di sini, ini adalah stabilisator 3-qubit X atau Z di sekitar batas, dan stabilisator 4-qubit X atau Z di 'bulk' atau badan kode. Pola stabilisator ini diilustrasikan di bawah ini. Perhatikan bahwa setiap penstabil X yang tumpang tindih dengan penstabil Z , melakukannya pada dua qubit, sehingga mereka berpindah satu sama lain. (Permintaan maaf untuk ukuran gambar: Saya tidak bisa membuatnya ditampilkan pada ukuran yang masuk akal.)



Perhatikan bahwa dengan menggunakan keteraturan stabilisator ini, fragmen kode permukaan tidak perlu berbentuk persegi (atau bahkan pada prinsipnya persegi panjang). * Ini akan menjadi penting nanti.

Ada sejumlah (produk tensor) operasi Pauli yang bepergian dengan semua stabilisator ini. Ini dapat digunakan untuk mendefinisikan operator Pauli logis , yang menggambarkan cara-cara di mana Anda dapat mengakses dan mengubah qubit logis. Sebagai contoh, suatu produk dari operator Z melintasi setiap baris dari batas ke batas akan berpindah dengan semua stabilisator, dan dapat dianggap mewakili operator Z yang logis ; produk dari operator X melintasi kolom apa pun dari batas ke batas dapat juga diambil untuk mewakili operator X logis :



Tidak masalah baris atau kolom mana yang Anda gunakan: ini mengikuti fakta bahwa suatu produk dari dua baris operator Z , atau dari dua kolom operator X , dapat dihasilkan sebagai produk dari stabilisator dan oleh karena itu menyadari suatu operasi identitas pada qubit yang disandikan (karena generator stabilizer sendiri adalah operator yang melakukan operasi identitas pada keadaan qubit yang disandikan, menurut definisi). Jadi: jika Anda ingin menerapkan operasi X ke qubit yang disandikan, salah satu cara untuk melakukannya adalah dengan menerapkan operasi X yang logis , dengan menyadari X operator pada setiap qubit dalam kolom yang mencapai antara dua batas. **

Pengukuran Pauli single-qubit logis

Salah satu keuntungan dari memikirkan qubit yang disandikan dalam hal operator logis adalah memungkinkan Anda untuk juga menentukan bagaimana Anda dapat melakukan 'pengukuran logis' - yaitu, pengukuran tidak hanya dari (beberapa) qubit dalam kode, tetapi dari data yang mereka encode. Ambil operator X yang logis di atas, misalnya: operator XX ⊗ ... ⊗ X tidak hanya satu kesatuan, tetapi juga Hermitian, yang berarti dapat diamati yang dapat Anda ukur . (Gagasan yang sama digunakan sepanjang waktu dengan stabilisator kode, tentu saja, yang kami ukur untuk mencoba mendeteksi kesalahan.) Ini berarti bahwa untuk mewujudkan pengukuran X logis , cukup untuk mengukur logika Xtampak. (Hal yang sama berlaku untuk Z logis yang dapat diamati, jika Anda ingin mewujudkan pengukuran dasar standar pada qubit Anda yang disandikan; dan semua yang saya katakan di bawah ini juga dapat diterapkan pada pengukuran Z logis dengan modifikasi yang sesuai.)

Sekarang - mengukur logis yang dapat diamati X tidak persis sama dengan mengukur masing-masing operator X single-qubit satu per satu. Operator XX ⊗ ... ⊗ X hanya memiliki dua nilai eigen, +1 dan −1, sehingga mengukur bahwa operator yang tepat hanya dapat memiliki dua hasil, sedangkan mengukur setiap n qubit akan memiliki 2 n hasil. Juga, mengukur masing-masing operator single-qubit X tidak akan membuat Anda berada dalam ruang kode: jika Anda ingin melakukan perhitungan pada status pasca-pengukuran yang diproyeksikan, Anda harus melakukan banyak pekerjaan pembersihan untuk memulihkan qubit ke kondisi penyandian yang benar.

Namun: jika Anda tidak keberatan melakukan pekerjaan pembersihan itu, atau jika Anda tidak peduli bekerja dengan keadaan pasca-pengukuran, Anda dapat mensimulasikan pengukuran X logis dengan melakukan pengukuran qubit tunggal, mendapatkan +1 dan Outcomes1 hasil, dan kemudian menghitung produk mereka untuk mendapatkan apa hasil pengukuran XX ⊗ ... ⊗ X "seharusnya". (Lebih tepatnya: mengukur semua operator single-qubit X adalah sesuatu yang tidak mengganggu keadaan yang akan dihasilkan dari pengukuran operator produk tensor XX ⊗ ... ⊗ X, dan produk dari pengukuran single-qubit harus menghasilkan hasil yang konsisten dengan operator produk tensor XX ⊗ ... ⊗ X , jadi kita dapat menggunakan ini sebagai cara untuk mensimulasikan pengukuran yang lebih rumit jika kita tidak t keberatan semua qubit yang diproyeksikan ke kondisi dasar konjugasi sebagai efek samping.)

Operasi kisi untuk operasi logis dua-qubit

Untuk mewujudkan operasi dua-qubit, Anda dapat menggunakan teknik yang dikenal sebagai operasi kisi , di mana Anda 'menggabungkan' dan 'memecah' patch yang berbeda dari kisi 2D untuk mewujudkan operasi di antara patch-patch tersebut (lihat [ arXiv: 1111.4022 ], [ arXiv: 1612.07330 ], atau [ arXiv: 1704.08670 ] untuk deskripsi lengkap dari operasi ini. Pengungkapan: Saya adalah penulis pada ketiga artikel ini.) Ini dapat direalisasikan antara dua tambalan kisi planar yang berdekatan (seperti yang digambarkan di atas) dengan menyiapkannya "tidak terlibat" baris dan kolom qubit dalam kondisi yang sesuai, dan kemudian mengukur stabilisator yang sebelumnya tidak Anda ukuruntuk memperluas memori ke sistem yang lebih besar. (Dalam diagram di bawah ini, jarak horizontal antara segmen kode dan kolom qubit dalam status | 0⟩ dibesar-besarkan untuk efek.)



Hal ini akan mempengaruhi operator logis dari sistem dengan cara non-kesatuan, dan yang paling sering digunakan (lihat [ arXiv: 1612,07330 ] misalnya) untuk mewujudkan koheren XX atau ZZ pengukuran, yang dapat disusun untuk menyadari operasi CNOT [arXiv: 1612.07330, Gbr. 1 (b)]:

Dengan cara ini, Anda dapat mewujudkan operasi CNOT antara sepasang qubit yang disandikan. ***

Catatan kaki

* Anda juga dapat menggunakan sedikit modifikasi dari pola stabilisator biasa, seperti yang ditunjukkan Letinsky [ arXiv: 1808.02892 ], untuk mencapai representasi permukaan-planar yang lebih fleksibel dari qubit yang disandikan.

** Dalam praktiknya, daripada secara eksplisit melakukan operasi (qubit tunggal), Anda akan mengambil keuntungan dari kenyataan bahwa kerangka acuan untuk qubit yang disandikan adalah yang Anda perbaiki dengan konvensi, dan memperbarui (atau 'mengubah') kerangka referensi daripada keadaan itu sendiri ketika Anda ingin mewujudkan operasi Pauli. Ini adalah cara cerdas untuk melakukan koreksi kesalahan juga: untuk memperlakukan kesalahan bukan sebagai 'kesalahan' yang harus 'diperbaiki', tetapi sebagai penyimpangan yang tidak terkendali tetapi dapat diamati dalam kerangka referensi Anda sebagai hasil interaksi dengan lingkungan. Anda kemudian berharap bahwa penyimpangan ini cukup lambat sehingga Anda dapat melacaknya secara akurat, dan mengimbangi perubahan dalam kerangka referensi ketika Anda melakukan perhitungan Anda. Khususnya dalam konteks kesalahan pelacakan,Kerangka Pauli , dan tugasnya adalah untuk mendeskripsikan kerangka acuan dalam hal operasi Pauli yang akan diperlukan untuk menempatkan sistem dalam keadaan yang biasanya dijelaskan oleh kode koreksi kesalahan bebas kesalahan.

*** Banyak penulis akan menggambarkan konstruksi ini sebagai titik pembedahan kisi, dan tentu saja itu adalah aplikasi konkret asli yang dijelaskan dalam artikel asli [ arXiv: 1111.4022 ]. Pada prinsipnya dimungkinkan untuk melakukan operasi yang lebih rumit menggunakan pemisahan dan penggabungan, dengan memperlakukan penggabungan dan pemisahan sebagai operasi primitif dalam hak mereka sendiri daripada hanya komponen CNOT, dan menggunakan transformasi yang lebih fleksibel (tetapi tidak terutama seperti sirkuit) - ini pada dasarnya adalah poin dari artikel saya dengan Dom Horsman [ arXiv: 1704.08670 ], yang membuka kemungkinan kalkulus ZX (representasi komputasi kuantum yang agak heterodoks) untuk secara langsung berguna secara praktis untuk memori kode permukaan.

Niel de Beaudrap
sumber
1
jawaban yang bagus Omong-omong, jika Anda tidak tahu, Anda dapat menyesuaikan ukuran gambar dengan langsung menggunakan tag html. Misalnya:<img src="https://i.stack.imgur.com/H94nX.png" width="300"/>
glS
@gIS: terima kasih, kemampuan HTML saya lemah karena tidak digunakan ketika saya mencobanya awalnya! Tampaknya lebih baik sekarang.
Niel de Beaudrap
1
@ AbdullahAsh-Saki: menindaklanjuti pertanyaan Anda di komentar untuk JamesWooton, saya telah menambahkan beberapa komentar tentang pengukuran negara yang disandikan.
Niel de Beaudrap
5

Salah satu cara untuk menyimpan qubit dalam kode permukaan adalah sebagai pasangan "lubang". Sebuah lubang adalah bongkahan permukaan tempat, alih-alih melakukan pengukuran stabilizer yang digunakan untuk mendeteksi apakah ada kesalahan, Anda malah tidak melakukan apa-apa.

Ada dua jenis lubang, tergantung pada apakah batas lubang berjalan bersama calon qubit pengukuran X atau sepanjang qubit pengukuran Z potensial. CNOT dilakukan dengan bersepeda lubang dari satu jenis di sekitar lubang dari jenis lainnya.

Secara diagram, seperti ini:

masukkan deskripsi gambar di sini

Dalam diagram (b), waktu bergerak dari kiri ke kanan. Setiap bilah sesuai dengan lokasi lubang seiring waktu. Setiap qubit disimpan di antara pasangan bar putih yang sesuai. Bilah hitam mewakili lubang yang digunakan untuk melakukan CNOT. Ini menghindari qubit tengah (yang tidak terlibat), mengelilingi salah satu bar dari qubit bawah (yang merupakan target), dan berjalan di sekitar 'cross-bar' yang dimasukkan ke dalam qubit atas (yang merupakan kontrol). Seperti itulah kode permukaan CNOT.

Craig Gidney
sumber
Di mana saya bisa belajar lebih banyak tentang Fig (b)? Saya telah melihat tokoh-tokoh serupa di salah satu ceramah oleh Austin Fowler. Namun, itu masih sangat sulit dipahami.
Abdullah Ash- Saki
@ AbdullahAsh-Saki arxiv.org/abs/1208.0928 mendefinisikan apa yang saya maksud dengan "lubang" dalam detail yang cukup banyak. Jika Anda mengambil irisan melalui diagram pada setiap waktu, itu menunjukkan di mana lubang-lubang itu berada. Jadi, ambil diagram kutu waktu dari kertas itu dan bayangkan seperti apa bentuknya di atas satu sama lain, dan itu adalah diagram jalinan.
Craig Gidney
3

Ada beberapa cara untuk menyimpan informasi dalam kode permukaan. Tergantung pada metode yang Anda gunakan, ada beberapa cara untuk melakukan gerbang. Jadi sebenarnya ada banyak hal untuk dikatakan tentang masalah ini!

Terlepas dari beragamnya metode, secara praktis semuanya hampir sama: jika Anda ingin gerbang dijaga toleransi kesalahan oleh kode, Anda hanya dapat melakukan gerbang Clifford (seperti X, Z, H, CNOT , S). Untuk gerbang lain Anda harus menggunakan mekanisme tambahan untuk menjadi toleran terhadap kesalahan, seperti distilasi kondisi magis.

Tetapi Anda tidak meminta apa pun di luar Clifford dalam contoh Anda. Anda hanya menginginkan X dan CNOT. Sehingga hal-hal menjadi mudah.

Sebagai contoh konkret, mari kita ambil kode permukaan 17 qubit yang ditunjukkan di bawah ini (seperti yang digambarkan dalam makalah ini , di mana saya adalah penulis)

masukkan deskripsi gambar di sini

n=908

σxσx0σx1σx3σx4σx1σx2σz

σxσx0σx3σx6σxσz3σz4σz5

σxsigmazXZ

X=σx0σx3σx6,Z=σz3σz4σz5

X

AB0,1,2,0A0A

CNOT(A,B)AB

CNOT(0A,0B)CNOT(1A,1B)CNOT(1A,1B)

|0|1

|0~=|0n|0|1~=X|0~|1|0

|0|0~|0~|1|1~|1~

Dengan memikirkan aksi CNOT transversal dalam kondisi ini, semoga Anda dapat melihat bagaimana CNOT bertindak sebagai CNOT pada qubit logis.

James Wootton
sumber
2
X=σx0σx3σx6X=σx0σx3σx4
Kamu benar. Saya memperbaikinya.
James Wootton
Satu pertanyaan tambahan: Apa hubungan antara operator pengukuran dan pembacaan fisik suatu qubit? (Saya telah menemukan banyak tempat di mana ia menyebutkan "pengukuran didefinisikan oleh operator pengukuran Pauli-X".)
Abdullah Ash-Saki