Langkau ke kandungan utama

Kod torik

Seterusnya kita akan membincangkan kod CSS tertentu yang dikenali sebagai kod torik, yang ditemui oleh Alexei Kitaev pada tahun 1997. Sebenarnya, kod torik bukan satu kod tunggal, tetapi merupakan satu keluarga kod, satu untuk setiap integer positif bermula dari 2. Kod-kod ini mempunyai beberapa sifat utama:

  • Penjana penstabilan mempunyai berat rendah, dan khususnya semuanya mempunyai berat 4. Dalam istilah teori pengekodan, kod torik adalah contoh kod semak pariti ketumpatan rendah kuantum, atau kod LDPC kuantum (di mana rendah bermaksud 4 dalam kes ini). Ini bagus kerana setiap pengukuran penjana penstabilan tidak perlu melibatkan terlalu banyak qubit.

  • Kod torik mempunyai lokaliti geometri. Ini bermakna bukan sahaja penjana penstabilan mempunyai berat rendah, tetapi juga boleh menyusun qubit secara ruang supaya setiap pengukuran penjana penstabilan hanya melibatkan qubit yang berdekatan. Pada dasarnya, ini menjadikan pengukuran ini lebih mudah dilaksanakan berbanding jika ia melibatkan qubit yang berjauhan secara ruang.

  • Ahli keluarga kod torik mempunyai jarak yang semakin besar dan boleh menoleransi kadar ralat yang agak tinggi.

Huraian kod torik​

Biar Lβ‰₯2L\geq 2 menjadi integer positif, dan pertimbangkan kekisi LΓ—LL\times L dengan apa yang dipanggil sempadan berkala. Sebagai contoh, rajah ini menggambarkan kekisi LΓ—LL\times L untuk L=9.L=9.

Kekisi 9-kali-9 dengan sempadan berkala

Perhatikan bahawa garisan di sebelah kanan dan di bawah adalah garisan bertitik. Ini bertujuan untuk menunjukkan bahawa garisan bertitik di sebelah kanan adalah garisan yang sama dengan garisan di sebelah kiri, dan begitu juga, garisan bertitik di bawah adalah garisan yang sama dengan garisan di bahagian paling atas.

Untuk merealisasikan konfigurasi seperti ini secara fizikal memerlukan tiga dimensi. Khususnya, kita boleh membentuk kekisi itu menjadi silinder dengan terlebih dahulu menyamakan sisi kiri dan kanan, kemudian membengkokkan silinder itu supaya bulatan di hujungnya, yang dahulunya adalah tepi atas dan bawah kekisi, bertemu. Atau kita boleh menyamakan bahagian atas dan bawah terlebih dahulu kemudian bahagian sisinya; kedua-duanya berfungsi dan tidak kira mana yang kita pilih untuk tujuan perbincangan ini.

Apa yang kita perolehi ialah torus β€” atau dengan kata lain, donat (walaupun memikirkannya sebagai tiub dalam tayar mungkin gambaran yang lebih baik kerana ini bukan pepejal: kekisi itu telah menjadi hanya permukaan torus). Inilah asal-usul nama "kod torik".

Kekisi 9-kali-9 yang dililitkan menjadi torus

Cara seseorang boleh "bergerak" pada torus seperti ini, antara titik bersebelahan pada kekisi, mungkin sudah biasa bagi mereka yang pernah bermain permainan video lama, di mana bergerak keluar dari bahagian atas skrin menyebabkan anda muncul di bawah, dan begitu juga untuk tepi kiri dan kanan skrin. Beginilah cara kita akan melihat kekisi dengan sempadan berkala ini, berbanding dengan bercakap secara khusus tentang torus dalam ruang 3-dimensi.

Seterusnya, qubit disusun pada tepi kekisi ini, seperti yang digambarkan dalam rajah berikut, di mana qubit ditunjukkan dengan bulatan biru pepejal.

Qubit pada tepi kekisi berkala 9-kali-9

Perhatikan bahawa qubit yang diletakkan pada garisan bertitik tidak pepejal kerana ia sudah diwakili pada garisan paling atas dan paling kiri dalam kekisi. Secara keseluruhan terdapat 2L22L^2 qubit: L2L^2 qubit pada garisan mendatar dan L2L^2 qubit pada garisan menegak.

Untuk menghuraikan kod torik itu sendiri, yang tinggal adalah menghuraikan penjana penstabilan:

  • Untuk setiap jubin yang dibentuk oleh garisan dalam kekisi, terdapat satu penjana penstabilan ZZ, yang diperoleh dengan mentensori matriks ZZ pada empat qubit yang menyentuh jubin itu bersama matriks identiti pada semua qubit yang lain.

  • Untuk setiap verteks yang dibentuk oleh garisan dalam kekisi, terdapat satu penjana penstabilan XX, yang diperoleh dengan mentensori matriks XX pada empat qubit bersebelahan dengan verteks itu bersama matriks identiti pada semua qubit yang lain.

