Computacion cuantica
No voy a entrar aquí en justificar la utilidad de la computación
cuántica frente a la clásica, hay infinidad de información en internet
para ello, personalmente recomiendo esta: (El tamiz. Cuántica sin fórmulas), o esta otra: Ecos del futuro. Tampoco voy a entrar en la teoría física
que la sustenta por el mismo motivo, únicamente decir que para los
efectos prácticos de la computación cuántica, de todos los estados
físicos posibles de los sistemas, elegiremos un sistema con únicamente
dos autoestados opuestos, los cuales constituyen la unidad básica de la
computación cuántica: el qbit (el equivalente cuántico del bit de la
computación clásica).
Quizás el mejor ejemplo sería una orquesta. Cuando todos los músicos tocan armónicamente habremos hallado el resultado que buscábamos, mientras que cuando están afinando sus instrumentos, cada uno por su cuenta, el resultado es un ruido desarmonizado. La computación verdría a equivaler a la dirección de la orquesta que persigue la armonía.
La computación cuántica, como la convencional, tambien utiliza puertas lógicas, registros, almacenamiento, en fin máquina de Turing cuántica en general. Con algunas sutiles diferencias. Por ejemplo: las puertas lógicas cuánticas son bidireccionales, pueden operar en ambos sentidos y de este modo afectar a pasos computacionales previos.
Por todo lo visto, parece complicado encontrar algún sistema intuitivo y sin fórmulas para poder ejemplificar la computación cuántica, sin embargo si que existe uno y muy conocido: el buscaminas de Windows.
Seguramente los más jóvenes que leáis este blog, no hayáis oído hablar del buscaminas de Windows (minesweeper). Fue un juego introducido en las primeras versiones de ese software con la modesta finalidad de que el usuario adquiriese soltura con un, entonces novedoso, artilugio introducido en los ordenadores personales: el ratón. Es seguro que muchos de los que lean esto tampoco sepan ¿qué es un ratón?, en términos de informática. Pues bien, para ellos diré que se trataba de un artilugio que permitía mover un puntero por la pantalla y seleccionar o pulsar opciones.
Este, al principio modesto juego, adquirió allá por el 2000 la categoría de tener al menos complejidad NP. Puedes consultar en internet si te interesa el tema, pero aquí baste decir que un problema NP es aquel en el que, al incrementar la cantidad de variables de entrada, el tiempo de resolución de dicho problema tratado con el mejor algoritmo conocido, crece de forma No Polinómica (puedes pensar en un crecimiento exponencial, por ejemplo). La persona que le dio ese estatus fue Richard W. Kaye, pero no sólo hizo eso, sino que demostró que también podía emular a una computadora clásica, porque con él podemos construir una máquina de Turing completa (en el enlace está el paper).
Yo quiero ir un poco más allá, porque estoy convencido de que además con él podemos construir una máquina de Turing cuántica, es decir, una computadora cuántica, y ese es el objeto del presente libro, junto con el deseo de acercar la computación cuántica a los profanos, y en especial a los niños. Porque, del mismo modo que en la informática clásica, un programador no necesita ser ingeniero electrónico y conocer todos los entresijos y funcionamiento de los chips que integran su computadora para crear programas (software) que se ejecuten en ella, un programador cuántico no necesita saber física cuántica para construir software cuántico. Por poner un ejemplo más cercano: un conductor puede cambiar de modelo de coche sin que ello le ocasione un gran trastorno y sin tener nociones de mecánica ni de cómo funciona un motor de explosión, o la transmisión y la caja de cambios de su coche.
Como éste libro no está escrito para físicos, sino para programadores, las explicaciones y demostraciones irán al final. Así que vamos a empezar explicando someramente las reglas del buscaminas, aunque recomiendo encarecidamente que la mejor manera de aprenderlas es jugar algunas partidas en dicho juego. Los que ya conozcan el juego pueden saltarse éste párrafo.
Reglas del buscaminas:
El juego nos presenta un tablero cuadriculado en celdas que contienen un determinado número de minas ocultas que se nos indica en un contador. Disponemos de banderolas señalizadoras que podemos colocar en las casillas en las que sospechemos o tengamos la certeza de que ocultan una mina y al hacerlo el contador resulta afectado. En cada casilla oculta, no puede haber más de una mina o hueco.
Iniciamos el juego
“pisando” (haciendo clickclic) sobre
alguno de los cuadros aún ocultos. El cuadro se abre y muestra su contenido. El
contenido puede ser, bien una mina, con lo que estallarán todas las demás del
tablero mostrando sus posiciones y acabándose la partida, o bien una No Mina o hueco.
En el caso de que no haya mina. El cuadro mostrará un contenido numérico que
indica CON TODA FIDELIDAD el número de minas que lo rodean. Se omiten las
casillas cuyo contenido sería un cero para más claridad del juego y éstas se
dejan en blanco, pero descubiertas. El juego consiste en ir descubriendo casillas
sin que llegue a explotar ninguna mina con la ayuda de la información que nos
muestran las casillas descubiertas y que SIEMPRE TIENE QUE SER CONGRUENTE, junto con la información
del marcador que nos indica el número de casillas que aún no están señalizadas
con una banderola. (fin del párrafo.).
Hemos finalizado la explicación de las reglas del juego con una palabra que he resaltado en mayúsculas y negrita porque es fundamental y que voy a explicar a continuación. ¿Es un determinado tablero congruente, o no lo es? Para entendernos mejor vamos a definir primero el término. Un tablero será congruente si existe una distribución de minas ocultas tal que los números que hay en las celdas descubiertas sean correctos; será incongruente o inconsistente en caso contrario. La figura 1 muestra un ejemplo de configuración incongruente o inconsistente.
Dejo al lector la tarea de averiguar por qué no es congruente. Como pista decir que es imposible que los números de la esquina superior derecha sean 1 y 3. Valores congruentes serían 2 y 4 ó 0 y 2.
Aprovecho este punto para castigar al lector apuntando que la propiedad de NP-Completitud del buscaminas se refiere al diagnóstico de CONGRUENCIA o NO de una posición arbitrariamente grande y compleja del buscaminas. Cuanto mayor sea el tablero y la cantidad de casillas en él, la dificultad de emitir un veredicto de congruencia o no, crece de forma exponencial.
Hecho este inciso, recomiendo encarecidamente al lector que quiera proseguir y avanzar que se instale la herramienta de diseño y evaluación de posiciones de buscaminas que Pedro Gimeno Fortea nos cede gentilmente y que puedes encontrar en su página web:
Diseñador de Buscaminas (124.973 bytes),en castellano:
http://www.formauri.es/personal/pgimeno/compurec/Buscaminas.php#Fig_1,y también en inglés:
http://www.formauri.es/personal/pgimeno/compurec/Minesweeper.php.Muchísimas gracias desde aquí puesto que ha sido para mí de una inestimable ayuda.
Sin más preámbulos vamos a hacer un repaso de lo que Richard W. Kaye publicó en su día, pero cambiando algunas de sus configuraciones por otras mucho más sencillas e intuitivas.
Richard W. Kaye, para demostrar la NP-Completitud del buscaminas se apoyó en la demostración de que, con ese juego se pueden construir todas las configuraciones necesarias para equipararlo al problema SAT que también es NP-Completo (como siempre te remito a internet si quieres más información) (También en castellano…)
Con ello consiguió demostrar que, AL MENOS, el juego del buscaminas tiene una complejidad NP. Cuando digo al menos quiero decir, como mínimo, puesto que de hecho, tiene una complejidad mucho mayor: https://arxiv.org/pdf/1204.4659.pdf.
Baste decir aquí que el problema SAT, o problema de satisfacibilidad booleana, trata de saber si, dada una expresión booleana con variables y sin cuantificadores, hay alguna asignación de valores para sus variables que hace que la expresión sea verdadera.
Esto, dicho así, suena bastante feo, pero en realidad se trata del mismo concepto de congruencia explicado antes, pero ahora referido a circuitos lógico/booleanos.
Así que no nos queda más remedio que introducir un poco de álgebra de Boole aplicada al buscaminas.
Ya he mencionado antes que Kaye publicó un “paper” en el que demostraba que se podían construir configuraciones del buscaminas de Windows que emulasen los circuitos lógicos, por no que no voy a entrar en demostraciones ya realizadas, únicamente un repaso de las principales configuraciones.
Empezaremos por la configuración más sencilla: el conductor y sus variantes para doblar esquinas, cruces sin contacto, cambio de fase (o cambio de pie si te es más fácil), pozos de potencial etc…
Por convenio, el sentido de la “corriente” lógica, vendrá dado por la CONGRUENCIA y si no se contradice ésta de izquierda a derecha y de arriba abajo, aunque puede ser a la inversa. En general podemos elegir el sentido que más nos convenga porque en computación cuántica todos sus componentes son reversibles y el sentido de la corriente lógica es muy distinto al sentido de la computación ordinaria, como intentaré explicar más adelante.

Comentarios
Publicar un comentario