ผู้เขียน: Sergey Bravyi Andrew W. Cross Jay M. Gambetta Dmitri Maslov Patrick Rall Theodore J. Yoder บทคัดย่อ การสะสมข้อผิดพลาดทางกายภาพ , , จำกัดการประมวลผลอัลกอริทึมขนาดใหญ่ในคอมพิวเตอร์ควอนตัมปัจจุบัน การแก้ไขข้อผิดพลาดควอนตัม สัญญาว่าจะแก้ปัญหานี้โดยการเข้ารหัสคิวบิตเชิงตรรกะ ตัวลงในคิวบิตทางกายภาพจำนวน ตัว เพื่อให้ข้อผิดพลาดทางกายภาพลดลงจนสามารถเรียกใช้วงจรที่ต้องการด้วยความเที่ยงตรงที่ยอมรับได้ การแก้ไขข้อผิดพลาดควอนตัมจะสามารถทำได้จริงเมื่ออัตราข้อผิดพลาดทางกายภาพต่ำกว่าค่าขีดจำกัด ซึ่งขึ้นอยู่กับการเลือกโค้ดควอนตัม วงจรการวัดซินโดรม และอัลกอริทึมการถอดรหัส . เรานำเสนอโปรโตคอลการแก้ไขข้อผิดพลาดควอนตัมแบบครบวงจรที่ใช้หน่วยความจำที่ทนทานต่อข้อผิดพลาดบนพื้นฐานของตระกูลโค้ดแบบพาเรตี้แบบเบาบาง (low-density parity-check codes) . แนวทางของเราบรรลุขีดจำกัดข้อผิดพลาดที่ 0.7% สำหรับโมเดลสัญญาณรบกวนตามวงจรมาตรฐาน เทียบเท่ากับโค้ดพื้นผิว (surface code) , , , ซึ่งเป็นโค้ดชั้นนำในแง่ของขีดจำกัดข้อผิดพลาดมา 20 ปี วงจรการวัดซินโดรมสำหรับโค้ดความยาว ในตระกูลของเราต้องการคิวบิตเสริม ตัวและวงจรความลึก 8 ที่มีเกท CNOT การเริ่มต้นคิวบิตและการวัด การเชื่อมต่อคิวบิตที่ต้องการคือแผนภาพระดับ 6 ที่ประกอบด้วยกราฟระนาบสองชั้นที่แยกจากกัน โดยเฉพาะอย่างยิ่ง เราแสดงให้เห็นว่าสามารถรักษาคิวบิตเชิงตรรกะ 12 ตัวได้เกือบ 1 ล้านรอบซินโดรมโดยใช้คิวบิตทางกายภาพทั้งหมด 288 ตัว โดยมีอัตราข้อผิดพลาดทางกายภาพ 0.1% ในขณะที่โค้ดพื้นผิวจะต้องการคิวบิตทางกายภาพเกือบ 3,000 ตัวเพื่อให้ได้ประสิทธิภาพดังกล่าว ผลการค้นพบของเราทำให้การสาธิตหน่วยความจำควอนตัมที่ทนทานต่อข้อผิดพลาดที่มีต้นทุนต่ำสามารถทำได้ด้วยโปรเซสเซอร์ควอนตัมที่ใกล้จะใช้งานได้ 1 2 3 4 k n 5 6 7 8 9 10 n n เนื้อหาหลัก คอมพิวเตอร์ควอนตัมได้รับความสนใจเนื่องจากความสามารถในการมอบโซลูชันที่เร็วกว่าสำหรับชุดปัญหาการคำนวณเมื่อเทียบกับอัลกอริทึมแบบคลาสสิกที่ดีที่สุดที่รู้จัก . เชื่อกันว่าคอมพิวเตอร์ควอนตัมที่ทำงานได้และปรับขนาดได้อาจช่วยแก้ปัญหาการคำนวณในสาขาต่างๆ เช่น การค้นพบทางวิทยาศาสตร์ การวิจัยวัสดุ เคมี และการออกแบบยา เป็นต้น , , , . 5 11 12 13 14 อุปสรรคหลักในการสร้างคอมพิวเตอร์ควอนตัมคือความเปราะบางของข้อมูลควอนตัม อันเนื่องมาจากแหล่งสัญญาณรบกวนต่างๆ ที่ส่งผลกระทบ เนื่องจากการแยกคอมพิวเตอร์ควอนตัมออกจากผลกระทบภายนอกและการควบคุมเพื่อสร้างการคำนวณที่ต้องการนั้นขัดแย้งกัน สัญญาณรบกวนจึงหลีกเลี่ยงไม่ได้ แหล่งสัญญาณรบกวน ได้แก่ ความไม่สมบูรณ์ของคิวบิต วัสดุที่ใช้ เครื่องมือควบคุม ข้อผิดพลาดในการเตรียมสถานะและการวัด และปัจจัยภายนอกต่างๆ ตั้งแต่สนามแม่เหล็กไฟฟ้าในท้องถิ่นที่มนุษย์สร้างขึ้น ไปจนถึงปัจจัยที่มีอยู่ในเอกภพ เช่น รังสีคอสมิก ดูเอกสารอ้างอิง สำหรับบทสรุป แม้ว่าแหล่งสัญญาณรบกวนบางแหล่งสามารถกำจัดได้ด้วยการควบคุมที่ดีขึ้น , วัสดุ และการป้องกัน , , , แหล่งสัญญาณรบกวนอื่นๆ อีกหลายแหล่งดูเหมือนจะกำจัดได้ยากหากไม่สามารถกำจัดได้เลย ประเภทสุดท้ายอาจรวมถึงการปล่อยประจุแบบสุ่มและแบบเหนี่ยวนำในไอออนที่ถูกกัก , และการมีปฏิสัมพันธ์กับอ่าง (Purcell effect) ในวงจรตัวนำยิ่งยวด ซึ่งครอบคลุมเทคโนโลยีควอนตัมชั้นนำทั้งสองประเภท ดังนั้น การแก้ไขข้อผิดพลาดจึงกลายเป็นข้อกำหนดที่สำคัญสำหรับการสร้างคอมพิวเตอร์ควอนตัมที่ใช้งานได้และปรับขนาดได้ 15 16 17 18 19 20 1 2 3 ความเป็นไปได้ของความทนทานต่อข้อผิดพลาดควอนตัมได้รับการพิสูจน์แล้ว . การเข้ารหัสคิวบิตเชิงตรรกะซ้ำๆ ลงในคิวบิตทางกายภาพจำนวนมากช่วยให้สามารถวินิจฉัยและแก้ไขข้อผิดพลาดได้โดยการวัดซินโดรมของตัวดำเนินการตรวจสอบพาเรตี้ซ้ำๆ อย่างไรก็ตาม การแก้ไขข้อผิดพลาดจะมีประโยชน์ก็ต่อเมื่ออัตราข้อผิดพลาดของฮาร์ดแวร์ต่ำกว่าค่าขีดจำกัดค่าหนึ่งซึ่งขึ้นอยู่กับโปรโตคอลการแก้ไขข้อผิดพลาดเฉพาะ ข้อเสนอแรกๆ สำหรับการแก้ไขข้อผิดพลาดควอนตัม เช่น โค้ดแบบต่อเนื่อง (concatenated codes) , , มุ่งเน้นไปที่การแสดงความเป็นไปได้ทางทฤษฎีของการลดข้อผิดพลาด เมื่อความเข้าใจเกี่ยวกับการแก้ไขข้อผิดพลาดควอนตัมและความสามารถของเทคโนโลยีควอนตัมเติบโตขึ้น จุดสนใจจึงเปลี่ยนไปสู่การค้นหาโปรโตคอลการแก้ไขข้อผิดพลาดควอนตัมที่ใช้งานได้จริง สิ่งนี้นำไปสู่การพัฒนาโค้ดพื้นผิว (surface code) , , , ซึ่งมีขีดจำกัดข้อผิดพลาดสูงใกล้เคียง 1% อัลกอริทึมการถอดรหัสที่รวดเร็ว และความเข้ากันได้กับโปรเซสเซอร์ควอนตัมที่มีอยู่ซึ่งอาศัยการเชื่อมต่อแบบกริด 2 มิติ (2D) ตัวอย่างเล็กๆ ของโค้ดพื้นผิวที่มีคิวบิตเชิงตรรกะเดียวได้รับการสาธิตแล้วในเชิงทดลองโดยหลายกลุ่ม , , , , . อย่างไรก็ตาม การขยายขนาดโค้ดพื้นผิวให้มีคิวบิตเชิงตรรกะ 100 ตัวขึ้นไปจะมีค่าใช้จ่ายสูงเกินไปเนื่องจากประสิทธิภาพการเข้ารหัสที่ต่ำ สิ่งนี้กระตุ้นความสนใจในโค้ดควอนตัมที่ทั่วไปมากขึ้น ซึ่งเรียกว่าโค้ดแบบพาเรตี้แบบเบาบาง (low-density parity-check (LDPC) codes) . ความก้าวหน้าล่าสุดในการศึกษาโค้ด LDPC ชี้ให้เห็นว่าสามารถบรรลุความทนทานต่อข้อผิดพลาดควอนตัมด้วยประสิทธิภาพการเข้ารหัสที่สูงขึ้นมาก . ที่นี่ เรามุ่งเน้นไปที่การศึกษาโค้ด LDPC เนื่องจากเป้าหมายของเราคือการค้นหาโค้ดและการโปรโตคอลการแก้ไขข้อผิดพลาดควอนตัมที่มีประสิทธิภาพและสามารถสาธิตได้จริง โดยพิจารณาถึงข้อจำกัดของเทคโนโลยีคอมพิวเตอร์ควอนตัม 4 21 22 23 7 8 9 10 24 25 26 27 28 6 29 โค้ดการแก้ไขข้อผิดพลาดควอนตัมเป็นประเภท LDPC หากตัวดำเนินการตรวจสอบแต่ละตัวของโค้ดกระทำบนคิวบิตเพียงไม่กี่ตัว และคิวบิตแต่ละตัวมีส่วนร่วมในการตรวจสอบเพียงไม่กี่ครั้ง ได้มีการเสนอโค้ด LDPC หลายรูปแบบเมื่อเร็วๆ นี้ รวมถึงโค้ดพื้นผิวแบบไฮเพอร์โบลิก (hyperbolic surface codes) , , , ผลคูณไฮเปอร์กราฟ (hypergraph product) , โค้ดผลคูณแบบสมดุล (balanced product codes) , โค้ดสองบล็อก (two-block codes) โดยใช้กลุ่มจำกัด , , , และโค้ดแทนเนอร์ควอนตัม (quantum Tanner codes) , . หลังสุดแสดงให้เห็น , ว่ามีลักษณะ "ดี" โดยประมาณในแง่ของการให้ค่าอัตราการเข้ารหัสคงที่และระยะห่างเชิงเส้น: พารามิเตอร์ที่วัดจำนวนข้อผิดพลาดที่แก้ไขได้ ในทางตรงกันข้าม โค้ดพื้นผิวมีอัตราการเข้ารหัสเป็นศูนย์โดยประมาณและระยะห่างเพียงรากที่สอง การแทนที่โค้ดพื้นผิวด้วยโค้ด LDPC ที่มีอัตราสูงและระยะห่างสูงอาจมีผลกระทบในทางปฏิบัติอย่างมาก ประการแรก ต้นทุนแฝงของความทนทานต่อข้อผิดพลาด (อัตราส่วนระหว่างจำนวนคิวบิตทางกายภาพและเชิงตรรกะ) สามารถลดลงได้อย่างมาก ประการที่สอง โค้ดที่มีระยะห่างสูงแสดงการลดลงอย่างมากของอัตราข้อผิดพลาดเชิงตรรกะ: เมื่อความน่าจะเป็นของข้อผิดพลาดทางกายภาพข้ามค่าขีดจำกัด ปริมาณการลดข้อผิดพลาดที่ได้จากโค้ดอาจเพิ่มขึ้นหลายเท่าแม้จะลดอัตราข้อผิดพลาดทางกายภาพเพียงเล็กน้อย คุณลักษณะนี้ทำให้โค้ด LDPC ที่มีระยะห่างสูงน่าสนใจสำหรับการสาธิตในระยะใกล้ ซึ่งน่าจะดำเนินการในระยะใกล้ขีดจำกัด อย่างไรก็ตาม เป็นที่เชื่อกันก่อนหน้านี้ว่าการทำผลงานได้ดีกว่าโค้ดพื้นผิวสำหรับโมเดลสัญญาณรบกวนที่สมจริง รวมถึงข้อผิดพลาดของหน่วยความจำ เกท และการเตรียมสถานะและการวัด อาจต้องใช้โค้ด LDPC ขนาดใหญ่มากที่มีคิวบิตทางกายภาพมากกว่า 10,000 ตัว . 30 31 32 33 34 35 36 37 38 39 40 39 40 31 ที่นี่ เรานำเสนอตัวอย่างที่ชัดเจนหลายประการของโค้ด LDPC อัตราสูงที่มีคิวบิตทางกายภาพไม่กี่ร้อยตัว พร้อมด้วยวงจรการวัดซินโดรมที่มีความลึกต่ำ อัลกอริทึมการถอดรหัสที่มีประสิทธิภาพ และโปรโตคอลที่ทนทานต่อข้อผิดพลาดสำหรับการเข้าถึงคิวบิตเชิงตรรกะแต่ละตัว โค้ดเหล่านี้แสดงขีดจำกัดข้อผิดพลาดใกล้เคียง 0.7% แสดงประสิทธิภาพที่ยอดเยี่ยมในระยะใกล้ขีดจำกัด และให้การลดต้นทุนการเข้ารหัสลง 10 เท่าเมื่อเทียบกับโค้ดพื้นผิว ข้อกำหนดฮาร์ดแวร์สำหรับการใช้โปรโตคอลการแก้ไขข้อผิดพลาดของเราค่อนข้างง่าย เนื่องจากคิวบิตทางกายภาพแต่ละตัวเชื่อมต่อด้วยเกทสองคิวบิตกับคิวบิตอื่นอีกหกตัว แม้ว่ากราฟการเชื่อมต่อคิวบิตจะไม่สามารถฝังลงในกริด 2 มิติได้ในระดับท้องถิ่น แต่ก็สามารถแยกออกเป็นกราฟระนาบสองชั้นที่แยกจากกันได้ ดังที่เราจะอธิบายต่อไป การเชื่อมต่อคิวบิตดังกล่าวเหมาะอย่างยิ่งสำหรับสถาปัตยกรรมที่ใช้คิวบิตตัวนำยิ่งยวด โค้ดของเราเป็นการขยายโค้ดจักรยาน (bicycle codes) ที่เสนอโดย MacKay และคณะ และศึกษาอย่างละเอียดมากขึ้นในเอกสารอ้างอิง , , . เราตั้งชื่อโค้ดของเราว่าจักรยานทวิภาค (bivariate bicycle (BB)) เพราะมันใช้พื้นฐานจากพหุนามทวิภาค ดังรายละเอียดใน . เหล่านี้คือโค้ดตัวรักษา (stabilizer codes) ประเภท Calderbank–Shor–Steane (CSS) , ซึ่งสามารถอธิบายได้ด้วยชุดของตัวดำเนินการตรวจสอบหกคิวบิต (stabilizer operators) ที่ประกอบด้วย Pauli X และ Z. ในภาพรวม โค้ด BB คล้ายกับโค้ดโทริก 2 มิติ (two-dimensional toric code) . โดยเฉพาะอย่างยิ่ง คิวบิตทางกายภาพของโค้ด BB สามารถวางบนกริด 2 มิติที่มีเงื่อนไขขอบเขตเป็นคาบ (periodic boundary conditions) เพื่อให้ตัวดำเนินการตรวจสอบทั้งหมดได้มาจากการใช้การเลื่อนแนวนอนและแนวตั้งของกริดจากคู่ของตัวดำเนินการตรวจสอบ X และ Z. อย่างไรก็ตาม ตรงกันข้ามกับตัวรักษาแบบเพลาคัต (plaquette) และจุดยอด (vertex stabilizers) ที่อธิบายโค้ดโทริก ตัวดำเนินการตรวจสอบของโค้ด BB ไม่ได้มีลักษณะเฉพาะทางเรขาคณิต และแต่ละการตรวจสอบจะกระทำบนหกคิวบิตแทนที่จะเป็นสี่คิวบิต เราจะอธิบายโค้ดด้วยกราฟแทนเนอร์ (Tanner graph) G โดยที่แต่ละจุดยอดของ G แสดงถึงคิวบิตข้อมูลหรือตัวดำเนินการตรวจสอบ จุดยอดการตรวจสอบ i และจุดยอดข้อมูล j จะเชื่อมต่อกันด้วยขอบหากตัวดำเนินการตรวจสอบที่ i กระทำกับคิวบิตข้อมูลที่ j อย่างไม่ชัดเจน (โดยใช้ Pauli X หรือ Z). ดูรูป สำหรับตัวอย่างกราฟแทนเนอร์ของโค้ดพื้นผิวและโค้ด BB ตามลำดับ กราฟแทนเนอร์ของโค้ด BB ใดๆ มีระดับจุดยอดเป็นหกและมีความหนาของกราฟ (graph thickness) เท่ากับสอง ซึ่งหมายความว่าสามารถแยกออกเป็นกราฟระนาบสองชั้นที่แยกจากกันได้ (ดู ). การเชื่อมต่อคิวบิตความหนา 2 เหมาะอย่างยิ่งสำหรับคิวบิตตัวนำยิ่งยวดที่เชื่อมต่อกันด้วยตัวปรับเรโซเนเตอร์ (couplers). เช่น สามารถติดชั้นตัวปรับเรโซเนเตอร์ระนาบสองชั้นและเส้นควบคุมของพวกมันเข้ากับด้านบนและด้านล่างของชิปที่โฮสต์คิวบิต และเชื่อมต่อทั้งสองด้านเข้าด้วยกัน 41 35 36 42 วิธีการ 43 44 7 1a,b 29 วิธีการ , กราฟแทนเนอร์ของโค้ดพื้นผิว เพื่อการเปรียบเทียบ , กราฟแทนเนอร์ของโค้ด BB ที่มีพารามิเตอร์ [] ฝังอยู่ในโทรัส ขอบของกราฟแทนเนอร์เชื่อมต่อจุดข้อมูลและจุดตรวจสอบ คิวบิตข้อมูลที่เกี่ยวข้องกับรีจิสเตอร์ q(L) และ q(R) แสดงด้วยวงกลมสีน้ำเงินและสีส้ม แต่ละจุดยอดมีขอบหกเส้น รวมถึงขอบระยะสั้นสี่เส้น (ชี้ไปทางเหนือ ใต้ ตะวันออก และตะวันตก) และขอบระยะยาวสองเส้น เราแสดงเฉพาะขอบระยะยาวบางส่วนเพื่อหลีกเลี่ยงความสับสน ขอบประ (dashed) และขอบทึบ (solid) แสดงถึงกราฟระนาบสองชั้นที่ครอบคลุมกราฟแทนเนอร์ ดู . , แผนภาพของการขยายกราฟแทนเนอร์สำหรับการวัด X และ Z ตามเอกสารอ้างอิง การเชื่อมต่อกับโค้ดพื้นผิว คิวบิตเสริมที่สอดคล้องกับการวัด X สามารถเชื่อมต่อกับโค้ดพื้นผิวได้ ทำให้สามารถดำเนินการโหลด-จัดเก็บ (load-store operations) สำหรับคิวบิตเชิงตรรกะทั้งหมดได้ด้วยการใช้ควอนตัมเทเลพอร์ตเทชัน (quantum teleportation) และยูนิตตารีเชิงตรรกะบางส่วน กราฟแทนเนอร์ที่ขยายใหญ่นี้ยังมีแอปพลิเคชันในสถาปัตยกรรมความหนา 2 ผ่านขอบ A และ B (ดู ). a b วิธีการ c 50 วิธีการ โค้ด BB ที่มีพารามิเตอร์ [[ , , ]] เข้ารหัสคิวบิตเชิงตรรกะ ตัวลงในคิวบิตข้อมูล ตัว โดยมีระยะห่างโค้ด ซึ่งหมายความว่าข้อผิดพลาดเชิงตรรกะใดๆ ครอบคลุมคิวบิตข้อมูลอย่างน้อย ตัว เราแบ่งคิวบิตข้อมูล ตัวออกเป็นรีจิสเตอร์ q(L) และ q(R) แต่ละขนาด /2. การตรวจสอบแต่ละครั้งจะกระทำบนสามคิวบิตจาก q(L) และสามคิวบิตจาก q(R) โค้ดอาศัยคิวบิตตรวจสอบเสริม ตัวเพื่อวัดซินโดรมข้อผิดพลาด เราแบ่งคิวบิตตรวจสอบ ตัวออกเป็นรีจิสเตอร์ q(X) และ q(Z) แต่ละขนาด /2 ซึ่งรวบรวมซินโดรมประเภท X และ Z ตามลำดับ โดยรวมแล้ว การเข้ารหัสอาศัยคิวบิตทางกายภาพ 2 ตัว ดังนั้นอัตราการเข้ารหัสสุทธิจึงเป็น = /(2 ). ตัวอย่างเช่น สถาปัตยกรรมโค้ดพื้นผิวมาตรฐานเข้ารหัสคิวบิตเชิงตรรกะ = 1 ตัวลงในคิวบิตข้อมูล = ตัวสำหรับโค้ดระยะ และใช้คิวบิตตรวจสอบ - 1 ตัวสำหรับการวัดซินโดรม อัตราการเข้ารหัสสุทธิคือ ≈ 1/(2 ) ซึ่งจะกลายเป็นไม่สามารถปฏิบัติได้เร็วเมื่อเราถูกบังคับให้เลือกค่าระยะห่างโค้ดสูง เนื่องมาจาก ตัวอย่างเช่น ข้อผิดพลาดทางกายภาพใกล้เคียงกับค่าขีดจำกัด ในทางตรงกันข้าม โค้ด BB มีอัตราการเข้ารหัส ≫ 1/ ดูตาราง สำหรับตัวอย่างโค้ด เท่าที่เราทราบ โค้ดทั้งหมดที่แสดงในตาราง เป็นโค้ดใหม่ โค้ดระยะ 12 [] อาจเป็นโค้ดที่มีแนวโน้มมากที่สุดสำหรับการสาธิตในระยะใกล้ เนื่องจากเป็นการรวมระยะห่างที่ใหญ่และอัตราการเข้ารหัสสุทธิสูง = 1/24. เพื่อเปรียบเทียบ โค้ดพื้นผิวระยะ 11 มีอัตราการเข้ารหัสสุทธิ = 1/241. ด้านล่างนี้ เราแสดงให้เห็นว่าโค้ด BB ระยะ 12 มีประสิทธิภาพดีกว่าโค้ดพื้นผิวระยะ 11 ในช่วงอัตราข้อผิดพลาดที่เกี่ยวข้องกับการทดลอง n k d k n d d n n n n n n r k n k n d 2 d n r d 2 r d 2 1 1 r r เพื่อป้องกันการสะสมข้อผิดพลาด จำเป็นต้องสามารถวัดซินโดรมข้อผิดพลาดได้บ่อยพอ ซึ่งจะทำได้โดยวงจรการวัดซินโดรมที่เชื่อมต่อคิวบิตข้อมูลที่อยู่ในส่วนสนับสนุนของตัวดำเนินการตรวจสอบแต่ละตัวกับคิวบิตเสริมที่เกี่ยวข้องด้วยลำดับของเกท CNOT จากนั้นคิวบิตตรวจสอบจะถูกวัดเพื่อแสดงค่าของซินโดรมข้อผิดพลาด เวลาที่ใช้ในการใช้วงจรการวัดซินโดรมเป็นสัดส่วนกับความลึกของมัน ซึ่งคือจำนวนชั้นเกทที่ประกอบด้วย CNOT ที่ไม่ทับซ้อนกัน เนื่องจากข้อผิดพลาดใหม่ๆ ยังคงเกิดขึ้นในขณะที่วงจรการวัดซินโดรมกำลังทำงาน ความลึกจึงควรลดให้น้อยที่สุด วงจรซินโดรมเต็มรูปแบบสำหรับโค้ด BB แสดงอยู่ในรูป . วงจรซินโดรมต้องการชั้น CNOT เพียงเจ็ดชั้นโดยไม่ขึ้นกับความยาวโค้ด คิวบิตตรวจสอบจะถูกเริ่มต้นและวัดที่จุดเริ่มต้นและจุดสิ้นสุดของวงจรซินโดรมตามลำดับ (ดู สำหรับรายละเอียด) วงจรเคารพสมมาตรการเลื่อนเป็นคาบของโค้ดพื้นฐาน 2 วิธีการ วงจรการวัดซินโดรมเต็มรูปแบบ อาศัย CNOT เจ็ดชั้น เราแสดงมุมมองเฉพาะที่รวมคิวบิตข้อมูลเพียงคิวบิตเดียวจากแต่ละรีจิสเตอร์ q(L) และ q(R) วงจรมีความสมมาตรภายใต้การเลื่อนแนวนอนและแนวตั้งของกราฟแทนเนอร์ คิวบิตข้อมูลแต่ละตัวเชื่อมต่อด้วย CNOT กับคิวบิตตรวจสอบ X สามตัวและคิวบิตตรวจสอบ Z สามตัว: ดู สำหรับรายละเอียดเพิ่มเติม วิธีการ โปรโตคอลการแก้ไขข้อผิดพลาดเต็มรูปแบบจะดำเนินการวงจรการวัดซินโดรม Nc ≫ 1 ครั้ง จากนั้นจะเรียกใช้อัลกอริทึมถอดรหัส: อัลกอริทึมแบบคลาสสิกที่รับซินโดรมที่วัดได้เป็นอินพุตและส่งคืนการคาดเดาข้อผิดพลาดสุดท้ายบนคิวบิตข้อมูล การแก้ไขข้อผิดพลาดจะสำเร็จหากการคาดเดาและข้อผิดพลาดจริงตรงกันเมื่อหารด้วยผลคูณของตัวดำเนินการตรวจสอบ ในกรณีนี้ ข้อผิดพลาดทั้งสองจะมีผลต่อสถานะเชิงตรรกะที่เข้ารหัส (logical state) เหมือนกัน ดังนั้น การใช้ตัวผกผันของข้อผิดพลาดที่คาดเดาจะส่งคิวบิตข้อมูลกลับไปยังสถานะเชิงตรรกะเริ่มต้น มิฉะนั้น หากการคาดเดาและข้อผิดพลาดจริงแตกต่างกันโดยตัวดำเนินการเชิงตรรกะที่ไม่ชัดเจน การแก้ไขข้อผิดพลาดจะล้มเหลวและส่งผลให้เกิดข้อผิดพลาดเชิงตรรกะ การทดลองเชิงตัวเลขของเราอิงตามการแพร่กระจายของความน่าจะเป็น (belief propagation) ด้วยอัลกอริทึมถอดรหัสสถิติที่เรียงลำดับ (BP-OSD) ที่เสนอโดย Panteleev และ Kalachev . งานต้นฉบับ ได้อธิบาย BP-OSD ในบริ 36 36