Dalam kedua-dua kes, kita mendapat operasi Pauli berat-4. Secara individu, penjana penstabilan ini boleh digambarkan seperti berikut.

Jenis penjana penstabilan untuk kod torik

Berikut adalah ilustrasi yang menunjukkan beberapa contoh penjana penstabilan dalam konteks kekisi itu sendiri. Perhatikan bahawa penjana penstabilan yang melintasi sempadan berkala turut disertakan. Penjana yang melintasi sempadan berkala ini tidak istimewa atau berbeza dalam apa jua cara daripada yang tidak melintasinya.

Contoh penjana penstabilan pada kekisi

Penjana penstabilan mestilah bertukar peringkat untuk ini menjadi kod penstabilan yang sah. Seperti biasa, semua penjana penstabilan ZZ bertukar peringkat antara satu sama lain, kerana ZZ bertukar peringkat dengan dirinya sendiri dan identiti bertukar peringkat dengan segalanya, dan begitu juga untuk penjana penstabilan XX. Penjana penstabilan ZZ dan XX jelas bertukar peringkat apabila ia bertindak secara bukan remeh pada set qubit yang tidak bertindih, seperti dalam contoh yang ditunjukkan dalam rajah sebelumnya. Kemungkinan yang tinggal ialah penjana penstabilan ZZ dan penjana penstabilan XX bertindih pada qubit di mana ia bertindak secara bukan remeh, dan apabila ini berlaku, penjana-penjana itu sentiasa bertindih pada dua qubit, seperti dalam rajah berikutnya.

Penjana penstabilan yang bertindih untuk kod torik

Akibatnya, dua penjana penstabilan seperti ini bertukar peringkat, sama seperti ZβŠ—ZZ\otimes Z dan XβŠ—XX\otimes X bertukar peringkat. Oleh itu, semua penjana penstabilan bertukar peringkat antara satu sama lain.

Syarat kedua yang diperlukan pada penjana penstabilan untuk kod penstabilan ialah ia mestilah membentuk set penjanaan minimum. Syarat ini sebenarnya tidak dipenuhi oleh koleksi ini: jika kita darabkan semua penjana penstabilan ZZ bersama-sama, kita mendapat operasi identiti, dan begitu juga untuk penjana penstabilan XX. Oleh itu, mana-mana satu penjana penstabilan ZZ boleh dinyatakan sebagai hasil darab semua yang lain, dan begitu juga, mana-mana satu penjana penstabilan XX boleh dinyatakan sebagai hasil darab penjana penstabilan XX yang selebihnya. Namun, jika kita membuang mana-mana satu penjana penstabilan ZZ dan mana-mana satu penjana penstabilan XX, kita memang mendapat set penjanaan minimum.

Untuk jelaskan perkara ini, kita memang mengambil berat tentang semua penjana penstabilan secara sama rata, dan secara operasi yang ketat tidak ada keperluan untuk memilih satu penjana penstabilan setiap jenis untuk dibuang. Namun, demi menganalisis kod β€” dan mengira penjana khususnya β€” kita boleh bayangkan bahawa satu penjana penstabilan setiap jenis telah dibuang, supaya kita mendapat set penjanaan minimum, sambil ingat bahawa kita sentiasa boleh menyimpulkan keputusan penjana yang dibuang ini (dengan menganggapnya sebagai boleh cerapan) daripada keputusan semua boleh cerapan penjana penstabilan lain yang berjenis sama.

Ini meninggalkan L2βˆ’1L^2 - 1 penjana penstabilan setiap jenis, atau 2L2βˆ’22L^2 - 2 secara keseluruhan, dalam set penjanaan minimum (hipotetikal). Memandangkan terdapat 2L22L^2 qubit secara keseluruhan, ini bermakna kod torik mengekod 2L2βˆ’2(L2βˆ’1)=22L^2 - 2 (L^2 - 1) = 2 qubit.

Syarat terakhir yang diperlukan pada penjana penstabilan ialah sekurang-kurangnya satu vektor keadaan kuantum ditetapkan oleh semua penjana penstabilan. Kita akan melihat bahawa ini memang berlaku apabila kita meneruskan analisis kod, tetapi juga boleh difikirkan bahawa tiada cara untuk menjana βˆ’1-1 kali identiti pada semua 2L22L^2 qubit daripada penjana penstabilan.

