Toric code
Berikutnya kita akan membahas kode CSS tertentu yang dikenal sebagai toric code, yang ditemukan oleh Alexei Kitaev pada tahun 1997. Sebenarnya, toric code bukan satu kode tunggal, melainkan sebuah keluarga kode, satu untuk setiap bilangan bulat positif mulai dari 2. Kode-kode ini memiliki beberapa properti kunci:
-
Generator stabilizer memiliki bobot rendah, dan khususnya semuanya memiliki bobot 4. Dalam terminologi teori kode, toric code adalah contoh kode parity check densitas rendah kuantum, atau quantum LDPC code (di mana rendah berarti 4 dalam hal ini). Ini bagus karena setiap pengukuran generator stabilizer tidak perlu melibatkan terlalu banyak qubit.
-
Toric code memiliki lokalitas geometris. Ini berarti tidak hanya generator stabilizer memiliki bobot rendah, tetapi juga memungkinkan untuk mengatur qubit secara spasial sehingga setiap pengukuran generator stabilizer hanya melibatkan qubit yang berdekatan. Pada prinsipnya, ini membuat pengukuran tersebut lebih mudah diimplementasikan dibanding jika melibatkan qubit yang berjauhan secara spasial.
-
Anggota keluarga toric code memiliki jarak yang semakin besar dan bisa menoleransi tingkat kesalahan yang cukup tinggi.
Deskripsi toric codeβ
Misalkan adalah bilangan bulat positif, dan pertimbangkan kisi dengan batas-batas yang disebut batas periodik. Sebagai contoh, gambar ini menggambarkan kisi untuk
Perhatikan bahwa garis di sisi kanan dan di bagian bawah adalah garis putus-putus. Ini dimaksudkan untuk menunjukkan bahwa garis putus-putus di sebelah kanan adalah garis yang sama dengan garis di sisi kiri, dan demikian pula, garis putus-putus di bagian bawah adalah garis yang sama dengan yang ada di bagian atas.
Untuk mewujudkan konfigurasi seperti ini secara fisik memerlukan tiga dimensi. Khususnya, kita bisa membentuk kisi menjadi silinder dengan pertama mencocokkan sisi kiri dan kanan, kemudian menekuk silinder sehingga lingkaran di kedua ujungnya, yang tadinya merupakan tepi atas dan bawah kisi, bertemu. Atau kita bisa mencocokkan bagian atas dan bawah dulu kemudian sisinya; keduanya bisa dilakukan dan tidak masalah mana yang dipilih untuk keperluan diskusi ini.
Yang kita peroleh adalah sebuah torus β atau dengan kata lain, sebuah donat (meskipun membayangkannya sebagai ban dalam lebih tepat karena ini bukan benda padat: kisi tersebut telah menjadi hanya permukaan torus). Inilah asal nama "toric code".
Cara seseorang dapat "bergerak" pada torus seperti ini, di antara titik-titik yang berdekatan pada kisi, mungkin sudah familiar bagi mereka yang pernah bermain video game jadul, di mana bergerak melewati bagian atas layar menyebabkan kamu muncul di bagian bawah, dan begitu pula untuk tepi kiri dan kanan layar. Inilah cara kita akan memandang kisi dengan batas periodik ini, bukan berbicara secara spesifik tentang torus dalam ruang 3-dimensi.
Selanjutnya, qubit disusun pada tepi kisi ini, seperti yang digambarkan pada gambar berikut, di mana qubit ditunjukkan oleh lingkaran biru solid.
Perhatikan bahwa qubit yang ditempatkan pada garis putus-putus tidak solid karena mereka sudah terwakili pada garis paling atas dan paling kiri di kisi. Secara total ada qubit: qubit pada garis horizontal dan qubit pada garis vertikal.
Untuk mendeskripsikan toric code itu sendiri, yang tersisa adalah mendeskripsikan generator stabilizer:
-
Untuk setiap ubin yang terbentuk oleh garis-garis di kisi terdapat satu generator stabilizer , diperoleh dengan men-tensor matriks pada empat qubit yang menyentuh ubin tersebut bersama matriks identitas pada semua qubit lainnya.
-
Untuk setiap simpul yang terbentuk oleh garis-garis di kisi terdapat satu generator stabilizer , diperoleh dengan men-tensor matriks pada empat qubit yang berdekatan dengan simpul tersebut bersama matriks identitas pada semua qubit lainnya.
Dalam kedua kasus kita mendapatkan operasi Pauli berbobot 4. Secara individual, generator stabilizer ini dapat digambarkan sebagai berikut.
Berikut adalah ilustrasi yang menunjukkan beberapa contoh generator stabilizer dalam konteks kisi itu sendiri. Perhatikan bahwa generator stabilizer yang melingkari batas periodik disertakan. Generator yang melingkari batas periodik ini tidak istimewa atau berbeda dengan cara apapun dari yang tidak melingkarinya.
Generator stabilizer harus komut agar ini menjadi kode stabilizer yang valid. Seperti biasa, generator stabilizer semuanya komut satu sama lain, karena komut dengan dirinya sendiri dan identitas komut dengan segalanya, dan begitu pula untuk generator stabilizer . Generator stabilizer dan jelas komut ketika mereka bertindak secara nontrivial pada himpunan qubit yang tidak beririsan, seperti contoh yang ditunjukkan pada gambar sebelumnya. Kemungkinan yang tersisa adalah generator stabilizer dan generator stabilizer bertumpang tindih pada qubit tempat mereka bertindak secara nontrivial, dan kapanpun ini terjadi generator harus selalu bertumpang tindih pada dua qubit, seperti pada gambar berikutnya.
Akibatnya, dua generator stabilizer seperti ini komut, sama seperti dan komut. Oleh karena itu semua generator stabilizer saling komut.
Kondisi kedua yang diperlukan pada generator stabilizer untuk kode stabilizer adalah bahwa mereka membentuk himpunan pembangkit minimal. Kondisi ini sebenarnya tidak dipenuhi oleh koleksi ini: jika kita mengalikan semua generator stabilizer bersama-sama, kita mendapatkan operasi identitas, dan begitu pula untuk generator stabilizer . Dengan demikian, setiap satu generator stabilizer dapat dinyatakan sebagai hasil kali semua yang lain, dan demikian pula, setiap satu generator stabilizer dapat dinyatakan sebagai hasil kali generator stabilizer yang tersisa. Namun, jika kita menghapus satu generator stabilizer dan satu generator stabilizer , kita memang mendapatkan himpunan pembangkit minimal.
Untuk memperjelas hal ini, kita memang peduli sama rata tentang semua generator stabilizer, dan dalam arti operasional yang ketat tidak perlu memilih satu generator stabilizer dari setiap jenis untuk dihapus. Tapi, demi menganalisis kode β dan menghitung generator khususnya β kita bisa membayangkan bahwa satu generator stabilizer dari setiap jenis telah dihapus, sehingga kita mendapatkan himpunan pembangkit minimal, dengan mengingat bahwa kita selalu bisa menyimpulkan hasil dari generator yang dihapus ini (anggap sebagai observabel) dari hasil semua observabel generator stabilizer lain dari jenis yang sama.
Ini menyisakan generator stabilizer dari setiap jenis, atau secara total, dalam himpunan pembangkit minimal (hipotetis). Mengingat ada qubit secara total, ini berarti toric code mengodekan qubit.
Kondisi terakhir yang diperlukan dari generator stabilizer adalah bahwa setidaknya satu vektor keadaan kuantum tetap oleh semua generator stabilizer. Kita akan melihat bahwa ini memang demikian saat kita melanjutkan analisis kode, namun juga mungkin untuk menalar bahwa tidak ada cara untuk menghasilkan kali identitas pada semua qubit dari generator stabilizer.
Mendeteksi kesalahanβ
Toric code memiliki deskripsi yang sederhana dan elegan, tetapi properti koreksi kesalahan kuantumnya mungkin tidak jelas pada pandangan pertama. Ternyata, ini adalah kode yang luar biasa! Untuk memahami mengapa dan bagaimana cara kerjanya, mari kita mulai dengan mempertimbangkan kesalahan yang berbeda dan sindrom yang dihasilkannya.
Toric code adalah kode CSS, karena semua generator stabilizer kita adalah generator stabilizer atau . Ini berarti kesalahan dan kesalahan dapat dideteksi (dan mungkin dikoreksi) secara terpisah. Nyatanya, ada simetri sederhana antara generator stabilizer dan yang memungkinkan kita menganalisis kesalahan dan kesalahan pada dasarnya dengan cara yang sama. Jadi, kita akan fokus pada kesalahan , yang mungkin terdeteksi oleh generator stabilizer β tetapi seluruh diskusi berikut ini dapat diterjemahkan dari kesalahan ke kesalahan , yang analognya terdeteksi oleh generator stabilizer .
Diagram berikut menggambarkan efek kesalahan pada satu qubit. Di sini, asumsinya adalah bahwa qubit kita sebelumnya berada dalam keadaan yang terkandung dalam ruang kode toric code, menyebabkan semua pengukuran generator stabilizer menghasilkan Generator stabilizer mendeteksi kesalahan , dan terdapat satu generator stabilizer seperti itu untuk setiap ubin di gambar, jadi kita dapat menunjukkan hasil pengukuran dari generator stabilizer yang sesuai dengan warna ubin tersebut: hasil ditunjukkan oleh ubin putih dan hasil ditunjukkan oleh ubin abu-abu. Jika terjadi kesalahan bit-flip pada salah satu qubit, efeknya adalah pengukuran generator stabilizer yang sesuai dengan dua ubin yang menyentuh qubit yang terpengaruh sekarang menghasilkan
Ini intuitif ketika kita mempertimbangkan generator stabilizer dan cara kerjanya. Pada intinya, setiap generator stabilizer mengukur paritas dari empat qubit yang menyentuh ubin yang sesuai (terhadap basis standar). Jadi, hasil tidak menunjukkan bahwa tidak ada kesalahan yang terjadi pada empat qubit ini, melainkan menunjukkan bahwa jumlah genap kesalahan telah terjadi pada qubit-qubit ini, sedangkan hasil menunjukkan bahwa jumlah ganjil kesalahan telah terjadi. Satu kesalahan oleh karena itu membalik paritas dari empat bit pada kedua ubin yang disentuhnya, menyebabkan pengukuran generator stabilizer menghasilkan
Selanjutnya mari kita perkenalkan beberapa kesalahan untuk melihat apa yang terjadi. Khususnya, kita akan mempertimbangkan rantai kesalahan yang berdekatan, di mana dua kesalahan berdekatan jika mereka mempengaruhi qubit yang menyentuh ubin yang sama.
Dua generator stabilizer di ujung rantai keduanya memberikan hasil dalam kasus ini, karena jumlah ganjil kesalahan telah terjadi pada dua ubin yang sesuai tersebut. Semua generator stabilizer lainnya, di sisi lain, memberikan hasil termasuk yang menyentuh rantai tetapi tidak di ujungnya, karena jumlah genap kesalahan telah terjadi pada qubit yang menyentuh ubin yang sesuai.
Dengan demikian, selama kita memiliki rantai kesalahan yang memiliki titik ujung, toric code akan mendeteksi bahwa kesalahan telah terjadi, menghasilkan hasil pengukuran untuk generator stabilizer yang sesuai dengan titik ujung rantai. Perhatikan bahwa rantai kesalahan yang sebenarnya tidak terungkap, hanya titik ujungnya! Ini tidak masalah β di subbagian berikutnya kita akan melihat bahwa kita tidak perlu tahu persis qubit mana yang terpengaruh oleh kesalahan untuk mengoreksinya. (Toric code adalah contoh kode yang sangat degeneratif, dalam arti umumnya tidak mengidentifikasi secara unik kesalahan yang dikoreksinya.)
Namun, mungkin saja rantai kesalahan yang berdekatan tidak memiliki titik ujung, yang berarti bahwa rantai kesalahan bisa membentuk lingkaran tertutup, seperti pada gambar berikut.
Dalam kasus seperti itu, jumlah genap kesalahan telah terjadi pada setiap ubin, sehingga setiap pengukuran generator stabilizer menghasilkan hasil . Lingkaran tertutup dari kesalahan yang berdekatan oleh karena itu tidak terdeteksi oleh kode.
Ini mungkin terasa mengecewakan, karena kita hanya membutuhkan empat kesalahan untuk membentuk lingkaran tertutup (dan kita berharap sesuatu yang jauh lebih baik dari kode berjarak 4). Namun, lingkaran tertutup kesalahan seperti yang digambarkan pada gambar sebelumnya sebenarnya bukan kesalahan β karena ada di dalam stabilizer! Ingat bahwa, selain generator stabilizer , kita juga memiliki generator stabilizer untuk setiap simpul di kisi. Dan jika kita mengalikan generator stabilizer yang berdekatan bersama-sama, hasilnya adalah kita memperoleh lingkaran tertutup operasi . Sebagai contoh, lingkaran tertutup pada gambar sebelumnya dapat diperoleh dengan mengalikan generator stabilizer yang ditunjukkan pada gambar berikut.
Namun, ini bukan satu-satunya jenis lingkaran tertutup kesalahan yang bisa kita miliki β dan bukan berarti setiap lingkaran tertutup kesalahan termasuk dalam stabilizer. Khususnya, berbagai jenis lingkaran dapat dikategorikan sebagai berikut.
-
Lingkaran tertutup kesalahan dengan jumlah genap kesalahan pada setiap garis horizontal dan setiap garis vertikal qubit. (Contoh yang ditunjukkan di atas termasuk dalam kategori ini.) Lingkaran dalam bentuk ini selalu terkandung dalam stabilizer, karena mereka dapat secara efektif diperkecil menjadi tidak ada dengan mengalikannya dengan generator stabilizer .
-
Lingkaran tertutup kesalahan dengan jumlah ganjil kesalahan pada setidaknya satu garis horizontal atau setidaknya satu garis vertikal qubit. Lingkaran dalam bentuk ini tidak pernah terkandung dalam stabilizer dan oleh karena itu mewakili kesalahan nontrivial yang tidak terdeteksi oleh kode.
Contoh lingkaran tertutup kesalahan dalam kategori kedua ditunjukkan pada diagram berikut.
Rantai kesalahan seperti itu tidak terkandung dalam stabilizer karena setiap generator stabilizer menempatkan jumlah genap operasi pada setiap garis horizontal dan setiap garis vertikal qubit. Ini oleh karena itu merupakan contoh nyata dari kesalahan nontrivial yang gagal dideteksi oleh kode.
Kuncinya adalah bahwa satu-satunya cara untuk membentuk lingkaran jenis kedua adalah dengan mengelilingi torus, artinya baik mengelilingi lubang di tengah torus, melaluinya, atau keduanya. Secara intuitif, rantai kesalahan seperti ini tidak dapat diperkecil menjadi tidak ada dengan mengalikannya dengan generator stabilizer karena topologi torus menghalanginya. Toric code terkadang dikategorikan sebagai kode koreksi kesalahan kuantum topologis karena alasan ini. Panjang minimum lingkaran seperti itu adalah dan oleh karena itu inilah jarak toric code: setiap lingkaran tertutup kesalahan dengan panjang kurang dari harus masuk dalam kategori pertama, dan oleh karena itu terkandung dalam stabilizer; dan setiap rantai kesalahan dengan titik ujung terdeteksi oleh kode.
Mengingat bahwa toric code menggunakan qubit untuk mengodekan qubit dan memiliki jarak maka ini adalah kode stabilizer .
Mengoreksi kesalahanβ
Kita telah membahas deteksi kesalahan untuk toric code, dan sekarang kita akan secara singkat membahas cara mengoreksi kesalahan. Toric code adalah kode CSS, sehingga kesalahan dan dapat dideteksi dan dikoreksi secara independen. Tetap berfokus pada generator stabilizer , yang mendeteksi kesalahan , mari kita pertimbangkan bagaimana rantai kesalahan dapat dikoreksi. (Kesalahan dikoreksi dengan cara yang simetris.)
Jika sindrom yang berbeda dari sindrom muncul ketika generator stabilizer diukur, hasil mengungkapkan titik ujung dari satu atau lebih rantai kesalahan . Kita dapat mencoba mengoreksi kesalahan ini dengan memasangkan hasil dan membentuk rantai koreksi di antara mereka. Saat melakukan ini, masuk akal untuk memilih jalur terpendek di mana koreksi dilakukan.
Misalnya, pertimbangkan diagram berikut, yang menggambarkan sindrom dengan dua hasil , ditunjukkan oleh ubin abu-abu, yang disebabkan oleh rantai kesalahan yang diilustrasikan oleh garis dan lingkaran magenta. Seperti yang telah kita catat, rantai itu sendiri tidak terungkap oleh sindrom; hanya titik ujungnya yang terlihat.
Untuk mencoba mengoreksi rantai kesalahan ini, jalur terpendek antara hasil pengukuran dipilih dan gate diterapkan sebagai koreksi pada qubit di sepanjang jalur ini (ditunjukkan dalam warna kuning pada gambar). Meskipun koreksi mungkin tidak cocok dengan rantai kesalahan yang sebenarnya, kesalahan dan koreksi bersama membentuk lingkaran tertutup operasi yang terkandung dalam stabilizer kode. Koreksi oleh karena itu berhasil dalam situasi ini, karena efek gabungan dari kesalahan dan koreksi adalah tidak melakukan apa-apa pada keadaan yang dikodekan.
Strategi ini tidak selalu berhasil. Misalnya, penjelasan berbeda untuk sindrom yang sama seperti pada gambar sebelumnya ditunjukkan pada gambar berikut.
Kali ini, rantai koreksi yang sama seperti sebelumnya gagal mengoreksi rantai kesalahan ini, karena efek gabungan dari kesalahan dan koreksi adalah kita mendapatkan lingkaran tertutup operasi yang mengelilingi torus, dan oleh karena itu memiliki efek nontrivial pada ruang kode. Jadi, tidak ada jaminan bahwa strategi yang baru saja dijelaskan, memilih jalur terpendek koreksi antara dua hasil sindrom pengukuran , akan benar-benar mengoreksi kesalahan yang menyebabkan sindrom ini.
Mungkin lebih mungkin, tergantung pada model noise, adalah bahwa sindrom dengan lebih dari dua entri diukur, seperti yang disarankan gambar berikut.
Dalam kasus seperti itu, ada strategi koreksi yang berbeda yang diketahui. Satu strategi alami adalah mencoba memasangkan hasil pengukuran dan melakukan koreksi sepanjang jalur terpendek yang menghubungkan pasangan-pasangan, seperti yang ditunjukkan dalam gambar dalam warna kuning. Khususnya, pencocokan sempurna bobot minimum antara hasil pengukuran dapat dihitung, kemudian pasangan dihubungkan dengan jalur terpendek koreksi . Perhitungan pencocokan sempurna bobot minimum dapat dilakukan secara efisien dengan algoritma klasik yang dikenal sebagai algoritma blossom, yang ditemukan oleh Edmonds pada tahun 1960-an.
Pendekatan ini umumnya tidak optimal untuk model noise yang paling banyak dipelajari, tetapi berdasarkan simulasi numerik bekerja sangat baik dalam praktiknya di bawah tingkat noise sekitar 10%, dengan asumsi kesalahan Pauli independen di mana dan sama-sama mungkin terjadi. Meningkatkan tidak memiliki efek signifikan pada titik impas di mana kode mulai membantu, tetapi menyebabkan penurunan lebih cepat dalam probabilitas terjadinya kesalahan logis saat tingkat kesalahan turun di bawah titik impas.