Control de la propagación de errores
La computación cuántica tolerante a fallos es como una carrera entre los errores y la corrección de errores. Si el número de errores es lo suficientemente pequeño, la corrección de errores los corregirá con éxito; si hay demasiados errores, la corrección de errores fracasará.
Por esta razón, debe prestarse especial atención a la forma en que se realizan las computaciones cuánticas en las implementaciones de circuitos tolerantes a fallos, para controlar la propagación de errores. Es decir: un error en un qubit puede potencialmente propagarse a múltiples qubits a través de la acción de las puertas en un circuito cuántico, lo que puede provocar que el número de errores aumente drásticamente. Esta es una preocupación central, porque si no controlamos la propagación de errores, nuestras medidas de corrección de errores se verán rápidamente abrumadas por los errores. Si, por el contrario, podemos mantener bajo control la propagación de errores, la corrección de errores tiene una oportunidad real de mantenerse al ritmo de los errores, de modo que puedan corregirse lo suficientemente rápido como para que la computación cuántica funcione según lo previsto.
El punto de partida para una discusión técnica de este problema es la observación de que las puertas de dos qubits (o, más generalmente, las puertas de múltiples qubits) pueden propagar errores, incluso si funcionan perfectamente. Consideremos, por ejemplo, una puerta NOT controlada y supongamos que un error ocurre justo antes de la puerta CNOT en el qubit de control. Como ya observamos en la lección "Corrección de errores cuánticos", esto equivale a un error que ocurre en ambos qubits después de la CNOT. De manera similar ocurre con un error en el qubit objetivo en lugar del qubit de control antes de la puerta CNOT.
Esta es una propagación de errores porque la ubicación desfavorable de un error o antes de la puerta CNOT lo convierte efectivamente en dos errores después de la puerta CNOT. Esto ocurre incluso cuando la puerta CNOT es perfecta, y no debemos olvidar que una puerta CNOT dada puede ser ruidosa por sí misma, lo que puede generar errores correlacionados en dos qubits.
Además, puertas de dos qubits subsiguientes podrían propagar estos errores aún más, como sugiere la siguiente figura.
En cierto sentido, nunca podemos escapar completamente de esto; mientras usemos puertas de múltiples qubits, siempre existe un potencial para la propagación de errores. Pero como discutiremos en las siguientes subsecciones, se pueden tomar medidas para limitar el daño causado y hacer manejables los errores propagados.
Implementaciones transversales de puertas
La forma más sencilla conocida de mitigar la propagación de errores en circuitos cuánticos tolerantes a fallos es la implementación transversal de puertas, lo que significa que se construyen gadgets con una forma simple particular. Concretamente, los gadgets deben ser un producto tensorial de operaciones (o, en otras palabras, un circuito cuántico de profundidad uno), donde cada operación solo puede actuar sobre una única posición de qubit dentro de cada bloque de código que toca. Esto se explica mejor con algunos ejemplos.
Ejemplos de implementaciones transversales de puertas
Consideremos la siguiente figura, que sugiere una implementación transversal de una puerta CNOT. (Esta implementación particular, donde las CNOTs se realizan qubit por qubit, solo funciona para códigos CSS — pero de hecho funciona para todos los códigos CSS.)
En esta figura hay dos bloques de código, cada uno representado como compuesto por cinco qubits (aunque podrían ser más, como ya se indicó). El circuito de la derecha tiene profundidad uno, y cada una de las puertas CNOT actúa sobre una única posición de qubit dentro de cada bloque: tanto el control como el objetivo de la primera CNOT es el qubit superior (es decir, el qubit 0 en la convención de numeración de Qiskit), tanto el control como el objetivo de la segunda CNOT es el segundo qubit desde arriba (es decir, el qubit 1), y así sucesivamente. Por lo tanto, este es un gadget transversal.
Como segundo ejemplo — en realidad una clase de ejemplos — consideremos cualquier puerta de Pauli. Las puertas de Pauli siempre pueden implementarse de forma transversal, para cualquier código estabilizador, construyendo gadgets a partir de operaciones de Pauli. En particular, cualquier operación de Pauli sobre un qubit lógico codificado por un código estabilizador puede implementarse de forma transversal eligiendo una operación de Pauli adecuada sobre los qubits físicos de la codificación. Esto es consistente con un hecho mencionado de pasada en la lección "Formalismo de estabilizadores": salvo un factor de fase global, las operaciones de Pauli que conmutan con cada generador de estabilizador de un código estabilizador actúan como operaciones de Pauli sobre el qubit o los qubits codificados por ese código.
Como ejemplo concreto, consideremos el código de Shor de qubits, para el cual los estados de la base estándar se codifican de la siguiente manera.
Una puerta sobre el qubit lógico codificado por este código puede implementarse de forma transversal mediante la operación de Pauli de qubits
mientras que una puerta sobre el qubit lógico puede implementarse de forma transversal mediante la operación de Pauli de qubits
Ambas operaciones de Pauli tienen peso , que es el peso mínimo requerido. (El código de Shor de qubits tiene distancia , por lo que cualquier operación de Pauli no identidad con peso o menos se detecta como error.)
Como tercer ejemplo, el código de Steane de qubits (y de hecho cualquier código de color) permite una implementación transversal de todas las puertas de Clifford. Ya hemos visto cómo se implementan las puertas CNOT de forma transversal para cualquier código CSS, por lo que solo quedan por considerar las puertas y . Aplicar una puerta de Hadamard a los qubits del código de Steane corresponde a sobre el qubit lógico que codifica, mientras que aplicar una puerta (en lugar de una puerta ) a los qubits corresponde a una puerta lógica.
Propagación de errores para gadgets transversales
Ahora que sabemos qué son las implementaciones transversales de puertas, discutamos su relación con la propagación de errores.
Para una implementación transversal de una puerta de un solo qubit, simplemente tenemos un producto tensorial de puertas de un solo qubit en nuestro gadget, que actúa sobre un bloque de código de qubits físicos del código corrector de errores cuánticos elegido. Aunque cada una de estas puertas podría fallar e introducir un error, no habrá propagación de errores ya que no hay puertas de múltiples qubits involucradas. Inmediatamente después de aplicar el gadget se realiza la corrección de errores; y si el número de errores introducidos por el gadget (o durante la ejecución del gadget) es suficientemente pequeño, los errores se corregirán. Por lo tanto, si la tasa de errores introducidos por puertas defectuosas es suficientemente baja, la corrección de errores tiene buenas posibilidades de éxito.
Para una implementación transversal de una puerta de dos qubits, en cambio, existe el potencial de propagación de errores — simplemente no hay forma de evitarlo, como ya hemos observado. Sin embargo, el punto esencial es que un gadget transversal nunca puede causar propagación de errores dentro de un solo bloque de código.
Consideremos, por ejemplo, la implementación transversal de una puerta CNOT para un código CSS, como se describió anteriormente: un error podría ocurrir en el qubit superior del bloque de código superior justo antes de la ejecución del gadget, y la primera CNOT dentro del gadget propagará este error al qubit superior del bloque inferior. Sin embargo, los dos errores resultantes se encuentran ahora en bloques de código separados. Suponiendo que nuestro código puede corregir un error , los pasos de corrección de errores después del gadget corregirán los dos errores individualmente — ya que solo hay un error individual en cada bloque de código. En contraste, si la propagación de errores ocurriera dentro del mismo bloque de código, un error de bajo peso podría transformarse en un error de alto peso que el código no puede manejar.
No universalidad de las puertas transversales
Para dos códigos estabilizadores diferentes, puede ocurrir que una puerta particular pueda implementarse de forma transversal con un código pero no con el otro. Aunque, por ejemplo, no es posible implementar una puerta de forma transversal con el código de Steane de qubits, existen otros códigos para los cuales esto sí es posible.
Desafortunadamente, para ningún código corrector de errores cuánticos no trivial es posible implementar un conjunto universal de puertas de forma transversal. Este hecho se conoce como el teorema de Eastin-Knill.
La demostración de este teorema no se explica aquí. (No es una demostración complicada, pero requiere conocimientos básicos sobre grupos de Lie y álgebras de Lie, que no están entre los prerrequisitos de la serie.) Sin embargo, la idea básica puede transmitirse de forma intuitiva: las familias infinitas de operaciones transversales no pueden permanecer en el espacio de código de un código no trivial porque diferencias minúsculas en las operaciones transversales se aproximan bien mediante operaciones de Pauli de bajo peso que el código detecta como errores.
En resumen, los gadgets transversales ofrecen una implementación simple e inherentemente tolerante a fallos de puertas — pero para cualquier elección razonable de un código corrector de errores cuánticos, nunca habrá un conjunto universal de puertas que pueda implementarse de esta manera, lo que requiere el uso de gadgets alternativos.
Estados mágicos
Dado que para ningún código corrector de errores cuánticos no trivial es posible implementar un conjunto universal de puertas cuánticas de forma transversal, debemos considerar otros métodos para implementar puertas de forma tolerante a fallos. Un método bien conocido se basa en el concepto de estados mágicos, que son estados de qubit que permiten implementaciones tolerantes a fallos de ciertas puertas.
Implementación de puertas con estados mágicos
Comencemos con las puertas y , que tienen las siguientes representaciones matriciales.
Por definición, es una operación de Clifford, mientras que no lo es; no es posible implementar una puerta con un circuito de puertas de Clifford (puertas , puertas y puertas CNOT).
Sin embargo, es posible implementar una puerta (salvo un factor de fase global) con un circuito de puertas de Clifford si además disponemos de una copia del estado
y se permiten mediciones en la base estándar así como puertas controladas clásicamente. En particular, el siguiente circuito muestra una forma de hacerlo. El fenómeno mostrado aquí es un ejemplo algo simplificado de teleportación de puertas cuánticas.
Para verificar que este circuito funciona correctamente, primero calculamos la acción de la puerta CNOT sobre la entrada.