Mengesan ralat​

Kod torik mempunyai huraian yang mudah dan elegan, tetapi sifat pembetulan ralat kuantumnya mungkin tidak jelas pada pandangan pertama. Ternyata, ia adalah kod yang menakjubkan! Untuk memahami mengapa dan bagaimana ia berfungsi, mari kita mulakan dengan mempertimbangkan ralat yang berbeza dan sindrom yang dihasilkannya.

Kod torik adalah kod CSS, kerana semua penjana penstabilan kita sama ada penjana penstabilan ZZ atau XX. Ini bermakna ralat XX dan ralat ZZ boleh dikesan (dan mungkin diperbetulkan) secara berasingan. Sebenarnya, terdapat simetri yang mudah antara penjana penstabilan ZZ dan XX yang membolehkan kita menganalisis ralat XX dan ralat ZZ dengan cara yang pada dasarnya sama. Oleh itu, kita akan fokus pada ralat XX, yang mungkin dikesan oleh penjana penstabilan ZZ β€” tetapi keseluruhan perbincangan berikut boleh diterjemahkan daripada ralat XX kepada ralat ZZ, yang secara analoginya dikesan oleh penjana penstabilan XX.

Gambar rajah berikut menggambarkan kesan ralat XX pada satu qubit. Di sini, andaiannya ialah 2L22L^2 qubit kita sebelumnya berada dalam keadaan yang terkandung dalam ruang kod torik, menyebabkan semua pengukuran penjana penstabilan mengeluarkan +1.+1. Penjana penstabilan ZZ mengesan ralat XX, dan terdapat satu penjana penstabilan sedemikian untuk setiap jubin dalam rajah, jadi kita boleh menunjukkan keputusan pengukuran penjana penstabilan yang sepadan dengan warna jubin itu: keputusan +1+1 ditunjukkan dengan jubin putih dan keputusan βˆ’1-1 ditunjukkan dengan jubin kelabu. Jika ralat balik-bit berlaku pada salah satu qubit, kesannya ialah pengukuran penjana penstabilan yang sepadan dengan dua jubin yang menyentuh qubit yang terjejas kini mengeluarkan βˆ’1.-1.

Kesan ralat balik-bit tunggal pada kod torik

Ini adalah intuitif apabila kita mempertimbangkan penjana penstabilan ZZ dan cara ia berkelakuan. Pada asasnya, setiap penjana penstabilan ZZ mengukur pariti empat qubit yang menyentuh jubin yang sepadan (berkenaan dengan asas piawai). Jadi, keputusan +1+1 tidak menunjukkan bahawa tiada ralat XX telah berlaku pada empat qubit ini, tetapi sebaliknya menunjukkan bahawa bilangan genap ralat XX telah berlaku pada qubit ini, manakala keputusan βˆ’1-1 menunjukkan bahawa bilangan ganjil ralat XX telah berlaku. Satu ralat XX oleh itu membalikkan pariti empat bit pada kedua-dua jubin yang disentuhnya, menyebabkan pengukuran penjana penstabilan mengeluarkan βˆ’1.-1.

Seterusnya mari kita perkenalkan berbilang ralat XX untuk melihat apa yang berlaku. Khususnya, kita akan mempertimbangkan rantaian ralat XX bersebelahan, di mana dua ralat XX adalah bersebelahan jika ia menjejaskan qubit yang menyentuh jubin yang sama.

Kesan rantaian ralat balik-bit pada kod torik

Dua penjana penstabilan ZZ di hujung rantaian kedua-duanya memberikan keputusan βˆ’1-1 dalam kes ini, kerana bilangan ganjil ralat XX telah berlaku pada dua jubin yang sepadan tersebut. Semua penjana penstabilan ZZ yang lain pula memberikan keputusan +1,+1, termasuk yang menyentuh rantaian tetapi bukan di hujungnya, kerana bilangan genap ralat XX telah berlaku pada qubit yang menyentuh jubin yang sepadan.

Oleh itu, selagi kita mempunyai rantaian ralat XX yang mempunyai hujung, kod torik akan mengesan bahawa ralat telah berlaku, menghasilkan keputusan pengukuran βˆ’1-1 untuk penjana penstabilan ZZ yang sepadan dengan hujung rantaian. Perhatikan bahawa rantaian ralat yang sebenar tidak didedahkan, hanya hujung-hujungnya! Ini tiada masalah β€” dalam subseksyen berikutnya kita akan melihat bahawa kita tidak perlu tahu dengan tepat qubit mana yang terjejas oleh ralat XX untuk membetulkannya. (Kod torik adalah contoh kod yang sangat terdegenerasi, dalam erti kata bahawa ia umumnya tidak mengenal pasti secara unik ralat yang diperbetulkannya.)

