ข้ามไปยังเนื้อหาหลัก
โครงการนี้อยู่ในช่วงเบต้า พบข้อผิดพลาด? สร้าง GitHub Issue มีคำถามหรือไอเดีย? ถามใน Discussions — ยินดีรับฟังความคิดเห็น!
คุณภาพการแปลในหน้านี้เป็นอย่างไร?

การทำให้ข้อผิดพลาดเป็นแบบไม่ต่อเนื่อง

จนถึงตอนนี้เราได้พิจารณาข้อผิดพลาด XX และข้อผิดพลาด ZZ ในบริบทของ Shor code แบบ 9-Qubit แล้ว และในส่วนนี้เราจะพิจารณาข้อผิดพลาดใด ๆ สิ่งที่เราจะพบคือ เพื่อจัดการกับข้อผิดพลาดดังกล่าว เราไม่จำเป็นต้องทำอะไรแตกต่างจากที่ได้พูดถึงไปแล้ว ความสามารถในการแก้ข้อผิดพลาด XX, ข้อผิดพลาด ZZ หรือทั้งคู่ หมายความว่าสามารถแก้ข้อผิดพลาดใด ๆ ก็ตามได้เช่นกัน ปรากฏการณ์นี้บางครั้งเรียกว่า การทำให้ข้อผิดพลาดเป็นแบบไม่ต่อเนื่อง (discretization of errors)

ข้อผิดพลาดแบบยูนิทารีของ Qubit​

เริ่มต้นด้วยข้อผิดพลาดแบบ ยูนิทารี บน Qubit เดียว ตัวอย่างเช่น ข้อผิดพลาดแบบนี้อาจแทนการหมุน Bloch sphere เพียงเล็กน้อย ซึ่งอาจเกิดจาก Gate ที่ไม่สมบูรณ์แบบ หรืออาจเป็นการดำเนินการยูนิทารีอื่น ๆ บน Qubit ที่ไม่จำเป็นต้องใกล้เคียง identity ก็ได้

ดูเหมือนว่าการแก้ข้อผิดพลาดแบบนี้จะยาก เพราะมีข้อผิดพลาดที่เป็นไปได้อย่างไม่จำกัดจำนวน และเป็นไปไม่ได้ที่เราจะระบุข้อผิดพลาดแต่ละอันได้อย่างแม่นยำแล้วย้อนกลับมัน อย่างไรก็ตาม ตราบใดที่เราสามารถแก้การพลิกบิต การพลิกเฟส หรือทั้งคู่ได้ เราก็จะประสบความสำเร็จในการแก้ข้อผิดพลาดยูนิทารีบน Qubit เดียวใด ๆ ก็ตาม โดยใช้ขั้นตอนที่อธิบายไว้ก่อนหน้านี้

เพื่ออธิบายว่าทำไมถึงเป็นเช่นนี้ ขอให้เราสังเกตก่อนว่า เราสามารถแสดงเมทริกซ์ยูนิทารี 2×22 \times 2 ใด ๆ UU ซึ่งแทนข้อผิดพลาดบน Qubit เดียว เป็น linear combination ของ Pauli matrices ทั้งสี่ (รวม identity matrix) ได้

U=αI+βX+γY+δZU = \alpha \mathbb{I} + \beta X + \gamma Y + \delta Z

ดังที่เราจะเห็น เมื่อรัน Circuit ตรวจจับข้อผิดพลาด การวัดที่ให้ซินโดรมบิตจะ collapse สถานะของการเข้ารหัสอย่างน่าจะเป็นไปสู่สถานะที่มีข้อผิดพลาด (หรือไม่มีข้อผิดพลาด) ที่แทนด้วย Pauli matrix หนึ่งในสี่อัน (จากข้อเท็จจริงที่ว่า UU เป็นยูนิทารี ตัวเลข α,\alpha, β,\beta, γ,\gamma, และ δ\delta ต้องสอดคล้องกับ ∣α∣2+∣β∣2+∣γ∣2+∣δ∣2=1,\vert\alpha\vert^2 + \vert\beta\vert^2 + \vert\gamma\vert^2 + \vert\delta\vert^2 = 1, และค่า ∣α∣2,\vert\alpha\vert^2, ∣β∣2,\vert\beta\vert^2, ∣γ∣2,\vert\gamma\vert^2, และ ∣δ∣2\vert\delta\vert^2 คือความน่าจะเป็นที่สถานะที่เข้ารหัสจะ collapse ไปสู่สถานะที่มีข้อผิดพลาด Pauli ที่สอดคล้อง)

