El modelo de circuito de computación
Otro modelo de computación importante en el estudio de la computación cuántica es el de familias uniformes de circuitos reversibles.
Definición y Componentes de los Circuitos
Los circuitos son redes compuestas de cables que llevan valores de bits a compuertas que realizan operaciones elementales en los bits.
Un circuito tiene cables.
Los bits de entrada son escritos en los cables y entran al circuito de izquierda a derecha.
En cada paso de tiempo , cada cable puede tener a lo más una compuerta.
Los bits de salida son las lecturas de los cables al final del circuito.
Familias de Circuitos
Una familia de circuitos es un conjunto de circuitos .
Se dice que la familia es uniforme si podemos construir fácilmente cada .
"Fácilmente" en este contexto significa que existe un algoritmo eficiente (generalmente en tiempo polinomial) que, dado , puede generar la descripción del circuito .
La uniformidad es importante porque garantiza que no estamos "codificando" la solución del problema en la construcción del circuito, sino que estamos realmente computando la solución.
Universalidad en Computación Clásica
Un conjunto de compuertas es universal para la computación clásica si, para cualquier entero positivo , y una función , un circuito puede ser construido para computar usando únicamente compuertas de ese conjunto.
El conjunto que comprende solo la compuerta TOFFOLI es universal para la computación clásica.
Máquinas de Turing Probabilísticas vs Deterministas
Es una pregunta abierta si una máquina de Turing probabilística es más poderosa que una máquina de Turing determinista.
Hay algunos problemas donde no se conoce cómo resolverlos usando una máquina de Turing determinista pero se conoce cómo resolverlos eficientemente usando la máquina probabilística.
Ejemplo: Prueba de primalidad
Determinista: El algoritmo AKS (Agrawal-Kayal-Saxena) puede determinar si un número es primo en tiempo polinomial, pero es complejo y relativamente lento en la práctica.
Probabilístico: El test de Miller-Rabin puede determinar si un número es compuesto (no primo) con alta probabilidad, y es mucho más rápido en la práctica. Si el test dice que un número es "probablemente primo" muchas veces seguidas, podemos estar muy seguros de que es realmente primo.
Medidas de Complejidad en Circuitos
Para el modelo de circuitos, dos medidas naturales de complejidad son:
El número de compuertas usadas en el circuito .
Esta medida se relaciona con el "tamaño" del circuito y puede compararse con el tiempo de ejecución en otros modelos.
La profundidad del circuito.
La profundidad es la longitud del camino más largo desde una entrada hasta una salida en el circuito.
Se relaciona con el tiempo que tomaría ejecutar el circuito si las compuertas en diferentes caminos pudieran operar en paralelo.
Formulación del Modelo de Circuitos Usando Álgebra Lineal
Estados en Circuitos Deterministas vs Probabilísticos
En un circuito determinista, el estado de un cable en un punto dado es simplemente el valor del bit en ese cable (0 o 1).
Para un circuito probabilístico, necesitamos una representación más rica que capture las probabilidades de los diferentes estados posibles.
Representación Vectorial de Estados
Para un bit probabilístico que está en estado 0 con probabilidad y en estado 1 con probabilidad , podemos usar un vector 2-dimensional de probabilidades:
Un cable en estado determinista 0 se representa como:
Un cable en estado determinista 1 se representa como:
Representación Matricial de Compuertas
Como se decidió representar los estados con vectores, nos gustaría representar las compuertas en el circuito como operadores que actúan en los estados. Pensando en la compuerta NOT, queremos algo tal que:
Por lo que podemos llegar a que
Así:
Circuitos Probabilísticos con Dos Cables:
Imaginemos un circuito electrónico simple con dos cables independientes. En un circuito probabilístico, en lugar de tener estados deterministas (siempre 0 o siempre 1), cada cable tiene una probabilidad asociada a cada estado posible.
Para el primer cable:
La probabilidad de estar en estado 0 es
La probabilidad de estar en estado 1 es
Para el segundo cable:
La probabilidad de estar en estado 0 es
La probabilidad de estar en estado 1 es
Naturalmente, para cada cable, la suma de las probabilidades debe ser 1: y
Ahora, cuando consideramos ambos cables juntos, tenemos cuatro posibles combinaciones de estados:
00: Ambos cables en estado 0
01: Primer cable en 0, segundo en 1
10: Primer cable en 1, segundo en 0
11: Ambos cables en estado 1
La probabilidad de cada combinación se calcula multiplicando las probabilidades individuales de cada cable. Esto se debe a que asumimos que los estados de los cables son independientes entre sí. Por ejemplo:
Estas probabilidades combinadas se pueden representar en un vector 4-dimensional:
Ahora, observamos que este vector 4-dimensional se puede expresar como el producto tensorial de dos vectores 2-dimensionales:
Podemos ver al producto tensorial como una operación que combina dos espacios vectoriales para formar uno nuevo. En nuestro caso, estamos combinando dos espacios 2-dimensionales para formar uno 4-dimensional.
Ahora, lo que estamos usando aquí es el producto de Kronecker, que es una representación matricial del producto tensorial. Para vectores y matrices finitas, ambos son equivalentes en la práctica. La diferencia principal es que el producto tensorial es un concepto más general que se aplica a espacios vectoriales abstractos, mientras que el producto de Kronecker es una operación específica entre matrices.
Ahora, es importante saber qué también podemos representar compuertas que actúan en más de un cable.
Para eso primero hay que tener claro qué es un bit de control y un bit de objetivo, para eso pensemos en la compuerta CNOT, que tiene la siguiente tabla de verdad:
Control (Qubit 1) | Objetivo (Qubit 2) | Salida Control | Salida Objetivo |
---|---|---|---|
0 | 0 | 0 | 0 |
0 | 1 | 0 | 1 |
1 | 0 | 1 | 1 |
1 | 1 | 1 | 0 |
Entonces aquí un Bit de Control es el qubit que determina si la operación NOT se aplicará al qubit objetivo. Mientras que el Bit de Objetivo es el qubit al que se le aplicará la operación NOT condicionalmente.
Por lo tanto:
Si el bit de control es (0), el bit de objetivo no cambia.
Si el bit de control es (1), se aplica una operación NOT al bit de objetivo, invirtiendo su valor (de (0) a (1) o de (1) a (0)).
Ahora, aquí en mi clase lo que se procedió fue mostrar cómo se veía esta compuerta en forma matricial de la forma en que se hizo con la compuerta NOT.
Se dijo que:
En su momento no entendí de dónde salía esta representación, así que ya en casita, con la tranquilidad del mundo, llegué al siguiente desarrollo:
Primero recordamos que para este caso, tenemos 2 qubits, en donde tenemos las siguientes combinaciones de estados base: , , , y .
Pero cuando trabajamos con dos qubits, utilizamos el producto tensorial para combinar los estados de los qubits individuales. Por lo que:
Para construir estos estados combinados, calculamos el producto tensorial:
Para :
**Para :
Para :
Para :
Para : La compuerta CNOT no cambia nada (porque el control es (), por lo que sigue siendo . Así, la columna correspondiente a es .
Para : Similar al anterior, el control es (), así que sigue siendo . La columna correspondiente es .
Para : Aquí, el control es (), así que la compuerta CNOT aplica un NOT al objetivo, transformando en . Por lo tanto, la columna correspondiente a es .
Para : Con el control en , la compuerta CNOT cambia el estado del objetivo: se convierte en . La columna correspondiente es .
Juntando los resultados ahora llegamos a que:
Definitivamente esta talachita puede ser excesiva, supongo que con algo más de callo, puede salir a ojo. Pero creo que justamente necesitaba ver este desarrollo para sentirme seguro.
Nota final: En la compuerta CNOT, cuando aplicamos la operación al qubit de objetivo en función del qubit de control , la operación realizada sobre el qubit de objetivo puede describirse como una suma módulo 2 o suma XOR.
Esta suma módulo 2 es una operación que es como una suma usual pero con la particularidad de que los resultados se reducen al módulo 2. Esto es como la operación XOR. Los resultados de la suma módulo 2 son:
Por lo que en la compuerta CNOT, la salida del qubit objetivo se obtiene mediante: