Compartir a través de


Tipos de datos específicos de Quantum

En este tema se describe el tipo de Qubit, junto con otros dos tipos que son algo específicos del dominio cuántico: Pauli y Result.

Cúbit

Q# trata los cúbits como elementos opacos que se pueden pasar a funciones y operaciones, pero solo se pueden interactuar pasando a instrucciones nativas del procesador cuántico de destino. Estas instrucciones siempre se definen en forma de operaciones, ya que su intención es modificar el estado cuántico. La restricción que las funciones no pueden modificar el estado cuántico, a pesar del hecho de que los cúbits se pueden pasar como argumentos de entrada, se aplica mediante la necesidad de que las funciones solo puedan llamar a otras funciones y no puedan llamar a operaciones.

Las bibliotecas de Q# se compilan en un conjunto estándar de operaciones intrínsecas, lo que significa que las operaciones que no tienen ninguna definición para su implementación en el lenguaje. Tras el destino, el compilador vincula las implementaciones que las expresan en términos de las instrucciones que son nativas del destino de ejecución. Un programa de Q# combina estas operaciones tal como se define en una máquina de destino para crear nuevas operaciones de nivel superior para expresar el cálculo cuántico. De este modo, Q# facilita la expresión de la lógica subyacente a los algoritmos cuánticos e híbridos clásicos cuánticos, mientras que también es muy general con respecto a la estructura de una máquina de destino y su realización del estado cuántico.

Dentro de Q# sí mismo, no hay ningún tipo ni construcción en Q# que represente el estado cuántico. En su lugar, un cúbit representa la unidad física direccionable más pequeña en un equipo cuántico. Por lo tanto, un cúbit es un elemento de larga duración, por lo que Q# no necesita tipos lineales. Por lo tanto, no hacemos referencia explícitamente al estado dentro de Q#, sino que se describe cómo el programa transforma el estado, por ejemplo, a través de la aplicación de operaciones como X y H. De forma similar a cómo un programa de sombreador de gráficos acumula una descripción de las transformaciones a cada vértice, un programa cuántico en Q# acumula transformaciones a estados cuánticos, representados como referencias completamente opacas a la estructura interna de una máquina de destino.

Un programa de Q# no tiene capacidad para introspección en el estado de un cúbit y, por tanto, es totalmente independiente de lo que es un estado cuántico o de cómo se realiza. En su lugar, un programa puede llamar a operaciones como Measure para obtener información sobre el estado cuántico del cálculo.

Pauli

Los valores de tipo Pauli especificar un operador Pauli de un solo cúbit; las posibilidades son PauliI, PauliX, PauliYy PauliZ. Pauli valores se usan principalmente para especificar la base de una medida cuántica.

Resultado

El tipo Result especifica el resultado de una medida cuántica. Q# refleja la mayoría del hardware cuántico proporcionando medidas en productos de operadores pauli de un solo cúbit; un Result de Zero indica que se midió el valor propio +1 y un Result de One indica que se midió el valor propio -1. Es decir, Q# representa valores propios por la potencia a la que se eleva -1. Esta convención es más común en la comunidad de algoritmos cuánticos, ya que se asigna más estrechamente a los bits clásicos.