Namun, adalah mungkin untuk rantaian ralat XX bersebelahan tidak mempunyai hujung, iaitu rantaian ralat boleh membentuk gelung tertutup, seperti dalam rajah berikut.

Gelung tertutup ralat balik-bit untuk kod torik

Dalam kes sedemikian, bilangan genap ralat XX telah berlaku pada setiap jubin, jadi setiap pengukuran penjana penstabilan menghasilkan keputusan +1+1. Gelung tertutup ralat XX bersebelahan oleh itu tidak dikesan oleh kod.

Ini mungkin kelihatan mengecewakan, kerana kita hanya memerlukan empat ralat XX untuk membentuk gelung tertutup (dan kita mengharapkan sesuatu yang jauh lebih baik daripada kod jarak 4). Namun, gelung tertutup ralat XX dalam bentuk seperti yang digambarkan dalam rajah sebelumnya sebenarnya bukan ralat β€” kerana ia berada dalam penstabilan! Ingat bahawa, selain penjana penstabilan ZZ, kita juga mempunyai penjana penstabilan XX untuk setiap verteks dalam kekisi. Dan jika kita darabkan penjana penstabilan XX yang bersebelahan bersama-sama, hasilnya ialah kita mendapat gelung tertutup operasi XX. Sebagai contoh, gelung tertutup dalam rajah sebelumnya boleh diperoleh dengan menggandakan penjana penstabilan XX yang ditunjukkan dalam rajah berikut.

Gelung tertutup ralat balik-bit yang dijana oleh penjana penstabilan X

Namun, ini bukan satu-satunya jenis gelung tertutup ralat XX yang boleh kita ada β€” dan bukan semua gelung tertutup ralat XX terkandung dalam penstabilan. Khususnya, jenis-jenis gelung yang berbeza boleh dicirikan seperti berikut.

  1. Gelung tertutup ralat XX dengan bilangan genap ralat XX pada setiap garisan mendatar dan setiap garisan menegak qubit. (Contoh yang ditunjukkan di atas tergolong dalam kategori ini.) Gelung dalam bentuk ini sentiasa terkandung dalam penstabilan, kerana ia boleh dikecutkan menjadi tiada dengan menggandakannya dengan penjana penstabilan XX.

  2. Gelung tertutup ralat XX dengan bilangan ganjil ralat XX pada sekurang-kurangnya satu garisan mendatar atau sekurang-kurangnya satu garisan menegak qubit. Gelung dalam bentuk ini tidak pernah terkandung dalam penstabilan dan oleh itu mewakili ralat bukan remeh yang tidak dikesan oleh kod.

Contoh gelung tertutup ralat XX dalam kategori kedua ditunjukkan dalam rajah berikut.

Gelung tertutup ralat balik-bit yang tidak berada dalam penstabilan

Rantaian ralat sedemikian tidak terkandung dalam penstabilan kerana setiap penjana penstabilan XX meletakkan bilangan genap operasi XX pada setiap garisan mendatar dan setiap garisan menegak qubit. Ini oleh itu adalah contoh sebenar ralat bukan remeh yang gagal dikesan oleh kod.

Kuncinya ialah satu-satunya cara untuk membentuk gelung jenis kedua ialah mengelilingi torus, sama ada mengelilingi lubang di tengah torus, melaluinya, atau kedua-duanya. Secara intuitif, rantaian ralat XX seperti ini tidak boleh dikecutkan menjadi tiada dengan menggandakannya dengan penjana penstabilan XX kerana topologi torus menghalangnya. Kod torik kadang-kadang dikategorikan sebagai kod pembetulan ralat kuantum topologi atas sebab ini. Panjang minimum gelung sedemikian ialah L,L, dan oleh itu inilah jarak kod torik: mana-mana gelung tertutup ralat XX dengan panjang kurang daripada LL mesti tergolong dalam kategori pertama, dan oleh itu terkandung dalam penstabilan; dan mana-mana rantaian ralat XX dengan hujung dikesan oleh kod.

Memandangkan kod torik menggunakan 2L22L^2 qubit untuk mengekod 22 qubit dan mempunyai jarak L,L, maka ia adalah kod penstabilan [[2L2,2,L]][[2L^2,2,L]].

Membetulkan ralat​

Kita telah membincangkan pengesanan ralat untuk kod torik, dan kini kita akan membincangkan secara ringkas cara membetulkan ralat. Kod torik adalah kod CSS, jadi ralat XX dan ralat ZZ boleh dikesan dan diperbetulkan secara bebas. Dengan terus fokus pada penjana penstabilan ZZ, yang mengesan ralat XX, mari kita pertimbangkan bagaimana rantaian ralat XX boleh diperbetulkan. (Ralat ZZ diperbetulkan dengan cara yang simetri.)

