Vamos a generalizar el concepto de estado cuántico y de transformación unitaria a sistemas de más de un qubit. Este es el momento en que los libros entran en un pequeño berenjenal llamado producto tensorial. Nosotros necesitaremos, por supuesto, saber cómo funciona el producto tensorial, pero vamos a introducir el tema de forma gradual y, espero, más intuitiva. Comenzaremos con el estado de un sistema con sólo dos qubits.
Two qubits
Ya sabemos que el estado de un sistema de $N$ qubits es un vector complejo en $\mathbb{C}^{2^N}$, con $2^N$ componentes. Un qubit tiene dos componentes, dos qubits, cuatro; tres qubits tienen ocho componentes y diez, mil veinticuatro. No hay nada sorprendente ni esotérico en que aparezca una exponencial en nuestras cuentas. Diez bits clásicos también dan para representar hasta 1024 valores. Pero es cierto que diez qubits tienen infinitamente más estados internos que su contrapartida clásica, como veremos en breve.
Esto también significa que la base vectorial de un sistema de $N$ qubits tiene $2^N$ vectores. En el caso de un qubit, teníamos una base con dos vectores, los ya familiares $\vert0\rangle$ y $\vert1\rangle$. Con dos qubits, vamos a tener una base de cuatro vectores, y vamos a denominarlos así:
$$\vert00\rangle, \vert01\rangle, \vert10\rangle, \vert11\rangle$$Cualquier estado del sistema de dos qubits, entonces, puede describirse como una combinación lineal de estos cuatro vectores:
$$\vert\psi\rangle = c_{00}\vert00\rangle+c_{01}\vert01\rangle+c_{10}\vert10\rangle+c_{11}\vert11\rangle$$En notación matricial, por ejemplo, el estado $\vert00\rangle$ se representaría:
$$\pmatrix{1\cr 0\cr 0\cr 0}$$Como esta notación consume mucho espacio vertical, a veces representaremos este vector mediante su transpuesta (no su transpuesta conjugada):
$$\pmatrix{1&0&0&0}^T$$Tenemos que tener cuidado en cómo interpretamos la notación matricial. Por ejemplo, el vector $\vert11\rangle$ corresponde a esta matriz:
$$\pmatrix{0\cr 0\cr 0\cr 1}\quad\text{ó}\quad\pmatrix{0&0&0&1}^T$$Para poder usar la notación matricial es necesario acordar un orden en los vectores de la base. Lo que hemos hecho es utilizar implícitamente el llamado orden lexicográfico o de diccionario. El otro detalle a cuidar es el orden de los ceros y unos en vectores como $\vert01\rangle$ y $\vert10\rangle$. Nosotros siempre consideraremos que el primer qubit es el de más a la derecha.
Una forma alternativa de escribir estos vectores de la base es dejándonos de pamplinas, y traduciendo las cadenas de bits a notación decimal:
$$\vert0\rangle, \vert1\rangle, \vert2\rangle, \vert3\rangle$$La desventaja de esta notación es que hace falta tener muy claro el número de qubits en el sistema. Por ejemplo, $\vert3\rangle$ podría significar $\vert11\rangle$ en nuestro sistema de dos qubits, pero también $\vert0011\rangle$ en un ordenador de cuatro. En ocasiones, para evitar esta incertidumbre, escribiremos cosas como $\vert3\rangle_2$ o incluso $\vert3\rangle_N$, para dejar claro el número de qubits del sistema.
Potencias de dos
El número $4$ es bastante engañoso, porque $4 = 2+2 = 2\times2 = 2^2$. ¿Qué tamaño tiene el espacio de estado de un sistema, digamos, de cuatro qubits? El espacio vectorial subyacente es $\mathbb{C}^{2^4}$, es decir, $\mathbb{C}^{16}$, y la base vectorial tendrá $16$ elementos:
$$\displaylines{\vert0\rangle, \vert1\rangle, \vert2\rangle, \vert3\rangle, \vert4\rangle, \vert5\rangle, \vert6\rangle, \vert7\rangle,\cr
\vert8\rangle, \vert9\rangle, \vert \text{A}\rangle, \vert \text{B}\rangle, \vert \text{C}\rangle, \vert \text{D}\rangle, \vert \text{E}\rangle, \vert {F}\rangle}$$Esta vez he abreviado el contenido de los kets usando la notación hexadecimal, pero podía haber usado igualmente notación binaria o decimal, siempre que estuviese claro el contexto.
Lo importante en este punto es tener claro que cualquier espacio de estados en un ordenador cuántico va a tener una base cuyo tamaño es una potencia de dos. Esto importa porque, al diseñar algunos algoritmos como la Transformada Cuántica de Fourier, utilizaremos técnicas como “divide y vencerás”, que funcionan mejor cuando se trabaja sobre potencias de dos.
La insoportable gravedad del ser
Imaginemos que hay que simular un ordenador cuántico mediante un ordenador clásico. Supongamos que queremos simular 100 qubits. ¿Cuán difícil es? $2^{10}$ es $1.024$, pero $2^{100}$ es este monstruo:
$$1.267.650.600.228.229.401.496.703.205.376$$O, en notación científica decimal, 1,267E30. Ese es el número de componentes complejos en un simple estado cuántico. Ahora bien, la programación cuántica tiene una buena parte que consiste en multiplicar matrices o aplicar matrices a un estado cuántico. Calcule por su cuenta el tamaño de una matriz de transformación para un estado cuántico como el descrito.
Los ordenadores cuánticos más grandes en estas fechas tienen unos 50 qubits. $2^{50}$ es aproximadamente un 1 seguido de 15 ceros. Un mega son seis ceros, el giga, nueve y el tera, doce. Necesitamos mil teras para representar el estado cuántico completo. Es decir, un peta.
En la siguiente entrada, intentaré justificar cómo es posible este tipo de monstruosidades, y de paso, le presentaré el formalismo de los productos tensoriales.