ToolDingo

Simulador de ordenador cuántico

Escribe un pequeño circuito cuántico en JavaScript, simulalo directamente en tu navegador y mira el diagrama de circuito, las probabilidades y el vector de estado. O describe un cálculo a un alto nivel (por ejemplo, una adición) y observa cómo se convierte automáticamente en un circuito cuántico reversible real.

Modelo de ruido

Los ordenadores cuánticos reales no computan perfectamente: los qubits son extremadamente sensibles y pierden parte de su información (decoherencia) a través de cada interacción no deseada con su entorno – calor, campos electromagnéticos, qubits vecinos. Las operaciones de la puerta tampoco son perfectamente precisas, e incluso la lectura final puede salir mal. Este simulador calcula idealmente por defecto; aquí puede habilitar modelos de error típicos y observar su efecto directamente en los resultados.

Se aplica a todas las simulaciones de esta página – para carreras de alto nivel y circuitos escritos manualmente.
%
Por puerta y qubit involucrado, o por bit de lectura para el modelo de lectura. Elige un valor para el escenario que desea explorar.

Código del programa

Describe un cálculo con quantum.add, quantum.subtract, quantum.multiply, quantum.divide o quantum.random. Ctrl+Enter inicia la simulación. Consulta la documentación completa mediante el botón «Documentación».

Documentación

Describir un cálculo en el editor – un circuito cuántico real se genera automáticamente a partir de él y simulado. Máximo 4000 caracteres. Ctrl+Enter inicia la simulación.

FórmulaDescripciónLímites
quantum.add({ a, b })Añadir dos númerosResultado máx. 4 bits (0-15)
quantum.subtract({ a, b })Sustraccióna ≥ b, máx. 4 bits
quantum.multiply({ a, b })MultiplicaciónFactores 0–7 (3 bits)
quantum.divide({ a, b })División (contingente + resto)b ≥ 1; muy apretado: bits(a)+bits(b)+bits(a÷b)+1 ≤ 10
quantum.random({ bits })Número aleatorio cuántico verdaderobits 1-10

Elige un ejemplo

Código de circuito

Máximo 4000 caracteres. Disponible Métodos QuantumCircuit: x, y, z, h, s, sdg, t, tdg, rx, ry, rz, cnot, ccnot (alias: toffoli), swap, measureAll, run. Ctrl+Enter inicia la simulación.

Elige un ejemplo

Fundamentos: ¿Cómo funciona?

Configuración cuántica esquemática de la computadora: una computadora de control dirige varios rayos láser a través de una mesa óptica a un qubit dentro de una cámara de vacío.
Desde el ordenador de control clásico a través de láseres y ópticas hasta el qubit físico.

De programa a qubit físico

Una computadora cuántica real es más que un chip. La electrónica de control clásica traduce el circuito en pulsos precisos. En el ejemplo mostrado, los láseres de enfriamiento, repugnancia, qubit y lectura dan forma a estas señales en una mesa óptica y las dirigen a una cámara de vacío blindada. Allí cambian y miden el estado de qubit; el resultado de la medición vuelve a la computadora clásica.

Estado de base del Qubit &

Un bit clásico es 0 o 1. Un qubit puede existir adicionalmente en una superposición de los dos estados de base |0⟩ y |1⟩. Con varios qubits, todos los estados de base se escriben como una cadena de bits, por ejemplo. |10⟩ para 2 qubits – donde q0 en este simulador es siempre el bit más significativo (izquierda).

Superposición

Un qubit en superposición transporta simultáneamente componentes de varios estados de base. Estos componentes se describen como amplitudes complejas; la magnitud cuadrada de una amplitud da la probabilidad de obtener el estado correspondiente en una medición.

La esfera Bloch

El estado de un único qubit se puede visualizar como una flecha en una esfera: el polo norte representa |0⟩, el polo sur |1⟩, y todos los puntos en el ecuador son superposiciones igualmente ponderadas – la fase determina la dirección a lo largo del ecuador en el que los puntos de flecha. rx, ry, y rz girar la flecha alrededor del eje respectivo, puertas de fase como S y T girarlo alrededor del eje Z. Con qubits enredados, la flecha se encoge hacia el centro de la esfera: el qubit individual entonces ya no tiene un estado puro propio – por lo que el enredo se vuelve literalmente visible.

Mediciones de disparos &

measureAll() mide todos los qubits a la vez y termina el circuito. Puesto que una sola medida sólo produce un resultado aleatorio, el circuito se mide conceptualmente "fotos" tiempos con run({ shots })Las probabilidades exactas se calculan también directamente desde el vector de estado, independientemente de la aleatoriedad de las tomas.

Puerta de Hadamard

La puerta de Hadamard h(q) toma un qubit de un estado definido (|0⟩ o |1⟩) en una superposición igualmente ponderada de |0⟩ y |1⟩ – así que alrededor del 50% / 50% cuando se mide.

Puertas de fase: S y T

Las puertas s(q) y t(q) no cambian las probabilidades de medición de un único qubit; sólo giran la fase de la |1⟩ amplitud – S por 90°, T por 45°. Solo muestran su efecto en combinación con la superposición: entre dos puertas Hadamard, la fase decide cómo las amplitudes se combinan o cancelan (interferencia). sdg(q) y tdg(q) rota exactamente de la manera opuesta y deshacer S y T. La regla es: dos T hacen un S, dos S hacen un Z.

Enredo condicional de CNOT &

La puerta de la CNOT cnot(control, target) voltea el qubit de destino exactamente cuando el qubit de control está en estado |1⟩. Si el qubit de control está en superposición de antemano, esto puede crear enredo – los dos qubits ya no pueden ser descritos independientemente uno del otro, como en el ejemplo del estado Bell. Si el qubit de control está en un estado de base definido en su lugar, CNOT sólo realiza un giro de bit condicional sin enredo. Así que no cada CNOT crea automáticamente enredo.

CZ: el pariente simétrico de CNOT

La puerta CZ cz(a, b) invierte el signo de la amplitud exactamente cuando ambos qubits son |1⟩. A diferencia de CNOT, no hay control y no hay qubit objetivo – la puerta actúa idénticamente en ambos qubits, por lo que se dibuja como dos puntos conectados en el diagrama. CZ y CNOT se pueden convertir en uno a: un CNOT es un CZ cuyo qubit objetivo se pasa a través de una puerta Hadamard antes y después. CZ es un bloque de construcción central de muchos algoritmos, como la búsqueda Grover.

Estado GHZ: enredo como trío

El estado GHZ (llamado así por Greenberger, Horne y Zeilinger) extiende el principio del estado Bell a tres qubits: una puerta Hadamard más dos CNOTS entrelazan a los tres para que la medición solo produzca |000⟩ o |111⟩ – nunca mezcló cuerdas de bits. qubit no tiene ya un estado propio; la información se encuentra exclusivamente en la correlación compartida.

Algoritmo de Deutsch: la ventaja cuántica más pequeña

El algoritmo de Deutsch responde, con una sola evaluación de un oráculo desconocido, a una pregunta para la que un ordenador clásico necesita dos evaluaciones: ¿la función es constante o equilibrada? El truco es enviar la entrada a través del oráculo en superposición – gracias a la interferencia, la respuesta después se codifica sin ambigüedades en el qubit de entrada. El principio detrás de ella (retroceso de fase) está en el núcleo de casi todos los algoritmos cuánticos.

Búsqueda en Grover: amplificación de amplitudes

La búsqueda de Grover encuentra una entrada marcada en un conjunto sin clasificar con significativamente menos consultas que las requeridas clásicamente. Un oráculo marca el estado buscado con un giro de fase (aquí a través de una puerta CZ), luego el operador de difusión amplifica la amplitud marcada a expensas de todos los demás. Con 2 qubits, una iteración única es suficiente para medir el golpe con 100% de probabilidad.

Adición reversible: desde quantum.add() a un circuito

El editor de código de programa arriba se traduce quantum.add({ a, b }) en un circuito de puertas X, CNOT y CNOT (Toffoli) que reproduce la adición clásica de una manera puramente reversible: cada puerta se puede deshacer exactamente, porque no se descarta información. Una puerta CNOT (ccnot(c1, c2, target)) voltea el qubit objetivo sólo cuando ambos qubits de control son |1⟩ – que es suficiente como un bloque de construcción para reconstruir cualquier circuito clásico reversible, incluyendo una escalera llena con carga. Las entradas A y B se inicializan primero como estados de base definidos (sin superposición) utilizando puertas X. Debido a que el circuito entero sólo pasa a través de estados definidos en lugar de superposiciones, la medición al final produce exactamente un resultado con 100% de probabilidad – la suma clásica correcta. quantum.add() produce un resultado determinista a pesar de la simulación cuántica, en lugar de varios estados posibles con probabilidades por debajo del 100%.

Sustracción: adición inversa