เพื่อให้อธิบายได้ชัดเจนขึ้น จะสะดวกกว่าถ้าใช้ตัวห้อยเพื่อระบุว่า Qubit ใดที่การดำเนินการยูนิทารีนั้นกระทำ ตัวอย่างเช่น โดยใช้ขนบการนับ Qubit ของ Qiskit (Q8,Q7,…,Q0)(\mathsf{Q}_8,\mathsf{Q}_7,\ldots,\mathsf{Q}_0) สำหรับ 9 Qubit ที่ใช้ใน Shor code เราได้นิพจน์เหล่านี้สำหรับการดำเนินการยูนิทารีต่าง ๆ บน Qubit เดียว โดยในแต่ละกรณีเราจะ tensor เมทริกซ์ยูนิทารีกับ identity matrix บน Qubit ทุกอันที่เหลือ

X0=I⊗I⊗I⊗I⊗I⊗I⊗I⊗I⊗XZ4=I⊗I⊗I⊗I⊗Z⊗I⊗I⊗I⊗IU7=I⊗U⊗I⊗I⊗I⊗I⊗I⊗I⊗I\begin{aligned} X_0 & = \mathbb{I} \otimes \mathbb{I} \otimes \mathbb{I} \otimes \mathbb{I} \otimes \mathbb{I} \otimes \mathbb{I} \otimes \mathbb{I} \otimes \mathbb{I} \otimes X \\[1.5mm] Z_4 & = \mathbb{I} \otimes \mathbb{I} \otimes \mathbb{I} \otimes \mathbb{I} \otimes Z \otimes \mathbb{I} \otimes \mathbb{I} \otimes \mathbb{I} \otimes \mathbb{I} \\[1.5mm] U_7 & = \mathbb{I} \otimes U \otimes \mathbb{I} \otimes \mathbb{I} \otimes \mathbb{I} \otimes \mathbb{I} \otimes \mathbb{I} \otimes \mathbb{I} \otimes \mathbb{I} \end{aligned}

ดังนั้น โดยเฉพาะอย่างยิ่ง สำหรับการดำเนินการยูนิทารี UU บน Qubit ที่กำหนด เราสามารถระบุการกระทำของ UU ที่ใช้กับ Qubit kk ด้วยสูตรต่อไปนี้ ซึ่งคล้ายกับสูตรก่อนหน้า ยกเว้นว่าแต่ละเมทริกซ์แทนการดำเนินการที่ใช้กับ Qubit kk

Uk=αIk+βXk+γYk+δZkU_k = \alpha \mathbb{I}_k + \beta X_k + \gamma Y_k + \delta Z_k

สมมติว่า ∣ψ⟩\vert\psi\rangle คือการเข้ารหัส 9-Qubit ของสถานะ Qubit ถ้าข้อผิดพลาด UU เกิดขึ้นบน Qubit kk เราจะได้สถานะ Uk∣ψ⟩U_k \vert\psi\rangle ซึ่งสามารถแสดงเป็น linear combination ของการดำเนินการ Pauli ที่กระทำบน ∣ψ⟩\vert\psi\rangle ได้ดังนี้

Uk∣ψ⟩=α∣ψ⟩+βXk∣ψ⟩+γYk∣ψ⟩+δZk∣ψ⟩U_k \vert\psi\rangle = \alpha \vert\psi\rangle + \beta X_k\vert\psi\rangle + \gamma Y_k\vert\psi\rangle + \delta Z_k\vert\psi\rangle

ณ จุดนี้ ให้แทน Y=iXZY = iXZ

Uk∣ψ⟩=α∣ψ⟩+βXk∣ψ⟩+iγXkZk∣ψ⟩+δZk∣ψ⟩U_k \vert\psi\rangle = \alpha \vert\psi\rangle + \beta X_k\vert\psi\rangle + i \gamma X_kZ_k\vert\psi\rangle + \delta Z_k\vert\psi\rangle

ตอนนี้พิจารณาขั้นตอนการตรวจจับและแก้ไขข้อผิดพลาดที่อธิบายไว้ก่อนหน้านี้ เราสามารถคิดถึงผลลัพธ์การวัดสำหรับการตรวจสอบ parity ของ code ภายในสามอันรวมกับอันสำหรับ code ภายนอก โดยรวมเป็นซินโดรมเดียวที่ประกอบด้วย 8 บิต ก่อนการวัดในฐานมาตรฐานจริงที่ให้ซินโดรมบิตเหล่านี้ สถานะมีรูปแบบดังนี้

α ∣I syndrome⟩⊗∣ψ⟩+β ∣Xk syndrome⟩⊗Xk∣ψ⟩+iγ ∣XkZk syndrome⟩⊗XkZk∣ψ⟩+δ ∣Zk syndrome⟩⊗Zk∣ψ⟩\begin{gathered} \alpha\,\vert \mathbb{I} \text{ syndrome}\rangle \otimes \vert\psi\rangle \\ + \beta\,\vert X_k \text{ syndrome}\rangle \otimes X_k\vert\psi\rangle \\ + i \gamma\,\vert X_k Z_k \text{ syndrome}\rangle \otimes X_k Z_k\vert\psi\rangle \\ + \delta\,\vert Z_k \text{ syndrome}\rangle \otimes Z_k\vert\psi\rangle \end{gathered}

เพื่อให้ชัดเจน ณ จุดนี้เรามีสองระบบ ระบบทางซ้ายคือ 8 Qubit ที่เราจะวัดเพื่อรับซินโดรม โดย ∣I syndrome⟩,\vert \mathbb{I} \text{ syndrome}\rangle, ∣Xk syndrome⟩,\vert X_k \text{ syndrome}\rangle, และอื่น ๆ อ้างถึงสถานะฐานมาตรฐาน 8-Qubit ใด ๆ ที่สอดคล้องกับข้อผิดพลาด (หรือไม่มีข้อผิดพลาด) ที่สอดคล้อง ระบบทางขวาคือ 9 Qubit ที่เราใช้สำหรับการเข้ารหัส

สังเกตว่าสองระบบนี้มีความสัมพันธ์กัน (โดยทั่วไป) และนี่คือกุญแจสำคัญที่ทำให้ทำงานได้ เมื่อวัดซินโดรม สถานะของ 9 Qubit ทางขวาจะ collapse ไปในทางปฏิบัติสู่สถานะที่มีข้อผิดพลาด Pauli ที่สอดคล้องกับซินโดรมที่วัดได้เกิดขึ้นบน Qubit หนึ่ง ยิ่งกว่านั้น ซินโดรมเองให้ข้อมูลเพียงพอที่เราจะย้อนกลับข้อผิดพลาดและกู้คืนการเข้ารหัสเดิม ∣ψ⟩\vert\psi\rangle ได้

โดยเฉพาะอย่างยิ่ง ถ้าวัด Qubit ซินโดรมและทำการแก้ไขที่เหมาะสม เราจะได้สถานะที่แสดงเป็น density matrix ได้ว่า

ξ⊗∣ψ⟩⟨ψ∣,\xi \otimes \vert\psi\rangle\langle\psi\vert,

โดยที่

ξ=∣α∣2∣I syndrome⟩⟨I syndrome∣+∣β∣2∣Xk syndrome⟩⟨Xk syndrome∣+∣γ∣2∣XkZk syndrome⟩⟨XkZk syndrome∣+∣δ∣2∣Zk syndrome⟩⟨Zk syndrome∣.\begin{aligned} \xi = & \vert\alpha\vert^2 \vert \mathbb{I} \text{ syndrome}\rangle\langle \mathbb{I} \text{ syndrome}\vert \\[1mm] & + \vert\beta\vert^2 \vert X_k \text{ syndrome}\rangle\langle X_k \text{ syndrome}\vert\\[1mm] & + \vert\gamma\vert^2 \vert X_k Z_k \text{ syndrome}\rangle\langle X_k Z_k \text{ syndrome}\vert\\[1mm] & + \vert\delta\vert^2 \vert Z_k \text{ syndrome}\rangle\langle Z_k \text{ syndrome}\vert. \end{aligned}

