la evoluciÓn del bit y un paseo por la energÍa 2013 · 1 la evoluciÓn del bit y un paseo por la...

208
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.

Upload: doanh

Post on 28-Oct-2018

223 views

Category:

Documents


0 download

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 2

© 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 5

© 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 7

© Vicente Moret Bonillo Página 8

1. EL UNIVERSO DE LO BINARIO

© Vicente Moret Bonillo Página 9

© 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 48

2. COMPUTACIÓN DE IDA Y VUELTA

© Vicente Moret Bonillo Página 49

© 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 71

© Vicente Moret Bonillo Página 72

3. COMPUTADORES REVERSIBLES

© Vicente Moret Bonillo Página 73

© 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 92

4. HACIA LA COMPUTACIÓN CUÁNTICA

© Vicente Moret Bonillo Página 93

© 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 117

© Vicente Moret Bonillo Página 118

5. MECÁNICA CUÁNTICA E INFORMACION

© Vicente Moret Bonillo Página 119

© 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 137

© Vicente Moret Bonillo Página 138

6. LA COMPUTADORA CUÁNTICA

© Vicente Moret Bonillo Página 139

© 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´ = 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 163

© Vicente Moret Bonillo Página 164

7. UN PASEO POR LA ENERGÍA

© Vicente Moret Bonillo Página 165

© 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 206

8. BIBLIOGRAFÍA

© Vicente Moret Bonillo Página 207

© 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.