{"id":747,"date":"2021-02-05T22:20:47","date_gmt":"2021-02-05T21:20:47","guid":{"rendered":"https:\/\/intsight.com\/?p=747"},"modified":"2022-04-21T17:10:50","modified_gmt":"2022-04-21T15:10:50","slug":"transformaciones-unitarias","status":"publish","type":"post","link":"https:\/\/intsight.com\/index.php\/2021\/02\/05\/transformaciones-unitarias\/","title":{"rendered":"Transformaciones unitarias"},"content":{"rendered":"<p><span style=\"font-variant: small-caps\">Un algoritmo cu\u00e1ntico<\/span> funciona partiendo de un estado inicial en el que todos los qubits est\u00e1n en el estado $\\vert 0\\rangle$. A partir de ese punto, el estado se transforma mediante matrices, que se implementan f\u00edsicamente como circuitos l\u00f3gicos. El objetivo del algoritmo es llevar el estado cu\u00e1ntico a determinado valor. Entonces se realiza una medici\u00f3n.<\/p>\n<p>La \u00abexplicaci\u00f3n\u00bb anterior no \u00abexplica\u00bb mucho en este momento, pero necesitaba incluirla para saber en qu\u00e9 parte nos encontramos, y hacia d\u00f3nde vamos. En esta entrada comenzaremos a ver las transformaciones m\u00e1s sencillas que afectan al estado cu\u00e1ntico: aquellas que solamente afectan un qubit cada vez.<\/p>\n<h4>Rotaciones complejas<\/h4>\n<p>Sabemos que el estado cu\u00e1ntico es un vector complejo. En el caso de un solo qubit, el vector tiene dos componentes. Veremos m\u00e1s adelante que, para $N$ qubits, tendremos $2^N$ componentes. Es f\u00e1cil ver que, si queremos transformar estos vectores, necesitamos matrices complejas. Lo importante es qu\u00e9 tipo de matrices nos valen: necesitamos <em>matrices unitarias<\/em>, que son el equivalente de las rotaciones (matrices ortogonales) en un espacio vectorial complejo.<\/p>\n<p>Matem\u00e1ticamente, si tenemos una matriz compleja $U$, y llamamos $U^&#42;$ a su transpuesta conjugada (cambiamos filas y columnas e invertimos el signo de las partes imaginarias), entonces la matriz es unitaria si se cumple:<br \/>\n$$UU^&#42; = I$$donde $I$ es la matriz identidad. Es decir: toda matriz unitaria tiene una inversa (que es su transpuesta conjugada, en concreto). Este es un detalle importante: un estado cu\u00e1ntico regido por la ecuaci\u00f3n de Schr\u00f6dinger es sim\u00e9trico respecto al paso del tiempo. Toda transformaci\u00f3n cu\u00e1ntica que no implique una medici\u00f3n tiene que ser reversible.<\/p>\n<p>Una propiedad interesante que tienen las matrices unitarias es que preservan el producto escalar entre dos vectores arbitrarios:<\/p>\n<p>$$\\langle U\\phi\\vert U\\psi\\rangle = \\langle\\phi\\vert\\psi\\rangle$$Como el producto escalar es proporcional al \u00e1ngulo entre dos vectores (\u00e1ngulos complejos, en este caso), tenemos entonces que las matrices unitarias respetan el \u00e1ngulo entre vectores. La experiencia en tres dimensiones reales nos dice que las rotaciones, precisamente, son las transformaciones que respetan los \u00e1ngulos. En particular, si se preserva el producto escalar, tambi\u00e9n se preservar\u00e1 la longitud de los vectores transformados:<\/p>\n<p>$$\\vert\\vert U\\psi\\vert\\vert = \\vert\\vert\\psi\\vert\\vert$$<\/p>\n<h4>Matrices de Pauli<\/h4>\n<p>Ahora tenemos que aprendernos un peque\u00f1o repertorio de matrices que act\u00faan sobre un qubit. Las tres primeras matrices que veremos se conocen como <em>matrices de Pauli<\/em>, y la forma m\u00e1s f\u00e1cil de recordarlas es utilizar la esfera de Bloch como recurso mnemot\u00e9cnico:<\/p>\n<p><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/intsight.com\/wp-content\/uploads\/2021\/01\/blochsp.png?resize=300%2C264&#038;ssl=1\" alt=\"\" width=\"300\" height=\"264\" class=\"aligncenter size-medium wp-image-729\" srcset=\"https:\/\/i0.wp.com\/intsight.com\/wp-content\/uploads\/2021\/01\/blochsp.png?resize=300%2C264&amp;ssl=1 300w, https:\/\/i0.wp.com\/intsight.com\/wp-content\/uploads\/2021\/01\/blochsp.png?w=450&amp;ssl=1 450w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/>Hay tres ejes espaciales en esta representaci\u00f3n, y a cada uno de ellos le corresponde una matriz: $X$, $Y$ y $Z$. Cada una de ellas representa una rotaci\u00f3n de 180 grados alrededor del eje correspondiente. Ojo: estoy hablando de rotaciones en el espacio de la esfera de Bloch, no en el espacio vectorial complejo.<\/p>\n<p>Por ejemplo, la matriz $X$ gira 180 grados el estado cu\u00e1ntico alrededor del eje $X$. Como da la casualidad de que nuestra base computacional est\u00e1 alineada seg\u00fan el eje $Z$, esta transformaci\u00f3n transforma el polo norte, el estado $\\vert 0\\rangle$, en el polo sur $\\vert 1\\rangle$ y viceversa. En el espacio vectorial complejo, esto equivale a intercambiar los dos componentes complejos, por lo que no nos debe extra\u00f1ar que la matriz $X$ se escriba de esta manera en la base computacional:<\/p>\n<p>$$X=\\pmatrix{0&amp;1\\cr 1&amp;0}$$Machaquemos esta informaci\u00f3n para estar seguro de entenderla. Imaginemos que el estado cu\u00e1ntico en un momento dado es, en la notaci\u00f3n de Dirac:<\/p>\n<p>$$\\alpha\\vert 0\\rangle + \\beta\\vert 1\\rangle$$Si le aplicamos la matriz $X$ a este vector, obtenemos un estado con los componentes intercambiados:<\/p>\n<p>$$\\beta\\vert 0\\rangle + \\alpha\\vert 1\\rangle$$Ahora repitamos el c\u00e1lculo, pero usando directamente la notaci\u00f3n matricial:<\/p>\n<p>$$\\pmatrix{0&amp;1\\cr 1&amp;0} \\times \\pmatrix{\\alpha\\cr\\beta} = \\pmatrix{\\beta\\cr\\alpha}$$Son dos maneras equivalentes de expresar la misma operaci\u00f3n.<\/p>\n<p>\u00bfQu\u00e9 operaci\u00f3n cl\u00e1sica convierte los ceros en unos y viceversa? La negaci\u00f3n l\u00f3gica, por supuesto. Podemos entonces considerar que $X$ es la negaci\u00f3n dentro de nuestro repertorio de operaciones cu\u00e1nticas.<\/p>\n<p>Hemos elegido como negaci\u00f3n la rotaci\u00f3n alrededor del eje $X$, pero podr\u00edamos haber elegido tambi\u00e9n la rotaci\u00f3n alrededor de $Y$. Pero no lo hicimos, porque la representaci\u00f3n de $Y$ en la base computacional es un poco m\u00e1s complicada:<\/p>\n<p>$$Y=\\pmatrix{0&amp;-i\\cr i&amp;0}$$Observe que yo no le estoy explicando que la rotaci\u00f3n alrededor del eje $Y$ en el espacio de Bloch se corresponde realmente a la matriz que estoy presentando. No es dif\u00edcil de demostrar, pero para abreviar, se lo dejo de momento a su cargo. Lo que ahora nos interesa es si de verdad esta forma tan rara con n\u00fameros imaginarios es realmente una negaci\u00f3n. En realidad, es equivalente solamente cuando se trata de transformar los polos. Pero cualquier otro vector dar\u00e1 un vector con una fase rotada. Simplemente, vamos a preferir $X$ como forma est\u00e1ndar de negaci\u00f3n.<\/p>\n<p>La tercera matriz de Pauli es, naturalmente, la matriz $Z$:<\/p>\n<p>$$Z=\\pmatrix{1&amp;0\\cr 0&amp;-1}$$Obviamente, si aplicamos una rotaci\u00f3n de 180 grados alrededor del eje $Z$ a uno de los polos, nos quedaremos como al principio.<\/p>\n<h4>La transformaci\u00f3n de Hadamard<\/h4>\n<p>Las tres matrices de Pauli s\u00f3lo nos permiten, de momento, movernos de un polo al otro. \u00bfQu\u00e9 tal si quisi\u00e9ramos mover el estado cu\u00e1ntico al ecuador de la esfera de Bloch? Para eso necesitaremos una de las transformaciones m\u00e1s populares en computaci\u00f3n cu\u00e1ntica: la transformaci\u00f3n de Hadamard, o de Walsh-Hadamard.<\/p>\n<p>$$H=\\frac{1}{\\sqrt{2}}\\pmatrix{1&amp;1\\cr 1&amp;-1}$$Veamos qu\u00e9 efecto tiene esta transformaci\u00f3n sobre los vectores de la base computacional:<\/p>\n<p>$$\\eqalign{<br \/>\n\\frac{1}{\\sqrt{2}}\\pmatrix{1&amp;1\\cr 1&amp;-1}\\times\\pmatrix{1\\cr 0} =&amp; \\frac{1}{\\sqrt{2}}\\pmatrix{1\\cr 1} \\cr<br \/>\n\\frac{1}{\\sqrt{2}}\\pmatrix{1&amp;1\\cr 1&amp;-1}\\times\\pmatrix{0\\cr -1} =&amp; \\frac{1}{\\sqrt{2}}\\pmatrix{1\\cr -1}}<br \/>\n$$Utilizando la notaci\u00f3n de Dirac:<\/p>\n<p>$$\\eqalign{<br \/>\nH\\vert 0\\rangle =&amp; \\frac{1}{\\sqrt{2}}(\\vert0 \\rangle + \\vert1 \\rangle)\\cr<br \/>\nH\\vert 1\\rangle =&amp; \\frac{1}{\\sqrt{2}}(\\vert0 \\rangle &#8211; \\vert1 \\rangle)<br \/>\n}$$O, si recordamos la definici\u00f3n de la base de Hadamard:<\/p>\n<p>$$\\eqalign{<br \/>\nH\\vert 0\\rangle =&amp; \\vert+ \\rangle\\cr<br \/>\nH\\vert 1\\rangle =&amp; \\vert- \\rangle<br \/>\n}$$Es decir: la transformaci\u00f3n de Hadamard mueve los polos a puntos situados en el ecuador de la esfera de Bloch y alineados con el eje $X$.<\/p>\n<p>Como ejercicio, puede comprobar qu\u00e9 ocurre cuando se le aplica la matriz $X$ a los vectores de la base de Hadamard. No olvide la existencia del fen\u00f3meno de la equivalencia de fase: si multiplica los dos componentes por un vector unitario, el estado cu\u00e1ntico que se obtiene es indistinguible del original.<\/p>\n<h4>\u00bfUnitarias o hermitianas?<\/h4>\n<p>Las cuatro matrices que hemos visto comparten una caracter\u00edstica que, aunque no tiene mayor importancia, puede provocar confusi\u00f3n. Las hemos presentado aqu\u00ed porque son matrices unitarias. Por ejemplo, se cumple que:<\/p>\n<p>$$X^&#42; X = I$$Pero al mismo tiempo, \u00a1las cuatro matrices son hermitianas o auto-adjuntas! Esto es:<\/p>\n<p>$$X^&#42; = X$$&#8230; y, por lo tanto:<\/p>\n<p>$$XX = I$$Recuerde que los operadores hermitianos, en Mec\u00e1nica Cu\u00e1ntica, se utilizan para definir <em>observables<\/em>, al ser operadores con valores propios siempre reales. Esto tiene alguna importancia en F\u00edsica. Pero en Computaci\u00f3n Cu\u00e1ntica casi siempre utilizaremos la base computacional, y la coincidencia no tiene mayor consecuencia. S\u00f3lo la menciono para no confundir el concepto de operador unitario con el de operador hermitiano.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Un algoritmo cu\u00e1ntico funciona partiendo de un estado inicial en el que todos los qubits est\u00e1n en el estado $\\vert 0\\rangle$. A partir de ese punto, el estado se transforma mediante matrices, que se implementan f\u00edsicamente como circuitos l\u00f3gicos. El objetivo del algoritmo es llevar el estado cu\u00e1ntico a determinado valor. Entonces se realiza una [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":750,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[33],"tags":[44,20,45,34],"class_list":["post-747","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-quantum","tag-hadamard","tag-matrices","tag-pauli","tag-quantum"],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/intsight.com\/wp-content\/uploads\/2021\/01\/pulsar.png?fit=350%2C350&ssl=1","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/intsight.com\/index.php\/wp-json\/wp\/v2\/posts\/747","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/intsight.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/intsight.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/intsight.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/intsight.com\/index.php\/wp-json\/wp\/v2\/comments?post=747"}],"version-history":[{"count":44,"href":"https:\/\/intsight.com\/index.php\/wp-json\/wp\/v2\/posts\/747\/revisions"}],"predecessor-version":[{"id":816,"href":"https:\/\/intsight.com\/index.php\/wp-json\/wp\/v2\/posts\/747\/revisions\/816"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/intsight.com\/index.php\/wp-json\/wp\/v2\/media\/750"}],"wp:attachment":[{"href":"https:\/\/intsight.com\/index.php\/wp-json\/wp\/v2\/media?parent=747"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/intsight.com\/index.php\/wp-json\/wp\/v2\/categories?post=747"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/intsight.com\/index.php\/wp-json\/wp\/v2\/tags?post=747"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}