ผู้เขียน: 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% อัลกอริทึมถอดรหัสที่รวดเร็ว และความเข้ากันได้กับโปรเซสเซอร์ควอนตัมที่มีอยู่ซึ่งอาศัยการเชื่อมต่อคิวบิตแบบตารางสี่เหลี่ยมจัตุรัส (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) ตามกลุ่มจำกัด (finite groups) , , , และโค้ดแทนเนอร์ควอนตัม (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) เนื่องจากมีพื้นฐานมาจากพหุนามสองตัวแปร (bivariate polynomials) ตามรายละเอียดในส่วน . เหล่านี้เป็นโค้ดตัวรักษาเสถียรภาพ (stabilizer codes) ประเภท Calderbank–Shor–Steane (CSS) , ที่สามารถอธิบายได้ด้วยชุดของตัวดำเนินการตรวจสอบหกคิวบิต (stabilizer operators) ประกอบด้วย Pauli และ . ในระดับสูง โค้ด BB คล้ายกับโค้ดทอริก (toric code) สองมิติ . โดยเฉพาะอย่างยิ่ง คิวบิตทางกายภาพของโค้ด BB สามารถวางบนกริดสองมิติพร้อมเงื่อนไขขอบเขตเป็นคาบ (periodic boundary conditions) โดยที่ตัวดำเนินการตรวจสอบทั้งหมดได้มาจากการใช้การเลื่อนกราฟิกแนวนอนและแนวตั้งของกริด อย่างไรก็ตาม ตรงกันข้ามกับตัวรักษาเสถียรภาพแบบพลาเค็ต (plaquette) และแบบจุดยอด (vertex) ที่อธิบายโค้ดทอริก ตัวดำเนินการตรวจสอบของโค้ด BB ไม่ได้มีลักษณะทางเรขาคณิตเฉพาะที่ (geometrically local) ยิ่งไปกว่านั้น การตรวจสอบแต่ละครั้งจะกระทำกับคิวบิตหกตัวแทนที่จะเป็นสี่ตัว เราจะอธิบายโค้ดด้วยกราฟแทนเนอร์ (Tanner graph) โดยที่แต่ละจุดยอดของ แทนคิวบิตข้อมูลหรือตัวดำเนินการตรวจสอบ จุดยอดตรวจสอบ และจุดยอดข้อมูล จะเชื่อมต่อกันด้วยเส้นเชื่อมหากตัวดำเนินการตรวจสอบ กระทำอย่างไม่เป็นสาระสำคัญกับคิวบิตข้อมูล (โดยการใช้ Pauli หรือ ). ดูรูป สำหรับตัวอย่างกราฟแทนเนอร์ของโค้ดพื้นผิวและโค้ด BB ตามลำดับ กราฟแทนเนอร์ของโค้ด BB ใดๆ มีดีกรีจุดยอดเท่ากับหกและความหนาของกราฟ (graph thickness) เท่ากับสอง ซึ่งหมายความว่าสามารถแยกออกเป็นกราฟระนาบที่ไม่ตัดกันสองกราฟ (ดูส่วน ). การเชื่อมต่อคิวบิตที่มีความหนาสอง (thickness-2) เหมาะสมอย่างยิ่งกับคิวบิตตัวนำยิ่งยวดที่เชื่อมต่อกันด้วยตัวเรโซเนเตอร์ไมโครเวฟ ตัวอย่างเช่น สามารถติดชั้นตัวเชื่อมต่อระนาบสองชั้นและสายควบคุมเข้ากับด้านบนและด้านล่างของชิปที่โฮสต์คิวบิต และจับคู่ทั้งสองด้าน 41 35 36 42 วิธีการ 43 44 X Z 7 G G i j i j X Z 1a,b 29 วิธีการ , กราฟแทนเนอร์ของโค้ดพื้นผิว สำหรับการเปรียบเทียบ , กราฟแทนเนอร์ของโค้ด BB ที่มีพารามิเตอร์ [] ฝังอยู่ในโทรัส เส้นเชื่อมใดๆ ของกราฟแทนเนอร์เชื่อมต่อจุดข้อมูลและจุดตรวจสอบ จุดข้อมูลที่เกี่ยวข้องกับรีจิสเตอร์ ( ) และ ( ) แสดงด้วยวงกลมสีน้ำเงินและสีส้ม จุดยอดแต่ละจุดมีเส้นเชื่อมหกเส้นที่เข้ามา รวมถึงเส้นเชื่อมระยะสั้นสี่เส้น (ชี้ไปทางเหนือ ใต้ ตะวันออก และตะวันตก) และเส้นเชื่อมระยะยาวสองเส้น เราแสดงเส้นเชื่อมระยะยาวเพียงไม่กี่เส้นเพื่อไม่ให้รกตา เส้นประและเส้นทึบแสดงถึงกราฟระนาบสองกราฟที่ครอบคลุมกราฟแทนเนอร์ ดูส่วน . , ภาพร่างของการขยายกราฟแทนเนอร์สำหรับการวัด และ ตามเอกสารอ้างอิง , ที่เชื่อมต่อกับโค้ดพื้นผิว กราฟเสริมที่สอดคล้องกับการวัด สามารถเชื่อมต่อกับโค้ดพื้นผิวได้ ทำให้สามารถดำเนินการโหลด-จัดเก็บข้อมูลสำหรับคิวบิตเชิงตรรกะทั้งหมดได้โดยอาศัยการถ่ายโอนข้อมูลควอนตัม (quantum teleportation) และหน่วยตรรกะบางอย่าง กราฟแทนเนอร์ที่ขยายนี้ยังสามารถนำไปใช้ในสถาปัตยกรรมความหนาสอง (thickness-2 architecture) ผ่านเส้นเชื่อม และ (ดูส่วน ). a b q L q R วิธีการ c 50 A B วิธีการ โค้ด BB ที่มีพารามิเตอร์ [[ , , ]] เข้ารหัสคิวบิตเชิงตรรกะ เป็นคิวบิตข้อมูล โดยให้ระยะทางโค้ด ซึ่งหมายความว่าข้อผิดพลาดเชิงตรรกะใดๆ จะครอบคลุมคิวบิตข้อมูลอย่างน้อย ตัว เราแบ่งคิวบิตข้อมูล ออกเป็นรีจิสเตอร์ ( ) และ ( ) ขนาด /2 แต่ละรีจิสเตอร์ การตรวจสอบแต่ละครั้งจะกระทำกับคิวบิตสามตัวจาก ( ) และสามตัวจาก ( ) โค้ดอาศัยคิวบิตตรวจสอบเสริม ตัว เพื่อวัดซินโดรมข้อผิดพลาด เราแบ่งคิวบิตตรวจสอบ ออกเป็นรีจิสเตอร์ ( ) และ ( ) ขนาด /2 ซึ่งรวบรวมซินโดรมประเภท และ ตามลำดับ โดยรวมแล้ว การเข้ารหัสอาศัยคิวบิตทางกายภาพ 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 q L q R n q L q R n n q X q Z n X Z n r k n k n d 2 d n r d 2 r d 2 1 1 r r เพื่อป้องกันการสะสมข้อผิดพลาด จำเป็นต้องสามารถวัดซินโดรมข้อผิดพลาดได้บ่อยพอ สิ่งนี้จะสำเร็จได้ด้วยวงจรวัดซินโดรมที่เชื่อมต่อคิวบิตข้อมูลในส่วนสนับสนุนของตัวดำเนินการตรวจสอบแต่ละตัวกับคิวบิตเสริมที่เกี่ยวข้องด้วยชุดของเกต CNOT จากนั้นคิวบิตตรวจสอบจะถูกวัดเพื่อเปิดเผยค่าของซินโดรมข้อผิดพลาด เวลาที่ใช้ในการดำเนินการวงจรวัดซินโดรมจะแปรผันตามความลึก: จำนวนชั้นของเกตที่ประกอบด้วย CNOTs ที่ไม่ซ้อนทับกัน เนื่องจากข้อผิดพลาดใหม่ๆ ยังคงเกิดขึ้นในขณะที่วงจรวัดซินโดรมกำลังดำเนินการ ความลึกควรลดให้น้อยที่สุด วงจรซินโดรมเต็มรูปแบบสำหรับโค้ด BB แสดงไว้ในรูป . วงจรซินโดรมต้องการเพียงเจ็ดชั้นของ CNOTs โดยไม่คำนึงถึงความยาวของโค้ด คิวบิตตรวจสอบจะถูกกำหนดค่าเริ่มต้นและวัดผลที่จุดเริ่มต้นและจุดสิ้นสุดของวงจรซินโดรมตามลำดับ (ดูส่วน สำหรับรายละเอียด) วงจรเคารพสมมาตรการเลื่อนเป็นคาบของโค้ดพื้นฐาน 2 วิธีการ วงจรวัดซินโดรมเต็มรูปแบบที่อาศัย CNOTs เจ็ดชั้น เราแสดงมุมมองเฉพาะที่ของวงจรซึ่งรวมเฉพาะคิวบิตข้อมูลหนึ่งตัวจากแต่ละรีจิสเตอร์ ( ) และ ( ) วงจรมีความสมมาตรภายใต้การเลื่อนแนวนอนและแนวตั้งของกราฟแทนเนอร์ คิวบิตข้อมูลแต่ละตัวเชื่อมต่อด้วย CNOTs กับคิวบิตตรวจสอบ สามตัวและคิวบิตตรวจสอบ สามตัว: ดูส่วน สำหรับรายละเอียดเพิ่มเติม q L q R X Z วิธีการ โปรโตคอลการแก้ไขข้อผิดพลาดเต็มรูปแบบดำเนินการวงจรวัดซินโดรม ≫ 1 รอบ แล้วจึงเรียกตัวถอดรหัส: อัลกอริทึมคลาสสิกที่รับซินโดรมที่วัดได้เป็นอินพุตและส่งออกการคาดเดาข้อผิดพลาดสุดท้ายบนคิวบิตข้อมูล การแก้ไขข้อผิดพลาดจะสำเร็จหากข้อผิดพลาดที่คาดเดาและข้อผิดพลาดจริงตรงกัน (modulo ผลคูณของตัวดำเนินการตรวจสอบ) ในกรณีนี้ ข้อผิดพลาดทั้งสองจะมีผลเช่นเดียวกันต่อสถานะเชิงตรรกะที่เข้ารหัส (logical state) ใดๆ ดังนั้น การใช้ตัวผกผันของข้อผิดพลาดที่คาดเดาจะคืนค่าคิวบิตข้อมูลไปยังสถานะเชิงตรรกะเริ่มต้น มิฉะนั้น หากข้อผิดพลาดที่คาดเดาและข้อผิดพลาดจริงแตกต่างกันโดยตัวดำเนินการเชิง N c