Jika sindrom yang berbeza daripada sindrom (+1,…,+1)(+1,\ldots,+1) muncul apabila penjana penstabilan ZZ diukur, keputusan βˆ’1-1 mendedahkan hujung satu atau lebih rantaian ralat XX. Kita boleh cuba membetulkan ralat ini dengan memasangkan keputusan βˆ’1-1 dan membentuk rantaian pembetulan XX di antara mereka. Apabila melakukan ini, masuk akal untuk memilih laluan terpendek di mana pembetulan berlaku.

Sebagai contoh, pertimbangkan rajah berikut, yang menggambarkan sindrom dengan dua keputusan βˆ’1-1, ditunjukkan oleh jubin kelabu, yang disebabkan oleh rantaian ralat XX yang digambarkan oleh garisan dan bulatan magenta. Seperti yang telah kita nyatakan, rantaian itu sendiri tidak didedahkan oleh sindrom; hanya hujungnya yang kelihatan.

Membetulkan ralat X dengan laluan terpendek

Untuk mencuba membetulkan rantaian ralat ini, laluan terpendek antara keputusan pengukuran βˆ’1-1 dipilih dan gate XX digunakan sebagai pembetulan pada qubit sepanjang laluan ini (ditunjukkan dengan warna kuning dalam rajah). Walaupun pembetulan mungkin tidak sepadan dengan rantaian ralat yang sebenar, ralat dan pembetulan bersama-sama membentuk gelung tertutup operasi XX yang terkandung dalam penstabilan kod. Oleh itu pembetulan berjaya dalam situasi ini, kerana kesan gabungan ralat dan pembetulan adalah tidak melakukan apa-apa pada keadaan yang dikodkan.

Strategi ini tidak akan selalu berjaya. Sebagai contoh, penjelasan yang berbeza untuk sindrom yang sama seperti dalam rajah sebelumnya ditunjukkan dalam rajah berikut.

Melengkapkan ralat logik dengan pembetulan

Kali ini, rantaian pembetulan yang sama seperti sebelumnya gagal untuk membetulkan rantaian ralat ini, kerana kesan gabungan ralat dan pembetulan ialah kita mendapat gelung tertutup operasi XX yang mengelilingi torus, dan oleh itu mempunyai kesan bukan remeh pada ruang kod. Jadi, tiada jaminan bahawa strategi yang baru dihuraikan, iaitu memilih laluan terpendek pembetulan XX antara dua keputusan pengukuran sindrom βˆ’1-1, akan membetulkan ralat yang menyebabkan sindrom ini dengan betul.

Mungkin lebih kerap berlaku, bergantung pada model bunyi, ialah sindrom dengan lebih daripada dua entri βˆ’1-1 diukur, seperti yang dicadangkan oleh rajah berikut.

Berbilang rantaian pembetulan

Dalam kes sedemikian, terdapat strategi pembetulan yang berbeza yang diketahui. Satu strategi semula jadi ialah cuba memasangkan keputusan pengukuran βˆ’1-1 dan melakukan pembetulan sepanjang laluan terpendek yang menghubungkan pasangan, seperti yang ditunjukkan dalam rajah dengan warna kuning. Khususnya, padanan sempurna berwajaran minimum antara keputusan pengukuran βˆ’1-1 boleh dikira, kemudian pasangan dihubungkan oleh laluan terpendek pembetulan XX. Pengiraan padanan sempurna berwajaran minimum boleh dilakukan dengan cekap menggunakan algoritma klasik yang dikenali sebagai algoritma bunga, yang ditemui oleh Edmonds pada tahun 1960-an.

Pendekatan ini umumnya tidak optimum untuk model bunyi yang paling biasa dikaji, tetapi berdasarkan simulasi berangka ia berfungsi dengan sangat baik dalam praktik di bawah kadar bunyi kira-kira 10%, dengan mengandaikan ralat Pauli bebas di mana X,X, Y,Y, dan Z,Z, adalah sama berkemungkinan. Meningkatkan LL tidak memberi kesan ketara pada titik impas di mana kod mula membantu, tetapi mengakibatkan penurunan yang lebih pantas dalam kebarangkalian ralat logik apabila kadar ralat melepasi titik impas.

Source: IBM Quantum docs β€” updated 10 Feb 2026
English version on doQumentation β€” updated 7 Mei 2026
This translation based on the English version of approx. 26 Mac 2026