la evoluciÓn del bit y un paseo por la energÍa 2013 · 1 la evoluciÓn del bit y un paseo por la...
TRANSCRIPT
1
LA EVOLUCIÓN DEL BIT Y UN PASEO POR LA ENERGÍA 2013 VICENTE MORET BONILLO ---------------------------------------------------------------- Apuntes del Curso de Doctorado
"Modelos Físicos en Computación Avanzada"
DEPARTAMENTO DE COMPUTACIÓN. UNIVERSIDAD DE A CORUÑA
----------------------------------------------------------------------------------------------
Prohibida la reproducción total o parcial de esta obra sin el consentimiento expreso del autor. © Vicente Moret Bonillo.
© Vicente Moret Bonillo Página 3
La Evolución del Bit y un Paseo por la Energía
Vicente Moret Bonillo Febrero de 2013
© Vicente Moret Bonillo Página 4
A mi esposa Amparo,
a mis hijos Santiago y Alberto
y a mis padres Vicente y Concha.
© Vicente Moret Bonillo Página 6
INDICE
1. EL UNIVERSO DE LO BINARIO ....................................... 8
2. COMPUTACIÓN DE IDA Y VUELTA ................................. 48
3. COMPUTADORES REVERSIBLES .................................... 72
4. HACIA LA COMPUTACIÓN CUÁNTICA ............................. 92
5. MECÁNICA CUÁNTICA E INFORMACION .......................... 118
6. LA COMPUTADORA CUÁNTICA ........................................ 138
7. UN PASEO POR LA ENERGÍA ........................................... 164
8. BIBLIOGRAFÍA ............................................................... 206
© Vicente Moret Bonillo Página 10
1. EL UNIVERSO DE LO BINARIO
Antes de comenzar con cuestiones más complejas repasaremos algunos
conceptos más o menos triviales, pero sin duda familiares ya,
relacionados con las peculiares entidades y técnicas que hemos
implementado en nuestros ordenadores para que éstos puedan realizar
cómputos.
Nuestros ordenadores basan sus procedimientos en la lógica binaria,
que utiliza el concepto de bit para representar algo1 que puede ser
verdad -i.e., |1- o mentira -i.e., |0-… Pero ¿sabemos realmente qué es
un bit? Tratemos de encontrar una definición formal del concepto de
bit.
1 El símbolo |algo anticipa la notación que usaremos cuando hablemos de computación cuántica. Aquí lo
interpretaremos como “valor de un estado dado”. De este modo el número decimal “9” lo representamos
en binario como |00001001 si la palabra es de 8 bits.
© Vicente Moret Bonillo Página 11
1.1. Buscando al bit
El diccionario de la Real Academia de la Lengua Española (RAE) nos
define el término bit del siguiente modo: “Unidad de medida de
información equivalente a la elección entre dos posibilidades igualmente
probables”. La definición, estrictamente cierta, no deja de ser un poco
espesa –al menos si uno se la encuentra de sopetón. Perdamos un
instante en analizarla: “… unidad de medida de información…” (Hasta
aquí todo va bien) “… equivalente a la elección entre dos posibilidades
igualmente probables…” (Aquí la cosa ya no va tan bien.)
El que dos posibilidades sean igualmente probables está bastante claro.
Por ejemplo, si tenemos A y tenemos B –y sólo tenemos A y B, la
probabilidad de A, p(A), es igual a la probabilidad de B, p(B).
Consideremos que:
X ≡ {p(A) = p(B)}
Es decir denotamos por X a la circunstancia de que los sucesos A y B
son igualmente probables. Según esto, la definición de bit que propone
la RAE podría traducirse del siguiente modo:
BIT ≡ Elección {A, B / X}
Para mí, la dificultad de la definición de la RAE reside en el término
“Elección”… La interpretación es confusa.
Otra definición que encontramos, esta vez en el Diccionario de
Computación publicado por McGraw-Hill en 1991, establece que un bit
es una “unidad de información que equivale a una decisión binaria o a
la designación de uno de los dos valores o estados posibles e igualmente
probables de un medio empleado para almacenar o transferir
información”. Esta definición, que es casi la misma que la de la RAE
© Vicente Moret Bonillo Página 12
(aunque cambia el término –elección por el de –decisión), menciona
ya explícitamente el vínculo del bit con la información y con los medios
empleados para almacenarla o transferirla. En mi opinión sigue siendo
una definición ambigua y poco precisa.
Una segunda acepción del término bit, que aparece en el diccionario
arriba mencionado, establece que “…bit es una unidad adimensional de
la capacidad de almacenamiento que expresa la capacidad de
almacenamiento como el logaritmo en base 2 del número de estados
posibles del dispositivo”. Aquí entramos ya en el terreno de las
definiciones “por decreto” (perfectamente válidas, en cualquier caso.) La
única pega que encontramos es… ¿a qué dispositivo nos estamos
refiriendo? Por otra parte: ¿por qué el logaritmo en base 2 y no otro?
¿Hay alguna justificación o es por convenio?... Volveremos más adelante
sobre esta cuestión.
Dejando ya las fuentes documentales académicas, consulté a varios de
mis compañeros –todos ellos profesionales de las ciencias de la
computación sobre cómo definirían ellos el concepto de bit. Les rogué
también que trataran de olvidar las definiciones convencionales y me
diesen su propia definición. A continuación transcribo algunas de sus
respuestas:
1. Representación matemática de los dos estados posibles de un
interruptor, encendido y apagado, que utiliza el sistema de
numeración en base 2 por poseer éste el mismo número de
estados: 0 y 1
2. Unidad mínima de información de un alfabeto de dos símbolos
3. La unidad más pequeña de información en una máquina
4. Dígito o guarismo binario (base 2), i.e., 0 ó 1
5. Unidad de numeración binaria que puede tomar dos valores
asociados, 0 ó 1
© Vicente Moret Bonillo Página 13
6. La mínima cantidad de información que puede ser almacenada y
transmitida dentro de un sistema informático
7. Es un dato con dos posibles valores o informaciones
Todas las definiciones anteriores, incluidas las académicas –y dejando
aparte cuestiones de estilo literario, pueden ser englobadas en tres
categorías:
(a) Aquéllas que enfatizan aspectos conceptuales
(b) Las que se centran en la idea de unidad de información
(c) Las que resaltan el carácter binario del bit
Para mí está claro que el bit existe por definición, del mismo modo que
el color rojo es rojo porque los científicos se han puesto de acuerdo en
que de tal longitud de onda del espectro de radiación electromagnética a
tal otra, el color es precisamente rojo. Lo curioso del caso es que la
gente de la calle ya sabía lo que era el color rojo mucho antes de que los
científicos se pusieran de acuerdo. Así, debe existir algo esencial e
intuitivo en los colores, de forma que éstos sean reconocidos sin
necesidad de recurrir a su definición o a su caracterización formal.
Y esto es precisamente lo que vamos a explorar:
1. ¿Hay algo que justifique el concepto de bit más allá de su
definición por decreto?
2. ¿Hay algo que nos permita identificar al bit como una unidad de
información?
3. ¿Hay algo que nos permita establecer, sin temor a equivocarnos,
la naturaleza binaria del bit?
Trataremos de encontrar respuestas a estas cuestiones, pero antes
vamos a abrir un pequeño paréntesis.
© Vicente Moret Bonillo Página 14
En casi todas las ciencias es posible razonar de dos formas: desde los
datos hacia las conclusiones –lo que en inteligencia artificial, por
ejemplo, configuraría un proceso hacia delante o progresivo, o desde
las hipótesis hacia los datos– lo que, otra vez en inteligencia artificial,
configuraría un proceso hacia atrás o regresivo. En ambos casos es
necesario el conocimiento de que disponemos sobre el dominio. Lo
único que va a cambiar es la forma de utilizar este conocimiento. Así, en
un razonamiento progresivo partimos de un conjunto de datos y
utilizamos nuestro conocimiento para obtener conclusiones válidas. Por
ejemplo, si yo sé que mi conocimiento está constituido por 5 reglas,
que son nuestros axiomas:
= {R1 , R2 , R3 , R4 , R5}
Y sean cada uma de las reglas2…
R1: A → B axioma (1)
R2: B C → D axioma (2)
R3: D E F → H axioma (3)
R4: A Z → V axioma (4)
R5: V X G → W axioma (5)
… y además sé que el conjunto de los datos ∆ de mi problema es:
∆ = {A, C, E, F}
Entonces podemos concluir B, D y H sin más que aplicar los axiomas
(1), (2) y (3) sobre nuestro conjunto de datos ∆. Ésta es una forma de
razonar progresivamente.
2 Aquí utilizaremos los símbolos lógicos [ and y] , [ o r o] , [ implica]
© Vicente Moret Bonillo Página 15
Por el contrario, si yo quiero razonar de forma regresiva tengo que
asumir una hipótesis de trabajo, digamos D, y utilizar mis axiomas para
buscar información que, a través de un proceso evocativo, y contando
con las fuentes de información oportunas, me permita confirmar mi
hipótesis de trabajo.
En nuestro ejemplo, para confirmar D necesito utilizar el axioma (2),
pero en el antecedente de (2) figuran B y C. C está en ∆, pero B no, y lo
necesito para confirmar mi hipótesis inicial de trabajo D. B se convierte
en una nueva hipótesis de trabajo. Para confirmar B utilizo el axioma
(1) que necesita el dato A para poder ser aplicado. Pero A está en ∆, por
lo que (1) es aplicable y B es cierto. Una vez sabemos que B es cierto ya
sabemos que todos los elementos del antecedente de (2) son ciertos, por
lo que demostramos que D es cierto. D deja de ser una hipótesis de
trabajo para convertirse en un hecho demostrado.
Nótese que el conjunto de axiomas y el conjunto de datos ∆ son
iguales en ambos casos, pero el resultado final no es el mismo. Así, si
es la “información” final que obtengo después de razonar con mis datos
y con mis axiomas, entonces los resultados son:
Progresivo = {A, C, E, F, B, D, H}
Regresivo = {A, C, E, F, B, D}
La diferencia no está en la información utilizada, sino en la forma de
utilizar esta información. Algo parecido aunque sólo sea de lejos
ocurre en física cuando, por ejemplo, estudiamos electromagnetismo.
Uno puede empezar con Coulomb y llegar a las ecuaciones de Maxwell,
© Vicente Moret Bonillo Página 16
o postular las ecuaciones de Maxwell y llegar a demostrar la ley de
Coulomb. En este caso también razonamos de forma distinta.
Pero ¿qué tiene que ver esto con el bit? Pues seguramente nada. Lo
único que he querido resaltar es que la información y los conocimientos
pueden utilizarse de forma diferente y producir resultados distintos
según nos convenga (y si no se lo creen pregúntenselo a los políticos)…
¡Además es divertido!
Cerremos ahora el paréntesis y volvamos con nuestro amigo el bit. Y
supongamos que no tenemos ni idea de lo que es un bit; es decir, que
no lo hemos definido. ¿Seremos capaces de justificar de forma razonada
su existencia o, incluso, de “demostrarla”?
Iremos un poquito más allá. Supongamos que tenemos un problema del
cual inicialmente no sabemos casi nada. Concretaremos un poco ese
“casi”: sabemos que tenemos un problema, que el problema tiene
solución, y que la solución tiene que ser una de las ni N soluciones
posibles en un universo cualquiera. Como aún no sabemos cuál es la
solución de nuestro problema, todas las ni N son igualmente
probables (cualquier solución posible puede ser la solución.) Poco a
poco iremos recabando información que será utilizada para descartar
algunas de las opciones iniciales de N. A medida que utilicemos esta
información, más cerca estaremos de la solución. Finalmente, con un
poco de suerte, podremos identificarla perfectamente. La figura 1.1
pretende ilustrar este proceso de razonamiento.
© Vicente Moret Bonillo Página 17
Figura 1.1. En un sistema cualquiera, ante un problema cualquiera, a medida que incorporamos información el espacio de soluciones posibles se va haciendo más
pequeño. En una situación ideal la información suministrada debería ser suficiente para identificar correctamente, y sin ninguna ambigüedad la solución de nuestro problema, si
tal solución existe.
Con lo dicho anteriormente ya estamos en condiciones de formalizar la
cuestión en términos matemáticos: Sean N posibilidades equiprobables
a priori, que puedo expresar con n símbolos (uno por cada una de tales
posibilidades, soluciones candidatas u opciones.) Evidentemente
debemos utilizar información para reducir la dimensionalidad de N.
Supondremos que toda la información es relevante; por lo tanto, cuanta
más información utilicemos más opciones inicialmente posibles
descartaremos, y menor será N. Definiremos la cantidad de información
al más puro estilo Shannon:
= k ln (N)
En esta expresión, k es una constante cuyo valor está determinado por
la unidad de información empleada. Ésta es una asunción casi tan
fuerte como la definición por decreto de nuestro amigo el bit, pero ya
hemos dicho que no íbamos a inventar nada nuevo, tan sólo queremos
razonar de forma distinta.
En la definición de la cantidad de información el empleo del logaritmo
se justifica fácilmente considerando la existencia de dos sistemas
© Vicente Moret Bonillo Página 18
independientes (o espacios de soluciones distintos) con N1 y N2 sucesos
equiprobables respectivamente. Considerando al sistema globalmente,
el espacio de soluciones completo será:
N = N1 N2
La situación es análoga a la que ocurre cuando tenemos 2 universos
distintos e independientes U1 y U2 , cada uno de ellos con un conjunto
definido de elementos, por ejemplo:
U1 = {a, b, c, d} : U2 = {x, y, z, t, v}
Aunque no hace falta, supondremos que cada elemento de U1 y U2 tiene
una probabilidad dada de ocurrir:
1. p(a) p(b) p(c) p(d) para los elementos de U1
2. p(x) p(y) p(z) p(t) p(v) para los elementos de U2
De este modo, la probabilidad conjunta de, por ejemplo, a y z, será:
p(a z) = p(a) p(z)
Pero sigamos con la justificación del logaritmo. Tenemos que hacer
compatible el hecho de que {N = N1 N2} con el hecho de que la
información es una propiedad aditiva (i.e., la cantidad de información se
incrementa a medida que aparecen nuevos elementos de información).
Así, puesto que = k ln(N), si desarrollamos la expresión resulta que:
= k ln (N) = k ln (N1 N2) = k ln (N1) + k ln (N2) = 1 + 2
… y ya está. Gracias al logaritmo hemos logrado construir algo
coherente y bien estructurado. Dicho de otro modo, de paso nos
© Vicente Moret Bonillo Página 19
acabamos de cargar el decretazo de Shannon según el cual se define el
concepto de cantidad de información.
Sigamos ahora con nuestras reflexiones. Decíamos hace ya algunas
líneas que: “Sean N posibilidades equiprobables a priori, que puedo
expresar con “n” símbolos (uno por cada una de tales posibilidades,
soluciones candidatas u opciones)…” Pero, si yo tengo “n” símbolos
¿Cuántos estados equiprobables puedo representar? La respuesta es
evidente: N = 2n. Así, si n = 3 (pongamos por caso: A, B, C) los N estados
en principio equiprobables que yo puedo representar (ver Tabla 1.1) son
los siguientes:
| A | B | C
1 0 0 0
2 0 0 1
3 0 1 0
4 0 1 1
5 1 0 0
6 1 0 1
7 1 1 0
8 1 1 1
Tabla 1.1. Los 8 estados equiprobables que se pueden obtener con 3 símbolos. |0
indica ausencia, y |1 indica presencia.
De este modo, si utilizamos la equivalencia N = 2n en la expresión
definida para la cantidad de información obtenemos que:
= k ln (N) = k ln (2n) = kn ln (2) = n [k ln (2)]
© Vicente Moret Bonillo Página 20
Si yo quiero ahora simplificar la expresión y hacer que = n
(recordemos que habíamos definido “k” como una constante cuyo valor
está determinado por la unidad de información empleada), entonces:
k ln (2) = 1 → k = 1/ln(2)
Volviendo a la conocida expresión = k ln (N), y sustituyendo valores:
= k ln (N) = ln(N)/ln(2) = log2(N) = n
… et voilà: ¡Acaba de nacer el bit!
El que no se crea que ln(N)/ln(2) = log2(N) puede hacer lo siguiente:
ln(N)/ln(2) = x → ln(N) = x ln(2) → N = 2x → log2(N) = x log2(2) = x
Interesante… ¿verdad?
© Vicente Moret Bonillo Página 21
1.2. Cambios de base
Todo esto está muy bien, pero… ¿Qué podemos hacer con un bit3?
¿Hay algo interesante en los bits para que los usemos? Por supuesto,
ambas cuestiones son académicas: ya sabemos que los bits funcionan
en las computadoras, y éstas hacen bastantes cosas. De hecho
podemos hacer con los bits en un sistema binario lo mismo que
haríamos con cualquier guarismo apropiado de cualquier otra base
distinta.
Las razones por las que utilizamos bits son fundamentalmente
prácticas y, entre otras cosas, nos permiten computar4 más
rápidamente. Además, podemos pasarnos de una base de cálculo a otra
muy fácilmente. Veamos algunos ejemplos.
Para convertir un número decimal en binario primero dividimos el
número del sistema decimal entre 2. Luego, el resultado entero se
vuelve a dividir entre 2, y así sucesivamente. Ordenamos ahora los
restos, del último al primero, y ya tenemos el número binario que
buscamos.
Así, si queremos representar el número 131 en binario, el
procedimiento es el siguiente:
3 La verdad es que con un solo bit podemos hacer poco. 4 Preferimos el término computar por considerarlo más general que calcular.
© Vicente Moret Bonillo Página 22
(1) 131 2 = 65 Resto = 1
(2) 65 2 = 32 Resto = 1
(3) 32 2 = 16 Resto = 0
(4) 16 2 = 8 Resto = 0
(5) 8 2 = 4 Resto = 0
(6) 4 2 = 2 Resto = 0
(7) 2 2 = 1 Resto = 0
(8) 1 2 = 0 Resto = 1
Ahora, ordenando los restos del último al primero, obtenemos que:
(131)10 = (10000011)2
Este número en base 2 no es otra cosa que la palabra de 8-bits
1 0 0 0 0 0 1 1
Otra forma de conversión consiste en distribuir los unos necesarios
entre las potencias sucesivas de 2 de modo que su suma resulte ser el
número decimal a convertir. Por ejemplo, para transformar en binario el
número 151 comenzamos poniendo un 1 en 128, por lo que aún
faltarán 23 (151 - 128 = 23) para llegar al 151. Este valor se conseguirá
distribuyendo unos entre las potencias cuya suma de el resultado
buscado y poniendo ceros en el resto. En el ejemplo son las potencias 4,
2, 1 y 0, esto es, 16, 4, 2 y 1, respectivamente.
© Vicente Moret Bonillo Página 23
Si el número decimal que queremos transformar en binario no es
entero, podemos hacer lo siguiente:
1. Empezamos por el lado izquierdo multiplicando cada número por
2 de forma que si la parte entera es mayor que 0 en binario será
1, y en caso contrario será 0
2. En caso de ser 1, en la siguiente división se utilizan sólo los
decimales.
3. Después de realizar cada multiplicación, se colocan los números
obtenidos en el mismo orden en que los hemos obtenido.
Tendremos que tener en cuenta que algunos números pueden
transformarse en dígitos periódicos,… nada grave.
Por ejemplo: (0,3125)10 = (0,0101)2 ya que…
(1) 0.3125 2 = 0.625 0
(2) 0.6250 2 = 1.250 1
(3) 0.2500 2 = 0.500 0
(4) 0.5000 2 = 1.000 1
Si lo que queremos es realizar la conversión de binario a decimal,
podemos hacer lo siguiente:
1. Empezar por el lado derecho del número en binario, multiplicar
cada número por 2, y elevarlo a la potencia consecutiva –según la
posición relativa del dígito correspondiente comenzando por la
potencia 0
2. Después de realizar cada una de las multiplicaciones hay que
sumar todos los resultados parciales, y el número obtenido es el
número en base 10 que queríamos conseguir.
© Vicente Moret Bonillo Página 24
De acuerdo con este procedimiento:
(110101)2 = 1 20 + 0 21 + 1 22 + 0 23 + 1 24 + 1 25=
=1+0+4+0+16+32
Por lo tanto…
(110101)2 = (53)10
Si el número binario que queremos convertir a decimal no es entero el
procedimiento es el mismo; sólo hay que tener en cuenta que la
posición 0 es la que está a la izquierda del punto, de forma que los
dígitos a la derecha se elevan a potencias negativas. Por ejemplo:
(110.101)2 = 1 22 + 1 21 + 0 20 + 1 2-1 + 0 2-2 + 1 2-3 =
=(6.625)10
Visto lo anterior, mencionaremos que podemos trabajar con cualquier
base de numeración, aunque por cuestiones prácticas e históricas la
computación prefiere trabajar con sistemas en base 2, en base 8, o en
base 16. Como nosotros estamos acostumbrados a pensar en base 10,
parece conveniente moverse con soltura por estos terrenos. La tabla 1.2
muestra un pequeño resumen que nos permitirá cambiar fácilmente de
base de numeración.
© Vicente Moret Bonillo Página 25
Decimal Binario Octal Hexadecimal
0 0 0 0
1 1 1 1
2 10 2 2
3 11 3 3
4 100 4 4
5 101 5 5
6 110 6 6
7 111 7 7
8 1000 10 8
9 1001 11 9
10 1010 12 A
11 1011 13 B
12 1100 14 C
13 1101 15 D
14 1110 16 E
15 1111 17 F
16 10000 20 10
Tabla 1.2. Equivalencias entre números decimales, binarios, octales, y hexadecimales.
© Vicente Moret Bonillo Página 26
1.3. Aritmética binaria
Una computadora es capaz de realizar operaciones aritméticas con
datos numéricos expresados en el sistema binario. Naturalmente, esas
operaciones incluyen la suma, la resta, el producto y la división. Las
operaciones se hacen del mismo modo que en el sistema decimal pero,
debido a la sencillez del sistema de numeración, pueden efectuarse
algunas simplificaciones que facilitan mucho la realización de las
operaciones.
Suma de números binarios
Las posibles combinaciones al sumar dos bits son:
0 + 0 = 0
0 + 1 = 1
1 + 0 = 1
1 + 1 = 0 1 bit que me llevo5 = 10
Se puede convertir la operación binaria en una operación decimal,
resolver la parte decimal, y después transformar el resultado en un
número binario. Operamos como en el sistema decimal y comenzamos a
sumar desde la derecha, en nuestro ejemplo, 1 + 1 = 10, entonces
escribimos 0 en la fila del resultado y llevamos 1. A continuación se
suma el acarreo a la siguiente columna: 1 + 0 + 0 = 1, y seguimos hasta
terminar todas la columnas, exactamente como hacemos cuando
operamos en base 10.
5 Los bits que me llevo se suelen denominar –acarreo, en inglés –carry
© Vicente Moret Bonillo Página 27
Resta de números binarios
El procedimiento para restar en el sistema binario es el mismo que en el
sistema decimal, pero más sencilla.
Las restas básicas 0 0, 1 0 y 1 1 son evidentes, pero no lo es tanto
la resta 0 1:
0 0 = 0
1 0 = 1
1 1 = 0
0 1 = 1
La resta 0 1 se resuelve, igual que en el sistema decimal, tomando
una unidad prestada de la posición siguiente: 0 1 = 1 y me llevo 1.
Para simplificar las restas y reducir la posibilidad de cometer errores
hay varios métodos. Uno de ellos consiste en dividir los números largos
en grupos. En el siguiente ejemplo vemos cómo se divide una resta
larga en tres restas cortas (ver Tabla 1.3).
Restamos A – B
A 1 0 0 1 1 0 0 1 1 1 0 1 1 0 0 1 1 0 0 1 1 1 0 1
B 0 1 0 1 0 1 1 1 0 0 1 0 0 1 0 1 0 1 1 1 0 0 1 0
= 0 1 0 0 0 0 1 0 1 0 1 1 0 1 0 0 0 0 1 0 1 0 1 1
Tabla 1.3. Un procedimiento para realizar una resta binaria.
© Vicente Moret Bonillo Página 28
Una alternativa al método anterior es utilizar el complemento a dos6, ya
que la resta de dos números binarios puede obtenerse sumando al
minuendo el «complemento a dos» del sustraendo. Por ejemplo, si
queremos restar el decimal 46 del decimal 91, cuyo resultado es el
decimal 45, y lo queremos hacer en base 2, el procedimiento sería:
(91)10 = (1011011)2
(46)10 = (0101110)2
C2 (0101110)=1010010
1011011+ 1010010 =10101101
En el resultado nos sobra un bit, que se nos va por la izquierda, pero
como el número resultante no puede ser más largo que el minuendo, el
bit sobrante no se considera y el resultado final será:
1011011 – 0101110 = 0101101
… que es el número decimal 45.
Producto de números binarios
El producto de números binarios es análogo al producto de números
decimales, pero más sencillo ya que 0 multiplicado por cualquier
número es 0, y el 1 es el elemento neutro del producto. La figura 1.2
ilustra con un ejemplo el producto de números binarios7.
6 El complemento a dos de un número N que en binario está compuesto por n dígitos se define como:
C2N=2n N. En el cálculo del complemento a dos los números positivos se quedarán igual en su
representación binaria. Con números negativos deberemos invertir el valor de cada una de sus cifras y
sumarle 1 al número obtenido
7Existen otros métodos para multiplicar números grandes, como el método de Booth, que no veremos
aquí
© Vicente Moret Bonillo Página 29
1 0 1 1 0
1 0 0 1
-----------------------------------------------
1 0 1 1 0
0 0 0 0 0
0 0 0 0 0
1 0 1 1 0
--------------------------------------------------------------------------
1 1 0 0 0 1 1 0
Figura 1.2. Un ejemplo del producto de dos números binarios.
División de números binarios
La división con números binarios también es análoga a la división con
números decimales, la única diferencia es que las restas, como es obvio,
deben ser realizadas en binario. El ejemplo que sigue pretende
contribuir a aclarar el proceso (ver figura 1.3).
1 0 0 1 0 1 1 0 = 1 1
0 1 1 0
0 0 1 1 0
1 1 0
0 0 0
Figura 1.3. Un ejemplo de división binaria.
© Vicente Moret Bonillo Página 30
1.4. Lógica Binaria
Hasta ahora hemos hablado de bits, hemos comentado cómo se puede
cambiar de base de numeración para poder operar con bits, y hemos
introducido las reglas de la aritmética binaria para poder realizar
operaciones elementales con bits. Ahora toca dar un pequeño pasito
hacia delante, y discutir sobre algo sin lo cual las computadoras
actuales no podrían funcionar: la lógica binaria.
Este tipo de lógica fue desarrollada a principios del siglo XIX por el
matemático George Boole con el propósito de investigar las leyes
fundamentales en que se basa el razonamiento humano. En ella, las
variables implicadas sólo pueden adoptar dos valores, tradicionalmente
denominados cierto o falso, normalmente representados como 1 ó 0
respectivamente8. En cada momento, una misma variable sólo puede
estar en uno de estos estados por lo que se dice que sus valores son
mutuamente excluyentes. Por esta razón se suele argumentar que la
lógica binaria no maneja realmente cantidades, sino estados lógicos.
Dicho de otro modo: las cifras 0 y 1 no representan cantidades
numéricas son símbolos de dos estados mutuamente excluyentes.
En los sistemas de variables lógicas binarias se utiliza el sistema de
numeración en base 2. El motivo es casi trivial, ya que mediante un
sistema binario de numeración es inmediato el establecimiento de una
relación biunívoca entre valores numéricos y estados lógicos. No hay
que olvidar, no obstante, que el sistema de numeración de base dos, o
de cualquier otra base, y la lógica binaria son conceptos totalmente
distintos9.
8 Más adelante, en este mismo texto, nosotros utilizaremos la notación | 0 , | 1 9 También son conceptos distintos los dígitos 0-1 del sistema binario y los valores cierto-falso de las
variables lógicas binarias.
© Vicente Moret Bonillo Página 31
Con los valores lógicos podemos realizar operaciones lógicas. Una
operación lógica asigna un valor cierto o falso a la combinación de
condiciones cierto o falso de uno o más factores. Los factores que
intervienen en una operación lógica sólo pueden ser ciertos o falsos. Y el
resultado de una operación lógica puede ser, tan sólo, cierto o falso.
Los resultados de una operación lógica, para cada uno de los valores
posibles de las variables, se fijan en una tabla denominada tabla de
verdad. Para que una computadora pueda ejecutar las operaciones
lógicas es preciso asignar un valor binario a cada una de las
condiciones posibles, y –como ya hemos dicho se suele asignar un 1 al
valor cierto y un 0 al valor falso. Algunas operaciones lógicas
importantes –aunque hay más son las que se muestran en la tabla 1.4,
y que representamos con su simbología habitual.
Operación Operador Símbolos Comentarios
Tautología T T Es siempre cierta
Exclusión NAND Indica incompatibilidad
Implicación simple IMP Indica condición
Negación NOT Cambia el estado lógico
Implicación doble XNOR Indica equivalencia
Disyunción OR Una debe ser cierta
Disyunción exclusiva XOR Sólo una debe ser cierta
Conjunción AND Todas deben ser ciertas
Negación conjunta NOR Todas deben ser falsas
Contradicción F F Siempre es falsa
Tabla 1.4. Algunas operaciones lógicas
Consideremos ahora que R es el resultado de alguna operación lógica, y
que “x, y, z,…” son las variables implicadas en dicha operación. En este
contexto vamos a ahondar en los entresijos de alguna operación lógica
binaria… más que nada por hacer algo de gimnasia mental.
© Vicente Moret Bonillo Página 32
La igualdad binaria
El resultado R de aplicar la igualdad binaria sobre una variable x es
muy simple:
- Si x es cierto entonces R es cierto
- Si x es falso entonces R es falso
Si empleamos la particular notación que ya hemos introducido al
principio de este capítulo, la tabla de verdad que ilustra la igualdad
binaria es la que sigue (Tabla 1.5).
| x | R
1 1
0 0
Tabla 1.5. Valores de verdad de la igualdad binaria.
Para visualizar qué hace la igualdad binaria supongamos que
compramos un coche con detector automático de luminosidad, de forma
que cuando es de noche las luces del coche se encienden, y cuando es
de día se apagan. Así, la representación lógica de nuestro ejemplo es:
- | noche = 1 | luces = 1
- | noche = 0 | luces = 0
© Vicente Moret Bonillo Página 33
La negación binaria: operador NOT
La negación binaria se obtiene aplicando el operador de negación NOT
sobre la variable x que queremos negar. El resultado neto es un cambio
en el estado lógico de acuerdo con el esquema que se muestra a
continuación. La tabla 1.6 ilustra los valores de verdad.
- Si x es cierto entonces R es falso
- Si x es falso entonces R es cierto
| x | R
1 0
0 1
Tabla 1.6. Valores de verdad de la negación binaria.
El mismo ejemplo de antes nos sirve para ilustrar la negación binaria,
sólo necesitamos cambiar la variable noche por la variable día. De este
modo:
- | día = 1 | luces = 0
- | día = 0 | luces = 1
© Vicente Moret Bonillo Página 34
La disyunción binaria: operador OR
Equivale a la conjunción disyuntiva «o». El resultado R de la disyunción
binaria efectuada sobre dos variables x e y se ilustra a continuación:
- Si x es cierto «o» y es cierto «o» son ciertas ambas entonces R es cierto
Cuando se realiza una operación lógica sobre dos variables hay cuatro
combinaciones posibles, que en el caso de la disyunción binaria
responden a la tabla de verdad 1.7.
| x | y | R
0 0 0
0 1 1
1 0 1
1 1 1
Tabla 1.7. Valores de verdad de la disyunción binaria.
Para ilustrar con un ejemplo esta operación binaria supongamos que
vamos conduciendo nuestro flamante coche (sí, sí,… el de antes) y nos
para la guardia civil de tráfico para hacer un control rutinario. Nos
hacen soplar por un aparatejo que detecta drogas y alcohol. El
aparatejo tiene una alarma que pita si vamos colocados. En este caso,
la disyunción binaria funcionaría del siguiente modo:
- | drogas = 1 | alcohol = 1 | alarma = 1
- | drogas = 0 | alcohol = 1 | alarma = 1
- | drogas = 1 | alcohol = 0 | alarma = 1
- | drogas = 0 | alcohol = 0 | alarma = 0
© Vicente Moret Bonillo Página 35
La disyunción exclusiva binaria: operador XOR
El resultado R de realizar una disyunción exclusiva binaria sobre dos
variables x e y se corresponde con el siguiente esquema:
- Si x es cierto «o» y es cierto, pero no ambos simultáneamente,
entonces R es cierto
Los resultados de la disyunción exclusiva binaria en las cuatro
combinaciones posibles de valores dos variables se muestran en la tabla
de verdad 1.8.
| x | y | R
0 0 0
0 1 1
1 0 1
1 1 0
Tabla 1.8. Valores de verdad de la disyunción exclusiva binaria.
Seguimos conduciendo nuestro ya habitual coche. Es un viaje largo y
pensamos que escuchar un poco de música nos vendría bien. El coche
va equipado con radio y CD independientes, de forma que puedo elegir
entre la radio y el disco de Eric Clapton que llevo en la guantera. No
puedo conectar ambos equipos simultáneamente ya que sólo escucharía
un enjambre de grillos.
- | radio = 1 | disco = 1 | música = 0
- | radio = 0 | disco = 1 | música = 1
- | radio = 1 | disco = 0 | música = 1
- | radio = 0 | disco = 0 | música = 0
© Vicente Moret Bonillo Página 36
La negación conjunta binaria: operador NOR
Equivale a negación de la disyunción binaria. El resultado R de la
negación conjunta binaria de dos variables x e y es el siguiente:
- Si x es falso « y además » y es falso entonces R es cierto
Los resultados de la negación conjunta binaria en las cuatro
combinaciones posibles de valores dos variables se muestran en la tabla
de verdad 1.9.
| x | y | R
0 0 1
0 1 0
1 0 0
1 1 0
Tabla 1.9. Valores de verdad de la negación conjunta binaria.
Nuevamente utilizaremos el coche para ilustrar la situación. El viaje nos
está llevando por la meseta castellana en pleno mes de julio. Son las
tres de la tarde y brilla un sol de justicia en un cielo sin una nube…
¡Gran desgracia: ni el ventilador del coche, ni el aire acondicionado
funcionan!
- | ventilador = 1 | aire acondicionado = 1 | calor = 0
- | ventilador = 0 | aire acondicionado = 1 | calor = 0
- | ventilador = 1 | aire acondicionado = 0 | calor = 0
- | ventilador = 0 | aire acondicionado = 0 | calor = 1
© Vicente Moret Bonillo Página 37
Conjunción binaria: operador AND
La conjunción binaria es la conjunción copulativa « y ». El resultado R
de una conjunción binaria realizada sobre dos variables x e y es el
siguiente:
- Si x es cierto, y además, y es cierto, entonces R es cierto
Los resultados de la conjunción binaria en las cuatro combinaciones
posibles de valores dos variables se muestran en la tabla de verdad
1.10.
| x | y | R
0 0 0
0 1 0
1 0 0
1 1 1
Tabla 1.10. Valores de verdad de la conjunción binaria.
Volvamos a nuestro control de tráfico rutinario, del que ya hemos
hablado. A la vista del resultado marcado por el aparatejo después del
soplido, el agente Peláez, encargado del control, puede emitir uno
cualquiera de los siguientes informes sobre el test de sustancias:
- | No drogas = 1 | No alcohol = 1 | negativo = 1
- | No drogas = 0 | No alcohol = 1 | negativo = 0
- | No drogas = 1 | No alcohol = 0 | negativo = 0
- | No drogas = 0 | No alcohol = 0 | negativo = 0
© Vicente Moret Bonillo Página 38
La exclusión binaria: operador NAND
La exclusión binaria es la negación de la conjunción binaria. El
resultado R de realizar una exclusión binaria sobre dos variables x e y
es el siguiente:
- Si x es falso « o » y es falso « o » son falsas ambas entonces R es cierto
Los resultados de la exclusión binaria en las cuatro combinaciones
posibles de valores dos variables se muestran en la tabla de verdad
1.11.
| x | y | R
0 0 1
0 1 1
1 0 1
1 1 0
Tabla 1.11. Valores de verdad de la exclusión binaria.
Llevamos ya muchas horas de viaje y sigue haciendo mucho calor.
Puede que nos haga falta parar en una estación de servicio para llenar
el depósito de gasolina, o para añadir agua al radiador de nuestro
coche. Así las cosas…
- | gasolina = 0 | radiador = 0 | repostar = 1
- | gasolina = 0 | radiador = 1 | repostar = 1
- | gasolina = 1 | radiador = 0 | repostar = 1
- | gasolina = 1 | radiador = 1 | repostar = 0
© Vicente Moret Bonillo Página 39
La implicación binaria simple: operador IMP
La implicación binaria simple es una operación lógica, un tanto extraña
desde un punto de vista intuitivo, que se define según la expresión:
- IMP: x y x y R
De acuerdo con esta definición, los valores de verdad de la expresión:
x y son los que se muestran en la tabla 1.12.
| x | y | R
0 0 1
0 1 1
1 0 0
1 1 1
Tabla 1.12. Valores de verdad de la implicación binaria simple.
Para comprender la implicación binaria simple hay que considerar a la
expresión lógica como un todo, de forma que lo que es cierto o falso es
la propia expresión lógica, no sus elementos constituyentes. La
implicación trabaja sobre la eventualidad de una posible relación
causal. Dejemos por un momento aparcado el coche y miremos al cielo
analizando la relación causal entre la lluvia y la presencia de nubes, y
teniendo en cuenta que siempre que llueve hay nubes, pero que no
siempre que hay nubes llueve.
- | lluvia = 0 | nubes = 0 | lluvia nubes = 1
- | lluvia = 0 | nubes = 1 | lluvia nubes = 1
- | lluvia = 1 | nubes = 0 | lluvia nubes = 0
- | lluvia = 1 | nubes = 1 | lluvia nubes = 1
© Vicente Moret Bonillo Página 40
La doble implicación binaria: operador XNOR
La doble implicación binaria indica equivalencia, y también hay que
considerar a la expresión lógica como un todo, de forma que lo que es
cierto o falso es la propia expresión lógica, no sus elementos
constituyentes. El resultado R de una doble implicación binaria sobre
dos variables x e y es el siguiente:
- Si | x = | y entonces R es cierto
Se construye como la negación de una disyunción exclusiva; por lo
tanto, sus valores de verdad son los que figuran en la tabla 1.13.
| x | y | R
0 0 1
0 1 0
1 0 0
1 1 1
Tabla 1.13. Valores de verdad de la doble implicación binaria.
La doble implicación binaria encuentra en la corrección automática de
textos un campo de aplicación muy interesante. Así, si alguien escribe
una palabra en un procesador de textos, podemos diseñar un corrector
ortográfico que compare dicha palabra con todas las palabras
semejantes de su diccionario mediante una doble implicación binaria.
Si alguna letra no coincide, se detecta un error y se indica donde está,
ya que el resultado de la doble implicación binaria no devuelve | 1 en
todos los bits. La tabla 1.14 muestra un ejemplo de detección de un
error en una palabra de cuatro caracteres, en donde el fallo está en la
tercera letra.
© Vicente Moret Bonillo Página 41
Palabra de 4 letras Código binario asociado con cada carácter escrito
como una palabra de 8-bits
Con Error 01101100 | 01101111 | 01110110 | 01101111
Sin Error 01101100 | 01101111 | 01100010 | 01101111
11111111 | 11111111 | 11101011 | 11111111
Tabla 1.14. Detectando errores de escritura por medio de la doble implicación binaria.
Es evidente que con dos variables binarias cualesquiera, x e y, podemos
construir 24 situaciones posibles que pueden considerarse como
resultados de operaciones lógicas. Estas 16 posibilidades aparecen
representadas en la tabla 1.15.
Todas las operaciones lógicas binarias que pueden ser definidas sobre dos variables
cualesquiera x e y
x y 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0
1 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0
0 1 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0
0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0
Tabla 1.15. Resumen, con trampa, de las tablas de verdad de las operaciones lógicas.
¿Seríais capaces de sustituir los números en negrita, que son las
salidas R, por las operaciones lógicas asociadas.?
© Vicente Moret Bonillo Página 42
1.5. Puertas Lógicas
Cuando contemplamos todo esto desde una perspectiva computacional,
tenemos que introducir el concepto de puerta lógica, como medio de
implementación de las operaciones lógicas mencionadas.
Las puertas lógicas son las unidades básicas sobre la que se diseñan
las computadoras actuales10. Pueden poseer una línea de entrada o más
y una sola salida11, y son capaces de realizar funciones dando un nivel
de tensión en la línea de salida que está asociado a los estados |1 o
|0.
Las puertas lógicas básicas12 son: AND, OR, NAND, NOR, NOT, XOR, y
XNOR. Aparte de lo ya dicho sobre las operaciones lógicas que
implementan, estas puertas tienen una simbología asociada, que
ilustramos en la tabla 1.16.
Con estas puertas lógicas podemos hacer muchas cosas pero, como
veremos más adelante, nos van a interesar especialmente los llamados
conjuntos completos de puertas lógicas.
10 Y, más generalmente, cualquier sistema digital. 11 Veremos más adelante que esta afirmación es necesariamente falsa en computación reversible. 12 Pronto comprenderemos por qué.
© Vicente Moret Bonillo Página 43
SÍMBOLO AND FUNCIÓN
R = A B
SÍMBOLO NAND FUNCIÓN
R = ¬ [A B]
SIMBOLO OR FUNCION
R = A B
SIMBOLO NOR FUNCION
R = ¬ [A B]
SÍMBOLO NOT FUNCIÓN
R = ¬ A
SIMBOLO XOR FUNCION
R = A B
SIMBOLO XNOR FUNCION
A B
Tabla 1.16. Puertas lógicas con su simbología asociada y la función que implementan.
Un conjunto completo de puertas lógicas se define como aquel conjunto
de operadores lógicos que nos permite implementar cualquier función
lógica. Así, un conjunto formado por puertas {AND, OR, NOT} es
completo. Y también lo son los conjuntos formados por puertas: {AND,
NOT}, {OR, NOT}, {NAND} y {NOR}. Además, un conjunto de puertas
lógicas es completo si puede implementar todas las puertas de otro
conjunto completo conocido.
© Vicente Moret Bonillo Página 44
1.6. Computando con bolas de billar
En todas las áreas del pensamiento hay gente lista y creativa que
convierte el aprendizaje de lo abstracto que es normalmente tedioso
en algo divertido y fascinante. Me viene a la cabeza el nombre de Arthur
Compton13, físico estadounidense que, jugando al billar con electrones
(… sí, sí, ¡al billar con electrones!), descubrió las leyes que rigen el
cambio de longitud de onda de la radiación electromagnética de alta
energía al ser difundida por los electrones lo que se conoce como
Efecto Compton, y que le valió el premio Nobel de física14 de 1927. Algo
parecido hicieron Fredkin y Toffoly15 cuando propusieron cambiar los
bits de una computadora por bolas de billar, y jugar una partida. Lo
que realmente pretenden es el uso de bolas de billar para computar,
simulando el movimiento de los bits a través de puertas lógicas. Para
ello imponen las siguientes restricciones:
1. El lanzamiento de las bolas es la entrada
2. La distribución resultante es la salida
3. Las bolas se mueven diagonalmente a través de una malla plana
4. Las bolas obedecen las leyes ideales de la mecánica clásica
5. No hay fricción ni rozamiento
6. Los choques son perfectamente elásticos
Con esta configuración la computación básica en la colisión de dos
bolas es la que se muestra en la figura 1.4.
13 La vida y milagros de Arthur Compton es digna de figurar en los anales de lo genialmente divertido. 14 Compartido con Charles Thomson Rees Wilson, quien recibió este galardón (el premio Nobel) por la
invención de la «cámara de niebla». 15 Como describe admirablemente el todavía más genial Richard Feynman en su libro «Feynman
Lectures on Computation».
© Vicente Moret Bonillo Página 45
Figura 1.4. Colisiones con dos bolas de billar. Las salidas dependen de las entradas.
Según el esquema de la figura anterior, en la tabla 1.17 resumimos
todas las situaciones posibles.
| A = 0 No hay bola en la posición
| A = 1 Hay bola en A y la lanzamos
| B = 0 No hay bola en la posición B
| B = 1 Hay bola en B y la lanzamos
| W = 1 La bola sale por W
| W = 0 La bola no sale por W
| X = 1 La bola sale por X
| X = 0 La bola no sale por X
| Y = 1 La bola sale por Y
| Y = 0 La bola no sale por Y
| Z = 1 La bola sale por Z
| Z = 0 La bola no sale por Z
Tabla 1.17. Todas las posibles situaciones que pueden darse en una colisión de dos
bolas de billar.
Por lo tanto hay 3 casos distintos, y cuatro salidas posibles: 2 salidas si
falta una bola, y 2 salidas si hay choques. De este modo:
© Vicente Moret Bonillo Página 46
1. Si no hay bola en A y lanzamos una bola en B, la bola B sale por X
| X = 1 | A = 0 « y » | B = 1
2. Si no hay bola en B y lanzamos una bola en A, la bola A sale por Y
| Y = 1 | A = 1 « y » | B = 0
3. Si lanzamos ambas bolas, la bola A sale por W y la B sale por Z
| W = 1 | A = 1 « y » | B = 1
| Z = 1 | A = 1 « y » | B = 1
Lo anterior se puede expresar en términos lógicos mediante lo
operadores adecuados:
X = [B (¬ A)]
Y = [A (¬ B)]
W = [A B]
Z = [A B]
La figura 1.5 ilustra la estructura lógica de la computación básica en la
colisión de dos bolas de billar.
© Vicente Moret Bonillo Página 47
Figura 1.5. Las salidas en la colisión de dos bolas de billar expresadas en términos
lógicos.
Pero… un momento, por favor ¿no habíamos dicho que –y lo resalto
«…un conjunto formado por puertas {AND, OR, NOT} es completo»... Y
que también lo eran los conjuntos formados por puertas: {AND, NOT},
{OR, NOT}, {NAND} y {NOR}? ¿Podemos entonces decir que nuestro
sistema de bolas de billar funciona en realidad como un conjunto
completo de operadores binarios?...
Seguiremos tratando sobre estas cuestiones, y computando con bolas
de billar, algo más adelante en este mismo texto, pero antes tendremos
que introducir conceptos nuevos, como la computación reversible, que
es de lo que va el capítulo siguiente.
© Vicente Moret Bonillo Página 50
2. COMPUTACIÓN DE IDA Y VUELTA
Con lo visto en el capítulo anterior ya estamos en condiciones de
realizar algunas computaciones, sencillas pero interesantes, como
sumas, transferencias, o incluso sistemas de control de decisiones. Para
ello basta con utilizar hábilmente las puertas lógicas estudiadas, y
construir la arquitectura adecuada para resolver el problema planteado.
No debemos olvidar que estamos tratando con sistemas de cómputo
binario que utilizan dígitos que sólo pueden valer « 0 » ó « 1 », lo que
equivale a decir que el estado de cada bit sólo puede ser |0 ó |1.
Desarrollaremos algo estas ideas, y pondremos algunos ejemplos.
© Vicente Moret Bonillo Página 51
2.1. La semisuma binaria
Supongamos que queremos sumar dos números binarios… digamos el
número binario |001101| con el |010110|. Evidentemente el resultado
es |100011|. Podemos visualizar esto considerando cintas que
transportan cajas, con bolas o sin bolas, de acuerdo con las siguientes
restricciones (ver Figura 2.1):
1. El número de cajas de la cinta de ambos sumandos debe ser el
mismo.
2. El número de cajas de la cinta de ambos sumandos debe ser, por
lo menos, igual al número de bits de la mayor palabra16 que
queremos sumar.
3. Colocaremos el resultado de la suma en las cajas de una tercera
cinta.
4. En esta tercera cinta debe haber, al menos, una caja más que las
que hay en cualquiera de las cintas que transportan a nuestros
sumandos.
5. En cualquier cinta, cada caja sólo puede contener una bola -|1-
o ninguna -|0-
6. La suma se efectúa vaciando, en cada posición y empezando por
la derecha, el contenido de los sumandos, en la caja
correspondiente de la cinta del resultado.
7. Si, por cualquier razón, la mercancía no cabe en la caja
correspondiente de la cinta del resultado, se transfiere la
mercancía a la caja que está inmediatamente a su izquierda17
hasta que quepa.
8. El proceso se repite hasta que ya no haya nada más que sumar.
16 O número binario. 17 Esta es la que me llevo.
© Vicente Moret Bonillo Página 52
Figura 2.1. Cintas que transportan cajas con bits, y que utilizamos para ilustrar la suma
binaria.
Con esto podemos establecer las reglas básicas de la suma binaria de
dos bis, A y B, que detallamos en la tabla 2.1.
| A Operación | B = S18 Me llevo19
0 + 0 = 0 0
0 + 1 = 1 0
1 + 0 = 1 0
1 + 1 = 0 1
Tabla 2.1. Reglas básicas de la suma binaria de dos bits.
Y ahora ya podemos escribir la tabla de verdad20 para la suma binaria
de dos bis, A y B, que resulta ser la que se muestra a continuación21
(Tabla 2.2)
| A | B | S | K
0 0 0 0
0 1 1 0
1 0 1 0
1 1 0 1
Tabla 2.2. Tabla de verdad de la suma binaria de dos bits.
18 S indica «suma» 19 La que me llevo es el «acarreo» o «carry» en inglés. En este texto, en lo que sigue, emplearemos la
letra mayúscula «K» 20 Booleana, por supuesto. 21 Esencialmente lo mismo que lo de la tabla 2.1, pero queremos trabajar un poco las cuestiones formales.
© Vicente Moret Bonillo Página 53
Con lo visto vamos a construir un aparato que sea capaz de sumar dos
bits. Tal engendro se llama, por razones obvias, semisumador, y se
muestra en la figura 2.2. La generalización del semisumador es el
sumador completo, que será analizado un poco más adelante.
Si recordamos lo que ya hemos comentado sobre operaciones lógicas,
resulta que…
(A B) = 1 | A = | B = 1
Podemos comprobar que el bit de acarreo del semisumador y la
conjunción binaria son una misma cosa. De este modo, el bit de acarreo
«K» del semisumador se puede obtener directamente introduciendo las
señales A y B como entradas de una puerta lógica AND.
Figura 2.2. Arquitectura elemental del semisumador.
Completamos el razonamiento… ¿Cómo podemos obtener el bit suma
del sumador «S» utilizando otra operación lógica? Volviendo a las
operaciones lógicas, recordamos que…
(A B) = 1 si | A = 1 | B = 0
(A B) = 1 si | A = 0 | B = 1
(A B) = 0 si | A = 1 | B = 1
(A B) = 0 si | A = 0 | B = 0
Por lo tanto, la disyunción exclusiva (A B) nos suministra el bit suma
del semisumador.
© Vicente Moret Bonillo Página 54
2.2. Introduciendo las operaciones reversibles
La conjunción, la disyunción, y la disyunción exclusiva binarias pueden
englobarse en lo que habitualmente se denominan funciones de
conmutación. Las funciones de conmutación aceptan como entrada
algunas variables binarias y calculan alguna función binaria. Además,
como ya hemos visto, el conjunto de operadores binarios {AND, OR,
NOT} es un conjunto completo, por medio de cuyos elementos puede, en
principio, construirse cualquier función lógica. También hemos visto
que existen operadores que por sí solos forman un conjunto completo,
por ejemplo {NAND} y {NOR}.
Estamos ya casi a punto de poder discutir sobre reversibilidad, pero
antes vamos a definir dos operaciones lógicas nuevas, la bifurcación y el
intercambio, de las que haremos uso cuando hablemos, por fin, de
computación reversible.
La operación de bifurcación «FO»22 divide una entrada en dos o más
(Figura 2.3)
Figura 2.3. La operación de bifurcación o «Fanout».
22 «FO» procede del inglés «FANOUT»
© Vicente Moret Bonillo Página 55
Por otra parte, la operación de intercambio «EX»23 simplemente
intercambia el par de conexiones de la entrada (Figura 2.4).
Figura 2.4. La operación de intercambio o «Exchange».
Estas dos operaciones obvias van a ser necesarias para discutir sobre la
reversibilidad, y además supondremos que tenemos a nuestra
disposición un número suficiente de bits |0 y de bits |1 durante todo
el tiempo que deseemos.
Fijémonos ahora en las operaciones AND, NAND, OR, XOR. Estas
operaciones son irreversibles, en el sentido de que a partir de la salida
no se puede reconstruir la entrada. Con operaciones irreversibles
perdemos información de forma irreversible.
Definiremos operación reversible como aquella operación lógica que
tiene la suficiente información en la salida como para poder reconstruir
la entrada. Como aspecto curioso mencionaremos aquí, y
desarrollaremos luego, que la reversibilidad es imprescindible para
estudiar cuestiones relacionadas con la termodinámica de la
computación, ya que nos permite realizar cálculos de energía libre, y
conocer la eficiencia física de la computación. Al respecto, fueron
Bennet y Fredkin los primeros que, independientemente, estudiaron la
23 «EX» procede del inglés «EXCHANGE»
© Vicente Moret Bonillo Página 56
posibilidad de construir computadoras reversibles, para lo cual24 se
requieren puertas lógicas reversibles.
La primera operación lógica reversible con que nos encontramos es la
negación binaria, que se realiza mediante el operador lógico NOT, que
podremos denotar a partir de ahora también con la letra N, y que
representaremos por medio de los símbolos ( o ■) intentando recordar
en todo momento el carácter reversible de la operación.
La negación binaria es claramente reversible. Para comprobarlo basta
con recordar que:
1. |1 = ¬ |0
2. |0 = ¬ |1
Parecida a la puerta N25 vamos a construir ahora la puerta CN o
disyunción binaria controlada. Esta nueva puerta «CN» es el dispositivo
de dos entradas y dos salidas representado esquemáticamente en la
figura 2.5.
Figura 2.5. La puerta Not Controlada o puerta «CN»
24 Como es lógico. 25 Insistimos N NOT
© Vicente Moret Bonillo Página 57
En la puerta CN el símbolo () es un NOT controlado por la entrada a
la línea (). El funcionamiento de la puerta es el siguiente:
1. |A’ = |A
2. |B’ = |B |A = 0
3. |B’ = ¬ |B |A = 1
Si la entrada a la línea () es |1 el valor de la entrada a la línea () se
invierte, pero si la entrada a la línea () es |0 la entrada a la línea ()
pasa sin modificarse. La entrada en la línea () activa una puerta N en
la línea inferior (), y la salida () es siempre la misma que la entrada
(). Por lo tanto, la tabla de verdad de la puerta CN será la que se
muestra a continuación (Tabla 2.3).
| A | B | A’ | B’
0 0 0 0
0 1 0 1
1 0 1 1
1 1 1 0
Tabla 2.3. Tabla de verdad de la puerta «CN».
Claramente se puede interpretar B’ como la salida de una puerta XOR
con entradas A y B: B’ = XOR (A, B), sin embargo el dispositivo no es el
mismo ya que la puerta CN genera dos salidas en lugar de una. Esta
puerta es perfectamente reversible ya que, una vez conocida la salida,
siempre podemos reproducir la entrada. Podemos comprobar la
reversibilidad de CN sin más que repetir la operación (Figura 2.6 y
Tabla 2.4)
© Vicente Moret Bonillo Página 58
Figura 2.6. La aplicación sucesiva de CN ilustra su reversibilidad.
| A | B | A’ | B’ | A’’ | B’’
0 0 0 0 0 0
0 1 0 1 0 1
1 0 1 1 1 0
1 1 1 0 1 1
Tabla 2.4. Representación tabular de la reversibilidad de CN.
¿Verdad que mola…? Sin embargo las puertas N y CN no bastan para
«hacerlo todo». Necesitamos complicar algo más nuestras puertas
reversibles para conseguir una que constituya, por sí sola, un conjunto
completo de operadores26.
26 Reversibles, naturalmente.
© Vicente Moret Bonillo Página 59
2.3. La disyunción binaria doblemente controlada
La puerta CCN27 (Figura 2.7) es el operador reversible de la disyunción
binaria doblemente controlada, y constituye además un conjunto
completo de operadores binarios reversibles.
Figura 2.7. La puerta NOT doblemente controlada o puerta «CCN».
El funcionamiento de la puerta CCN es el siguiente:
1. Hay 2 líneas de control, A y B / |A’ = |A , |B’ = |B
2. La línea C sólo es activada cuando ( |A = 1 ) ( |B = 1 )
3. En este último caso |C’ = ¬ |C
4. Si mantenemos |A = |B = 1 : CCN se comporta como N en su
línea C
5. Si sólo mantenemos |A = 1 : CCN se comporta como CN, con
entradas A y B
A continuación se muestra la tabla de verdad de la puerta CCN (Tabla
2.5)
27 Del inglés «Controlled Controlled Not»
© Vicente Moret Bonillo Página 60
| A | B | C | A’ | B’ | C’
0 0 0 0 0 0
0 0 1 0 0 1
0 1 0 0 1 0
1 0 0 1 0 0
0 1 1 0 1 1
1 0 1 1 0 1
1 1 0 1 1 1
1 1 1 1 1 0
Tabla 2.5. Tabla de verdad de la puerta CCN.
Como antes, comprobaremos la reversibilidad de CCN repitiendo la
operación. Esto se ilustra en la tabla 2.6.
| A | B | C | A’ | B’ | C’ | A’’ | B’’ | C’’
0 0 0 0 0 0 0 0 0
0 0 1 0 0 1 0 0 1
0 1 0 0 1 0 0 1 0
1 0 0 1 0 0 1 0 0
0 1 1 0 1 1 0 1 1
1 0 1 1 0 1 1 0 1
1 1 0 1 1 1 1 1 0
1 1 1 1 1 0 1 1 1
Tabla 2.6. Reversibilidad de CCN.
© Vicente Moret Bonillo Página 61
2.4. Construyendo puertas lógicas con CCN
Ya hemos dicho varias veces que la puerta CCN es por sí misma un
conjunto completo de operadores. En esta sección configuraremos esta
puerta para que funcione como otras puertas lógicas de las ya
estudiadas. Sólo configuraremos algunas. Las que falten las dejaremos
como ejercicio para el lector estudioso.
Construcción de AND a partir de CCN
El operador lógico AND se puede construir a partir de CCN fijando
|C = 0 y alimentando la puerta con A y B según ilustra la tabla 2.7.
| A | B | C | A’ | B’ | C’
0 0 0 0 0 0
0 1 0 0 1 0
1 0 0 1 0 0
1 1 0 1 1 1
Tabla 2.7. Construcción de AND a partir de CCN
Construcción de NAND a partir de CCN
El operador lógico NAND se puede construir a partir de la puerta CCN
fijando |C = 1 y alimentando la puerta con A y B según mostramos en
la tabla 2.8.
© Vicente Moret Bonillo Página 62
| A | B | C | A’ | B’ | C’
0 0 1 0 0 1
0 1 1 0 1 1
1 0 1 1 0 1
1 1 1 1 1 0
Tabla 2.8. Construcción de NAND a partir de CCN
Construcción de XOR a partir de CCN
El operador lógico XOR se puede construir a partir de CCN fijando
|A = 1 o |B = 1 y alimentando la puerta según ilustra la tabla 2.9.
| A | B | C | A’ | B’ | C’
1 0 0 1 0 0
1 1 0 1 1 1
1 0 1 1 0 1
1 1 1 1 1 0
Tabla 2.9. Construcción de XOR a partir de CCN
© Vicente Moret Bonillo Página 63
2.5. Sumando de forma reversible
Ya hemos trabajado con una arquitectura que era capaz de sumar
números de un bit: el famoso semisumador. Decíamos también que
íbamos a generalizar el concepto de semisumador y convertirlo en un
sumador completo. Pero aún haremos más, diseñaremos un sumador
completo reversible, con todo lo que ello significa… Conoceremos el
resultado de la operación, y los sumandos correspondientes.
Para empezar, la figura 2.8 muestra la arquitectura básica de un
sumador completo de números de 1 bit.
En el esquema de la figura 2.8, la entrada C es un bit K cuyo valor
viene de eventuales sumas anteriores, por esta razón hablamos de un
sumador completo. No obstante, esta operación, que requiere tres
entradas y genera dos salidas, no es reversible. No es posible
reconstruir las tres entradas a partir de la suma «S» y el acarreo «K».
Figura 2.8. Representación esquemática de un sumador completo de números de un bit.
A
B
C
S
K
© Vicente Moret Bonillo Página 64
Si queremos un sumador reversible necesitamos más información en la
salida. En concreto, para resolver el problema planteado necesitamos
dos líneas extra que salgan de la puerta y una línea extra en la entrada
que configuramos con un valor fijo, por ejemplo |0. El procedimiento,
ahora, podría ser el siguiente (Figura 2.9):
1. Utilizar N, CN, CCN (o sólo CCN, que como ya sabemos es un
conjunto completo de operadores)
2. Construir AND, OR, XOR, con los que se puede construir un
sumador
3. Utilizar la redundancia de las salidas extra
4. Organizar el sistema de forma que las dos líneas extra, aparte de
las salidas de suma «S» y acarreo «K», sean precisamente «A» y «B»
Figura 2.9. Representación esquemática del sumador completo reversible de números
de un bit. El número de «salidas» debe ser igual al número de «entradas».
A
B
C
0
X = A
Y = B
S
K
© Vicente Moret Bonillo Página 65
2.6. La puerta de Fredkin
Otra puerta de gran interés en computación reversible es la puerta de
Fredkin. Esta puerta reversible (Figura 2.10), introduce un elemento
que realiza un intercambio controlado, y en ella el número de |1 y de
|0 no cambia nunca. El funcionamiento de la puerta de Fredkin es el
siguiente:
1. | A’ = | A
2. | A = 0 { | B’ = | B } { | C’ = | C }
3. | A = 1 { | B’ = | C } { | C’ = | B }
Construir la tabla booleana de la puerta de Fredkin y comprobar que
con este dispositivo el número de |1 y de |0 no cambia nunca es un
ejercicio divertido que recomendamos (Tabla 2.10)
Figura 2.10. La puerta de Fredkin.
© Vicente Moret Bonillo Página 66
| A | B | C | A’ | B’ | C’
0 0 0 0 0 0
0 0 1 0 0 1
0 1 0 0 1 0
0 1 1 0 1 1
1 0 0 1 0 0
1 0 1 1 1 0
1 1 0 1 0 1
1 1 1 1 1 1
Tabla 2.10. Tabla de verdad de la puerta de Fredkin.
© Vicente Moret Bonillo Página 67
2.7. Más computaciones con bolas de billar
Vamos a retomar ahora nuestra discusión anterior sobre computación
con bolas de billar. Pero lo haremos desde una perspectiva reversible.
Para ello configuraremos nuestro juego de mesa de forma que sea
capaz de representar algunas operaciones reversibles sencillas.
La bifurcación «FO» con bolas de billar
La bifurcación es claramente una operación reversible, ya que se limita
a duplicar la entrada, conservando su valor. Es decir, siempre somos
capaces de reconstruir la entrada a partir de la salida. Veamos como
podemos configurar nuestras bolas de billar parar reproducir una
operación de bifurcación. Esta operación es realmente muy sencilla, y
para visualizarla no tenemos más que recordar la estructura de la
computación básica en la colisión de dos bolas de billar, con todas las
restricciones impuestas anteriormente, a las que añadiremos la nueva
restricción de que | A = 1… Es decir, exigimos que haya bola A.
Para facilitar el seguimiento del razonamiento, repetimos el esquema de
la estructura de la computación básica en la colisión de dos bolas de
billar (Figura 2.11)
Figura 2.11. Nuevamente la estructura básica de la colisión con dos bolas de billar.
A
B
W
X
Y
Z
© Vicente Moret Bonillo Página 68
Con la nueva restricción de que | A = 1, la línea A actúa como una
señal de control activa en la entrada. Claramente:
1. Si | B = 1 | W = 1 : | Z = 1 Bifurcación de la línea B
2. Si | B = 0 | W = 0 : | Z = 0 No pasa nada
Siguiendo esta misma filosofía, también es posible configurar el
dispositivo de las dos bolas de billar para obtener una puerta reversible
CN.
Colisión, redirección, dispositivos de cruce e interruptores
Los elementos vistos hasta ahora, aunque útiles, no son suficientes
para construir una computadora completa con bolas de billar. Vamos a
necesitar algunos componentes más para poder controlar nuestra
computadora desde una perspectiva mecánica28. Uno de tales
dispositivos son las puertas de colisión.
En una puerta de colisión dos bolas en movimiento colisionan con dos
bolas en reposo. Por lo que hay dos entradas y cuatro salidas. El
resultado neto de esta operación es una doble bifurcación.
Otro componente necesario son las puertas de redirección, que actúan
reflejando la bola que choca contra ellas, produciendo un cambio de
dirección o de sentido en su trayectoria, dependiendo del tipo de puerta
alcanzada. La figura 2.12 ilustra cuatro de estas puertas.
28 Cambiando direcciones y eso…
© Vicente Moret Bonillo Página 69
Figura 2.12. Dispositivos de redirección básicos. Podrían visualizarse como las bandas
de la mesa de billar en donde las bolas inciden con diferentes ángulos.
Además, necesitaremos dispositivos de cruce, y dispositivos
interruptores (que no son otra cosa que dispositivos de cruce
desplazado.)
Con todos estos componentes podemos construir todo tipo de puertas
con bolas de billar, incluyendo puertas CCN y puertas de Fredkin que,
como sabemos ya, son por sí mismos conjuntos completos de
operadores reversibles. La conclusión es clara: ¡Ya podemos construir
una computadora reversible con bolas de billar!
© Vicente Moret Bonillo Página 70
2.8. Un pequeño análisis sobre reversibilidad
Hemos visto, entre otras cosas, que con puertas de bola de billar…
1. Podemos construir puertas CN
2. Podemos construir puertas CCN
3. Podemos construir puertas de intercambio controlado
También hemos dicho que si podemos construir puertas de intercambio
controlado, como la de Fredkin, podemos construir cualquier cosa, y
además será reversible.
Pero veamos ahora la reversibilidad desde otro punto de vista… ¿cuánta
información necesitamos conservar a la salida para poder reproducir la
entrada y, por lo tanto, computar reversiblemente? Responderemos a
esta pregunta recordando que:
1. La puerta N acepta 1 entrada y devuelve 1 salida
2. La puerta CN acepta 2 entradas y devuelve 2 salidas
3. La puerta CCN acepta 3 entradas y devuelve 3 salidas
4. La puerta de Fredkin acepta 3 entradas y devuelve 3 salidas
5. La operación FO acepta 1 entrada y devuelve 2 salidas
Las cinco operaciones anteriores son reversibles. Por lo tanto parece
que para trabajar de forma reversible necesitamos, por lo menos, un
número de líneas de salida igual (o mayor) al número de líneas de la
entrada.
© Vicente Moret Bonillo Página 74
3. COMPUTADORES REVERSIBLES
Definiremos computador reversible como aquél que da como salida el
resultado real de una computación y además la entrada original. Un
aspecto sumamente interesante de la computación reversible, sobre la
que discutiremos en profundidad más adelante, es que se puede
demostrar que la computación reversible se puede realizar con un coste
nulo de energía. El único coste energético en que se incurre aparece
cuando reiniciamos la máquina para volver a empezar otra
computación. Además, esta reiniciación no depende de la complejidad
del cálculo. Sólo depende del número de bits de la respuesta, de forma
que se pueden tener N componentes funcionando en una máquina, pero
si la respuesta que se obtiene es de sólo un bit, la energía que se
necesita para que todo funcione es: kT ln2. Por lo tanto, se puede
afirmar que la computación reversible no necesita el establecimiento de
requisitos mínimos de energía… pero, como ya hemos dicho, volveremos
sobre este punto más tarde.
Por otra parte, decíamos en el capítulo anterior que se podían construir
todos los operadores lógicos convencionales de forma reversible. Al
respecto, resolvíamos nosotros algunos, y proponíamos el diseño del
resto como ejercicio para lectores estudiosos. Pues bien, para aquellos
lectores que no hayan hecho los deberes, ahí va nuestra propuesta (que
en algún caso viene acompañada de una comprobación de
reversibilidad). El nuevo reto para los lectores estudiosos es que traten
de conseguir representaciones alternativas que mejoren nuestra
propuesta.
© Vicente Moret Bonillo Página 75
3.1. Los operadores lógicos reversibles
Para construir los operadores lógicos reversibles utilizaremos
indistintamente las puertas reversibles N, CN, y CCN, según nos
convenga, y siendo conscientes de que hay opciones mejores. El
propósito de esta sección es practicar un poco la lógica combinatoria
reversible.
NAND reversible
Una opción que tenemos para conseguir una puerta NAND reversible es
la siguiente (véase la figura 3.1):
1. Utilizamos una puerta CCN en la que las líneas A1 y B1 son las
líneas de control
2. Hacemos | C1 = 1 siempre
3. El resultado NAND reversible lo tenemos en la línea de salida C2
La tabla 3.1 ilustra los valores de verdad de esta operación lógica
reversible.
Figura 3.1. NAND reversible a partir de una puerta CCN hábilmente configurada.
© Vicente Moret Bonillo Página 76
| A1 | B1 | C1 CCN | A2 | B2 | C2
0 0 1 = 0 0 1
0 1 1 = 0 1 1
1 0 1 = 1 0 1
1 1 1 = 1 1 0
Tabla 3.1. Obtención de los valores de verdad de un dispositivo NAND reversible.
Implicación simple reversible
Una opción que tenemos para conseguir una puerta IMP reversible es la
siguiente (véase la figura 3.2):
1. Utilizamos una puerta CCN en la que las líneas A1 y B1 son las
líneas de control
2. Hacemos | C1 = 1 siempre
3. Obtenemos las salidas A2, B2 y C2
4. Aplicamos una puerta CN utilizando como entrada A2 y C2
5. La implicación la obtenemos en la línea de salida C3
A1 A2 A3
B1 B2 B3
C1=1 C2 C3
Figura 3.2. Esquema de la implicación simple reversible.
© Vicente Moret Bonillo Página 77
La tabla 3.2 ilustra los valores de verdad de esta operación lógica
reversible.
| A1 | B1 | C1 CCN | A2 | B2 | C2 CNA,C | A3 | B3 | C3
0 0 1 = 0 0 1 = 0 0 1
0 1 1 = 0 1 1 = 0 1 1
1 0 1 = 1 0 1 = 1 0 0
1 1 1 = 1 1 0 = 1 1 1
Tabla 3.2. Obtención de los valores de verdad de la implicación simple reversible.
Implicación inversa reversible
Una opción que tenemos para conseguir una puerta PMI reversible es la
siguiente (véanse la figura 3.3 y la tabla 3.3):
1. Utilizamos una puerta CCN en la que las líneas A1 y B1 son las
líneas de control
2. Hacemos | C1 = 1 siempre
3. Obtenemos las salidas A2, B2 y C2
4. Aplicamos una puerta CN utilizando como entrada B2 y C2
5. La implicación inversa la obtenemos en la línea de salida C3
A1 A2 A3
B1 B2 B3
C1=1 C2 C3
Figura 3.3. Representación esquemática de la implicación inversa reversible.
© Vicente Moret Bonillo Página 78
| A1 | B1 | C1 CCN | A2 | B2 | C2 CNB,C | A3 | B3 | C3
0 0 1 = 0 0 1 = 0 0 1
0 1 1 = 0 1 1 = 0 1 0
1 0 1 = 1 0 1 = 1 0 1
1 1 1 = 1 1 0 = 1 1 1
Tabla 3.3. Obtención de los valores de verdad de la implicación inversa reversible.
XNOR reversible
Una opción que tenemos para conseguir una puerta XNOR reversible es
la siguiente (véase la figura 3.4):
1. Utilizamos tres entradas A1, B1, y C1
2. Utilizamos una puerta CN entre las líneas A1 y C1
3. Hacemos | C1 = 1 siempre
4. Obtenemos las salidas A2, B2 y C2
5. Aplicamos una puerta CN utilizando como entrada B2 y C2
6. La puerta XNOR reversible la obtenemos en la línea de salida C3
La tabla 3.4 ilustra los valores de verdad de esta operación lógica
reversible.
A1 A2 A3
B1 B2 B3
C1=1 C2 C3
Figura 3.4. Representación esquemática de un XNOR reversible.
© Vicente Moret Bonillo Página 79
| A1 | B1 | C1 CNA,C | A2 | B2 | C2 CNB,C | A3 | B3 | C3
0 0 1 = 0 0 1 = 0 0 1
0 1 1 = 0 1 1 = 0 1 0
1 0 1 = 1 0 0 = 1 0 0
1 1 1 = 1 1 0 = 1 1 1
Tabla 3.4. Obtención de los valores de verdad del XNOR reversible.
NOR reversible
Nuestra propuesta para esta puerta es un poco larga. Una opción que
tenemos para conseguir una puerta NOR reversible es la siguiente
(véanse la figura 3.5 y la tabla 3.5):
1. Utilizamos tres entradas A1, B1, y C1
2. Utilizamos una puerta CCN con líneas de control A1 y B1
3. Hacemos | C1 = 1 siempre
4. Obtenemos las salidas A2, B2 y C2
5. Negamos C2 y obtenemos A3, B3 y C3
6. Aplicamos una puerta CN utilizando como entradas A3 y C3
7. Aplicamos una puerta CN utilizando como entradas B4 y C4
8. Negamos C5
9. La puerta NOR reversible la obtenemos en la línea de salida C6
A1 A2 A3 A4 A5 A6
B1 B2 B3 B4 B5 B6
C1 C2 C3 C4 C5 C6
Figura 3.5. Representación esquemática de una puerta NOR reversible.
© Vicente Moret Bonillo Página 80
Entradas CCN C CNA,C CNB,C C
|A1 |B1 |C1 |A2 |B2 |C2 |A3 |B3 |C3 |A4 |B4 |C4 |A5 |B5 |C5 |A6 |B6 |C6
0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1
0 1 1 0 1 1 0 1 0 0 1 0 0 1 1 0 1 0
1 0 1 1 0 1 1 0 0 1 0 1 1 0 1 1 0 0
1 1 1 1 1 0 1 1 1 1 1 0 1 1 1 1 1 0
Tabla 3.5. Obtención de los valores de verdad de una puerta NOR reversible.
OR reversible
Nuestra propuesta para esta puerta también es un poco larga. Una
opción que tenemos para conseguir una puerta OR reversible es la
siguiente (véase la figura 3.6):
1. Utilizamos tres entradas A1, B1, y C1
2. Utilizamos una puerta CCN con líneas de control A1 y B1
3. Hacemos | C1 = 1 siempre
4. Obtenemos las salidas A2, B2 y C2
5. Negamos C2 y obtenemos A3, B3 y C3
6. Aplicamos una puerta CN utilizando como entradas A3 y C3
7. Aplicamos una puerta CN utilizando como entradas B4 y C4
8. La puerta OR reversible la obtenemos en la línea de salida C5
La tabla 3.6 ilustra los valores de verdad de esta operación lógica
reversible.
© Vicente Moret Bonillo Página 81
A1 A2 A3 A4 A5
B1 B2 B3 B4 B5
C1 C2 C3 C4 C5
Figura 3.6. Representación esquemática de una puerta OR reversible.
Entradas CCN C CNA,C CNB,C
| A1 | B1 | C1 | A2 | B2 | C2 | A3 | B3 | C3 | A4 | B4 | C4 | A5 | B5 | C5
0 0 1 0 0 1 0 0 0 0 0 0 0 0 0
0 1 1 0 1 1 0 1 0 0 1 0 0 1 1
1 0 1 1 0 1 1 0 0 1 0 1 1 0 1
1 1 1 1 1 0 1 1 1 1 1 0 1 1 1
Tabla 3.6. Obtención de los valores de verdad de una puerta OR reversible.
XOR reversible
Una opción que tenemos para conseguir una puerta XOR reversible es
la siguiente (véase la figura 3.7):
1. Utilizamos tres entradas A1, B1, y C1
2. Utilizamos una puerta CN con las líneas A1 y C1
3. Hacemos | C1 = 0 siempre
4. Obtenemos las salidas A2, B2 y C2
5. Aplicamos una puerta CN utilizando como entradas B2 y C2
6. La puerta XOR reversible la obtenemos en la línea de salida C3
La tabla 3.7 ilustra los valores de verdad de esta operación lógica
reversible.
© Vicente Moret Bonillo Página 82
A1 A2 A3
B1 B2 B3
C1 C2 C3
Figura 3.7 Representación esquemática de una puerta XOR reversible.
Entradas CNA,C CNB,C
| A1 | B1 | C1 | A2 | B2 | C2 | A3 | B3 | C3
0 0 0 0 0 0 0 0 0
0 1 0 0 1 0 0 1 1
1 0 0 1 0 1 1 0 1
1 1 0 1 1 1 1 1 0
Tabla 3.7. Obtención de los valores de verdad de una puerta XOR reversible.
AND reversible
La opción que para conseguir una puerta AND reversible es la siguiente
(Figura 3.8 y Tabla 3.8)
1. Utilizamos tres entradas A1, B1, y C1
2. Utilizamos una puerta CCN con las líneas de control A1 y B1
3. Hacemos | C1 = 0 siempre
4. Obtenemos las salidas A2, B2 y C2
5. La puerta AND reversible la obtenemos en la línea de salida C2
© Vicente Moret Bonillo Página 83
A1 A2
B1 B2
C1=0 C2
Figura 3.8. Representación esquemática de una puerta AND reversible.
Entradas CCN
| A1 | B1 | C1 | A2 | B2 | C2
0 0 0 0 0 1
0 1 0 0 1 1
1 0 0 1 0 1
1 1 0 1 1 0
Tabla 3.8. Obtención de los valores de verdad de una puerta AND reversible.
© Vicente Moret Bonillo Página 84
3.2. El computador reversible
Con lo que tenemos hasta ahora, estamos ya en condiciones de realizar
computaciones reversibles de cierta complejidad, siempre y cuando
utilicemos operaciones reversibles para hacer las cuentas. Por ejemplo,
un sumador reversible de dos bits podría tener el aspecto de la figura
3.9. La generalización de este sumador de dos bits es el sumador
completo de la figura 3.10, que responde a la estructura lógica
reversible siguiente:
[a, b, c, d=0] CCN (d)a,b | CN (b)a | CCN (d)b,c | CN (c)b | CN (b)a
Si nos fijamos, cualquier computación reversible tiene que almacenar
mucha información, desde luego mucha más que una computación
convencional. Algo de esto habíamos comentado ya. Una parte de esta
información necesaria es el resultado de la propia computación. El resto
es, simplemente, la información necesaria para conseguir que nuestra
computación sea reversible.
A A
B S = XOR (A,B)
C = 0 K = AND (A,B)
Figura 3.9. Arquitectura básica de un semisumador reversible de números de dos bits.
© Vicente Moret Bonillo Página 85
Figura 3.10
a a1 a2 a3 a4 a’ b b1 b2 b3 b4 b’ c c1 c2 c3 c4 S d=0 d1 d2 d3 d4 K
Figura 3.10. Arquitectura básica de un sumador completo de números de dos bits.
Para que una computación sea útil y eficaz, y al mismo tiempo
reversible, nuestro computador debe verificar una serie de restricciones
importantes, que tienen que ver con la dirección del proceso de
computación. Así, cuando utilizamos un computador convencional, y
realizamos un paso hacia delante, no puede haber ninguna
ambigüedad. De forma análoga, una máquina que funcione de acuerdo
con los principios de la reversibilidad tampoco puede presentar ninguna
ambigüedad en los pasos que realice hacia atrás. Esta característica
tiene como consecuencia que la computación reversible es radical y
esencialmente diferente de la computación irreversible convencional.
© Vicente Moret Bonillo Página 86
3.3. Generalizando el computador reversible29
Supongamos que tenemos un sistema de unidades lógicas reversibles
que están conectadas entre sí para que hagan algo interesante, por
supuesto de forma reversible. Introducimos ahora un dato de entrada
con el que queremos trabajar para conseguir ese algo que nos fascina y
nos parece tan interesante. Para poder controlar nuestra computación
necesitaremos un determinado número de bits |0. Dejamos ahora que
nuestro sistema lógico reversible empiece a trabajar con la información
de entrada suministrada. Cuando nuestra máquina termine de
computar nos dará su resultado, que será:
1. La respuesta deseada
2. Un montón de bits sobrantes que encierran la historia del proceso
Dicho así no parece que hayamos hecho gran cosa, pero si nos
organizamos bien comprobaremos que se plantean situaciones de suma
importancia, relativas a lo que a mí me gusta llamar computación
recreativa. Analicemos la arquitectura de la figura 3.11.
Datos
Ceros
0
1
1
0
1
0
0
0
0
0
Sistema de
Unidades
Lógicas
Reversibles
M
1
1
0
0
1
0
0
1
1
0
Respuesta
Basura
Figura 3.11. Una arquitectura reversible de propósito general.
29 Las ideas que se exponen en esta sección siguen los planteamientos de Bennet.
© Vicente Moret Bonillo Página 87
En nuestra máquina de la figura 3.11 empezamos con una situación en
la que lo sabemos todo: la información de entrada «datos» y los «ceros»
de control. Pero terminamos con algo completamente amorfo, reversible
pero amorfo. Desde luego es reversible porque basta con aplicar la
secuencia lógica del sistema M al revés [es decir M -1 ] para
reproducir la entrada, pero el resultado viene acompañado de mucho
desorden.
Lo curioso del caso es que el desorden generado puede ser utilizado
para mover físicamente una máquina, al menos en teoría. Sin embargo,
y como somos muy limpitos, la pregunta que debemos responder ahora
es… ¿No podríamos hacer lo mismo sin generar tanta basura? Pues
bien, la respuesta es que sí se puede.
Para entender cómo sólo tenemos que recordar nuestra definición de
computador reversible: Un computador reversible es aquél que da como
salida el resultado real de una computación y además la entrada
original. Evidentemente, la solución pasa por incluir en nuestra
arquitectura la secuencia de operaciones lógicas reversibles M -1.
Vamos a analizar detalladamente qué es lo que hace el sistema
representado en la figura 3.12.
© Vicente Moret Bonillo Página 88
Figura 3.12. Arquitectura básica de un computador reversible de propósito general en el
que no se genera información basura.
En la figura 3.12 podemos identificar un conjunto de elementos
importantes que nos van a servir para configurar un computador
reversible de propósito general, y además limpito, ordenadito y aseado.
También podemos reconocer tres fases distintas, que utilizaremos para
tratar de simplificar la descripción del proceso de la computación
reversible. Los elementos importantes de la arquitectura propuesta son
los siguientes:
0
0
0
0
0
0
1
0
0
1
0
0
0
0
0
0
0
0
0
0
1
0
1
1
0
1
0
0
1
0
1
0
1
1
0
1
0
1
1
0
1
0
0
1
0
1
0
1
1
0
0
1
0
0
1
0
0
0
0
0
M W
B
I
F
Fase 1 Fase 2
Fase 3
|x|
|y|
|z|
|x’|
|y’|
|z’|
© Vicente Moret Bonillo Página 89
1. Registro |x| que llamaremos registro de copia
2. Registro |y| que llamaremos registro de datos
3. Registro |z| que llamaremos registro de control
4. Unidad M que es el sistema lógico reversible que realiza la
computación
5. Unidad BIF que realiza una operación de bifurcación30 FO
6. Unidad W que invierte las operaciones del sistema lógico
reversible M31
A continuación describimos el proceso:
Fase 1
1. El registro de copia, inicialmente en el estado |x1 = |0, pasa
directamente a la siguiente fase como |x2 = |0.
2. El registro de datos, inicialmente en el estado |y1 = |Datos, es
procesado por la unidad M, que realiza la computación
reversible, y pasa a la siguiente fase como |y2 = |Resultado.
3. El registro de control, inicialmente en el estado |z1 = |0, es
introducido también en la unidad M para controlar el proceso de
la computación, y sale completamente aleatorizado, y convertido
en un conjunto de bits basura que, sin embargo, aseguran la
reversibilidad. Este registro pasa a la siguiente fase como
|z2 = |Basura.
30 En realidad lo que hace es una copia, pero ya discutiremos la cuestión más adelante. 31 La elección de las letras no es casual.
© Vicente Moret Bonillo Página 90
Fase 2
1. El registro de copia recibe la información procedente de una
bifurcación realizada sobre |y2, por lo que pasa a la siguiente
fase como |x3 = |Resultado.
2. El registro |y2 = |Resultado sufre una bifurcación, y pasa a la
siguiente fase como |y3 = |Resultado.
3. El registro de control no sufre ninguna operación, y pasa
directamente a la siguiente fase como |z3 = |Basura.
Fase 3
1. El registro de copia ya no se modifica. Su estado final es |x* =
|Resultado.
2. El registro |y3 = |Resultado es ahora procesado por la unidad
W, que deshace en orden inverso las operaciones realizadas
previamente en M, por lo que se reconstruye el registro de datos.
Su estado final es |y* = |Datos.
3. El registro |z3 = |Basura es ahora procesado por la unidad W,
que deshace en orden inverso las operaciones realizadas
previamente en M, por lo que se reconstruye el registro de ceros.
Su estado final es |z* = |0.
El resultado final de la computación, que por supuesto es
absolutamente reversible, incluye un registro con los datos de partida,
un registro con el resultado de la computación, y un registro con los
ceros de control. Todo perfectamente ordenadito, y sin ninguna
información basura. Eso si, a expensas de sacrificar un registro extra,
inicialmente lleno de ceros32,… nada grave.
32 O de cualquier otra cosa… en definitiva sólo vale para sobrescribirlo.
© Vicente Moret Bonillo Página 91
Nótese que M es un sistema lógico reversible capaz de realizar
computaciones todo lo complicadas que queramos. W deshace en
orden inverso todas las operaciones previamente realizadas por M, y
también es reversible. Por otra parte, lo que nosotros hemos señalado
como operación de bifurcación FO es en realidad un proceso de copia,
que veremos detalladamente cuando nos demos ese pequeño paseo por
la energía que promete el título de este texto. Adelantaremos, no
obstante, que se puede demostrar que el mencionado proceso de copia
es también reversible… Además aparecen unas connotaciones
energéticas de gran interés. Esperaremos a que el paseo nos lo aclare.
Pero no todo lo que hemos dicho es estrictamente cierto… en realidad
parece que con la arquitectura propuesta no se genera ningún
desorden, al menos desde una perspectiva global. Sin embargo no
debemos olvidar que estamos trabajando con máquinas reversibles, por
lo que los bits pueden ir de acá para allá. Por lo tanto, para conducir la
computación en un sentido determinado, y evitar que los bits se
comporten como bolas saltarinas, hay que darle un empujón al
sistema… y es aquí cuando se genera algún desorden.
También veremos que pasan cosas increíbles cuando reiniciamos
nuestra computadora y la preparamos para una nueva operación. Pero
antes nos detendremos en tratar de averiguar qué podría pasar cuando
los componentes de nuestras computadoras sean lo suficientemente
pequeños como para que los fenómenos cuánticos empiecen a tener su
importancia. Será en el próximo capítulo.
© Vicente Moret Bonillo Página 94
4. HACIA LA COMPUTACIÓN CUÁNTICA
Cada día de los que van pasando se diseñan componentes más y más
pequeños con los que se construyen computadoras. Estamos ya por
debajo de lo que, en el lenguaje de la calle, se conoce como lo
microscópico. Al repecto hay acuerdo prácticamente unánime en la
comunidad científica internacional: No falta mucho tiempo para que
podamos construir computadoras cuyo tamaño sea el equivalente al de
unos cuantos átomos. En este contexto, las restricciones que
normalmente impone la mecánica cuántica pueden ser importantes…
¡Vamos a explorar eso!
Trataremos de responder a las siguientes preguntas:
1. ¿Qué podemos esperar de una computadora que funcione de
acuerdo con las leyes de la mecánica cuántica?
2. ¿Cuál va a ser el papel del principio de incertidumbre de
Heisenberg?
3. ¿Cuál debería ser el tamaño mínimo de una computadora?
Empezando por el final, parece claro que no podemos construir una
computadora más pequeña que un átomo, ya que siempre
necesitaremos algo sobre lo que escribir. Por lo tanto vamos a iniciar
nuestra aproximación a la computación cuántica con un sistema de
espín natural33 como es el átomo34.
33 Al momento angular intrínseco del electrón se le denomina espín. El espín surge de forma natural en el
desarrollo de la mecánica cuántica relativista de Dirac (1928), pero en la mecánica cuántica no relativista,
que es la que nos atañe, la existencia del espín se introduce como una hipótesis o postulado.
34 De acuerdo con Feynman, podríamos haber escogido igualmente un núcleo, que también es un sistema
de espín natural.
© Vicente Moret Bonillo Página 95
Los sistemas de espín natural tienen atributos físicos medibles a los
que podemos asignar números, de forma que cada número diferente
representa un estado. Por otra parte, la mecánica cuántica no impone
más restricciones sobre el tamaño de las partículas que las que
imponen, por ejemplo, la mecánica estadística o la mecánica clásica.
Antes de profundizar en estos temas, y con el objetivo de consolidar
unas mínimas bases que nos ayuden a entender qué se cuece en el
horno de la computación cuántica, vamos a efectuar un breve recorrido
histórico, realizado de forma casi telegráfica.
© Vicente Moret Bonillo Página 96
4.1. Antecedentes y conceptos básicos de la mecánica cuántica
Situémonos a finales del Siglo XIX. Los experimentos realizados con
tubos de descarga, y el descubrimiento de la radiactividad natural,
permiten confirmar que átomos y moléculas están compuestos por
partículas cargadas.
En 1909, Rutherford hace incidir partículas , que no son otra cosa que
núcleos de Helio, sobre láminas metálicas delgadas. Los resultados son
sorprendentes: La mayoría de tales partículas pasan libremente, pero
algunas se desvían, y unas cuantas rebotan y salen reflejadas.
Estos resultados conducen a la hipótesis de la estructura planetaria de
los átomos, según la cual todo átomo está constituído por un núcleo
denso formado por |n| neutrones y |z| protones, con una corteza de
|z| electrones orbitando muy lejos del núcleo. De acuerdo con este
modelo, las propiedades de los átomos, movimiento y energía, dependen
de su estructura electrónica.
Sin embargo, el modelo planetario del átomo no es ni compatible ni
consistente con la teoría electromagnética clásica de Maxwell, según la
cual toda partícula cargada y acelerada pierde energía.
Evidentemente el electrón está acelerado porque la dirección de su
velocidad cambia constantemente. Esta circunstancia conduce
inevitablemente a una pérdida de energía por radiación, lo que se
traduciría en que el electrón dibujaría una órbita espiral en torno al
núcleo, hasta que se produciría el colapso. En otras palabras, según el
modelo planetario, los átomos no serían estables, lo cual no es cierto.
Paralelamente, en la primera década del siglo XX, Max Planck trabaja
en la cuantización de la energía en la radiación del cuerpo negro, y
© Vicente Moret Bonillo Página 97
Albert Einstein trabaja sobre el efecto fotoeléctrico que revela el carácter
corpuscular de la luz (Figura 4.1). Ambas contribuciones ponen de
manifiesto la naturaleza cuántica del universo35.
Figura 4.1. Naturaleza dual corpúsculo-onda de la luz: A la izquierda, un haz de fotones
puede arrancar electrones al chocar con cierto tipo de materiales. A la derecha, un haz
de fotones manifiesta un comportamiento típicamente ondulatorio al atravesar una
rendija.
Según esta nueva concepción del universo, la estabilidad de los átomos
podría explicarse suponiendo estados estacionarios en las órbitas de los
electrones, como se ilustra en la figura 4.2.
35 Paradójicamente Einstein, que nunca creyó en la mecánica cuántica, recibió el premio Nobel de física
por sus trabajos sobre el efecto fotoeléctrico… un fenómeno típicamente cuántico.
h
e-
h
e-
© Vicente Moret Bonillo Página 98
E2
E1
e- e-
Emite un « cuanto » de energía Absorbe un « cuanto » de energía
Figura 4.2. Emisión y absorción de cuantos discretos de energía de un electrón que
se mueve entre dos estados energéticos permitidos.
Siguiendo con la historia, en 1923 Louis DeBroglie postula que los
electrones también tienen naturaleza ondulatoria, de forma que un
electrón |e| de masa |m| que se mueve a velocidad |v| tiene una
longitud de onda || asociada. Veamos esto con un poco más de
detalle. Sea un electrón que se está moviendo. Su longitud de onda
asociada está definida por:
)()()()(
ep
h
evem
he
En esta expresión:
h = constante de Planck
(e) = longitud de onda del electrón
m(e) = masa del electrón
p(e) = momento lineal del electrón
v(e) = velocidad del electrón
© Vicente Moret Bonillo Página 99
Supongamos que: v(e) c = velocidad de la luz en el vacío. Dado que, de acuerdo con Einstein, la energía total de una partícula es:
E = m c2
Y dado que, de acuerdo con Planck, la energía total de una onda es:
E = h
En donde es la frecuencia de vibración de la onda, entonces:
cm
hchhcm
2
Pero si v(e) c entonces:
)()()()(
ep
h
evem
he
A la vista de estos resultados Stern, en 1932, postula que los efectos
ondulatorios son el resultado de una ley general del movimiento. Y al
mismo tiempo que se consolidan estas ideas empiezan a surgir
aplicaciones. Por ejemplo, una aplicación práctica de la naturaleza dual
de las partículas es la microscopía electrónica. No obstante esta
naturaleza dual, los fotones (partículas de luz) no son la misma cosa
que los electrones (ondas de materia). La diferencia puede verse
claramente resumida en la tabla 4.1.
Entidad Física Tipo Velocidad Masa Tratamiento
Fotón Partícula de luz La de la luz Nula Relativista
siempre
Electrón Onda de
materia
Menor que la
de la luz
Mayor que cero No siempre
relativista
Tabla 4.1. Comparativa entre algunas de las propiedades físicas del fotón y del electrón.
© Vicente Moret Bonillo Página 100
4.2. El principio de incertidumbre
¿Cómo podemos describir la posición de la partícula? ¿Cuál es el
procedimiento indicado para determinar dónde está una partícula? La
respuesta obvia es observándola. Para conseguirlo imaginemos un
microscopio que pueda hacer visible un electrón. Si lo queremos ver
debemos proyectar una luz o alguna especie de radiación apropiada
sobre él. Pero un electrón es tan pequeño que bastaría un solo fotón de
luz para hacerle cambiar de posición apenas lo tocara. Y en el preciso
instante de medir su posición, ésta habría sido modificada.
Heisenberg demostró que no nos será posible idear un método para
localizar la posición de la partícula subatómica mientras no estemos
dispuestos a aceptar la incertidumbre absoluta respecto a su posición
exacta. Es imposible medir ambas variables con exactitud al mismo
tiempo.
Siendo así no podrá haber una ausencia completa de energía ni en el
cero absoluto siquiera. Si la energía alcanzara el punto cero, y las
partículas quedaran totalmente inmóviles, sólo sería necesario
determinar su posición, puesto que la velocidad equivaldría a cero. Por
tanto sería de esperar que subsistiera alguna "energía residual del
punto cero", incluso en el cero absoluto, para mantener las partículas
en movimiento y también, por así decirlo, nuestra incertidumbre. Esa
energía "punto cero" es lo que no se puede eliminar.
En 1930, Einstein demostró que el principio de incertidumbre (donde se
afirma la imposibilidad de reducir el error en la posición sin
incrementar el error en el momento) implicaba también la imposibilidad
de reducir el error en la medición de energía sin acrecentar la
incertidumbre del tiempo durante el cual se toma la medida. Con este
argumento Einstein cría poder refutar el principio de incertidumbre,
© Vicente Moret Bonillo Página 101
pero Bohr procedió a demostrar que la refutación tentativa de Einstein
era errónea36.
Aunque hay demostraciones mucho más formales y rigurosas, nosotros
haremos una aproximación geométrica al principio de incertidumbre, en
mi opinión más intuitiva. Consideremos el esquema de la figura 4.3, en
la que se muestra un haz de partículas que incide sobre una lámina
que tiene un orificio pequeño de diámetro |w|. Como consecuencia de
las propiedades ondulatorias de la materia, el haz de partículas sufre el
fenómeno de la difracción, dispersándose y cambiando su momento un
cierto ángulo || sobre la dirección inicial de propagación del haz, lo
que se detecta con la placa fotográfica situada detrás de la lámina del
orificio.
Figura 4.3. Un experimento para tratar de visualizar el principio de incertidumbre.
Ya hemos dicho que la difracción es una consecuencia de las
propiedades ondulatorias de las partículas en movimiento, lo que
implica un cambio de dirección en el movimiento de la partícula. En
nuestro ejemplo, esto equivale a decir que parte de su momento se
transfiere según la coordenada X.
36 Ni el propio Bohr se lo creía… La prueba que Bohr construyó para demostrar el error de Einstein
estaba basada en ¡la teoría de la relatividad!
W
A 0
E
© Vicente Moret Bonillo Página 102
Formalmente:
1. Rendija sobre el eje |x| de anchura |w|
2. p = vector momento
3. x = w : incertidumbre en la posición
4. px = |p|sen : incertidumbre en el momento
5. x px = w|p| sen
Por la condición del primer mínimo de difracción, y considerando el
esquema de la figura 4.5, la diferencia de las distancias recorridas por
las partículas que pasan por |A| y las que pasan por |0| debe ser la
mitad de la longitud de onda asociada |/2|.
A O
B
W/2
W/2
C
D
O’
Figura 4.5. Una demostración geométrica del principio de incertidumbre.
La demostración incluye los siguientes pasos:
OACACOOOlongdOCCDAD
C)(
2)(|'|::
© Vicente Moret Bonillo Página 103
hpxp
hppxsenWsen
WOC xx
::)(
2)(
2
Del resultado anterior se puede concluir que el simple hecho de medir
cambia el estado de un sistema en un valor del orden de | h |
© Vicente Moret Bonillo Página 104
4.3. La ecuación de Schrödinger
La ecuación de Schrödinger fue desarrollada por el físico austríaco
Erwin Schrödinger en 1925, y describe la evolución temporal de una
partícula masiva no relativista. Es de importancia central en la teoría de
la mecánica cuántica, donde representa para las partículas
microscópicas un papel análogo a la segunda ley de Newton en la
mecánica clásica. Para un sistema unidimensional de una única
partícula, la mecánica clásica, a través de la 2ª Ley de Newton,
establece que:
212
2
2
dtmFxddt
xdmF
),,(: 21 cctgxSea
),,(::)(: 210000 cctgxEntoncesxtSi
),,(: 21 cctgdt
d
dt
dxvPero
0),,(::)(: 21000 ttcctg
dt
dvEntoncesvtSi
Y así podemos calcular fácilmente c1 y c2.
En mecánica clásica conocemos el estado de una partícula en
movimiento si conocemos: x, v, F… es decir, su posición, su
velocidad, y las fuerzas que actúan sobre ella. Sin embargo, cuando
estudiamos el mundo de lo muy pequeño, la cosa es algo diferente. Así,
en mecánica cuántica el estado de un sistema viene dado por su
función de ondas: = (x, t) Este es el primer postulado de la
mecánica cuántica, también llamada mecánica ondulatoria.
© Vicente Moret Bonillo Página 105
Sin embargo, la formulación cambia cuando nos referimos a sistemas
cuánticos. Así, por decreto, la ecuación de estado para un sistema
cuántico unidimensional de una única partícula, y dependiente del
tiempo, es la siguiente:
),(),(),(
2
),(2
22
txtxVx
tx
mt
tx
i
),(),(),(
8
),(
22:
2
2
2
2
txtxVx
tx
m
h
t
tx
i
hhComo
En esta expresión V(x,t) es la energía potencial de nuestro sistema
cuántico.
Pero la ecuación de estado propuesta por Schrödinger es difícil de
interpretar, y –salvo casos excepcionales imposible de resolver
analíticamente. Queda además pendiente la cuestión del verdadero
sentido físico de esta ecuación de estado. Al respecto, Heisenberg
formula la hipótesis de que el estado clásico y el estado cuántico deben
ser cosas distintas. Pero quien resuelve finalmente el problema de la
interpretación física de la ecuación de Schrödinger es el matemático
Max Born. El argumento de Born es el siguiente: Para un tiempo |t|, la
expresión |(x, t)|2 es la probabilidad de encontrar a la partícula en la
región del espacio |x , x + dx| . Por lo tanto |(x, t)|2 es una densidad
de probabilidad.
© Vicente Moret Bonillo Página 106
Figura 4.6. Un intento para aproximarnos al concepto de densidad de probabilidad.
Pero… ¿qué es una densidad de probabilidad? En mecánica cuántica se
trata de estudiar la probabilidad de que una partícula esté en el
intervalo: |x, x + dx|. Si g(x) es la densidad de probabilidad, con g(x)
y g(x) 0 entonces, de acuerdo con la figura 4.6:
dxxprobxg
b
a
|||)(:||)( 22
1||| 2
dx
Se puede establecer una relación interesante entre ||2 y las medidas
experimentales, que comentamos a continuación:
1. Sea un número N grande de sistemas idénticos que no
interaccionan entre sí
2. i , j : i = j : i N , j N
3. Medimos la posición de cada i N
4. dnx = nº de partículas en |x, x + dx|
5. dnx/N = prob (x, x + dx) = ||2 dx
Sin embargo, no se puede hacer lo que parece equivalente, es decir, no
podemos realizar muchas medidas sobre una única partícula ya que, de
acuerdo con el principio de incertidumbre, cada medida cambia el
estado del sistema.
- +
a b
© Vicente Moret Bonillo Página 107
4.4. Separando variables
En palabras de Ira Levine, la ecuación de estado dependiente del
tiempo, formulada por Schrödinger, es un espectáculo formidable. No
obstante, hay situaciones en las que la energía potencial no varía con el
tiempo. En tales casos podemos separar variables, de acuerdo con el
siguiente esquema:
),()(),(
8
),(
2 2
2
2
2
txxVx
tx
m
h
t
tx
i
h
)()(),(
:)()(),(
)()(),(:2
2
2
2
xdx
dtf
x
txtf
dt
dx
t
txxtftxSi
Separando variables y operando:
)()()()()(8
)()(2 2
2
2
2
tfxxVxdx
dtf
m
htf
dt
dx
i
h
Dividiendo la última expresión por f(t) (x) resulta que:
)()()(8
)()(2 2
21
2
21 xVx
dx
dx
m
htf
dt
dtf
i
h
Ahora tenemos un término que es independiente de x :
)()(2
1 tfdt
dtf
i
h
Y otro término que es independiente de t:
)()()(8 2
21
2
2
xVxdx
dx
m
h
Puesto que, en este caso, ambos términos son independientes
respectivamente de (x) y de (t), y puesto que están relacionados por la
© Vicente Moret Bonillo Página 108
igualdad, deben representar una magnitud constante. Así, si llamamos
E a esta magnitud constante, resulta que:
E = )()()(8
)()(2 2
21
2
21 xVx
dx
dx
m
htf
dt
dtf
i
h
Ahora podemos operar del siguiente modo con el término independiente
de (x):
cteEth
itftEd
h
itdftf
2
)(ln)(2
)()(1
Eth
iEt
h
i
cte eAeetf
22
)(
En esta expresión, la constante arbitraria A = ecte la podemos omitir sin
que la expresión pierda generalidad37. Por lo tanto, concluimos que:
Eth
i
etf
2
)(
Análogamente, si operamos con el término independiente de (t):
E(x) = )()()(8 2
2
2
2
xxVxdx
d
m
h
Y ordenando todo esto un poco resulta que:
0)()]([8
)(2
2
2
2
xxVEh
mx
dx
d
Esta expresión es la ecuación de Schrödinger unidimensional e
independiente del tiempo, y E es la energía total del sistema. Ahora,
recordando la ecuación de f(t) podemos obtener la función de onda del
estado estacionario de la densidad de probabilidad:
37 Siempre podemos incluir A como un factor en (x) que multiplica a f(t).
© Vicente Moret Bonillo Página 109
Eth
iEt
h
i
extxEntoncesxVVSietf
22
)(),(:)(:)(
Pero ||2= *, en donde el símbolo (*) denota la conjugada compleja.
Por lo tanto:
Eth
iEt
h
iEt
h
iEt
h
i
exexexextx
2222
2 )()(*)(*)(|),(|
Operando:
|(x,t)|2 = *(x) (x) e
0 = *(x) (x) = |(x)|
2
Expresión en la que E tiene que ser un número real38 y, por lo tanto, se
cumple que E = E*. Podemos comprender todo esto algo mejor si
recordamos los números complejos, teniendo en cuenta el esquema de
la figura siguiente (Figura 4.7).
Figura 4.7. La clásica figura que siempre se usa para explicar los números complejos.
38 Recordemos que es la energía total del sistema.
r
Y
O X
© Vicente Moret Bonillo Página 110
Aquí, es obvio que un número complejo cualquiera puede representarse
como:
z = x + yi
En donde i es la unidad imaginaria (-1), x es la parte real de z,
mientras que y es la parte imaginaria de z.
Además, la longitud r medida desde el origen de coordenadas es el
módulo del complejo z, y se calcula mediante la expresión:
r = |z|= [x2 + y2]1/2
Por otra parte:
tan () = y/x : x = r cos () : y = r sen ()
Así las cosas podemos escribir lo siguiente:
z = r cos () + i r sen () = r ei
Ya que se puede demostrar fácilmente que:
ei = cos () + i sen ()
Por otra parte, y por la definición de conjugada compleja:
z* = x – yi = r e-i
Ahora podemos jugar un poco con lo que ya sabemos. Por ejemplo:
z z* = (x + yi) (x – yi) = x2 + y2 = |z|2
Además, si z1 = r1 exp (i1) y z2 = r2 exp (i2), entonces:
z1 z2 = r1 r2 exp [i (1 + 2)]
© Vicente Moret Bonillo Página 111
z1 / z2 = r1 / r2 exp [i (1 - 2)]
Por otra parte, dado que: z1* = r1 exp(-i1) y que z2* = r2 exp(-i2),
entonces:
z1* z2* = r1 r2 exp [-i (1 + 2)] = (z1 z2)*
z1* / z2* = r1 / r2 exp [-i (1 - 2)] = (z1 / z2)*
© Vicente Moret Bonillo Página 112
4.5. Operadores
Una forma alternativa de escribir la ecuación de Schrödinger,
unidimensional e independiente del tiempo, es la siguiente:
OperadorxVdx
d
m
hDondexExxV
dx
d
m
hun es )(
8 :)()()(
8 2
2
2
2
2
2
2
2
Un operador es una regla o procedimiento que permite, dada una
función, calcular otra función correspondiente. Lo que sigue a
continuación es una lista de cosas, operaciones, y propiedades,
protagonizadas por nuestros amigos los operadores cuánticos.
Así, podemos definir las siguientes operaciones básicas de los
operadores cuánticos, que denotaremos mediante letras mayúsculas
tocadas graciosamente con un sombrero (e.g., Â,…)
1. Suma: (Â + Ê) f(x) = Â f(x) + Ê f(x)
2. Producto: (Â Ê) f(x) = Â { Ê f(x)}
Hay que tener en cuenta que, generalmente, (Â Ê) f(x) (Ê Â) f(x)
También podemos definir un álgebra de operadores cuánticos con los
siguientes elementos:
1. Dados dos operadores  y Ê. Si f : Âf = Êf  = Ê
2. El operador unidad está definido
3. El operador nulo está definido
4. Se cumple la propiedad asociativa: Â (Ê Î) = (Â Ê) Î
5. No siempre se cumple la propiedad conmutativa: Â Ê Ê Â
6. Se define el conmutador como: [Â , Ê] = Â Ê – Ê Â
7. Se define el cuadrado de un operador como: Â2 = Â Â
© Vicente Moret Bonillo Página 113
Además, los operadores cuánticos tienen ciertas propiedades
interesantes, entre las que destacamos las siguientes:
1. Â [ f(x) + g(x) ] = Â f(x) + Â g(x) donde f y g son funciones
2. Si f es una función, y c es una constante:  [c f(x)] = c  f(x)
3. ( Â + Ê ) Î = Â Î + Ê Î
4. Â ( Ê + Î ) = Â Ê + Â Î
 es un operador lineal si y sólo si cumple las propiedades (1) y (2) que
acabamos de destacar. En la aproximación cuántica todos los
operadores son lineales.
Otro aspecto importante de los operadores cuánticos tiene que ver con
los conceptos de funciones propias y de valores propios, que
comentamos a continuación:
Sean  un operador, f(x) una función, y k una constante. En este caso,
si  f(x) = k f(x), entonces f(x) es una función propia del operador Â, y
k es un valor propio. Además, las funciones propias de cualquier
operador lineal contienen una constante multiplicativa arbitraria c.
Efectivamente, sabemos que  (c f) = c  f = c k f = k (c f). Así,
si f(x) es una función propia de  con valor propio k, también c f(x) es
una función propia. Así, para cada valor diferente de k tenemos una
función propia distinta, y funciones propias con el mismo valor de k
pero valores distintos de c no son independientes entre sí.
Como ejemplo, y volviendo a la ecuación de Schrödinger anteriormente
escrita:
© Vicente Moret Bonillo Página 114
Hamilton. deoperador el es )(8
-
propias funcionesson ientescorrespond las propios, sson valore E distintos los Donde
ˆ:ˆ
2
2
2
2
ii
xVdx
d
m
h
EHEH iii
También relacionada con los operadores cuánticos está la cuestión de
los valores promedio, que utilizaremos un poco más adelante, es este
mismo texto.
Consideremos una magnitud física E. Cuando la función de estado no
es una función propia del operador asociado Ê, una medida de E nos da
uno de entre un número de valores posibles. Consideremos ahora el
valor promedio de la propiedad E para un sistema cuyo estado sea .
La determinación experimental del valor promedio de E necesita
considerar un gran número de sistemas, todos ellos en el mismo estado
, y efectuar una medida de E en cada sistema. Así, el valor promedio
de E se define como la media aritmética de los valores observados.
Si e1, e2,…, en son los valores observados de E, el valor promedio de E,
que denotamos E, para un número N de sistemas muy grande, es el
siguiente:
N
e
E
N
i
i 1
El mismo resultado se obtiene sumando todos los posibles valores de E
(los distintos e), multiplicando cada valor posible por el número de
veces que dicho valor ha sido observado (ne).
© Vicente Moret Bonillo Página 115
e e
e
ee
e
ePeN
n
N
en
E
En esta última expresión, Pe es la probabilidad de observar el valor e, ya
que, como hemos dicho, N es muy grande.
Podemos utilizar estos resultados para estudiar el comportamiento39 de
de un sistema unidimensional de una partícula en el estado (x,t).
Concretamente consideraremos el valor promedio de su coordenada x.
Sea una partícula |bit|40 en el estado (x, t) de tal forma que |x| toma
valores en un continuo. Entonces Pbit|x, x + dx| = ||2dx es la
probabilidad de observar a la partícula entre (x) y (x+dx). Por lo tanto:
dxtxxx 2|),(|
Por otra parte, si E(x) es una propiedad que depende de x, y si Ê es el
operador asociado a E(x), entonces:
1. E = * Ê dx
2. * = Densidad de probabilidad
Además, si F y G son dos propiedades cualesquiera, entonces:
1. F + G = F + G
2. F G F G
Un inconveniente de todo este jaleo es que la notación con integrales
puede llegar a se engorrosa. La solución viene de la mano de Paul Dirac,
39 Más adelante veremos por qué. 40 El nombre de la partícula es casual.
© Vicente Moret Bonillo Página 116
quien41 propuso una notación alternativa, que esbozamos a
continuación.
Si indica todo el espacio de integración, si m y n son funciones, y si
 es un operador, entonces:
mmmm
mnnm
Además
nmd
AnAmAAdA
nmnm
mnnmnmnm
|*|
|*|
:
||*
|ˆ|)|ˆ|(|ˆ|ˆ
41 Aunque por otros motivos.
© Vicente Moret Bonillo Página 120
5. MECÁNICA CUÁNTICA E INFORMACION
Seguiremos nuestra discusión introduciendo ahora la unidad elemental
de información utilizada en computación cuántica. Al respecto,
Benjamin Schumacher –un físico teórico interesado en la teoría
cuántica de la información descubrió, a finales del siglo XX, la forma
de interpretar los estados cuánticos como información, y acuñó el
término qubit. También descubrió una manera de comprimir la
información en un estado y de almacenar la información en el número
más pequeño de estados. Este planteamiento no es otra cosa que la
analogía cuántica de la teoría de la información clásica de Shannon y,
actualmente, se conoce como compresión de Schumacher.
En el modelo clásico de computación el bit es la unidad básica de
información. Un bit puede tener dos valores distintos que se denotan 0
y 1 respectivamente. Desde un punto de vista un poco más formal, un
bit es un elemento del conjunto V = {0,1}. Una cadena de n bits se
puede considerar como un elemento del producto cartesiano:
Vn = V ×· · ·× V
Una cadena de bits puede representar cualquier información. Para ello
basta establecer un mecanismo de codificación. Por otra parte, en el
modelo clásico de computación, un algoritmo es un mecanismo para
manipular cadenas de bits, y desde el punto de vista formal se puede
considerar como un mecanismo para evaluar funciones booleanas. Así,
dada una cadena de n bits, , el algoritmo la modifica generando otra
cadena de n bits, .
Si llamamos f a la función booleana de Vn Vn / f() = entonces el
algoritmo es un mecanismo para evaluar f. Desde una perspectiva
funcional, en un algoritmo hay que detallar el mecanismo de
manipulación de la cadena de bits hasta reducirlo a una secuencia de
© Vicente Moret Bonillo Página 121
puertas lógicas, ya que las computadoras clásicas sólo son capaces de
evaluar puertas lógicas, pero no son capaces de evaluar funciones
booleanas genéricas. En este sentido, recordaremos que las puertas
lógicas {not}, {or} y {and} permiten definir cualquier función booleana.
Análogamente, en el modelo cuántico de computación la unidad de
información básica es el qubit o bit cuántico. Un qubit puede estar en
dos estados distintos que se denotan |0 y |1 respectivamente.
Físicamente se representa por un sistema cuántico de dos estados. El
sistema cuántico de dos estados más conocidos es el spin de un
electrón. En un sistema de este tipo podemos representar el spin −(1/2)
por el estado |0 y el spin +(1/2) por el estado |1
© Vicente Moret Bonillo Página 122
5.1. El Bit Cuántico
Para tratar de formalizar esta nueva aproximación, llamaremos qubits o
bits cuánticos a los sistemas cuánticos elementales, es decir, a los
sistemas cuánticos de dos estados. Los sistemas cuánticos de n qubits
se describen mediante vectores de un espacio de Hilbert de dimensión
2n. Esto permite codificar una cantidad exponencial de información en
el estado de un sistema cuántico de n qubits. Además, cualquier
transformación del estado del sistema se traduce en la modificación
simultánea de toda la información almacenada. Pero para saber el
estado de un qubit hay que interaccionar con él. Dicho de otra forma,
hay que medir. Sin embargo, y de acuerdo con el principio de
indeterminación de Heisenberg, la medición de estados cuánticos es un
inconveniente importante para la computación cuántica. Las medidas
cuánticas no son deterministas. Si medimos dos estados iguales los
resultados no tienen por qué ser iguales. Así, el proceso de medida, en
la computación cuántica, es un experimento aleatorio en el que la
probabilidad de cada resultado está determinada por el estado del
sistema.
Un qubit, en general, se presenta como una superposición o
combinación lineal de los estados básicos |0 y |1. Esta superposición
se denomina estado qubital puro y puede representarse como:
= |0 + |1
donde las amplitudes de probabilidad α y β son en general números
complejos. A partir de estos coeficientes se determina la probabilidad de
obtener en una medida los resultados |0 y |1. En concreto, si
realizamos una medida de la información contenida en el qubit
podemos obtener el resultado |0 con probabilidad |α|2 o el resultado
|1 con probabilidad |β|2. Puesto que la probabilidad total tiene que
ser la unidad, α y β se deben relacionar por la ecuación:
© Vicente Moret Bonillo Página 123
||2 + ||2 = 1
Esta ecuación simplemente asegura que en la medición se obtiene un
estado o el otro. Debido a su naturaleza mecánica cuántica, cualquier
medida del qubit altera inevitablemente su estado. Un qubit puede
existir en un estado de superposición de los estados de base, pero la
medida del qubit ocasiona que la superposición colapse a uno de los
estados base, según las probabilidades mencionadas arriba.
El espacio de estados del qubit se puede representar mediante un
espacio vectorial complejo bidimensional de módulo 1.
Equivalentemente, se puede representar de forma geométrica por la
esfera de Bloch (Figura 5.1). Cada estado del qubit corresponde a un
punto de la superficie de una esfera de radio unidad. Esto
esencialmente significa que un qubit tiene dos grados de libertad
locales. Estos grados de libertad podrían ser la longitud y latitud, o
como es más habitual, dos ángulos.
Figura 5.1. Representación esquemática de la esfera de Bloch.
© Vicente Moret Bonillo Página 124
5.2. La Eficiencia de la Computación Cuántica
Pero… ¿cómo podemos utilizar todas estas ideas para mejorar la
eficiencia de la computación clásica? Al respecto recordaremos ahora
que el principal método para aumentar la capacidad de cálculo de un
ordenador clásico es el procesamiento en paralelo. Así, la capacidad de
almacenamiento de información y la capacidad de cálculo de un
ordenador son proporcionales al número de celdas de memoria y al
número de procesadores respectivamente, es decir, al “tamaño” del
ordenador. La capacidad de un ordenador clásico (de almacenamiento y
de cálculo) crece linealmente con respecto a su tamaño. Sin embargo, la
capacidad de un ordenador cuántico crece exponencialmente con
respecto a su tamaño. Este hecho, estrechamente relacionado con el
principio de superposición de la Mecánica Cuántica, se denomina
paralelismo cuántico. Profundizaremos un poco sobre estas ideas.
Un bit tiene dos valores posibles; sin embargo, un qubit puede estar en
dos estados posibles, y puede estar además en estados intermedios, que
son combinación lineal de los estados |0 y |1. Por ejemplo, una
situación válida para podría ser la siguiente:
[1/2] |0 + [3/2] |1
Expresión que cumple la restricción impuesta de que:
|a|2 + |b|2 = [1/2]2 + [3/2]2 = 1/4 + 3/4 = 1
Desde una óptica formal, un qubit es un vector de un espacio vectorial
generado por los dos estados. Es un vector de V = L (|0 , |1), en donde
V es un espacio de Hilbert complejo, y B = [|0 , |1] es una base
ortonormal. De este modo, los estados son vectores unitarios, y un
qubit puede estar en cualquier estado del tipo:
© Vicente Moret Bonillo Página 125
= a|0 + b|1 / a , b C / |a|2 + |b|2 = 1
Los coeficientes a y b de se denominan amplitudes y el estado
intermedio no tiene spin definido.
Vamos a tratar ahora el problema de la medida. Al respecto, decíamos
que siempre es posible medir o leer el valor de un bit, pero
generalmente no es posible medir el estado de un qubit. Ilustraremos la
situación con un ejemplo. Para ello trataremos de medir el qubit:
/2] |0 + [3/2] |1
El proceso de medida consiste en hacer pasar al electrón a través de
una rendija de un panel 1. Cuando pasa por la rendija, el electrón
atraviesa un campo magnético que desvía su trayectoria: Hacia abajo si
su spin es −(1/2) o hacia arriba si su spin es +(1/2). Finalmente el
electrón atraviesa una de las dos rendijas de un panel 2: La inferior si
su spin es −(1/2) o la superior si su spin es +(1/2). (Figura 5.2)
Figura 5.2. La medida de un qubit.
|0>
|1>
|0>
|1>
|0>
|1> |0>
|1>
© Vicente Moret Bonillo Página 126
El qubit que estamos analizando es un estado intermedio y en
consecuencia no tiene spin definido. El electrón tiene posibilidad de
desviarse tanto hacia abajo como hacia arriba. El electrón saldrá por
una de las dos rendijas del panel 2. Si pudiese alcanzar posiciones
intermedias entre las rendijas del panel 2 el spin del electrón no estaría
cuantificado. Si el electrón ha pasado por la rendija inferior su spin,
después de la medida, sólo puede ser −(1/2) y su estado |0. Si el
electrón ha pasado por la rendija superior su spin, después de la
medida, sólo puede ser +(1/2) y su estado |1. Por lo tanto, el proceso
de medida, además de dar una información incompleta sobre el qubit,
lo modifica. El proceso de medida “obliga al qubit a decidirse” por uno
de los dos estados de la base.
Medida de un qubit
inicial = a |0 + b |1
Si medida m = 0 final = (a/|a|) |0 : P0 = |a|2
Si medida m = 1 final = (b/|b|) |1 : P1 = |b|2
© Vicente Moret Bonillo Página 127
5.3. Sistemas de 2 Bits Cuánticos
Para poder representar cantidades mayores de información se recurre a
sistemas de n−qubits. Supongamos que n = 2. Tenemos ahora el spin
de un sistema de dos electrones. El spin de cada electrón puede estar
en dos estados que combinados generan cuatro estados para el sistema
de 2−qubits. Estos estados se denotan |00 |01 |10 |11. Un 2−qubit
puede estar en un estado intermedio. Puede ser una combinación lineal
de los cuatro estados anteriores:
= (1/4) |00 + (3/4) |01 + (3/4) |10 + (3/4) |11
De forma análoga a lo que comentábamos con los sistemas de un qubit,
un 2−qubit es un vector de V2 = L(|00, |01, |10, |11), en donde V2
es un espacio de Hilbert complejo, B2 = [|00, |01, |10, |11] es una
base ortonormal, y los estados de B2 son vectores unitarios. Un 2-qubit
puede estar en cualquier estado del tipo:
= a|00 + b|01 + c|10 + d|11
a , b , c , d C
|a|2 + |b|2 + |c|2 + |d|2 = 1
Los coeficientes {a, b, c, d} de se denominan amplitudes. El estado
intermedio no tiene spin definido. V2 es el producto tensorial V V y
los vectores de la base B2 corresponden a los distintos productos
tensoriales de los vectores de B:
|00 = |0 |0
|01 = |0 |1
|10 = |1 |0
© Vicente Moret Bonillo Página 128
|11 = |1 |1
El estado de un 2−qubit se denomina estado entrelazado si no se puede
describir en términos de los estados de los qubits que componen el
sistema. Normalmente el estado de un 2-qubit no puede ponerse como
el producto tensorial de dos estados de un solo qubit… aunque hay
excepciones, por ejemplo el 2-qubit que sigue no está en un estado
entrelazado, puesto que puede representarse como un producto
tensorial:
= (1/4) |00 + (3/4) |01 + (3/4) |10 + (3/4) |11
Efectivamente, se puede comprobar que el 2-qubit anterior equivale a:
= [(1/2) |0 + (3/2) |1] [(1/2) |0 + (3/2) |1]
Sin embargo, el siguiente 2-qubit sí que está en un estado entrelazado:
= (1/3) |00 + (1/3) |01 + (1/3) |10
Casi todos los estados están entrelazados. Si elegimos aleatoriamente
los coeficientes {a, b, c , d} la probabilidad de que el resultado sea un
estado entrelazado es 1. Para entender mejor estos estados vamos a
generalizar el proceso de medida. En un 2−qubit podemos medir el
primer qubit o el segundo qubit. Supongamos que vamos a medir el
primer qubit. Después de la medida el primer qubit debe estar en
estado |0 o en estado |1. Después de la medida el 2−qubit debe estar
en uno de los estados:
|0 (a|0 + b|1) = a|00 + b|01
|1 (a|0 + b|1) = a|10 + b|11
a, b C tal que |a|2 + |b|2 = 1
© Vicente Moret Bonillo Página 129
Para obtener el estado resultante del proceso de medida escribimos el
estado como una combinación lineal de dos estados, 0 y 1, en los
que el primer qubit está en estado |0 y |1 respectivamente.
= (2/3) 0 + (1/3) 1
0 = (1/2) |00 + (1/2) |01
1 = |10
Si el resultado de la medida es 0 el estado final será 0. Si el resultado
de la medida es 1 el estado final será 1.
= (1/3) |00 + (1/3) |01 + (1/3) |10
Medida m = 0 0 = (1/2) |00 + (1/2) |01 : P0 = 2/3
Medida m = 1 1 = |10 : P0 = 1/3
0 es la proyección ortogonal normalizada de sobre L(|00 , |01). P0
es la norma al cuadrado de dicha proyección, es decir, la suma de los
módulos al cuadrado de las amplitudes de |00 y |01 en el estado .
Las interpretaciones de P1 y 1 son análogas.
Los estados entrelazados se pueden caracterizar a partir de las
medidas. Sea un 2−qubit en el que medimos el primer qubit y a
continuación, en el estado resultante, medimos el segundo qubit.
Entonces es un estado entrelazado si y sólo si la probabilidad de que la
medida del segundo qubit sea 0 ó 1 depende del resultado de la medida
del primer qubit.
= (1/3) |00 + (1/3) |01 + (1/3) |10
Medida 1 = 0 0 = (1/2) |00 + (1/2) |01
© Vicente Moret Bonillo Página 130
Medida 2 = 0 P0 = ½
Medida 2 = 1 P1 = ½
Medida 1 = 1 1 = |10
Medida 2 = 0 P0 = 1
Medida 2 = 1 P1 = 0
© Vicente Moret Bonillo Página 131
5.4. Sistemas de n Bits Cuánticos
La generalización de 2−qubits a n−qubits resulta ahora muy sencilla.
Un n−qubit es un vector unitario del espacio de Hilbert complejo:
Vn = V … V
Bn = [|0 · · · 00 , |0 · · · 01 , |0 · · · 10 , . . . , |1 · · · 11] es una base
ortonormal, llamada base computacional. Un vector genérico de la base
Bn se puede ver como un producto tensorial del siguiente modo:
|x1 x2 . . . xn = |x1 |x2 · · · |xn con x1, x2, . . . , xn {0, 1}
La cadena de bits: x1 x2 . . . xn, la podemos interpretar como un
número natural |x| representado en el sistema de numeración binario.
Los vectores de la base Bn se identifican con los números naturales |x|
que cumplen [0 x 2n – 1] números con n dígitos binarios. Una vez
identificada la cadena de bits x1 x2 . . . xn con el número natural |x|,
se puede escribir |x| en el sistema de numeración decimal. Podemos
escribir Bn = [|0 , |1 , |2 , . . . , | 2n 1].
La identificación de los vectores de la base con cadenas de n bits es
importante para codificar información en un n−qubit. Identificarlos con
números naturales tiene que ver con nuestra predilección por el sistema
de numeración decimal.
Con esta notación un nqbit puede representarse:
12
0
212
0
1||:|
nn
x
x
x
x axa
La dimensión de Vn es exponencial: 2n. Esta es la propiedad clave del
paralelismo cuántico. Por ejemplo el par de números (131, 211) se
puede codificar en una cadena de 16 bits:
© Vicente Moret Bonillo Página 132
1 = |1000001111010011 = |27641
Sin embargo en un 16−qubit se puede codificar mucha más
información. La expresión que sigue es una combinación lineal de todos
los pares de números de 8 dígitos binarios desde el (0, 0) hasta el (255,
255), ambos incluidos.
65535
0
2 |256
1
x
x
Para facilitar la codificación de información se pueden agrupar los
qubits en registros. Formalmente un registro de tamaño k es un
conjunto consecutivo de k qubits. Se puede denotar por |x, |y, |z...
Los números x, y, z... son números con k dígitos binarios. En el ejemplo
anterior, si: |x es el registro completo de 16 qubits, |y es el registro de
los 8 primeros qubits y |z es el registro de los 8 últimos qubits,
entonces los estados 1 y 2 se pueden escribir del siguiente modo:
211|131|11010011|10000011|1
255
0
255
0
2 ||256
1
y z
zy
Medida del k-ésimo qbit:
© Vicente Moret Bonillo Página 133
5.5. Algoritmos Cuánticos
En el modelo cuántico de computación un algoritmo es un mecanismo
para manipular n−qubits. Ya conocemos uno de los dos posibles
mecanismos para hacerlo: medir qubits. El otro consiste en transformar
un estado inicial 1 en su correspondiente estado final 2. Si llamamos
U a la función de Vn Vn / U 1 = 2 entonces el segundo mecanismo
consiste en aplicar la función U. La aplicación U transforma estados en
estados y, según los postulados de la Mecánica Cuántica, es lineal. Por
tanto U sólo puede ser una transformación unitaria. No podemos
esperar que un ordenador cuántico sea capaz de aplicar una
transformación unitaria genérica. Por lo tanto, deberemos describirla
como una secuencia de transformaciones unitarias elementales que se
denominan puertas cuánticas. En definitiva un algoritmo cuántico es
una secuencia finita de puertas y medidas cuánticas.
En la definición de algoritmo cuántico se han incluido dos restricciones.
La primera afecta al estado inicial que siempre será el mismo: 1 = |0.
La segunda consiste en que las puertas y las medidas cuánticas no se
pueden alternar. Estas restricciones simplifican los algoritmos
cuánticos y no afectan al modelo de computación. Todos los algoritmos
cuánticos se pueden convertir en algoritmos cuánticos equivalentes que
respetan estas restricciones. La tercera gran diferencia entre los
modelos de computación cuántico y clásico está relacionada con las
puertas. Mientras que las puertas cuánticas son biyectivas, al ser
© Vicente Moret Bonillo Página 134
transformaciones unitarias, las puertas lógicas en general no lo son. La
consecuencia más importante de esta propiedad de las puertas
cuánticas es que los estados cuánticos no se pueden copiar. Para copiar
un n−qubit bastaría encontrar una transformación unitaria U que
cumpliese:
U(|x|0) = |x|x : 0 x < 2n
Los dos registros tienen n qubits. Esta transformación cumpliría:
U( |0) =
Pero la transformación U no existe. Efectivamente, se puede demostrar
que no existe ninguna transformación unitaria U : V2n V2n tal que U
( |0) = n-qubit .
Así, sea una transformación unitaria U : V2n V2n tal que…
U (|a |0) = |a |a
U (|b |0) = |b |b
a b : 0 a , b < 2n
Consideremos ahora el n-qubit = (1/2)( |a + |b). Entonces:
U( |0) = (1/2)( U (|a |0) + U (|b |0)) = (1/2)( |a |a +
|b |b)
© Vicente Moret Bonillo Página 135
5.6. Algunas propiedades de la computación cuántica
Para finalizar esta discusión, haremos un breve resumen de las
características más relevantes que se derivan de la computación con
qubits, y extraeremos alguna conclusión.
Recordamos, en primer lugar, que un bit toma valores discretos
mientras que los valores representados por un qubit son de naturaleza
continua. Sin embargo, esta característica podría replicarse con
magnitudes continuas clásicas (longitudes, voltajes, etc).
Otra cuestión importante es el paralelismo cuántico, que es la
posibilidad de representar simultáneamente los valores 0 y 1. Los
algoritmos cuánticos que operan sobre estados de superposición
realizan simultáneamente las operaciones sobre todas las
combinaciones de las entradas. Por ejemplo, los dos qubits siguientes:
½ (|0 + |1) (|0 + |1) = ½ (|0 |0 + |0 |1 + |1 |0 + |1 |1)
representan simultáneamente las combinaciones 00, 01, 10 y 11. En
este "paralelismo cuántico" se cifra la potencia del cómputo cuántico.
Una tercera característica importante es que múltiples qubits pueden
presentarse en un estado de entrelazamiento cuántico. En el estado no
entrelazado:
½ (|0 + |1) (|0 + |1) = ½ (|0 |0 + |0 |1 + |1 |0 + |1 |1)
pueden darse las cuatro posibilidades: que la medida del primer qubit
dé 0 ó 1 y que la medida del segundo qubit dé 0 ó 1. Esto es posible
porque los dos qubits de la combinación son separables (factorizables),
pues la expresión anterior puede escribirse como el producto (|0 + |1)
(|0 + |1)
© Vicente Moret Bonillo Página 136
El entrelazamiento es una característica no local que permite que un
sistema de qubits se exprese con una correlación más alta que la
posible en sistemas clásicos. Un sistema de dos qubits entrelazados no
puede descomponerse en factores independientes para cada uno de los
qubits. Este estado puede utilizarse para realizar la teleportación
cuántica.
Por último, cualquier sistema cuántico de dos niveles se puede utilizar
para representar un qubit. Los sistemas de niveles múltiples se pueden
utilizar también, si poseen dos estados que se puedan desemparejar
con eficacia del resto (por ejemplo, el estado de tierra y el primer estado
excitado de un oscilador no lineal). Hay varias opciones de este tipo de
sistemas que se han puesto en práctica con éxito. Además, distintas
implementaciones de qubits podrían emplearse juntas para construir
un computador cuántico, de la misma forma que se hace en la
computación clásica, en donde un bit puede representarse mediante el
estado de un transistor en una memoria, por el estado de
magnetización de un disco duro o por la transmisión de corriente en un
cable.
© Vicente Moret Bonillo Página 140
6. LA COMPUTADORA CUÁNTICA
Sea un sistema cuántico ideal. El sistema puede estar en uno
cualquiera de dos estados
Arriba ( ) : Estado excitado
Abajo ( ) : Estado no excitado
Espín ( ) Bit (1)
Espín ( ) Bit (0)
Construimos nuestro dispositivo de computación a partir de estos
átomos, uniéndolos unos a otros de una forma concreta.
Sea una parte, o todo, el sistema un conjunto de átomos cada uno de
los cuales está en uno cualquiera de los dos estados posibles. Esto
representa un número que es la entrada. Dejamos que el sistema
evolucione durante un tiempo t. La evolución se efectúa de acuerdo
con las leyes de la mecánica cuántica:
1. El sistema interacciona consigo mismo
2. Los átomos cambian de estado
3. Los 1 y los 0 se cambian
En un momento determinado tenemos un conjunto de átomos en
ciertos estados que representan la salida del sistema.
© Vicente Moret Bonillo Página 141
6.1. Un Planteamiento Cuasi-Cuántico de Algunas Operaciones
Reversibles
La figura 6.1 ilusta algo que ya sabemos sobre la operación lógica
reversible NOT.
Figura 6.1. Más sobre la operación lógica reversible NOT.
Si A es una matriz de aniquilación y A* es una matriz de creación,
entonces se dan los resultados de la tabla 6.1, teniendo en cuenta que
A* es la transpuesta conjugada de A.
Negación NOT Aniquilación A Creación A*
A A´ A A´ A A´
0 1 0 1 0 0
1 0 0 0 1 0
Tabla 6.1. Operaciones de aniquilación y creación.
A
A
A
A´
A´
A´ A´ = NOT A = A
© Vicente Moret Bonillo Página 142
También podemos operar con estas matrices, según de muestra en la
tabla 6.2.
A A* A* A
1 0 0 0
0 0 0 1
Tabla 6.2. Operaciones con matrices de aniquilación y creación.
Según lo anterior, se deduce inmediatamente que:
A A* = |1 : A*A = |0
Por lo tanto:
NOT = A + A* : Identidad = A A* + A* A
Veamos ahora cómo podemos representar en notación matricial la
operación lógica reversible CN (Figura 6.2 y Tabla 6.3)
Figura 6.2. Otra vez la puerta reversible CN.
A
B
A’
B’
© Vicente Moret Bonillo Página 143
| A | B | A’ | B’
0 0 0 0
0 1 0 1
1 0 1 1
1 1 1 0
Tabla 6.3. Y otra vez la tabla de verdad de la puerta reversible CN.
Recordemos también que el funcionamiento de la puerta CN estaba
sujeto a las siguientes restricciones:
1. |A’ = |A
2. |A = |0 |B’ = |B
3. |A = |1 |B’ = ¬ |B
De acuerdo con lo anterior, y considerando lo dicho sobre las matrices
de aniquilación y creación, la operación lógica CN se puede
representar mediante la siguiente ecuación matricial:
CN = A A* (B + B*) + A* A
De forma completamente análoga procedemos con la operación lógica
reversible CCN, y de la cual también recordamos el aspecto de su
puerta asociada (Figura 6.3) y su tabla de verdad (Tabla 6.4)
© Vicente Moret Bonillo Página 144
Figura 6.3. Y ahora otra vez CCN.
| A | B | C | A’ | B’ | C’
0 0 0 0 0 0
0 0 1 0 0 1
0 1 0 0 1 0
1 0 0 1 0 0
0 1 1 0 1 1
1 0 1 1 0 1
1 1 0 1 1 1
1 1 1 1 1 0
Tabla 6.4. Sí, sí... es la tabla de verdad de CCN.
A
B
C
A’
B’
C’
© Vicente Moret Bonillo Página 145
En CNN las restricciones que aplican son las siguientes:
1. |A’ = |A
2. |B’ = |B
3. Si |A = |0 |B = |0 |C’ = |C
4. Si |A = |0 |B = |1 |C’ = |C
5. Si |A = |1 |B = |0 |C’ = |C
6. Si |A = |1 |B = |1 |C’ = ¬ |C
La representación matricial de la operación lógica reversible CCN se
obtiene recordando que:
|A = |1 A A*
|A = |0 A* A
|B = |1 B B*
|B = |0 B* B
|C = |1 C C*
|C = |0 C* C
NOT = X + X*
Identidad = X* X + X X*
© Vicente Moret Bonillo Página 146
Y, por lo tanto:
CCN = A A* B B* (C+C*) +A* A B* B + A* A B B* + A A* B* B
Vamos ahora a encontrar la expresión matricial de la operación de
bifurcación, de la cual –como siempre-, recordamos el aspecto de su
puerta asociada FO (Figura 6.4).
Figura 5.4. Y ¡cómo no!... Otra vez Fanout.
La representación de la figura 6.4 no nos dice mucho sobre cómo
podemos abordar el problema de la representación matricial de una
bifurcación. La cuestión se simplifica mucho si, por ejemplo, somos
capaces de configurar hábilmente –digamos una puerta CN para
obtener el resultado buscado. La figura 6.5 muestra la solución.
A
A
A
© Vicente Moret Bonillo Página 147
Figura 5.5
Figura 6.5. Una representación de Fanout con CN.
Efectivamente, necesitamos dos salidas que repitan es estado de una
única entrada. Esto se puede conseguir utilizando la puerta CN y
fijando la entrada de la línea controlada «B» siempre estado |0. Con
esta configuración, los estados de las líneas de salida, A’ y B’, repiten
siempre el estado de la entrada de la línea de control «A», como se puede
comprobar en la tabla 6.5.
Tabla de verdad de la Bifurcación construída con una puerta CN
configurada
| A | B | A’ | B’
0 0 0 0
0 0 0 0
1 0 1 1
1 0 1 1
Tabla 6.5. Valores de verdad asociados al Fanout de la figura 6.5.
A
B = 0
A’ = A
B’ = A
© Vicente Moret Bonillo Página 148
Puestas así las cosas podemos empezar ya nuestro análisis para
deducir la formulación matricial de la bifurcación:
1. Cuando |A = |1 |B´ = |B : Negamos |B B + B*
2. Cuando |A = |1 A A*
3. Cuando |A = |0 A*A
4. Cuando |B = |0 B*B : Esto ocurre siempre
Ahora pueden ocurrir dos cosas:
1. Que |A = |0 y que |B = |0 en cuyo caso no hacemos nada.
Esto se puede escribir del siguiente modo: (A*A) (B*B)
2. Que |A = |1 y que |B = |0 en cuyo caso negamos |B. Esto se
puede escribir del siguiente modo: (A A*) (B*B) (B + B*)
Y como pueden suceder cualquiera de las opciones -es decir, la una o
la otra-, la solución es:
FO = (A A*) (B*B) (B + B*) + (A*A) (B*B)
Ahora, operando un poco:
FO = (A A*) (B*B) (B + B*) + (A*A) (B*B) =
= (A A*) (B*B) (B + B* 1) + (A*A) (B*B) + (A A*) (B*B) =
= (A A*) (B*B) (B + B* 1) + [(A*A) + (A A*)] (B*B) =
= (A A*) (B*B) (B + B* 1) + (B*B)
Por lo tanto, la ecuación matricial de la bifurcación reversible es:
FO = (A A*) (B*B) (B + B*) + (A*A) (B*B) = (A A*) (B*B) (B + B* 1) + (B*B)
© Vicente Moret Bonillo Página 149
Nos quedan todavía por tratar dos puertas reversibles: el intercambio
EX, y el intercambio controlado o puerta de Fredkin. Sin embargo no
desarrollaremos aquí sus expresiones matriciales. En este texto nos
limitaremos a indicar cómo pueden obtenerse, sugiriendo –eso sí las
combinaciones de otras puertas reversibles que pueden llevarnos hasta
la solución. Dejamos el resto como ejercicio para el lector estudioso.
El intercambio puede obtenerse mediante una arquitectura como la
mostrada en la figura 6.6, y que combina tres puertas CN. La
evolución de los valores que circulan por cada línea, y en cada paso,
aparecen representados en la tabla 6.6.
Figura 5.7
Figura 6.6. Una arquitectura para un intercambio reversible.
A0
B0
Af
Bf
A1
B1
A2
B2
© Vicente Moret Bonillo Página 150
Evolución de estados en un intercambio construído combinando 3
puertas CN
|A0 |B0 |A1 |B1 |A2 |B2 |Af |Bf
0 0 0 0 0 0 0 0
0 1 0 1 1 1 1 0
1 0 1 1 0 1 0 1
1 1 1 0 1 0 1 1
Tabla 6.6. Valores de verdad asociados a la arquitectura de la figura 6.6.
Para terminar con las puertas, simplemente recordar que la puerta de
Fredkin realiza un intercambio controlado de las líneas de la entrada,
tal y como se ilustra en la tabla 6.7.
Tabla de verdad de un intercambio controlado o puerta de Fredkin
|A0 |B0 |C0 |Af |Bf |Cf
0 0 0 0 0 0
0 0 1 0 0 1
0 1 0 0 1 0
1 0 0 1 0 0
0 1 1 0 1 1
1 0 1 1 1 0
1 1 0 1 0 1
1 1 1 1 1 1
Tabla 6.7. Valores de verdad de una puerta de Fredkin.
© Vicente Moret Bonillo Página 151
El mismo tratamiento puede darse a cualquier operación más compleja.
Por ejemplo, en el caso del semisumador de la figura 6.7, habría que
considerar la evolución de los estados de cada línea, en cada paso del
proceso de suma (Tabla 6.8)
Figura 5.9
Figura 6.7. Y otra vez el semisumador.
|A0 |B0 |C0 |A1 |B1 |C1 |Af |Sf |Kf (|A0 + |B0) (|Sf + |Kf)
0 0 0 0 0 0 0 0 0 0 0 0 0
0 1 0 0 1 0 0 1 0 0 1 1 0
1 0 0 1 0 0 1 1 0 1 0 1 0
1 1 0 1 1 1 1 0 1 1 1 0 1
Tabla 6.8. Valores de verdad del semisumador de la figura 6.7.
En cuanto al sumador completo la solución pasa por seguir los pasos
indicados en la figura 6.8, que se corresponden con la estructura lógica
que se muestra a continuación, y cuyo resultado final aparece
representado en la tabla 6.9.
A0
B0
C0= 0
A1
B1
C1
A2
B2
C2
Af
Sf
Kf
© Vicente Moret Bonillo Página 152
c[A0, B0, C0, D0 = 0] = [Af, Bf, Sf, Kf]
Operación efectuada:
c = |CCN(Da,b)||CN(Ba)||CCN(Db,c)||CN(Cb)||CN(Ba)|
Figura 5.10
Figura 6.8. Una arquitectura para el sumador completo.
|A0 + |B0 = |Sf + |Kf Comentarios sobre arrastres previos
0 0 0 0 Sin acarreo previo
0 0 1 0 Con acarreo previo
0 1 1 0 Sin acarreo previo
0 1 0 1 Con acarreo previo
1 0 1 0 Sin acarreo previo
1 0 0 1 Con acarreo previo
1 1 0 1 Sin acarreo previo
1 1 1 1 Con acarreo previo
Tabla 6.9. Valores de verdad del sumador completo.
A0 B0 C0 D0 = 0
A1
B1
C1
D1
A2
B2
C2
D2
A3 B3 C3 D3
A4 B4 C4 D4
Af Bf Sf Kf
© Vicente Moret Bonillo Página 153
6.2. El Hamiltoniano de la Computación Cuántica
Vamos a entrar ahora en el meollo de la cuestión: el diseño de un
operador que nos sirva para realizar computaciones al más puro estilo
cuántico.
Si nos fijamos, hasta ahora sólo hemos necesitado cuatro átomos [a, b,
c, d] para representar casi cualquier operación que hemos necesitado.
Además, cada átomo podía ser un bit |0 o un bit |1. Considerado
como un todo, nuestro sistema cuántico de cuatro átomos estará, en un
instante dado, en el estado: |a, b, c, d. Si llamamos M a la matriz de la
unidad o estructura lógica que genera la transformación42, entonces
consideremos lo siguiente:
M |a, b, c, d = |a’, b’, c’, d’
|in = |a, b, c, d Estado del sistema definido por la entrada
|out = |a’, b’, c’, d’ Salida del sistema
Entonces: |out = M |in
Vamos a ilustrar estas ideas con un ejemplo. Supongamos que
queremos realizar una suma completa sobre un sistema cuyo estado
inicial es |in = |1, 0, 1, 0. Evidentemente, el operador M, tal y como
lo hemos denotado antes, será c, y –como se puede comprobar sin
más que construir la tabla de verdad del sumador completo, el
resultado será: |out = M | in = c |1, 0, 1, 0 = |1, 0, 0, 1,
donde –como ya hemos dicho:
c = |CCN (Da,b)||CN(Ba)||CCN(Db,c)||CN(Cb)||CN(Ba)|
42 O lo que es lo mismo, que realiza nuestra computación cuántica.
© Vicente Moret Bonillo Página 154
En donde representamos las operaciones reversibles según el orden de
aplicación convencional de las operaciones primitivas sucesivas.
Si utilizamos la notación de Feynman podemos escribir c como un
producto de matrices, en donde el orden de aplicación es de derecha a
izquierda:
c = Aa,b Ab,c Abc,d Aa,b Aab,d
Donde:
Aa,b = CN(Ba)
Ab,c = CN(Cb)
Abc,d = CCN(Db,c)
Aab,d = CCN(Da,b)
La formulación general del problema es la siguiente: Sea A1, A2, A3,… Ak
la sucesión o secuencia de operaciones requerida para que una
determinada unidad lógica compleja opere sobre |n| líneas.
Necesitamos una matriz Mn de 2n 2n que podemos construir como:
Mn Ak… A3 A2 A1
donde cada Ai de este producto es una matriz sencilla, lo que equivale a
una operación elemental. Pero el problema ahora es: ¿cómo generamos
físicamente Mn si sabemos construir los elementos más sencillos?
Al respecto, la mecánica cuántica predice que el estado de la salida de
un sistema en un instante cualquiera || es:
|out = e i |in = exp (i) |in
© Vicente Moret Bonillo Página 155
Donde:
es el tiempo
es el Hamiltoniano
|in es el estado de la entrada
|out es el estado de la salida
Evidentemente:
Mn = e i = exp (i)
Tenemos que encontrar el hamiltoniano de forma que:
1. / dado Mn = e i = exp (i)
2. Mn es un producto de matrices no conmutativas
Pero hacer lo anterior a partir de alguna propiedad sencilla de las
propias matrices es una tarea formidable. Afortunadamente podemos
resolver la cuestión, al menos en parte, considerando que:
1. Para un dado : e i = exp (i) 1 + i - (22)/2 …
2. El hamiltoniano opera un número arbitrario de veces
3. El estado global se obtiene por superposición
Y para realizar la composición de matrices Ai hacemos lo siguiente:
Sean los |n| átomos del registro. Añadimos un conjunto nuevo de
|k+1| átomos que configuran lo que vamos a llamar43 el contador de
posiciones del programa. Denotamos como qi al operador de
aniquilación de la posición |i| y como q*i al operador de creación de
la posición |i|, de tal forma que ambos qi y q*i operan desde |i = 0|
43 Por razones que pronto veremos.
© Vicente Moret Bonillo Página 156
hasta |i = k|. Necesitamos ahora un electrón cambiando
continuamente de una posición a otra. Así, si en un dado una posición
está vacía el estado de esa posición es |0, y si en un dado una
posición está ocupada el estado de esa posición es |1. Con este
planteamiento Feynman propone como Hamiltoniano:
1
0
1
*
1 _k
i
iii conjugadocomplejoAqq
...... *
33
*
2
*
22
*
1
*
11
*
032
*
321
*
210
*
1 AqqAqqAqqAqqAqqAqq
Vamos a ver con algo de detalle el funcionamiento de todo este follón:
Si todas las posiciones del programa están libres, entonces todos los
átomos del programa están en el estado |0, por lo tanto no hay
cambios ya que cada término del hamiltoniano comienza con un
operador de aniquilación. Esto significa que la expresión para sólo es
cierta (H es ) cuando una y sólo una de las posiciones del programa
está ocupada.
H es |i = |1 |j = |0 : i j i
Como consecuencia de lo anterior el número de posiciones del programa
en estado |1 es siempre el mismo. Además, durante el proceso de
cómputo sólo puede ocurrir que no haya posiciones ocupadas –en cuyo
caso no pasa nada, o que sólo haya una posición ocupada en cuyo
caso se realiza una computación elemental. Por otra parte, durante un
proceso normal de cómputo, dos o más posiciones de programa no
pueden estar ocupadas simultáneamente.
Para tratar de entender qué es lo que está pasando en nuestra infernal
computadora cuántica consideremos lo siguiente: Sea un sistema en
un estado inicial |0…
© Vicente Moret Bonillo Página 157
1. Cuando |i = 0| Posición (Pos) = 0 |Pos = 0 = |1
2. Dejamos transcurrir un tiempo arbitrario ||
3. Observamos que |Pos k = |1
4. Observamos que |Pos k = |0
5. El registro |n| ha sido multiplicado por la matriz : M = Ak… A3 A2 A1
6. La operación ha sido realizada
Qué… ¿todavía nada? Pues vamos a seguir intentándolo yéndonos un
poco más al detalle.
1. Sea un registro de tres átomos: |n| = 3
2. Sean 4 operaciones elementales: |k| = 4
3. Número de posiciones del registro contador de programa: |k + 1| = 5
4. k = 0 : k = 1 : k = 2 : k = 3 : k = 4
5. |Pos = |1,0,0,0,0 : |0 |1 = A1 |0 : |Pos = |0,1,0,0,0
6. |Pos = |0,1,0,0,0 : |1 |2 = A2 |1 : |Pos = |0,0,1,0,0
7. |Pos = |0,0,1,0,0 : |2 |3 = A3 |2 : |Pos = |0,0,0,1,0
8. |Pos = |0,0,0,1,0 : |3 |4 = A4 |3 : |Pos = |0,0,0,0,1
Explicamos el ejemplo:
Al principio, el sistema de |n| átomos está en el estado |0 y la
posición |0| del registro contador está ocupada. En estas condiciones,
el término de que puede operar es |q1*q0A1|. La situación es:
© Vicente Moret Bonillo Página 158
- q0 : |pos (0) pos (desocupada)
- q1* : |pos (0) pos (ocupada)
- q1*q0 : |1pos (0) pos (1)
Ahora multiplica la matriz A1, que opera sobre los |n| átomos. No
obstante, es conveniente recordar que si a y a* son, respectivamente
operadores de aniquilación, el resultado de sus acciones sobre los
estados posibles es el siguiente:
- Si a es un operador de aniquilación
a : |1 |0
a : |0 |0
- Si a* es un operador de creación
a* : |0 |1
a*: |1 |0
Por lo tanto q0 aniquila la posición |0| y q1* crea en la posición |1|.
Ahora se puede ver con claridad que:
- Si qi+1 es |aniquilación|, entonces para la posición |i + 1|
|1i+1 |0i+1
|0i+1 |0i+1
- Si qi* es |creación|, entonces para la posición |i|
|0i |1i
|1i |0i
© Vicente Moret Bonillo Página 159
Describimos a continuación el funcionamiento del programa, para lo
cual establecemos ciclos.
Primer Ciclo
- Registro contador de posiciones de programa
|i|=0 : |Pos (i) = |1 : |Pos ( i+1 k ) = |0
|Pos0 = |1, 0, 0,…,0
- Registro de |n| átomos en su estado inicial
|0 = |x1, x2,…, xn0 : xi = 0 , 1
- Opera el primer término de : q1*q0A1
A1 opera sobre el registro de |n| átomos: |1=A1 |0
q1*q0 : |1, 0, 0,…,0 |0, 1, 0,…,0
Si A1 quisiera volver a operar no podría porque |Pos (0)= |0
Segundo Ciclo
- Registro contador de posiciones de programa
|i|=1 : |Pos (i) = |1 : |Pos ( j = 0 k , j i ) = |0
|Pos1 = |0, 1, 0,…,0
- Registro de |n| átomos en su nuevo estado
|1 = |x1, x2,…, xn1 : xi = 0 , 1
- Término de que opera: q2*q1A2
A2 opera sobre el registro de |n| átomos: |2=A2 A1 |0
q2*q1 : |0, 1, 0,…,0 |0, 0, 1,…,0
Se sigue moviendo el cursor y las operaciones elementales
primitivas son aplicadas en el orden correcto y se va realizando la
operación compleja M.
© Vicente Moret Bonillo Página 160
En todo este lío hay un conjunto de restricciones que siempre tenemos
que considerar. Por ejemplo, un hamiltoniano || tiene que ser
hermítico por lo que los complejos conjugados tienen que estar
presentes. Además, a una posición |j| se puede llegar desde |j 1| o
desde |j + 1|, pero el resultado tiene que ser el mismo venga de donde
venga… ¿se cumplen estas restricciones con nuestro diseño?
Analicemos lo que pasa.
Sea |Pos (1) = |1 y ya ha operado A2A1|Registro(n) . Si ahora actúa
q2*q1, se movería el cursor a |Pos (2) = |1 lo se traduciría en |012 =
A3 A2 A1|0. Por el contrario, si actuase q1*q2 el cursor se movería a
|Pos (0) = |1 lo que se traduciría en el nuevo estado |010 = A2* A2
A1|0. Pero sabemos ya que A2* A2 = 1 por lo cual –como no podía ser
de otra manera |010 = A1|0.
El resultado neto es que el estado del registro |n| depende de la
posición del cursor
6.3. Configuración y Mejora del Computador Cuántico
Para poner en marcha nuestro computador cuántico podemos seguir el
siguiente protocolo:
1. Configurar la entrada en el registro de |n| átomos
2. Poner el cursor en la posición |0| : |Pos (0) = |1
3. Dejar que el sistema evolucione
4. Observar continuamente (e.g.: por dispersión electrónica) la
posición del cursor
5. Cuando |Pos (Final = |1 hacer |Pos (Final = |0
6. Al tener el cómputo interrumpido ya podemos medir el
registro |n|
© Vicente Moret Bonillo Página 161
El principal problema que vamos a tener, y que todavía dista mucho de
estar resuelto es el de la interacción con el mundo exterior para
configurar las entradas y leer la salida. De todas formas se puede
demostrar matematicamente que el comportamiento del cursor es
analogo al de un conjunto de ondas de propagacion de electrones
fuertemente ligados, o al de un conjunto de ondas de espín en una
dimensión, lo cual nos puede dar alguna pista.
Para facilitar la puesta en marcha, y la parada, de nuestra computadora
cuántica supongamos que, además de las posiciones internas usadas
en la computación, creamos una nueva línea de posiciones muchas
antes y muchas después tal y como se muestra en la tabla 6.10.
- Por aquí
introducimos
Por aquí
procesamos
Por aquí extraemos
Cursor i z y x t … 0 1 2 … k k+1 k+2 k+3 k+4 …
Operación 1 1 1 1 1 A1 A2 A3 … Ak+1 1 1 1 1 1
Tabla 6.10. Mejorando la computadora cuántica.
De este modo puede considerarse como si tuviéramos valores del índice
|i| de qi tal que:
(i < 0) (i > k) / Ai ( 1)
El funcionamiento de este engendro, en el que tenemos una cadena de
espín mucho más larga, es el siguiente:
© Vicente Moret Bonillo Página 162
1. Antes de computar (i < 0) y la computadora no hace nada:
|i = |In i < 0
2. Después de computar (i > k) y la computadora no hace nada:
|i = |Out i < 0
3. Empezaremos con |i = 0| o con | i | en otras posiciones i < 0
4. Terminaremos con |i = k| o con | i | en otras posiciones i > k
Y así podemos capturar al cursor más fácilmente.
© Vicente Moret Bonillo Página 166
7. UN PASEO POR LA ENERGÍA
Vamos a plantearnos ahora una cuestión completamente distinta a la
anterior, y mucho más cercana a la física tradicional: ¿Existe alguna
relación entre la energía, la información y la computación? Le respuesta
parece trivial. Los que trabajamos con ordenadores –que hoy en día
somos casi todos- sabemos que sí. Cuanto más tiempo estamos
conectados (supongamos que trabajando) más información
manipulamos, más se calienta el equipo, y durante más tiempo
funciona el molesto ventilador del ordenador…
La energía (en forma de calor, ruido, etc.) está omnipresente cuando
realizamos una computación (si no se lo cree intente realizar algo tan
sencillo como una suma con el ordenador desconectado y sin baterías).
Esta perspectiva energética de la computación (y recordemos que
computamos información) está directamente relacionada con el soporte
físico de la misma. En efecto, para realizar una computación es preciso
el flujo de electrones a través de cables y dispositivos, lo que genera
fricción que se disipa en forma de calor. Para evitar que este calor
estropee el equipo debemos refrigerarlo, por lo que instalamos un
ventilador que necesita energía para funcionar y que además genera
ruido –otra forma de energía-. Además el propio ordenador necesita
estar alimentado para poder trabajar con él. ¡Hay energía por todas
partes!... pero no es esto lo que nos interesa aquí. Y ya hemos dicho que
trataríamos de hablar de la computación en sí misma. Para ello nos
acercaremos a las cuestiones energéticas de la computación desde la
información que manipulamos44, y poco a poco iremos profundizando
en la cuestión.
44 Obviaremos la diferencia conceptual que existe entre información y dato. No es relevante en nuestra
discusión.
© Vicente Moret Bonillo Página 167
7.1. Información y Entropía
Consideremos el sistema representado en la figura 7.1. En dicho
sistema, que está constituido por dos depósitos conectados entre sí por
medio de un tubo que se puede abrir o cerrar con una válvula, hay dos
tipos de partículas diferentes y perfectamente distinguibles: partículas
(x) y partículas (o). La figura representa al sistema en dos estados
distintos. En el estado 1 todas las partículas (o) están a la izquierda,
todas las partículas (x) están a la derecha, y la válvula está cerrada. En
el estado 2 la válvula está abierta y ambos tipos de partículas (o) y (x) se
distribuyen homogéneamente en ambos depósitos. Consideremos a
nuestro sistema desde una perspectiva macroscópica: Si el número de
ambas partículas es grande… ¿cómo podemos evaluar energéticamente
la cantidad de información contenida en ambos estados de nuestro
sistema?
Figura 7.1.
Vamos a tratar de responder a esta pregunta a través de la mecánica
estadística, también denominada termodinámica estadística. En
mecánica estadística se define el concepto de entropía del siguiente
modo: “La entropía es una medida del desorden de un sistema, igual a
la constante de Boltzmann por el logaritmo natural del número de
Estado 1 Estado 2
© Vicente Moret Bonillo Página 168
estados microscópicos correspondientes al estado termodinámico del
sistema”… ¡Qué curioso! Así que de acuerdo con la definición anterior:
S = k ln(N)
expresión en la que S es la entropía, k es la constante de Boltzmann, y
N es el número de estados microscópicos correspondientes al estado
termodinámico del sistema… veamos ¿a qué me suena esto?
Recordamos que la cantidad de información definida por Shannon era:
= k ln(N)
quizás la “k” y la “N” no sean las mismas en ambas expresiones (o sí, en
todo caso no nos importa), pero las ecuaciones son idénticas… debe
haber algún nexo de unión entre la entropía y la cantidad de
información de un sistema. Sigamos razonando: si la entropía es una
medida del desorden de un sistema, está claro que el estado 2 está
mucho más desordenado que el estado 1. Dicho de otro modo, hay
muchos más estados microscópicos posibles en el estado 2 que en el
estado 1 –podemos distinguir perfectamente una partícula (x) de una
partícula (o), pero todas las partículas (x) son iguales entre sí. Lo mismo
podemos decir de todas las partículas (o). Por lo tanto la entropía del
estado 1 es mucho menor que la del estado 2. Si N(1) es el número de
microestados del estado 1, y N(2) es el número de microestados del
estado 2, entonces:
S(1) = entropía del estado 1 = k ln[N(1)]
S(2) = entropía del estado 2 = k ln[N(2)]
Pero en física no tiene mucho sentido hablar de entropías absolutas;
por el contrario, se trabaja con incrementos de entropía. Así:
© Vicente Moret Bonillo Página 169
∆S = S(2) – S(1) = k Ln [N(2)] – k Ln[N(1)] = k Ln [N(2)/N(1)]
En esta formulación subyace la asunción de que partimos del estado 1,
abrimos la válvula, y dejamos que el sistema evolucione. De este modo
las partículas se desordenan, y la entropía del sistema aumenta, por lo
que ∆S es positivo. Pero analicemos ahora qué ha pasado con nuestra
información. Cuando tenemos a nuestro sistema en el estado 1
sabemos muchas cosas… sabemos que todas las partículas (o) están a
la izquierda y que todas las partículas (x) están a la derecha.
Abramos ahora la válvula y dejemos que el sistema empiece a
evolucionar. Al principio del proceso –es decir, justo después de abrir la
espita- podemos saber que “casi” todas las (o) están a la izquierda y
“casi” todas las (x) están a la derecha, pero ya hay algunas partículas
infiltradas en el depósito que no les toca. Estoy perdiendo información.
Cuando el sistema alcanza el equilibrio (lo que –más o menos- quiere
decir que, macroscópicamente, ya no evoluciona más) he perdido toda
la información. De hecho, si con el sistema en el estado 1 alguien me
pidiese que sacara del sistema una partícula (x) iría directamente al
depósito de la derecha y sacaría una cualquiera sin fijarme, seguro de
que le daba la partícula correcta. Si alguien me pidiese lo mismo con el
sistema en el estado 2, iría a uno cualquiera de los depósitos, sacaría
una partícula, comprobaría que es una (x) y, en caso contrario,
devolvería la partícula al sistema y seguiría probando hasta que el azar
quisiera darme por fin una maldita partícula (x).
Decir que es el azar quien guía el éxito de nuestra misión con el sistema
en el estado 2 es lo mismo que decir que en el estado 2 nuestra
información es nula. Por lo tanto, si ∆ es el incremento de información
© Vicente Moret Bonillo Página 170
cuando pasamos de estado 2 al estado 1, (1) es la información
asociada al estado 1, y (2) es la información asociada al estado 2:
∆ = (2) (1) = (1)
puesto que ya hemos dicho que podemos asumir perfectamente que
nuestra información sobre el estado 2 es nula.
Recapitulemos ahora: partiendo del estado 1 y dejando que el sistema
evolucione de manera espontánea hasta alcanzar la situación de
equilibrio del estado 2, se produce un incremento de entropía, pero
también se produce una pérdida de información.
De acuerdo con nuestra formulación anterior (y olvidándonos de que la
“k” y las “N”, pueden no ser las mismas), podríamos decir que la pérdida
de información que se produce cuando dejamos que el sistema
evoluciones de forma espontánea “equivale” a un incremento de
entropía del sistema. No obstante seremos algo más precavidos y
diremos que:
[∆ = - (1)] ∆S
expresión que interpretamos del siguiente modo: La pérdida de
información que se produce al dejar que el sistema evolucione
espontáneamente está relacionada con el aumento de entropía del
sistema. Dejamos como ejercicio la comprobación o refutación de la
equivalencia antes mencionada.
Podemos encontrar muchísimos ejemplos de lo que acabamos de
establecer en la vida cotidiana. Unos más complicados que otros. Yo
© Vicente Moret Bonillo Página 171
sugiero que visualicen lo que acabamos de comentar tratando de
responder a una misma pregunta en dos escenarios diferentes:
Pregunta: ¿Dónde estarán mis calcetines azules?
Escenario 1: Estamos buscándolos en casa de mamá
Escenario 2: Estamos buscándolos en nuestro apartamento de
estudiante
Hasta ahora hemos tratado de relacionar la computación con la energía,
pero la verdad es que no lo hemos conseguido del todo. A lo más que
hemos llegado es a establecer un vínculo entre la entropía de un
sistema y la información. De todas formas no estamos lejos: hay una
función termodinámica, la energía libre, que nos relaciona la energía
interna de un sistema con su entropía. Hablaremos algo más adelante
sobre esta energía libre y sobre su relación con la computación. Pero
antes vamos a plantearnos una interesantísima pregunta a la que
Richard Feynman dedicó parte de su tiempo.
7.2. Energía y Computación
¿Cuánta energía hace falta para llevar a cabo una computación?
Volvemos a una cuestión anterior. Si hablamos de la relación entre el
soporte físico de la computación y la computación propiamente dicha,
ya habíamos visto que la energía aparece por todas partes. Más aún,
precisando sobre el término computación, es claro que cuanto mayor
sea la velocidad a la que esta computación es efectuada, mayor será la
energía disipada en forma de calor.
Al respecto, Shannon pretendía resolver el problema de la transmisión
de mensajes a través de cables reales, lo cual suponía la existencia de
inevitables interferencias con el mundo físico. Esto, a su vez, nos abría
la posibilidad de abordar el problema de la computación desde la física.
© Vicente Moret Bonillo Página 172
Pero la cuestión que Feynman se plantea es otra: ¿Cuál es la energía
mínima necesaria para llevar a cabo una computación? Según el propio
Feynman declara, el problema es ahora de naturaleza estrictamente
académica, y necesitaremos realizar un pequeño esfuerzo de
abstracción para abordarlo45.
Para ello, el punto de partida será la definición física del contenido de
información de un mensaje. Esta definición surge tras los trabajos de
Shannon cuando resuelve el problema de la transmisión de mensajes a
través de cables reales, lo que implica interferencias con el mundo
físico, y la posibilidad de abordar el problema de la computación desde
la física.
Vamos al grano… consideremos el siguiente modelo sencillo:
1. Un número no determinado de cajas pegadas entre sí
2. En cada caja hay una partícula
3. Cada partícula puede estar a la derecha de la caja o a la izquierda
de la caja
4. Si una partícula está a la derecha es un bit |0
5. Si una partícula está a la izquierda es un bit |1
Así las cosas, cuando la fila de cajas pasa por delante de mí, mirando
dónde está cada partícula puedo obtener el correspondiente bit.
… |0 |0 |1 |1 |0 |1 …
… …
¿Cómo funciona todo esto desde un punto de vista físico…? Vamos a la
teoría cinética de los gases para saberlo.
45 En esta discusión seguimos los planteamientos de Feynman publicados en “Conferencias sobre
Computación, Crítica, eds., 2003.
© Vicente Moret Bonillo Página 173
1. Sea un gas con N partículas
2. El gas ocupa un volumen V1
3. Cada partícula del gas es libre
4. Las partículas de gas no interaccionan entre sí46
Ahora, mediante un pistón, realizamos una compresión isotérmica del
gas, para lo cual introducimos a nuestro sistema en un baño térmico a
una temperatura fija T. Con esta configuración, a nuestro sistema físico
le ocurre lo siguiente:
1. La temperatura del sistema permanece constante: T = cte
2. El volumen se modifica: V1 V2
La pregunta que tratamos de responder ahora es... ¿Cuánto trabajo se
necesita para comprimir el gas?
La física elemental nos enseña que:
W = F x
En donde |W| es el trabajo realizado, |F| es la fuerza necesaria para
desplazar el pistón, y |x| es el desplazamiento del pistón.
46Esto significa que no hay fuerzas de atracción o de repulsión entre las partículas del gas, lo cual es
cierto a presiones bajas.
V1 V2
Baño Térmico a Temperatura Constante
© Vicente Moret Bonillo Página 174
Ahora, si |p| es la presión del gas, y si |A| es el área del pistón, y si
|V| es el volumen que ocupa el gas en un instante dado, tenemos que:
F = p A
V = A x
W = p V
Pero según la teoría cinética de los gases:
p V = N k T
Expresión en la que |N| es el número de partículas del gas, |k| es la
constante de Boltzmann, y |T| es la temperatura del sistema, que es
constante. Si sustituimos valores e integramos, obtenemos la ecuación
siguiente, que nos relaciona el trabajo puesto en juego en la compresión
isoterma, con la variación de volúmenes del gas, antes y después de la
compresión:
2
1 1
2ln
V
V V
VNkTdV
V
NkTW
Todo esto implica varias cosas que conviene analizar:
1. W es negativo, nada grave. Por convenio, el trabajo realizado para
comprimir un gas es negativo
2. Generalmente, cuando un gas es comprimido, el gas se calienta.
Sin embargo, en nuestro la energía cinética no ha variado
3. El baño térmico ha absorbido el incremento de energía de las
partículas del gas, ya que hemos forzado a nuestro systema a una
compresión isotérmica
© Vicente Moret Bonillo Página 175
4. Para conseguirlo, además de todas las restricciones anteriores
(i.e., baño térmico, fricción,…), el proceso debe realizarse muy
lentamente47
5. Sin embargo, la termodinámica del proceso ha cambiado. Ha
habido un cambio de estado
Efectivamente, el cambio de volumen durante el proceso de compresión
isotérmica, de V1 a V2, implica una variación en la energía total del
sistema < U >. Resulta que, en termodinámica, los cambios de estado se
estudian a partir de dos conceptos fundamentales: la energía libre < F >
y la entropía < S >, que se relacionan por medio de la ecuación:
F = U TS
En esta ecuación, < U > es la energía total del sistema, y < T > es la
temperatura.
La energía libre < F > nos permite tratar diferencias entre estados
cuando entre ellos no hay diferencias mecánicas. Así, si la temperatura
es constante:
F = U TS
Como la energía total no ha variado…
U = 0
Por lo que…
F = TS
Evidentemente, F es la energía que se ha llevado el baño térmico, que
es la misma que la que hemos necesitado para realizar la compresión
isotérmica. Por lo tanto:
47 Los procesos que se realizan muy lentamente se denominan procesos cuasi-estáticos.
© Vicente Moret Bonillo Página 176
F = W = NkT ln (V1/V2)
Sustituyendo valores resulta que:
S = Nk ln (V2/V1)
Toda esta argumentación no es más que una aplicación directa del
segundo principio de la termodinámica, según el cual, para procesos
reversibles48, si < Q > es la energía calorífica puesta en juego durante el
proceso:
S = (1/T) F (1/T) Q
Si, por el contrario, el proceso es irreversible, la expresión es:
S (1/T) F (1/T) Q
Consideremos ahora que nuestro sistema gaseoso sólo tiene una
partícula. Por lo tanto: < N > = 1, y conceptos como la temperatura, la
presión, el volumen, la energía libre, o la entropía, aparentemente no
están definidos. Este aparente sinsentido se resuelve recordando que la
termodinámica es una ciencia estadística. Para dotar de significado
físico a los conceptos anteriores, basta con permitir que nuestra única
partícula evolucione libremente durante un tiempo suficientemente
largo. Luego, lo único que tenemos que hacer es promediar.
Consideremos la situación de la figura, en la que el proceso de
compresión isotérmica resulta en una reducción del volumen que ocupa
el gas a la mitad mientras la partícula confinada va saltando como loca
por ahí.
48 ¡Vaya…! Otra vez por aquí nuestra amiga la reversibilidad.
© Vicente Moret Bonillo Página 177
En este caso:
V2 = (1/2) V1
Por lo que:
F = kT ln (2)
Y, en consecuencia:
S = k ln (2)
Este ejemplo pone de manifiesto cuestiones muy interesantes. Así, el
estado físico del sistema parece no haber cambiado. Además, la energía
cinética de la partícula es la misma. Sin embargo < F > y < S > han
cambiado. ¿Cómo podemos interpretar este cambio…? Le explicación,
una vez dicha es muy intuitiva: El conocimiento sobre las posibles
posiciones de la partícula de gas es lo único que ha cambiado. En
nuestro ejemplo, después de la compresión hay menos lugares en los
que podemos buscar, y encontrar, a la partícula de gas.
Baño Térmico a Temperatura Constante
V1 V2 = (1/2) V1
© Vicente Moret Bonillo Página 178
7.3. Naturaleza Estadística de la Entropía
Todo lo dicho anteriormente se puede hacer porque la termodinámica es
una disciplina eminentemente estadística, y también lo son las
magnitudes físicas que le son propias: Temperatura, presión,… La
entropía < S > también es una magnitud de la termodinámica, pero su
naturaleza estadística difiere considerablemente de la de otras
variables. Así, la temperatura o la presión, por ejemplo, son magnitudes
estadísticas de carácter macroscópico que se obtienen a partir del
promedio de una suma de valores individuales, es decir, son realmente
el promedio de una suma de propiedades microscópicas. Por el
contrario, la entropía es una magnitud de naturaleza estadística, pero
está directamente relacionada con la probabilidad de que el gas esté en
la configuración en la que se encuentra49.
Si la probabilidad de una determinada configuración es < > se puede
demostrar fácilmente que:
S k ln
Donde < k > es la constante de Boltzmann.
Evidentemente, cuanto mayor es < > mayor es la entropía del sistema.
Por otra parte, como todas las probabilidades, las < > se suman. De
este modo siempre podemos calcular la probabilidad de encontrar al gas
en un rango de configuraciones. Además, cuanto menos sepamos de la
configuración de un gas, en más estados puede estar, mayor es < >, y
mayor es < S >
49 Una configuración es una ordenación concreta, o un conjunto de ordenamientos, posiciones y
momentos, para cada una de las N partículas constituyentes de un sistema. Más generalmente, se define
configuración como un punto o región concreta del llamado < Espacio de Fases >
© Vicente Moret Bonillo Página 179
Analicemos ahora qué le pasa a la entropía en una compresión
isoterma. En este caso particular ya hemos comentado que el momento
de las partículas del gas no ha cambiado, por lo tanto:
U = 0
Sin embargo, cada partícula del gas tiene acceso a menos posiciones
espaciales. Esto significa que el gas tiene ahora una configuración con
menor probabilidad y, por lo tanto, su entropía ha disminuido. Pero, por
la segunda ley de la termodinámica, la entropía total de un sistema
nunca disminuye:
S k (/) 0
¿Cómo se explica este embrollo…?
Para entender qué es lo que está pasando no hay que perder la
perspectiva del conjunto, y es que nuetro sistema no está aislado. Y es
que para realizar la compresión de manera isotérmica hemos tenido que
evacuar el calor generado durante la compresión al baño térmico, y este
flujo de calor que llega al baño térmico incrementa la entropía.
De lo dicho hasta ahora podemos concluir que cuanta menos
información tenemos sobre un estado mayor es su entropía.
Realicemos ahora un pequeño análisis para comprobar que nuestro
planteamiento es correcto. Por una parte, la naturaleza estadística de la
entropía nos permite definirla para un sistema de una única partícula.
Por otra parte, si en nuestro sistema de cajas, pistones, y baños
térmicos, comprimimos el volumen en un factor 2 dividimos a la mitad
el número de posiciones espaciales de la partícula. Pero esto equivale a
decir que dividimos a la mitad el número de configuraciones que la
partícula puede ocupar y, por lo tanto:
© Vicente Moret Bonillo Página 180
S = k ln 2
Parece que, por ahora, las cosas nos van saliendo bien.
7.4. La Energética Computacional de Feynman
A continuación vamos a tratar de relacionar toda esta física con
nuestros sistemas computacionales. Para ello debemos recordar
primero que tratamos de averiguar cuál es la energía mínima necesaria
para realizar una computación elemental. Consideremos el esquema
siguiente, que ilustra la estructura de un mensaje típico escrito sobre
una cinta sin fin que transporta cajas con bits |0 y bits |1, de
acuerdo con el criterio ya establecido anteriormente.
… |0 |0 |1 |1 |0 |1 …
… …
En un mensaje típico sobre algunos de los bits no tenemos
conocimiento previo; sin embargo, sobre otros sí tenemos conocimiento
previo. Pues bien, resulta que la cantidad de información de un mensaje
es proporcional a la energía libre necesaria para reiniciar toda la cinta a
cero. ¿Sorprendente…? Vamos a tratar de explicar por qué esto es así.
Lo primero que hay que entender es que reiniciar a cero equivale a
comprimir cada celda de la cinta para asegurarnos de que su partícula
constituyente está en la posición |0, es decir a la derecha de la caja
según el criterio establecido. Sin embargo, un análisis superficial de
este planteamiento puede conducirnos a situaciones paradójicas.
Efectivamente, esta forma de enfocar la cuestión parece vulnerar los
principios de simetría. Así, si una partícula está en la parte |0 para
reiniciar no hay que hacer nada: F = 0
© Vicente Moret Bonillo Página 181
Pero si una partícula está en la parte |1 para reiniciar hay que hacer
un trabajo: F 0
Surgen ahora varios interrogantes:
1. ¿No sería lo mismo reiniciar la cinta a |1?
2. ¿No deberíamos obtener la misma respuesta sólo en el caso de
tener el mismo número de |0 que de |1?
Si razonamos así nos estamos olvidando de algo muy importante, y es
que sólo si no conocemos en qué parte de cada caja se encuentra la
partícula gastamos energía libre, ya que ésta es la única circunstancia
en la que el espacio de fases se divide por la mitad y la entropía
aumenta. Por el contrario, si sabemos de antemano la posición de la
partícula no gastamos energía al reiniciar, y lo bueno del asunto es que
esta situación es verdad independientemente de la posición inicial de la
partícula. La conclusión es evidente: La información de un mensaje está
contenida en los bits sorpresa. Matemáticamente se puede expresar lo
anterior del siguiente modo…
F|1 |0 = F |0 |0 = 0 conocemos de antemano la posición de la
partícula.
A estas alturas ya deberíamos poder comprender por qué éste
argumento es esencial en cualquier tipo de computación reversible.
Vamos a ver algún ejemplo sobre cómo se puede reiniciar una caja a
coste cero. Para ello tendremos en cuenta que:
1. Los ejemplos que mostraremos son sólo abstracciones de un
sistema ideal
2. Sólo estamos interesados en la energía contenida en el mensaje
3. La energía del mensaje está definida por las posiciones de las
partículas en las cajas de la cinta
© Vicente Moret Bonillo Página 182
Ejemplo 1
En este caso atravesamos la caja por la mitad con un eje, y giramos la
caja sobre dicho eje. El resultado es que lo que antes era un |0 se
convierte en un |1, y lo que antes era un |1 pasa a ser un |0. No
obstante, para que el truco funcione el proceso de giro tiene que
realizarse infinitamente despacio. ¡Otra vez un proceso cuasi-estático!
Ejemplo 2
Otra forma de verlo es considerar que en lugar de un único pistón hay
dos. En este caso F = 0 porque cualquier trabajo que efectuemos
sobre un extremo se recupera por el otro. Además, en este otro caso
también ocurre que sólo cuando no sabemos dónde está la partícula
hay que realizar una compresión. Desgraciadamente también tenemos
que trabajar en el límite infinitesimal de velocidad.
© Vicente Moret Bonillo Página 183
Parece claro que si queremos operar en tiempos razonables tenemos
que gastar energía libre. De hecho, la compresión requiere energía libre.
Y al comprimir disminuimos nuestra ignorancia sobre la posición de la
partícula.
7.5. La Aproximación Energética de Bennett
Bennett realiza un planteamiento alternativo, aparentemente diferente
al de Feynman, para tratar las cuestiones energéticas de la
computación. La propuesta de Bennett no puede ser más original…
¡Hale, vamos a utilizar la información del mensaje de nuestra cinta
como combustible! Para ello, Bennett relaciona la información de la
cinta con su poder calorífico; es decir, con la cantidad de energía que
podemos obtener de ella.
La figura ilustra el dispositivo ideal propuesto por Bennett para
documentar sus argumentos.
Lo que aparece ahí es un motor que está en contacto con un baño
térmico a temperatura constante. Por un extremo del motor entra la
cinta, y por el otro extremo sale. Al principio la cinta está en blanco; es
decir, todas sus partículas está en el estado |0.
Según Bennett este sistema puede usarse para proporcionar trabajo útil
y mover el motor, pero para ello necesitamos un pistón. El cacharro
funciona así:
Temperatura T
© Vicente Moret Bonillo Página 184
1. La cinta avanza dentro del motor
2. Cuando una celda llega hasta el pistón, éste se desplaza hasta la
mitad de la celda
3. El baño térmico calienta la celda
4. La partícula choca contra el pistón empujándolo isotérmicamente
hacia fuera
5. De esta forma se genera trabajo en el motor
Si nos fijamos éste es un proceso inverso al de la compresión del gas.
Aquí se realiza trabajo sobre el pistón, y este trabajo puede emplearse
para –por ejemplo mover el motor. Así, para una cinta de < n > bits:
F = nkT ln 2
donde T es la temperatura del baño térmico.
Pero lo realmente interesante de este experimento es el resultado
colateral del mismo. Y es que, después de haber hecho su trabajo, la
cinta que sale ha sido aleatorizada. En otras palabras, después de que
el pistón ha sido empujado la partícula que lo empujó puede estar en
© Vicente Moret Bonillo Página 185
cualquier lugar dela celda, y para saber dónde está hay que hacer una
medida50.
Vamos a generalizar esquemáticamente estas ideas:
1. Un pistón maniobrable nos permite extraer trabajo de cintas que
tienen algún |1
2. Si |1 entonces mover el pistón a la otra parte de la celda,
llevándolo hasta el borde de la mitad |1
3. El trabajo útil puesto en juego es kT ln2
4. La cinta sale de la máquina con un contenido aleatorio
5. Sabemos qué bit está entrando en la máquina, ya que sólo así
podemos tener al pistón preparado
6. Si el pistón está en la posición |0 y encuentra un |1 hay que
hacer trabajo para llevar a la partícula a la posición |1
7. Luego, cuando la partícula se expande, nos devuelve el trabajo
realizado previamente : Fneto = 0
Conclusión: Una cinta aleatoria tiene poder calorífico nulo.
Si nos fijamos, los planteamientos de Feynman y Bennet conducen
realmente a resultados similares. Feynman parte de una cinta aleatoria,
realiza trabajo sobre la cinta, y termina con una cinta totalmente
reiniciada en la que todos los bits son |0. Por el contrario, Bennett
parte de una cinta reiniciada en la que todos los bits son |0, obtiene
trabajo de la cinta, y termina con una cinta aleatoria.
Además, Bennett utiliza los resultados de su experimento para
especular algo sobre el concepto de información. Para ello considera
una cinta con < N > bits. En este contexto define la cantidad de
información < I > según la expresión:
50 Y esto, como sabemos, perturba al sistema.
© Vicente Moret Bonillo Página 186
Poder calorífico de la cinta = (N – I) kT ln2
De acuerdo con esta definición, si la cinta da una carga de combustible
completa; es decir [kT ln2]/bit, entonces contiene información nula. En
este caso la cinta contiene un mensaje completamente predecible.
7.6. El Demonio de Maxwell
El Demonio de Maxwell es el nombre de una criatura imaginaria ideada
en 1867 por el físico escocés James Clerk Maxwell como parte de un
experimento mental diseñado para ilustrar la segunda ley de la
termodinámica. Esta ley prohíbe que entre dos cuerpos a diferente
temperatura se pueda transmitir el calor del cuerpo frío al cuerpo
caliente. La segunda ley también se expresa comúnmente afirmando:
"En un sistema aislado la entropía nunca decrece". En la primera
formulación el demonio de Maxwell sería una criatura capaz de actuar a
nivel molecular seleccionando moléculas calientes y moléculas frías
separándolas.
Partimos inicialmente de la premisa de que el demonio es capaz de
diferenciar entre moléculas de gas a diferente temperatura, y separarlas
en función de dicho factor. Aprovechando este colaborador, podríamos
construir una máquina térmica con un 100% del rendimiento.
El diseño sería el siguiente: Imaginemos una mezcla equimolar de dos
gases A y B, ambos con diferente calor específico (con lo cual es de
suponer que, a iguales condiciones, las moléculas de uno de los dos se
muevan a mayor velocidad que las del otro); contenida en un recipiente
ideal en el que tenemos una pared intermedia que separa el recipiente
en dos mitades, unida a un émbolo que sale del recipiente; y dotada de
una "puerta" controlada por nuestro demonio.
© Vicente Moret Bonillo Página 187
Si por ejemplo, el calor específico de A es mayor que el de B, nuestro
demonio se pondrá a trabajar y en un lapso determinado nos habrá
separado (por el simple método de abrir selectivamente la puerta a las
moléculas más rápidas para que pasen al otro lado del recipiente) los
dos gases; "violando" la segunda ley de la termodinámica -ha habido
disminución de la entropía del sistema-.
El ciclo de la máquina se completa abriendo la puerta, y dejando que A
vuelva a mezclarse con B (el movimiento espontáneo para tender de
nuevo al estado de entropía máxima del sistema originará un cambio
del volumen del lado en el que se encuentra B), provocando así el
movimiento de la pared y con ella del émbolo, produciendo así un
trabajo (se supone que entre la pared central unida al émbolo y el resto
del recipiente no hay fricción).
La entropía puede disminuir, por ejemplo si enfriamos un gas, no
existen irreversibilidades, y por tanto la producción de entropia es nula,
además el calor sería negativo pues el sistema lo pierde; por tanto
recordando la formulación matemática del segundo principio obtenemos
que el incremento de entropía en negativo, con lo cual la entropía
decrece.
El estudio del demonio de Maxwell llevó a físicos como Bennett y
Landauer a establecer conclusiones sobre la computación reversible.
Veamos cómo y por qué, pero antes vamos a reformular
esquemáticamente a nuestro demonio.
© Vicente Moret Bonillo Página 188
Descripción:
1. Demonio sobre una caja dividida en 2 partes
2. Cada parte contiene gas cuyas partículas tienen una distribución
aleatoria de posiciones y de velocidades
3. En el tabique de separación hay una puerta
4. El demonio observa cada parte de la caja y elige colocar en la
parte derecha a las partículas rápidas, y a la izquierda las lentas
5. Cuando el demonio ve una partícula rápida que se dirige hacia la
puerta desde la dirección adecuada, la abre confinando a la
partícula, y la cierra inmediatamente
© Vicente Moret Bonillo Página 189
6. Cuando ve una partícula lenta que se dirige hacia la puerta desde
la dirección adecuada, la abre confinando a la partícula, y la
cierra inmediatamente
Como ya hemos dicho, el resultado es que, transcurrido un tiempo
suficiente el demonio de Maxwell habrá separado las partículas rápidas
de las lentas, es decir, las partículas calientes de las partículas frías.
Por lo tanto se habrá creado una diferencia de temperatura entre las
dos partes de la caja, y la entropía del sistema habrá disminuido. ¿Se
ha violado el segundo principio de la termodinámica?
Evidentemente, tal violación no parece razonable. En algún momento
del proceso debe generarse entropía, y esta entropía puede surgir como
resultado de la medida del demonio sobre la posición de las partículas.
En este contexto, una forma de detectar partículas es iluminarlas, pero
esto implica la dispersión de al menos un fotón, proceso que consume
energía. Además, antes de mirar una partícula concreta el demonio no
puede saber si se mueve en un sentido o en el otro, y cuando la observa
su incertidumbre –su entropía se reduce a la mitad. Por lo tanto, debe
generarse entropía en el entorno.
Al respecto, Bennett argumenta del siguiente modo:
1. El demonio de Maxwell puede realizar sus medidas con coste
energético nulo
2. Para ello debe seguir ciertas reglas para grabar y para borrar
cualquier información que obtenga
3. Antes de medir el demonio está en un estado estándar, por
ejemplo < E >, que es una situación de incertidumbre
4. Después de medir la partícula en cuestión puede estar
moviéndose hacia la izquierda < I > o hacia la derecha < D >
5. Ahora el demonio sobreescribe < E > con < I > o con < D > según
proceda
© Vicente Moret Bonillo Página 190
Con este planteamiento, Bennett demuestra que el proceso global de
medida, incluyendo la sobreescritura de < E >, se realiza sin coste
energético. Por el contrario, de forma totalmente análoga a lo inferido
cuando hablábamos sobre la energética de la computación, el coste
energético se produce cuando se borran < I > o < D > para reiniciar al
demonio al estado estándar < E > y prepararlo para la siguiente medida.
El descubrimiento de que en un proceso computacional la entropía no
se genera en la realización de la medida sino al borrar la información es
una cuestión fundamental cuando se trata con la computación
reversible.
7.7. Disipación de Energía
Existe un tipo especial de computación que nos va a ser de utilidad
para seguir tratando algunos aspectos energéticos sobre los que ya
hemos avanzado algo en secciones anteriores. Más concretamente,
Utilizaremos la computación < copia > como forma de introducir los
conceptos que subyacen en la disipación de energía. Para ello
definiremos el siguiente contexto:
1. Sean un conjunto de datos y su copia
2. Consideremos ambos como dos mensajes en cinta idénticos
3. Podemos conocer el mensaje original o no conocerlo
Una vez establecido el contexto comprobamos que se pueden dar dos
situaciones diferentes:
Primer caso: Si conocemos el mensaje original no gastamos energía libre
en borrar la cinta, y tampoco necesitamos energía libre para copiarla.
Segundo caso: Si no conocemos el mensaje original gastamos energía
libre al borrar la cinta, pero no gastamos energía libre en borrar la
copia.
© Vicente Moret Bonillo Página 191
Estas situaciones ocurren porque no hay más información en el
conjunto {datos, copia} que en el conjunto {datos}.
El proceso general de copia puede describirse del siguiente modo:
1. Necesitamos un objeto original o < modelo >
2. El modelo puede contener un |0 o un |1
3. Consideraremos que el modelo es un dispositivo físico biestable
un pozo de potencial
4. Necesitamos también una copiadora
5. La copiadora puede tener un |0 o un |1
La figura ilustra un hipotético estado inicial del modelo.
Por otra parte, el estado inicial de la copiadora podría ser el siguiente.
La operación de copia nos obliga a conseguir que el punto pase de un
valle al otro, para lo cual tenemos que poder manipular la curva de
potencial y conseguir que el valle de la derecha sea energéticamente
más favorable para el punto.
© Vicente Moret Bonillo Página 192
Establecemos ahora los parámetros ajustables relevantes, que son:
1. Altura de barrera
2. Profundidades relativas entre valles
3. Fuerza de interacción entre copiadora y modelo o fuerza de
inclinación
Considerando que en todo momento habrá un único mínimo accesible
al punto, el proceso de copia se ilustra en la figura siguiente:
En modo texto, y esquemáticamente, el proceso de copia de la figura
puede describirse del siguiente modo:
1. Inicialmente el modelo está lejos de la copiadora
2. Incluso a distancia ejerce una ligera fuerza inclinadora sobre la
copiadora
3. Esta fuerza aumenta la profundidad del valle de la copiadora que
corresponde al valle ocupado en el modelo
4. El potencial de la copiadora se ve ligeramente modificado
© Vicente Moret Bonillo Página 193
5. Acercamos suavemente el modelo a la copiadora
6. La fuerza de inclinación aumenta
7. El punto se desliza suavemente por la curva de potencial
8. El punto ocupa ahora el nuevo valle que es energéticamente más
favorable
9. Restauramos la barrera de potencial y retiramos suavemente el
modelo
En general, el proceso de copia podría hacerse rápidamente, pero en
este caso consumiría energía. Por el contrario, si el proceso es
suficientemente lento el coste energético es nulo, ya que la disipación de
energía sería despreciable.
Dicho de otro modo: Para conseguir coste cero la computación copia
debe realizarse de forma cuasi-estática.
Todo esto está muy bien, pero es un poco abstracto… Sin duda no es
más que una mera especulación teórica ¿verdad…? Pues no, resulta
que podemos construir un dispositivo físico real que funciona como
acabamos de explicar. Vamos a verlo.
Nuestro dispositivo físico biestable será un sistema construido a partir
de dos agujas de brújula, o dos dipolos magnéticos que pueden girar
sobre sus ejes, de forma que tanto el modelo físico como la copiadora
están hechos de este dispositivo biestable. Consideraremos que cada
elemento del par de agujas está ligado al otro, y que ambos elementos
apuntan a la misma dirección.
Con esta configuración podemos analizar el sistema en términos de una
sola variable, que será el ángulo que las agujas forman con la
horizontal. Observamos que existen configuraciones angulares
permitidas:
© Vicente Moret Bonillo Página 194
Pero también hay configuraciones angulares prohibidas:
Más generalmente, podemos hablar de estados estables y de estados
inestables:
1 2
S N S N
N N
S S
© Vicente Moret Bonillo Página 195
Para este sistema físico, la energía potencial de un estado con ángulo
responde a la expresión:
E sen2
Gráficamente, esta energía potencial en función de tiene más o menos
el aspecto siguiente:
En esta representación de la energía potencial, los mínimos
corresponden a los estados estables, y están en < = 0 > y en < = >
Por otra parte, los máximos corresponden a estados inestables, y están
localizados en las posciones < = /2 > y < = 3/2 >
Vamos a ver ahora qué podemos hacer para que nuestro sistema físico
real se comporte como nuestra copiadora abstracta. Recordamos que el
sistema es biestable, por lo tanto, si las agujas están en uno de los dos
mínimos se necesitará energía para pasarlo al otro, lo que significa que
hay que modificar la barrera de potencial y facilitar así las cosas.
Para modificar la barrera introducimos un campo magnético vertical B
que añade a la energía potencial el término: -B sen
Al aumentar B, la barrera de potencial entre los estados < 0 > y < >
disminuye:
0 /2 3/2 1
Sen2
1
© Vicente Moret Bonillo Página 196
Como antes, la fuerza de inclinación surge como consecuencia de
acercar el modelo a la copiadora, y esta fuerza en el modelo está
causada por el campo magnético del bit dato. Además, la fuerza es
perpendicular a B, y en dirección de las agujas en el modelo. Si
llamamos < b > a la fuerza de inclinación, dicha fuerza contribuye a la
energía potencial en: -b cos. Pero esta situación rompe la simetría en:
/2 y 3/2 y representa una inclinación. Por lo tanto el proceso de
copia puede describirse esquemáticamente como sigue:
1. Partimos de una copiadora en estado estándar (i.e., < = 0 > [
])
2. Ahora tenemos dos opciones:
a. Suavemente desplazamos la copiadora de una región B
débil a una de gran B hasta que se elimina la barrera
b. Empezamos a aumentar el campo B
3. En este momento el dipolo es vertical
4. Acercamos el modelo a la copiadora
5. Según se va acercando, el campo hace que las agujas de la
copiadora giren
6. A continuación alejamos el modelo
7. La copia liberada del campo B recupera la barrera
¡Y ya está…! Ya tenemos la copia hecha. Además, y el argumento es
recurrente, este método de copia funciona si no sabemos en qué estado
se encuentra el modelo, y –como viene siendo ya habitual, se puede
comprobar que si el proceso se realiza cuasi-estáticamente no cuesta ni
energía, ni corriente, ni nada.
B
B
B
© Vicente Moret Bonillo Página 197
7.8. Velocidad Computacional y Energía
Ya hemos comentado que para que el gasto energético sea nulo, el
proceso computacional debe realizarse de forma cuasi-estática, es decir,
de forma extremadamente lenta… infinitamente lenta. Y ¡claro está…!
esto no es muy práctico. Nosotros queremos que nuestra computadora
compute. Y queremos saber cuanta energía nos cuesta eso. En otras
palabras, vamos a estudiar la relación que hay entre eficacia
computacional y eficiencia computacional, o –más específicamente la
relación que existe entre la velocidad con la que se realiza una
computación y la energía necesaria para ello. Centraremos nuestra
discusión considerando la computación reversible.
Sea un computador reversible. Cuando un proceso se realiza de forma
reversible e infinitamente despacio la energía libre puesta en juego es
cero. Sin embargo, vamos a imponer a nuestro sistema computacional
la restricción de que el proceso computacional se está ejecutando a una
cierta velocidad < v >. Como el proceso es reversible, y ya sabemos que
los planteamientos probabilísticos planean por aquí, esto equivale a
decir que en un instante dado es < v > veces más probable realizar un
paso computacional hacia delante que hacia atrás. Por lo tanto, en cada
paso computacional, la energía libre puesta en juego es:
Fpaso = kT ln v
El funcionamiento energético de un computador reversible que
realmente funcione aparece representado a continuación.
© Vicente Moret Bonillo Página 198
Como vemos, este computador reversible puede realizar una
computación o deshacerla. Pero fijémonos en que la energía de dos
estados computacionales consecutivos es diferente. Además imponemos
la restricción de que la energía disminuya en la dirección de avance de
la computación. Aquí juega un papel fundamental la barrera de
potencial < A >, denominada energía de activación, y que no es otra
cosa que la energía que se le debe suministrar al sistema para que
evolucione. Por supuesto, también son importantes las fluctuaciones
térmicas, de tal modo que siempre que la energía de tales fluctuaciones
sea mayor que < A > el computador se moverá aleatoriamente entre
estados.
Definamos ahora la probabilidad < > de que un sistema pase a un
estado Ei como la probabilidad de que adquiera suficiente energía para
pasar A y caer en Ei. Evidentemente:
1. FE1E2 = A – E1
2. FE2E1 = A – E2
E1
E2
A AVANCE
© Vicente Moret Bonillo Página 199
Pero según la mecánica estadística, la probabilidad de una transición
entre dos estados cuyas energías difieren en una cantidad positiva E
es:
C exp (E/kT)
En esta expresión, el parámetro < C > es un factor que depende de las
fluctuaciones térmicas. Ahora, para calcular las tasas de transición
entre estados necesitamos otro factor < M > que depende de
propiedades moleculares, pero que no depende de la energía. Así las
cosas, podemos definir las tasas de avance y de retroceso del proceso
computacional según las expresiones:
1. TasaAvance = [C M] exp [(AE1)/kT]
2. TasaRetroceso = [C M] exp [(AE2)/kT]
Por lo tanto:
[TasaAvance / TasaRetroceso] = exp [(E1E2)/kT]
Fpaso = kT ln v = E1E2
Otra forma de investigar cómo se conduce un computador en una
dirección determinada supone considerar que los estados
computacionales no difieren en su energía, sino en su disponibilidad.
De este modo, el computador va a elegir a qué estado se dirige
basándose en el número de estados equivalentes que son accesibles. El
computador así diseñado funciona por difusión.
De este modo, si < ni > es el número de estados accesibles, entonces la
velocidad de la computación puede definirse, bien a partir de las tasas
de avance y retroceso, o a partir del número de estados accesibles, de
acuerdo con la expresión:
© Vicente Moret Bonillo Página 200
v = [TasaAvance / TasaRetroceso] = n2 / n1
Pero si recordamos:
S k ln
… y además:
kT ln v = kT (ln n2 ln n1) = T (S2 S1) = T S
Por lo tanto, la pérdida de energía por paso es igual a la entropía
generada en ese paso multiplicada por la temperatura.
7.9. Minimizando Energía
Hasta ahora hemos tratado de demostrar que para realizar una
computación sin coste alguno de energía, el proceso computacional
debe efectuarse de manera cuasi-estática; es decir, muy despacio,
infinitamente despacio. También hemos visto que, para que nuestra
computación progrese adecuadamente, no nos queda más remedio que
gastar algo de energía. El problema que vamos a abordar ahora es el
siguiente: ¿Podemos en una situación real minimizar la energía
consumida en cada paso de computación?
En una computación reversible de coste cero rige el siguiente contexto:
1. Las probabilidades de avance y de retroceso son iguales
2. No tenemos pérdida de energía
3. El proceso tiene que efectuarse cuasi-estáticamente
4. Se requiere un tiempo infinito
Sin embargo, para mantener al sistema computacional moviéndose
adecuadamente hay que facilitar de alguna manera el proceso, por
ejemplo bajando algo las energías de pasos sucesivos o haciendo los p--
asos sucesivos más accesibles.
© Vicente Moret Bonillo Página 201
Llamaremos < A > a la tasa de avance, y < B > a la tasa de retroceso.
Por decreto diremos que:
A = B +
Donde < > es un “empujoncito” muy pequeño que le damos al sistema
para que la computación avance. Con este planteamiento:
Energía / paso = kT ln v = kT ln [A / B]
Pero…
A / B = 1 + / B
Luego…
Energía / paso = kT ln [1 + ( / B)]
Como 0 ln [1 + ( / B)] / B
Por consiguiente:
Energía / paso = kT ln [1 + ( / B)] kT ( / B)
Y como…
/ B = (A / B) 1 = (A B) / B
Resulta que:
Energía / paso = kT [(A B) / B] 0
Se puede demostrar que una expresión análoga a la anterior es la
siguiente:
Energía / paso = 2kT [(A B) / (A + B)]
© Vicente Moret Bonillo Página 202
Efectivamente…
Sea: (A B) / B = 2 (A B) / (A + B) = (2A 2B) / (A + B)
Entonces: (A B) (A + B) = A2 B2 = 2AB 2B2
Como cuando 0 se verifica que A = B +
Entonces:
A2 B2 = 2 (A2 B2) A = B
En la expresión anterior…
Energía / paso = 2kT [(A B) / (A + B)]
… la diferencia con la expresión original es del orden de 2 y en el
numerador está representada la velocidad a la que se realiza la
computación. Por otra parte, si reformulamos la expresión de forma
que:
Energía / paso = 2kT [(A B) / (A + B)] = kT (A B) [(A + B) / 2]1
El factor < (A + B) / 2 > representa una tasa media de transición, es
decir, una medida del grado en que el ordenador oscila entre avances y
retrocesos.
El tratamiento anterior conduce a la expresión:
Energíaperdida / paso = kT (vdesplazamiento / vmáxima)
… si abordamos el problema en términos de energía perdida en cada
paso. O a la expresión:
Energíaperdida / paso = kT (Tiempo mínimo de cada paso / Tiempo real de cada paso)
© Vicente Moret Bonillo Página 203
… si lo que queremos es resaltar los aspectos temporales de esta
computación.
7.10. Pérdida de Energia Libre en el Computador Cuántico
En secciones anteriores hemos tratado el problema de la pérdida de
energía en una compuación real más o menos general. Pero cuando
estamos trabajando con computadores cuánticos, debido a la
naturaleza dual onda-partícula, aparece pérdida de energía asociada a
imperfecciones. Y es que a lo largo de la línea del programa, los
coeficientes de los acoplamientos pueden no ser exactamente iguales.
En computación cuántica, la línea del programa es tan larga que, en
una computación real, estas pequeñas irregularidades generan una
pequeña probabilidad de dispersión, y las ondas fluctuarán algo hacia
delante y hacia atrás. Cuando tratamos con sistemas reales, una causa
de dispersión es como siempre la agitación térmica.
Vamos a plantearnos ahora el problema de las imperfecciones:
1. Sea || la probabilidad de dispersión del momento del cursor,
por paso de computación (i.e., |i i + 1|), hasta que el proceso
sea aleatorio
2. |1/| es el recorrido medio libre
3. || es pequeño
© Vicente Moret Bonillo Página 204
En una computación larga, la onda puede tardar mucho en llegar al
final, debido a los continuos avances y retrocesos que produce la
dispersión. Al respecto, podemos tratar de mejorar la eficiencia
“tirando” del cursor a lo largo de la línea del programa mediante una
fuerza exterior. De este modo, si el cursor es un electrón que está
saltando de un sitio libre a otro podemos usar un campo eléctrico para
“tirar” del cursor. Habrá que tener en cuenta que:
1. La resistencia se genera por las imperfecciones
2. Las imperfecciones son las probabilidades de dispersión
En este contexto, la energía disipada por la fuerza externa, o pérdida de
energía libre, debe calcularse teniendo en cuenta que cada dispersión es
aleatoria puede ser hacia delante o puede ser hacia atrás. Pero para
que el cómputo progrese la probabilidad de avance debe ser algo mayor
que la probabilidad de retroceso.
Formalizando el proceso, la pérdida de entropía cuando ocurre una
dispersión es:
S|dispersión = log [ / ] [ ] / [ + ]
Por otra parte, la pérdida de entropía por paso de cálculo es:
S|cálculo = (D/R)
Donde D es la velocidad de desplazamiento del cursor, y R es su
velocidad aleatoria.
S|cálculo es veces la razón entre el tiempo mínimo en que se puede
hacer el cálculo y el tiempo real empleado, por lo tanto…
F = kT[tmin/treal]
© Vicente Moret Bonillo Página 205
Si analizamos el proceso, el factor || es un factor de avance que
representa situaciones en las que no todas las posiciones dispersan el
cursor aleatoriamente y estima la pequeña probabilidad de una
dispersión. Además, || representa el grado de perfección con que
podemos construir el ordenador. Como consecuencia [tmin/treal] es
proporcional al tiempo que se emplea en efectuar un cálculo. Por
último…
Si = 0 : máquina perfecta : F = 0
Si treal : F 0
Y para terminar, una pequeña broma: Si no queremos gastar energía
mejor no computemos, o perderemos la paciencia mientras esperamos.
6 de febrero de 2013.
© Vicente Moret Bonillo Página 208
8. BIBLIOGRAFÍA
R. Landauer, "Irreversibility and heat generation in the computing
process," IBM Journal of Research and Development, vol. 5, pp. 183-191, 1961.
J. von Neumann, Theory of Self-Reproducing Automata, Univ. of Illinois Press, 1966.
C. H. Bennett, "Logical reversibility of computation," IBM Journal of Research and Development, vol. 17, no. 6, pp. 525-532, 1973.
C. H. Bennett, "The Thermodynamics of Computation: A Review," International Journal of Theoretical Physics, vol. 21, no. 12, pp. 905-940, 1982.
R. P. Feynman. Lectures on Computation, Perseus, eds., 1996.
Andrés Sicart, Mario Elkin. Algunos elementos introductorios acerca de la computación cuántica. Departamento de Ciencias Básicas.Universidad EAFIT. Medellín, Colombia. Junio de 1999.
I. Levine. Química Cuántica. Pearson Educación, 2001.
Grupo de Computación Cuántica. Introducción al modelo cuántico de computación. Tech. Rep. 19. Junio 2003.