Debido a que cada puerta de un circuito cuántico es exactamente invertible, el circuito de la escalera completa se puede ejecutar hacia atrás – y la adición se convierte en una sustracción: quantum.subtract({ a, b }) utiliza exactamente las puertas de la escalera en orden inverso y por lo tanto calcula a − b. Esto no es un truco, pero el principio básico de cálculo reversible: ningún paso de cálculo destruye la información, cada paso se puede deshacer. En esta versión, se requiere un ≥ b para que no se produzca ningún resultado negativo.

Multiplicación: quantum.multiply()

La multiplicación aquí surge exactamente de los mismos bloques de construcción reversibles como adición: siguiendo el método del libro escolar, el factor a se añade varias veces en posiciones desplazadas – emparejando los bits de factor b. Cada adición parcial es la misma vespa reversible de transporte de ondas; el transporte fluye en el siguiente bit del producto cada vez. Debido a que el registro de resultados crece con el producto, los factores están limitados a 3 bits (0-7) aquí – sólo entonces el factor, producto y llevar qubit juntos encajan en los 10 qubits de este simulador.

División: quantum.divide()

Division también utiliza sólo bloques de construcción reversibles: quantum.divide({ a, b }) realiza la división larga construida a partir de las sustracciones reversibles desplazadas del divisor del resto del registro; el resultado es el cociente y el resto (a = quotient · b + remainderPorque dividendo, divisor, cociente y un qubit de préstamo debe encajar en los 10 qubits juntos, división es la operación más fuertemente limitada: bits(a) + bits(b) + bits(a÷b) + 1 ≤ 10 debe sostener, y el divisor b debe ser ≥ 1 (sin división por cero). Si una entrada no se ajusta al presupuesto, el editor lo informa en lugar de computar.

Aleatoriedad verdadera: quantum.random()

Las computadoras clásicas no pueden generar verdadera aleatoriedad – sus "números aleatorios" provienen de algoritmos deterministas (pseudo-aleatorio). quantum.random({ bits }) pone cada bit en una superposición 50/50 utilizando una puerta Hadamard, y sólo la medida decide – fundamentalmente imprevisible – el valor que sale. En el hardware cuántico real esto es al azar físicamente verdadera; este simulador lo imita con la pseudo-aleatoria de tu navegador.

Simulador vs. hardware cuántico real

Este simulador calcula el estado exactamente utilizando la aritmética clásica de punto flotante en tu navegador – esto sólo funciona porque se consideran aquí exclusivamente circuitos muy pequeños con hasta 10 qubits. Los ordenadores cuánticos reales utilizan qubits físicos, son propensos a errores (decoherencia, ruido), y tu ventaja sólo se muestra con circuitos mucho más grandes que ya no se pueden simular clásicamente en la práctica. Esta herramienta es una herramienta de aprendizaje, no un procesador cuántico real.

Preguntas frecuentes

¿Es una computadora cuántica de verdad?
No. Esta herramienta es un simulador clásico de estado-vector que calcula las matemáticas de un pequeño circuito cuántico (hasta 10 qubits) exactamente, utilizando la aritmética de punto flotante en tu navegador.
¿Qué qubit es q0 en una cadena de bits como "10"?
q0 es siempre el bit más significativo (izquierda). Con 2 qubits, x(0) por lo tanto, crea el estado 10», no 01».
¿Qué significa "disparos"?
Las tomas son el número de mediciones repetidas simuladas (1–10.000). Cada toma dibuja al azar un resultado de medición de acuerdo con la distribución exacta de probabilidad del vector de estado. Las probabilidades exactas no dependen del azar y se muestran por separado.
¿Por qué algunos ejemplos muestran un mensaje de error?
El alcance MVP permite exactamente un circuito con exactamente una llamada run() después de measureAll(). Los índices de qubit no válidos, las puertas después de measureAll(), los ángulos no válidos o los recuentos de tomas, y los errores de sintaxis en el código son rechazados con un mensaje de error comprensible.
¿Qué hacen las puertas Hadamard, X y CNOT?
X swaps 0â y 1â. Hadamard convierte un estado de base en una superposición igualmente ponderada. CNOT voltea su objetivo sólo cuando el control es 1â, y puede crear enredo cuando se combina con la superposición.
¿Cómo se crea el enredo?
Un ejemplo aplica Hadamard al primer qubit y luego CNOT a un segundo. Los qubits ya no pueden ser descritos independientemente, y la medición produce resultados correlacionados como 00 o 11.