สิ่งสำคัญคือนี่คือ product state: เรามีการเข้ารหัสเดิมที่ไม่เสียหายเป็น tensor factor ทางขวา และทางซ้ายเรามี density matrix ξ\xi ที่อธิบายซินโดรมข้อผิดพลาดแบบสุ่ม ไม่มีความสัมพันธ์กับระบบทางขวาอีกต่อไปซึ่งเป็นอันที่เราสนใจ เพราะข้อผิดพลาดได้ถูกแก้ไขแล้ว ณ จุดนี้เราสามารถทิ้ง Qubit ซินโดรมหรือรีเซ็ตเพื่อนำกลับมาใช้ใหม่ได้ นี่คือวิธีที่ความสุ่ม — หรือ เอนโทรปี — ที่สร้างขึ้นจากข้อผิดพลาดถูกลบออกจากระบบ

นี่คือการทำให้ข้อผิดพลาดเป็นแบบไม่ต่อเนื่องสำหรับกรณีพิเศษของข้อผิดพลาดยูนิทารี โดยสาระสำคัญ เมื่อวัดซินโดรม เราจะ โปรเจกต์ ข้อผิดพลาดไปสู่ข้อผิดพลาดที่อธิบายด้วย Pauli matrix ในทางปฏิบัติ

ในตอนแรกอาจดูเหมือนดีเกินจริงที่เราสามารถแก้ข้อผิดพลาดยูนิทารีใด ๆ ได้แบบนี้ แม้แต่ข้อผิดพลาดที่เล็กน้อยและแทบไม่สังเกตเห็นได้เมื่อพิจารณาเพียงลำพัง แต่สิ่งสำคัญที่ต้องตระหนักคือนี่คือข้อผิดพลาดยูนิทารีบน Qubit เดียว และจากการออกแบบของ code การดำเนินการบน Qubit เดียวไม่สามารถเปลี่ยนสถานะของ logical qubit ที่เข้ารหัสไว้ได้ สิ่งเดียวที่มันทำได้คือการย้ายสถานะออกจาก subspace ของการเข้ารหัสที่ถูกต้อง แต่การตรวจจับข้อผิดพลาดจะ collapse สถานะและการแก้ไขจะนำมันกลับสู่จุดเริ่มต้น

ข้อผิดพลาดใด ๆ ของ Qubit​

สุดท้าย พิจารณาข้อผิดพลาดใด ๆ ที่ไม่จำเป็นต้องเป็นยูนิทารี ให้แม่นยำยิ่งขึ้น เราจะพิจารณาข้อผิดพลาดที่อธิบายด้วย qubit channel ใด ๆ Φ\Phi ตัวอย่างเช่น อาจเป็น dephasing หรือ depolarizing channel, reset channel หรือ channel แปลก ๆ ที่ไม่เคยนึกถึงมาก่อน

ขั้นตอนแรกคือพิจารณา Kraus representation ใด ๆ ของ Φ\Phi

Φ(σ)=∑jAjσAj†\Phi(\sigma) = \sum_j A_j \sigma A_j^{\dagger}

นี่คือ qubit channel ดังนั้นแต่ละ AjA_j เป็นเมทริกซ์ 2×22\times 2 ซึ่งสามารถแสดงเป็น linear combination ของ Pauli matrices ได้

Aj=αjI+βjX+γjY+δjZA_j = \alpha_j \mathbb{I} + \beta_j X + \gamma_j Y + \delta_j Z

ซึ่งทำให้เราสามารถแสดงการกระทำของข้อผิดพลาด Φ\Phi บน Qubit kk ที่เลือกในรูปของ Pauli matrices ได้ดังนี้

