Kod CSS
Kod linear klasikβ
Kod pembetulan ralat klasik mula dikaji pada tahun 1940-an, dan banyak kod berbeza telah diketahui sejak itu. Kod yang paling kerap dikaji dan digunakan termasuk dalam kategori yang dikenali sebagai kod linear. Kita akan lihat dengan tepat apa maksud perkataan "linear" dalam konteks ini sebentar lagi, tetapi cara yang sangat mudah untuk menggambarkan kod linear pada ketika ini ialah kod tersebut merupakan kod penstabil yang kebetulannya bersifat klasik. Kod CSS pada dasarnya ialah pasangan kod linear klasik yang digabungkan bersama untuk membentuk kod pembetulan ralat kuantum. Oleh itu, bagi tujuan perbincangan yang akan datang, kita perlu memahami beberapa perkara asas tentang kod linear klasik.
Biarkan menjadi abjad binari untuk keseluruhan perbincangan ini. Apabila kita merujuk kepada kod linear klasik, yang dimaksudkan ialah set bukan kosong berisi rentetan binari panjang untuk suatu integer positif yang mesti memenuhi hanya satu sifat asas: jika dan ialah rentetan binari dalam maka rentetan juga berada dalam Di sini, merujuk kepada eksklusif-ATAU bitwise bagi dan seperti yang kita jumpai beberapa kali dalam kursus "Fundamentals of quantum algorithms".
Pada asasnya, apabila kita merujuk kepada kod pembetulan ralat klasik sebagai linear, kita memandang rentetan binari panjang sebagai vektor berdimensi di mana setiap entri ialah sama ada atau dan menuntut supaya kod itu sendiri membentuk subruang linear. Namun, berbeza dengan penambahan vektor biasa ke atas nombor nyata atau kompleks, kita menggunakan penambahan modulo yang pada dasarnya ialah eksklusif-ATAU. Maksudnya, jika kita mempunyai dua perkataan kod dan bermakna dan ialah rentetan binari dalam maka modulo 2, iaitu mestilah juga merupakan perkataan kod dalam Perhatikan bahawa implikasi ini mesti benar walaupun jika Ini bermakna mesti mengandungi rentetan sifar semua kerana eksklusif-ATAU bitwise mana-mana rentetan dengan dirinya sendiri ialah rentetan sifar semua.
Contoh: kod ulangan 3-bitβ
Kod ulangan 3-bit ialah contoh kod linear klasik. Khususnya, kita mempunyai jadi, berkenaan syarat kelinearan, hanya terdapat dua pilihan mungkin untuk dan dua pilihan mungkin untuk Mudah sahaja untuk menyemak keempat-empat pasangan yang mungkin untuk memastikan kita sentiasa mendapat perkataan kod apabila kita mengambil eksklusif-ATAU bitwise:
Contoh: kod Hamming β
Berikut ialah contoh lain kod linear klasik yang dipanggil kod Hamming . Ia merupakan salah satu daripada kod pembetulan ralat klasik pertama sekali yang ditemui, dan ia terdiri daripada 16 rentetan binari berpanjang 7 ini. (Kadang-kadang kod Hamming difahami sebagai kod dengan rentetan-rentetan ini diterbalikkan, tetapi kita akan anggapnya sebagai kod yang mengandungi rentetan-rentetan yang ditunjukkan di sini.)
Terdapat logik yang sangat mudah di sebalik pemilihan rentetan-rentetan ini, tetapi ia tidak penting untuk pelajaran ini dan tidak akan diterangkan di sini. Buat masa ini, cukuplah untuk memerhatikan bahawa ini ialah kod linear klasik: XOR mana-mana dua rentetan ini bersama-sama akan sentiasa menghasilkan rentetan lain yang ada dalam kod tersebut.
Notasi (dalam kurungan kotak tunggal) bermaksud sesuatu yang analogis dengan notasi kurungan kotak berganda untuk kod penstabil yang disebut dalam pelajaran sebelumnya, tetapi di sini ia untuk kod linear klasik. Khususnya, perkataan kod mempunyai bit, kita boleh mengekod bit menggunakan kod tersebut (kerana terdapat perkataan kod), dan ia kebetulannya merupakan kod berjarak yang bermaksud bahawa mana-mana dua perkataan kod berbeza mesti berbeza dalam sekurang-kurangnya kedudukan β jadi sekurang-kurangnya bit mesti dibalik untuk menukar satu perkataan kod kepada yang lain. Fakta bahawa ini ialah kod berjarak bermakna ia boleh membetulkan sehingga satu ralat balik-bit.
Menerangkan kod linear klasikβ
Contoh-contoh yang baru disebutkan ialah contoh yang sangat mudah bagi kod linear klasik, tetapi walaupun kod Hamming nampak agak misteri apabila perkataan-perkataan kodnya disenaraikan sahaja. Terdapat cara yang lebih baik dan lebih cekap untuk menerangkan kod linear klasik, termasuk dua cara berikut.
-
Penjana. Satu cara untuk menerangkan kod linear klasik ialah dengan senarai minimum perkataan kod yang menjana kod tersebut, bermakna dengan mengambil semua subset yang mungkin daripada perkataan-perkataan kod ini dan melakukan XOR ke atasnya, kita mendapat keseluruhan kod.
Secara lebih terperinci, rentetan menjana kod linear klasik jika
dengan pemahaman bahawa apabila dan apabila dan kita katakan senarai ini minimum jika memadam salah satu rentetan menghasilkan kod yang lebih kecil. Cara semula jadi untuk memikirkan penerangan sedemikian ialah koleksi membentuk suatu asas untuk sebagai subruang, di mana kita memandang rentetan sebagai vektor dengan entri bernilai binari, sambil mengingat bahawa kita bekerja dalam ruang vektor di mana aritmetik dilakukan modulo
-
Semakan pariti. Cara semula jadi yang lain untuk menerangkan kod linear klasik ialah dengan semakan pariti β bermakna senarai minimum rentetan binari di mana rentetan dalam kod adalah tepat rentetan-rentetan yang hasil tambah titik binari dengan setiap satu daripada rentetan semakan pariti ini ialah sifar. (Serupa dengan eksklusif-ATAU bitwise, hasil tambah titik binari muncul beberapa kali dalam "Fundamentals of quantum algorithms".)
Iaitu, rentetan ialah rentetan semakan pariti untuk kod linear klasik jika
dan set rentetan ini minimum jika memadam satu menghasilkan kod yang lebih besar. Ini dipanggil rentetan semakan pariti kerana mempunyai hasil tambah titik binari yang sama dengan sifar dengan jika dan hanya jika bit-bit pada kedudukan di mana mempunyai nilai 1 mempunyai pariti genap. Jadi, untuk menentukan sama ada suatu rentetan berada dalam kod cukuplah untuk menyemak pariti subset tertentu bagi bit-bit
Satu perkara penting untuk diperhatikan di sini ialah hasil tambah titik binari bukan suatu hasil darab dalam, dalam erti kata formal. Khususnya, apabila dua rentetan mempunyai hasil tambah titik binari yang sama dengan sifar, ini tidak bermakna ia ortogon dalam cara biasa kita fikirkan tentang keortogonalan. Sebagai contoh, hasil tambah titik binari rentetan dengan dirinya sendiri ialah sifar β jadi adalah mungkin untuk rentetan semakan pariti bagi kod linear klasik berada sendiri dalam kod tersebut.
Kod linear klasik ke atas abjad binari sentiasa mengandungi bilangan rentetan yang merupakan kuasa β dan untuk satu kod linear klasik yang diterangkan dalam dua cara berbeza yang baru disebutkan, ia akan sentiasa berlaku bahawa Khususnya, jika kita mempunyai set minimum penjana, maka kod tersebut mengekod bit dan kita semestinya akan mempunyai perkataan kod; dan jika kita mempunyai set minimum rentetan semakan pariti, maka kita akan mempunyai perkataan kod. Jadi, setiap penjana menggandakan saiz ruang kod manakala setiap rentetan semakan pariti membahagi dua saiz ruang kod.
Sebagai contoh, kod ulangan 3-bit ialah kod linear, jadi ia boleh diterangkan dalam kedua-dua cara ini. Khususnya, hanya ada satu pilihan untuk penjana yang berfungsi: Kita boleh secara alternatif menerangkan kod tersebut dengan dua rentetan semakan pariti, seperti dan β yang sepatutnya kelihatan biasa daripada perbincangan kita sebelum ini tentang kod ini β atau kita boleh sebaliknya mengambil rentetan semakan pariti sebagai dan atau dan (Penjana dan rentetan semakan pariti umumnya tidak unik untuk kod linear klasik yang diberi.)
Untuk contoh kedua, pertimbangkan kod Hamming . Berikut ialah satu pilihan untuk senarai penjana yang berfungsi.
Dan berikut ialah satu pilihan untuk senarai semakan pariti bagi kod ini.
Di sini, dengan cara ini, kita melihat bahawa semua rentetan semakan pariti kita sendiri berada dalam kod tersebut.
Satu catatan terakhir tentang kod linear klasik, yang menghubungkannya dengan formalisme penstabil, ialah rentetan semakan pariti bersamaan dengan penjana penstabil yang hanya terdiri daripada matriks Pauli dan identiti. Sebagai contoh, rentetan semakan pariti dan untuk kod ulangan 3-bit bersamaan dengan tepat penjana penstabil dan yang konsisten dengan perbincangan tentang boleh cerapan Pauli daripada pelajaran sebelumnya.
Definisi kod CSSβ
Kod CSS ialah kod penstabil yang diperoleh dengan menggabungkan bersama pasangan tertentu kod linear klasik. Ini tidak berfungsi untuk dua kod linear klasik yang sewenang-wenangnya β kedua-dua kod tersebut mesti mempunyai hubungan tertentu. Walau bagaimanapun, pembinaan ini membuka banyak kemungkinan untuk kod pembetulan ralat kuantum, berdasarkan sebahagiannya kepada lebih 75 tahun teori pengkodan klasik.
Dalam formalisme penstabil, penjana penstabil yang hanya mengandungi matriks Pauli dan identiti bersamaan dengan semakan pariti, seperti yang baru kita perhatikan untuk kod ulangan 3-bit. Untuk contoh lain, pertimbangkan rentetan semakan pariti berikut untuk kod Hamming .
Rentetan semakan pariti ini bersamaan dengan penjana penstabil berikut (ditulis tanpa simbol hasil darab tensor), yang kita peroleh dengan menggantikan setiap dengan dan setiap dengan Ini adalah tiga daripada enam penjana penstabil untuk kod Steane 7-Qubit.
Marilah kita berikan nama penjana penstabil kepada penjana penstabil seperti ini, bermakna ia hanya mempunyai faktor tensor Pauli dan identiti β jadi matriks Pauli dan tidak pernah muncul dalam penjana penstabil .
Kita juga boleh mempertimbangkan penjana penstabil di mana hanya matriks Pauli dan identiti muncul sebagai faktor tensor. Penjana penstabil seperti ini boleh dilihat sebagai analogis dengan penjana penstabil , kecuali ia menerangkan semakan pariti dalam asas berbanding asas piawai. Penjana penstabil berbentuk ini dipanggil penjana penstabil β jadi tiada matriks Pauli atau dibenarkan kali ini.
Sebagai contoh, pertimbangkan tiga penjana penstabil lagi daripada kod Steane 7-Qubit.
Mereka mengikuti corak yang sama persis daripada kod Hamming seperti penjana penstabil , kecuali kali ini kita menggantikan untuk bukannya Apa yang kita peroleh daripada hanya tiga penjana penstabil ini ialah kod yang merangkumi 16 keadaan yang ditunjukkan di sini, yang kita peroleh dengan menggunakan operasi Hadamard kepada keadaan asas piawai yang bersamaan dengan rentetan dalam kod Hamming . (Sudah tentu, ruang kod untuk kod ini juga merangkumi kombinasi linear bagi keadaan-keadaan ini.)
Kini kita boleh mendefinisikan kod CSS dalam istilah yang sangat mudah.
Iaitu, kod CSS ialah kod penstabil di mana kita mempunyai penjana penstabil yang tiada matriks Pauli muncul, dan di mana dan tidak pernah muncul dalam penjana penstabil yang sama.
Untuk menjelaskan, mengikut definisi ini, kod CSS ialah kod yang boleh memilih hanya penjana penstabil dan β tetapi kita mesti mengingat bahawa terdapat kebebasan dalam cara kita memilih penjana penstabil untuk kod penstabil. Oleh itu, secara umum akan ada pilihan berbeza untuk penjana penstabil kod CSS yang kebetulannya bukan penjana penstabil atau (di samping sekurang-kurangnya satu pilihan yang memang demikian).
Berikut ialah contoh yang sangat mudah bagi kod CSS yang merangkumi penjana penstabil dan penjana penstabil :
Jelas bahawa ini ialah kod CSS, kerana penjana penstabil pertama ialah penjana penstabil dan yang kedua ialah penjana penstabil . Sudah tentu, kod CSS mesti juga merupakan kod penstabil yang sah β bermakna penjana penstabil mesti komutatif, membentuk set penjana minimum, dan memantapkan sekurang-kurangnya satu vektor keadaan kuantum. Keperluan-keperluan ini kebetulannya mudah untuk dilihat bagi kod ini. Seperti yang kita nyatakan dalam pelajaran sebelumnya, ruang kod untuk kod ini ialah ruang satu dimensi yang direntangi oleh keadaan Bell . Fakta bahawa kedua-dua penjana penstabil memantapkan keadaan ini jelas dengan mempertimbangkan dua ungkapan berikut bagi e-bit, bersama-sama dengan tafsiran penjana penstabil ini sebagai semakan pariti dalam asas dan .
Kod Steane 7-Qubit ialah contoh lain bagi kod CSS.
Di sini kita mempunyai tiga penjana penstabil dan tiga penjana penstabil , dan kita telah pun mengesahkan bahawa ini ialah kod penstabil yang sah.
Dan kod Shor 9-Qubit ialah contoh yang lain lagi.
Kali ini kita mempunyai enam penjana penstabil dan hanya dua penjana penstabil . Ini tidak mengapa, tidak perlu ada keseimbangan atau simetri antara dua jenis penjana (walaupun ia sering ada).
Sekali lagi, adalah kritikal bahawa kod CSS merupakan kod penstabil yang sah, dan khususnya setiap penjana penstabil mesti komutatif dengan setiap penjana penstabil . Jadi, tidak semua koleksi penjana penstabil dan mendefinisikan kod CSS yang sah.
Pengesanan dan pembetulan ralatβ
Berkenaan pengesanan dan pembetulan ralat, kod CSS secara umumnya mempunyai ciri yang serupa dengan kod Shor 9-qubit, iaitu ralat dan boleh dikesan dan dibetulkan secara bebas; penjana penstabil menerangkan kod yang melindungi daripada pembalikan bit, manakala penjana penstabil menerangkan kod yang secara bebas melindungi daripada pembalikan fasa. Ini berfungsi kerana penjana penstabil semestinya bertukar ganti dengan ralat , begitu juga dengan operasi yang digunakan sebagai pembetulan, jadi mereka langsung tidak ambil peduli tentang kedua-duanya, dan begitu juga bagi penjana penstabil , ralat, dan pembetulan.
Sebagai contoh, mari kita pertimbangkan kod Steane 7-qubit.
Idea asas untuk kod ini sudah jelas: ia adalah kod Hamming untuk ralat pembalikan bit dan kod Hamming untuk ralat pembalikan fasa. Hakikat bahawa penjana penstabil dan bertukar ganti mungkin sesuatu yang bertuah, kerana ia tidak akan menjadi kod penstabil yang sah jika mereka tidak bertukar ganti. Tetapi sebenarnya, terdapat banyak contoh kod linear klasik yang diketahui yang menghasilkan kod penstabil yang sah apabila digunakan dengan cara yang serupa.
Secara umum, andaikan kita mempunyai kod CSS di mana penjana penstabil membolehkan pembetulan hingga ralat pembalikan bit, dan penjana penstabil membolehkan pembetulan hingga ralat pembalikan fasa. Sebagai contoh, dan untuk kod Steane, memandangkan kod Hamming boleh membetulkan satu pembalikan bit. Maka, melalui pendiskretan ralat, kod CSS ini boleh membetulkan sebarang ralat pada bilangan qubit sehingga minimum antara dan . Ini kerana, apabila sindrom diukur, ralat sewenang-wenangnya pada bilangan qubit ini akan runtuh secara kebarangkalian kepada beberapa gabungan ralat , ralat , atau kedua-duanya β kemudian ralat dan ralat dikesan dan dibetulkan secara bebas.
Kesimpulannya, dengan syarat kita mempunyai dua kod linear klasik (atau dua salinan kod linear klasik tunggal) yang serasi, dalam erti kata bahawa mereka mentakrifkan penjana penstabil dan yang bertukar ganti, kod CSS yang kita peroleh dengan menggabungkannya mewarisi sifat pembetulan ralat daripada kedua-dua kod tersebut, dalam erti kata yang baru diterangkan.
Perhatikan bahawa ada harga yang perlu dibayar, iaitu kita tidak boleh mengekod seramai qubit berbanding bit yang boleh kita lakukan dengan dua kod klasik tersebut. Ini kerana jumlah penjana penstabil untuk kod CSS adalah jumlah bilangan semakan pariti untuk dua kod linear klasik, dan setiap penjana penstabil mengurangkan dimensi ruang kod kepada separuh. Sebagai contoh, kod Hamming membolehkan pengekodaan empat bit klasik, kerana kita hanya mempunyai tiga rentetan semakan pariti untuk kod ini, sedangkan kod Steane 7-qubit hanya mengekod satu qubit, kerana ia mempunyai enam penjana penstabil.
Ruang kod bagi kod CSSβ
Perkara terakhir yang akan kita lakukan dalam perbincangan kod CSS ini ialah mempertimbangkan ruang kod bagi kod-kod ini. Ini akan memberi kita peluang untuk mengkaji dengan lebih terperinci hubungan yang mesti wujud antara dua kod linear klasik supaya mereka serasi, dalam erti kata bahawa mereka boleh digabungkan untuk membentuk kod CSS.
Pertimbangkan mana-mana kod CSS pada qubit, dan biarkan menjadi rentetan semakan pariti -bit yang sepadan dengan penjana penstabil bagi kod ini. Ini bermakna kod linear klasik yang diterangkan oleh hanya penjana penstabil , yang akan kita namakan mengambil bentuk berikut.
Dalam kata-kata, kod linear klasik mengandungi setiap rentetan yang hasil darab titik perduaan dengan setiap rentetan semakan pariti adalah sifar.
Dengan cara yang sama, biarkan menjadi rentetan semakan pariti -bit yang sepadan dengan penjana penstabil bagi kod kita. Jadi, kod linear klasik yang sepadan dengan penjana penstabil mengambil bentuk ini.
Penjana penstabil sahaja oleh itu menerangkan kod yang serupa dengan kod ini, tetapi dalam asas dan bukannya asas piawai.
Kini kita akan memperkenalkan dua kod linear klasik baru yang diterbitkan daripada pilihan rentetan yang sama, dan tetapi di mana kita mengambil rentetan-rentetan ini sebagai penjana dan bukannya rentetan semakan pariti. Secara khususnya, kita memperoleh dua kod ini.
Kod-kod ini dikenali sebagai kod dual bagi kod yang ditakrifkan sebelum ini: adalah kod dual bagi dan adalah kod dual bagi Mungkin tidak jelas pada ketika ini mengapa kod dual ini relevan, tetapi ia ternyata sangat relevan atas beberapa sebab, termasuk dua sebab yang dijelaskan dalam perenggan-perenggan berikut.
Pertama, syarat yang mesti dipenuhi agar dua kod linear klasik dan serasi, dalam erti kata bahawa mereka boleh digandingkan untuk membentuk kod CSS, boleh diterangkan dalam terma mudah dengan merujuk kepada kod dual. Secara khususnya, mestilah atau secara setara, bahawa Dalam kata-kata, kod dual mengandungi rentetan yang sepadan dengan penjana penstabil , dan kemasukan mereka dalam adalah bersamaan dengan hasil darab titik perduaan bagi setiap rentetan ini dengan rentetan yang sepadan dengan penjana penstabil adalah sifar. Itu seterusnya bersamaan dengan setiap penjana penstabil bertukar ganti dengan setiap penjana penstabil . Atau, dengan menukar peranan penjana penstabil dan serta bermula dari kemasukan kita boleh mencapai kesimpulan yang sama.
Kedua, dengan merujuk kepada kod dual, kita boleh dengan mudah menerangkan ruang kod bagi kod CSS yang diberikan. Secara khususnya, ruang kod direntangi oleh vektor-vektor berformat berikut.
Dalam kata-kata, vektor-vektor ini adalah superposisi seragam ke atas rentetan dalam kod dual bagi kod yang sepadan dengan penjana penstabil , dialihkan oleh (dalam erti kata lain, di-XOR bit demi bit dengan) rentetan dalam kod yang sepadan dengan penjana penstabil . Untuk jelasnya, pilihan yang berbeza untuk anjakan β diwakili oleh rentetan dalam ungkapan ini β boleh menghasilkan vektor yang sama. Jadi, keadaan-keadaan ini tidak semuanya berbeza, tetapi secara kolektif ia merentangi keseluruhan ruang kod.
Berikut adalah penjelasan intuitif mengapa vektor-vektor sedemikian berada dalam ruang kod dan merentanginya. Pertimbangkan keadaan asas piawai -qubit untuk sebarang rentetan -bit yang sewenang-wenangnya, dan andaikan kita mengunjurkan keadaan ini ke atas ruang kod. Ertinya, biarkan menandakan unjuran ke atas ruang kod bagi kod CSS kita, pertimbangkan vektor Terdapat dua kes:
-
Kes 1: Ini bermakna setiap penjana penstabil bagi kod CSS kita bertindak secara trivial ke atas Penjana penstabil pula, setiap satunya hanya membalikkan beberapa bit bagi Secara khususnya, untuk setiap penjana bagi penjana penstabil yang sepadan dengan mengubah menjadi Dengan mencirikan unjuran sebagai purata ke atas elemen-elemen penstabil (seperti yang kita lihat dalam pelajaran sebelumnya), kita memperoleh formula ini:
-
Kes 2: Ini bermakna sekurang-kurangnya satu semakan pariti yang sepadan dengan penjana penstabil gagal, ertinya mesti merupakan eigen-vektor bagi sekurang-kurangnya salah satu penjana penstabil . Ruang kod bagi kod CSS adalah persilangan ruang eigen bagi penjana-penjana penstabil. Jadi, sebagai eigen-vektor bagi sekurang-kurangnya salah satu penjana penstabil , oleh itu berortogon dengan ruang kod:
Dan kini, apabila kita melalui semua rentetan -bit , membuang yang , dan menormalisasi yang tinggal, kita memperoleh vektor-vektor yang diterangkan sebelumnya, yang membuktikan bahawa ia merentangi ruang kod.
Kita juga boleh menggunakan simetri antara penjana penstabil dan untuk menerangkan ruang kod dengan cara yang serupa tetapi berbeza. Secara khususnya, ia adalah ruang yang direntangi oleh vektor-vektor berformat berikut.
Pada dasarnya, dan telah ditukar ganti dalam setiap contoh kemunculannya β tetapi kita juga mesti menukar asas piawai dengan asas , itulah sebabnya operasi Hadamard disertakan.
Sebagai contoh, mari kita pertimbangkan kod Steane 7-qubit. Rentetan semakan pariti bagi penjana penstabil dan adalah sama: dan Kod dan oleh itu adalah sama; kedua-duanya sama dengan kod Hamming .
Kod dual dan oleh itu juga sama. Kita mempunyai tiga penjana, jadi kita memperoleh lapan rentetan.
Rentetan-rentetan ini semuanya terkandung dalam kod Hamming , jadi syarat CSS dipenuhi: atau secara setara,
Memandangkan mengandungi separuh daripada semua rentetan dalam hanya terdapat dua vektor yang berbeza yang boleh diperoleh dengan memilih Ini dijangka, kerana kod Steane 7-qubit mempunyai ruang kod dua dimensi. Kita boleh menggunakan dua keadaan yang kita peroleh dengan cara ini untuk mengekod keadaan logik dan seperti berikut.
Seperti biasa, pilihan ini tidak dipaksa ke atas kita β kita bebas menggunakan ruang kod untuk mengekod qubit mengikut cara kita sendiri. Walau bagaimanapun, pengekodan ini adalah konsisten dengan contoh litar pengekodan untuk kod Steane 7-qubit dalam pelajaran sebelumnya.