การควบคุม การแพร่กระจายของข้อผิดพลาด
Fault-tolerant quantum computation คล้ายกับการแข่งขันระหว่างข้อผิดพลาดและ error correction ถ้าจำนวนข้อผิดพลาดน้อยพอ error correction จะแก้ไขได้สำเร็จ; แต่ถ้ามีข้อผิดพลาดมากเกินไป error correction จะล้มเหลว
ด้วยเหตุนี้ ต้องระมัดระวังอย่างเพียงพอในวิธีที่การคำนวณเชิงควอนตัมดำเนินการในการ implement แบบ fault-tolerant ของ circuits เพื่อควบคุม การแพร่กระจายของข้อผิดพลาด กล่าวคือ ข้อผิดพลาดบน Qubit หนึ่งอาจแพร่กระจายไปยัง Qubit หลายตัวผ่านการกระทำของ gates ใน quantum circuit ซึ่งอาจทำให้จำนวนข้อผิดพลาดเพิ่มขึ้นอย่างมาก นี่เป็นข้อกังวลสูงสุด เพราะถ้าเราไม่สามารถควบคุมการแพร่กระจายของข้อผิดพลาดได้ ความพยายามในการแก้ไขข้อผิดพลาดของเราจะถูกท่วมท้นด้วยข้อผิดพลาดอย่างรวดเร็ว ในทางกลับกัน ถ้าเราสามารถควบคุมการแพร่กระจายของข้อผิดพลาดได้ error correction ก็มีโอกาสสู้กลับ ช่วยใ ห้แก้ข้อผิดพลาดได้ในอัตราสูงพอที่จะให้การคำนวณเชิงควอนตัมทำงานตามที่ตั้งใจ
จุดเริ่มต้นสำหรับการพูดถึงทางเทคนิคของประเด็นนี้คือการตระหนักว่า two-qubit gates (หรือ multiple-qubit gates โดยทั่วไปกว่า) สามารถแพร่กระจายข้อผิดพลาดได้ แม้จะทำงานได้สมบูรณ์แบบ ตัวอย่างเช่น พิจารณา controlled-NOT gate และสมมติว่า error เกิดขึ้นบน control qubit ก่อนที่ controlled-NOT gate จะดำเนินการ ดังที่เราสังเกตไปแล้วในบทเรียน "Correcting quantum errors" สิ่งนี้เทียบเท่ากับ error ที่เกิดขึ้นบน ทั้งสอง Qubit หลัง controlled-NOT ด ำเนินการ และสถานการณ์คล้ายกันสำหรับ error ที่กระทำบน target แทน control ก่อน controlled-NOT gate ดำเนินการ
นี่คือ การแพร่กระจายของข้อผิดพลาด เพราะตำแหน่งที่โชคร้ายของ หรือ error ก่อน controlled-NOT gate ทำให้กลายเป็นสองข้อผิดพลาดหลัง controlled-NOT gate สิ่งนี้เกิดขึ้นแม้ว่า controlled-NOT gate จะสมบูรณ์แบบ และเราต้องไม่ลืมว่า controlled-NOT gate ที่กำหนดอาจมีสัญญาณรบกวนเอง ซึ่งอาจ สร้าง ข้อผิดพลาดที่สัมพันธ์กันบนสอง Qubit
เพิ่มความกังวลของเราคือข้อเท็จจริงที่ว่า two-qubit gates ถัดไปอาจแพร่กระจายข้อผิดพลาดเหล่านี้ต่อไป ดังที่รูปต่อไปนี้แนะนำ
ในบางแง่ เราไม่สามารถหลีกเลี่ยงสิ่งนี้ได้; ตราบใดที่เราใช้ multiple-qubit gates ก็จะมีโอกาสเกิดการแพร่กระจายข้อผิดพลาดเสมอ อย่างไรก็ตาม ดังที่เราจะพูดถึงใน subsections ต่อไป สามารถดำเนินการขั้นตอนต่าง ๆ เพื่อจำกัดความเสียหายที่เกิดขึ้น ทำให้ข้อผิดพลาดที่แพร่กระจายสามารถจัดการได้
การ implement gate แ บบ transversal
วิธีที่รู้จักง่ายที่สุดในการลดการแพร่กระจายข้อผิดพลาดใน fault-tolerant quantum circuits คือการ implement gates แบบ transversal ซึ่งหมายถึงการสร้าง gadgets สำหรับพวกมันที่มีรูปแบบเรียบง่ายหนึ่ง โดยเฉพาะอย่างยิ่ง gadgets ต้องเป็น tensor product ของการดำเนินการ (หรือกล่าวอีกนัยหนึ่ง quantum circuit แบบ depth-one) โดยแต่ละการดำเนินการสามารถกระทำได้บน ตำแหน่ง Qubit เดียวภายในแต่ละ code block ที่สัมผัส บางทีสิ่งนี้อธิบายได้ง่ายที่สุดผ่านตัวอย่าง
ตัวอย่างของการ implement gate แบบ transversal
พิจารณารูปต่อไปนี้ ซึ่งแนะนำการ implement แบบ transversal ของ CNOT gate (การ implement เฉพาะนี้ ที่ทำ CNOTs ทีละ Qubit ใช้ได้เฉพาะกับ CSS codes — แต่ในความเป็นจริงใช้ได้กับ CSS codes ทุกอัน)
มีสอง code blocks ในรูปนี้ แต่ละอันแสดงว่าประกอบด้วยห้า Qubit (แม้ว่าอาจมากกว่าได้ดังที่แนะนำแล้ว) Circuit ทางขวามี depth หนึ่ง และแต่ละ CNOT gate กระทำบนตำแหน่ง Qubit เดียวในแต่ละบล็อก: ทั้ง control และ target สำหรับ CNOT แรกคือ Qubit บนสุด (กล่าวคือ qubit 0 โดยใช้ขนบการนับ Qiskit), ทั้ง control และ target สำหรับ CNOT ที่สองคือ Qubit อันดับสองจากบน (กล่าวคือ qubit 1) และอื่น ๆ ดังนั้น นี่คือ transversal gadget
สำหรับตัวอย่างที่สอง — จริง ๆ แล้วเป็นคลาสของตัวอย่าง — พิจารณา Pauli gate ใด ๆ Pauli gates สามารถ implement แบบ transversal ได้เสมอ สำหรับ stabilizer code ใด ๆ โดยสร้าง gadgets ที่ประกอบด้วยการดำเนินการ Pauli โดยเฉพาะอย่างยิ่ง การดำเนินการ Pauli ทุกอันบน logical qubit ที่เข้ารหัสโดย stabilizer code สามารถ implement แบบ transversal ได้โดยเลือกการดำเนินการ Pauli ที่เหมาะสมบน physical qubits ที่ใช้สำหรับการเข้ารหัส สิ่งนี้สอดคล้องกับข้อเท็จจริงที่กล่าวถึงผ่าน ๆ ในบทเรียน "Stabilizer formalism": ยกเว้น global phase การดำเนินการ Pauli ที่ commute กับ stabilizer generator ทุกตัวของ stabilizer code ทำงานเหมือนการดำเนินการ Pauli บน Qubit หรือ Qubit ที่เข้ารหัสโดย code นั้น
เป็นตัวอย่างเฉพาะ พิจารณา -qubit Shor code ซึ่งสถานะฐานมาตรฐานสามารถเข้ารหัสได้ดังนี้
gate บน logical qubit ที่เข้ารหัสโดย code นี้สามารถ implement แบบ transversal ได้ด้วย -qubit Pauli operation
ในขณะที่ gate บน logical qubit สามารถ implement แบบ transversal ได้ด้วย -qubit Pauli operation
Pauli operations ทั้งสองมี weight ซึ่งเป็น weight ขั้นต่ำที่จำเป็น (-qubit Shor code มี distance ดังนั้น Pauli operation ที่ไม่ใช่ identity ใด ๆ ที่มี weight หรือน้อยกว่าจะถูกตรวจจับว่าเป็นข้อผิดพลาด)
และสำหรับตัวอย่างที่สาม -qubit Steane code (และจริง ๆ แล้ว color code ทุกอัน) ช่วยให้ implement Clifford gates ทั้งหมด แบบ transversal ได้ เราได้เห็นแล้วว่า CNOT gates implement แบบ transversal สำหรับ CSS code ใด ๆ ดังนั้นยังต้องพิจารณา และ gates Hadamard gate ที่ใช้กับทั้ง Qubit ของ Steane code เทียบเท่ากับ ที่ใช้กับ logical qubit ที่มันเข้ารหัส ในขณะที่ gate (แทนที่จะเป็น gate) ที่ใช้กับทั้ง Qubit เทียบเท่ากับ logical gate
การแพร่กระจายข้อผิดพลาดสำหรับ transversal gadgets
ตอนนี้ที่เราทราบว่า transversal implementations ของ gates คืออะไร มาพูดถึงความเชื่อมโยงกับการแพร่กระจายข้อผิดพลาด
สำหรับ transversal implementation ของ single-qubit gate เราเพียงแต่มี tensor product ของ single-qubit gates ใน gadget ของเรา ซึ่งกระทำบน code block ของ physical qubits สำหรับ quantum error correcting code ที่เลือก แม้ว่า gate เหล่านี้อาจล้มเหลวและก่อให้เกิดข้อผิดพลาด แต่จะไม่มี การแพร่กระจาย ของข้อผิดพลาดเพราะไม่มี multiple-qubit gates เกี่ยวข้อง ทันทีหลังจาก gadget ดำเนินการ error correction จะดำเนินการ; และถ้าจำนวนข้อผิดพลาดที่เกิดขึ้นโดย gadget (หรือขณะที่ gadget กำลังดำเนินการ) น้อยพอ ข้อผิดพลาดจะถูกแก้ไข ดังนั้น ถ้าอัตราข้อผิดพลาดที่เกิดขึ้นโดย faulty gates น้อยพอ error correction มีโอกาสสูงที่จะสำเร็จ
สำหรับ transversal implementation ของ two-qubit gate ในทางกลับกัน มีโอกาสเกิดการแพร่กระจายข้อผิดพลาด — ไม่มีทางหลีกเลี่ยงสิ่งนี้ได้ ดังที่เราสังเกตไปแล้ว ประเด็นสำคัญอย่างไรก็ตามคือ transversal gadget ไม่สามารถทำให้เกิดการแพร่กระจายข้อผิดพลาด ภายใน code block เดียว ได้
ตัวอย่างเช่น พิจารณา transversal implementation ของ CNOT gate สำหรับ CSS code ที่อธิบายข้างต้น error อาจเกิดขึ้นบน Qubit บนสุดของ code block บนก่อน gadget ดำเนินการ และ CNOT แรกภายใน gadget จะแพร่กระจายข้อผิดพลาดนั้นไปยัง Qubit บนสุดใน block ล่าง อย่างไรก็ตาม ข้อผิดพลาดสองอันที่ได้ตอนนี้อยู่ใน code blocks แยกกัน ดังนั้น สมมติว่า code ของเราสามารถแก้ error ได้ ขั้นตอน error correction ที่เกิดขึ้นหลัง gadget จะแก้ errors สองอันอย่างอิสระ — เพราะมีข้อผิดพลาดเพียงอันเดียวในแต่ละ code block ในทางกลับกัน ถ้าการแพร่กระจายข้อผิดพลาดเกิดขึ้นภายใน code block เดียวกัน อาจทำให้ข้อผิดพลาด weight ต่ำกลายเป็นข้อผิดพลาด weight สูงที่ code ไม่สามารถจัดการได้
ความไม่เป็นสากลของ transversal gates
สำหรับ stabilizer codes สองอัน อาจเป็นไปได้ที่ gate หนึ่งสามารถ implement แบบ transversal ได้ด้วย code หนึ่งแต่ไม่ใช่อีก code ตัวอย่างเช่น แม้ว่าจะไม่สามารถ implement gate แบบ transversal โดยใช้ -qubit Steane code แต่มี code อื่นที่สามารถทำได้
น่าเสียดายที่เป็นไปไม่ได้เลย สำหรับ quantum error correcting code ที่ไม่ใช่ trivial ใด ๆ ที่จะ implement ชุด gates สากล แบบ transversal ข้ อเท็จจริงนี้รู้จักกันในชื่อ Eastin-Knill theorem
การพิสูจน์ทฤษฎีบทนี้จะไม่อธิบายที่นี่ (ไม่ใช่การพิสูจน์ที่ซับซ้อน แต่ต้องการความรู้พื้นฐานของ Lie groups และ Lie algebras ซึ่งไม่ได้อยู่ในข้อกำหนดเบื้องต้นของ series นี้) อย่างไรก็ตาม แนวคิดพื้นฐานสามารถถ่ายทอดในรูปแบบ intuitive ได้: ครอบครัวอนันต์ของ transversal operations ไม่สามารถอยู่ภายใน code space ของ code ที่ไม่ใช่ trivial ได้ เพราะความแตกต่างเล็กน้อยใน transversal operations สามารถประมาณได้ดีด้วย Pauli operations ที่มี weight ต่ำ ซึ่ง code ตรวจจับว่าเป็นข้อผิดพลาด
โดยสรุ ป transversal gadgets ให้การ implement gates ที่เรียบง่ายและมี fault tolerance โดยธรรมชาติ — แต่สำหรับทางเลือกที่สมเหตุสมผลของ quantum error correcting code ใด ๆ ก็ตาม ไม่มี universal gate set ที่สามารถ implement ในลักษณะนี้ได้ ซึ่งจำเป็นต้องใช้ gadgets ทางเลือก
Magic states
เนื่องจากเป็นไปไม่ได้ สำหรับทางเลือก quantum error correcting code ที่ไม่ใช่ trivial ใด ๆ ที่จะ implement universal set ของ quantum gates แบบ transversal เราจึงต้องพิจารณาวิธีอื่นในการ implement gates แบบ fault-tolerant วิธีที่รู้จักกันดีวิธีหนึ่งอิงบนแนวคิดของ magic states ซึ่งเป็นสถานะควอนตัมของ Qubit ที่ช่วยให้ implement บาง gates แบบ fault-tolerant ได้
การ implement gates ด้วย magic states
เริ่มต้นด้วยการพิจารณา และ gates ซึ่งมีคำอธิบายเมทริกซ์ดังนี้
ตามนิยาม เป็น Clifford operation ในขณะที่ ไม่ใช่; ไม่สามารถ implement gate ด้วย circuit ที่ประกอบด้วย Clifford gates ( gates, gates, และ CNOT gates) ได้
อย่างไรก็ตาม สามารถ implement gate (ยกเว้น global phase) ด้วย circuit ที่ประกอบด้วย Clifford gates ได้ ถ้าเรามีสำเนาของสถานะ
และเราอนุญาตให้มีการวัดในฐานมาตรฐานและให้ gates ถูกควบคุมแบบ classical โดยเฉพาะอย่างยิ่ง circuit ต่อไปนี้แสดงหนึ่งวิธีในการทำสิ่งนี้ ปรากฏการณ์ที่แสดงที่นี่เป็นตัวอย่างที่ค่อนข้างง่ายของ quantum gate teleportation
เพื่อตรวจสอบว่า circuit นี้ทำงานถูกต้อง เราสามารถคำนวณการกระทำของ CNOT gate บน input ก่อน
ดังนั้นการวัดจะให้ผลลัพธ์ และ ด้วยความน่าจะเป็นเท่ากัน ถ้าผลลัพธ์คือ gate จะไม่ดำเนินการ และสถานะ output คือ ; และ ถ้าผลลัพธ์คือ gate จะดำเนินการ และสถานะ output คือ
สถานะ เรียกว่า magic state ในบริบทนี้ แม้ว่าจะไม่ได้เป็นเฉพาะตัวในแง่นี้: สถานะอื่น ๆ ก็เรียกว่า magic states เมื่อสามารถใช้ในลักษณะที่คล้ายกัน (สำหรับ gates ที่อาจต่างกันและใช้ circuits ต่างกัน) ตัวอย่างเช่น การแลกสถานะ เป็นสถานะ และแทนที่ gate ใน circuit ข้างต้นด้วย gate จะ implement gate — ซึ่งอาจเป็นประโยชน์สำหรับ fault-tolerant quantum computation โดยใช้ code ที่ไม่สามารถ implement gates แบบ transversal ได้
Fault-tolerant gadgets จาก magic states
อาจยังไม่ชัดเจนว่าการใช้ magic states เพื่อ implement gates มีประโยชน์สำหรับ fault-tolerance สำหรับการ implement gate ที่อธิบายข้างต้น เป็นต้น ดูเหมือนว่าเรายังต้องใช้ gate กับสถานะ เพื่อให้ได้ magic state ซึ่งเราใช้เพื่อ implement gate แล้วอะไรคือข้อได้เปรียบของการใช้แนวทางนี้สำหรับ fault-tolerance?
นี่คือสามประเด็นสำคัญที่ให้คำตอบสำหรับคำถามนี้
-
การสร้าง magic states ไม่จำเป็นต้องใช้ gate ที่เราพยายาม implement กับสถานะเฉพาะ ตัวอย่างเช่น การใช้ gate กับสถานะ ไม่ใช่วิธีเดียวในการได้สถานะ
-
การสร้าง magic states สามารถทำแยกจาก computation ที่ใช้พวกมัน ซึ่งหมายความว่าข้อผิดพลาดที่เกิดขึ้นในกระบวนการสร้าง magic state จะไม่แพร่กระจายไปยัง computation จริงที่กำลังดำเนินการ
-
ถ้า gates แต่ละตัวใน circuit ที่ implement gate ที่เลือกโดยใช้ magic state สามารถ implement แบบ fault-tolerant และสมมติว่ามี magic states พร้อมใช้ เราจะได้การ implement แบบ fault-tolerant ของ gate ที่เลือก
เพื่อทำให้การพูดถึงต่อไปนี้ง่ายขึ้น มุ่งเน้นที่ gates โดยเฉพาะ — โดยคำนึงว่าวิธีการสามารถขยายไปยัง gates อื่น ๆ ได้ การ implement แบบ fault-tolerant ของ gate โดยใช้ magic states อยู่ในรูปแบบที่แนะนำโดยรูปต่อไปนี้