Φk(∣ψ⟩⟨ψ∣)=∑j(αjIk+βjXk+γjYk+δjZk)∣ψ⟩⟨ψ∣(αjIk+βjXk+γjYk+δjZk)†\Phi_k \bigl( \vert\psi\rangle\langle\psi\vert\bigr) = \sum_j (\alpha_j \mathbb{I}_k + \beta_j X_k + \gamma_j Y_k + \delta_j Z_k) \vert\psi\rangle\langle\psi\vert (\alpha_j \mathbb{I}_k + \beta_j X_k + \gamma_j Y_k + \delta_j Z_k)^{\dagger}

กล่าวโดยย่อ เราได้ขยาย Kraus matrices ทั้งหมดเป็น linear combinations ของ Pauli matrices แล้ว

ถ้าตอนนี้คำนวณและวัดซินโดรมข้อผิดพลาด และแก้ไขข้อผิดพลาดที่พบ เราจะได้สถานะที่คล้ายกับกรณีข้อผิดพลาดยูนิทารี:

ξ⊗∣ψ⟩⟨ψ∣,\xi \otimes \vert\psi\rangle\langle\psi\vert,

โดยครั้งนี้

ξ=∑j(∣αj∣2∣I syndrome⟩⟨I syndrome∣+∣βj∣2∣Xk syndrome⟩⟨Xk syndrome∣+∣γj∣2∣XkZk syndrome⟩⟨XkZk syndrome∣+∣δj∣2∣Zk syndrome⟩⟨Zk syndrome∣).\begin{aligned} \xi = & \sum_j \Bigl(\vert\alpha_j\vert^2 \vert \mathbb{I} \text{ syndrome}\rangle\langle \mathbb{I} \text{ syndrome}\vert \\[-3mm] & \qquad + \vert\beta_j\vert^2 \vert X_k \text{ syndrome}\rangle\langle X_k \text{ syndrome}\vert\\[2mm] & \qquad + \vert\gamma_j\vert^2 \vert X_k Z_k \text{ syndrome}\rangle\langle X_k Z_k \text{ syndrome}\vert\\[2mm] & \qquad + \vert\delta_j\vert^2 \vert Z_k \text{ syndrome}\rangle\langle Z_k \text{ syndrome}\vert \Bigr). \end{aligned}

รายละเอียดค่อนข้างยุ่งยากกว่าและไม่แสดงไว้ที่นี่ ในเชิงแนวคิด แนวคิดเหมือนกับกรณียูนิทารีทุกประการ

การสรุปทั่วไป​

การแยกประเภทของข้อผิดพลาดสรุปทั่วไปสู่ quantum error-correcting code อื่น ๆ รวมถึง code ที่สามารถตรวจจับและแก้ไขข้อผิดพลาดบน Qubit หลายตัวได้ ในกรณีเช่นนี้ ข้อผิดพลาดบน Qubit หลายตัวสามารถแสดงเป็น tensor products ของ Pauli matrices และซินโดรมต่าง ๆ ที่สอดคล้องจะระบุการแก้ไขด้วยการดำเนินการ Pauli ที่อาจดำเนินการบน Qubit หลายตัวแทนที่จะเป็นเพียง Qubit เดียว

อีกครั้ง เมื่อวัดซินโดรม ข้อผิดพลาดจะถูก project หรือ collapse อย่างมีประสิทธิภาพไปสู่ชุดความเป็นไปได้แบบ discrete ที่แทนด้วย tensor products ของ Pauli matrices และด้วยการแก้ไขข้อผิดพลาด Pauli เหล่านั้น เราสามารถกู้คืนสถานะที่เข้ารหัสเดิมได้ ในขณะเดียวกัน ความสุ่มที่เกิดขึ้นในกระบวนการจะถูกย้ายไปยัง Qubit ซินโดรม ซึ่งถูกทิ้งหรือรีเซ็ต ทำให้ลบความสุ่มที่เกิดขึ้นในกระบวนการนี้ออกจากระบบที่เก็บการเข้ารหัส