ToolDingo

Simulador d’ordinador quàntic

Escriu un petit circuit quàntic en JavaScript, simula’l directament al navegador i consulta’n el diagrama, les probabilitats i el vector d’estat. També pots descriure un càlcul d’alt nivell, com ara una suma, i veure com es converteix automàticament en un circuit quàntic reversible.

Model de soroll

Els ordinadors quàntics reals no calculen perfectament: els qubits són molt sensibles i perden coherència amb les interaccions no desitjades amb l’entorn, com la calor, els camps electromagnètics o els qubits veïns. Les operacions de les portes tampoc no són perfectament precises i la lectura final pot fallar. Per defecte, aquest simulador calcula en condicions ideals; aquí pots activar models d’error habituals i observar-ne l’efecte en els resultats.

S’aplica a totes les simulacions d’aquesta pàgina, tant als programes d’alt nivell com als circuits escrits manualment.
%
Per porta i qubit implicat, o per bit llegit en el model de lectura. Tria un valor per a l’escenari que vulguis explorar.

Codi del programa

Descriu un càlcul amb quantum.add, quantum.subtract, quantum.multiply, quantum.divide o quantum.random. Ctrl+Enter inicia la simulació. Consulta tota la documentació amb el botó «Documentació».

Documentació

Descriu un càlcul a l’editor: se’n generarà automàticament un circuit quàntic i se simularà. Màxim 4000 caràcters. Ctrl+Enter inicia la simulació.

FórmulaDescripcióLímits
quantum.add({ a, b })Suma dos nombresResultat de màxim 4 bits (0–15)
quantum.subtract({ a, b })Restaa ≥ b, màxim 4 bits
quantum.multiply({ a, b })MultiplicacióFactors 0–7 (3 bits)
quantum.divide({ a, b })Divisió (quocient + residu)b ≥ 1; límit estricte: bits(a)+bits(b)+bits(a÷b)+1 ≤ 10
quantum.random({ bits })Nombre aleatori quàntic simulatbits 1–10

Tria un exemple

Codi del circuit

Màxim 4000 caràcters. Mètodes de QuantumCircuit disponibles: x, y, z, h, s, sdg, t, tdg, rx, ry, rz, cnot, cz, ccnot (àlies: toffoli), swap, measureAll, run. Ctrl+Enter inicia la simulació.

Tria un exemple

Conceptes bàsics: com funciona?

Esquema d’un ordinador quàntic: un ordinador de control dirigeix diversos feixos làser a través d’una taula òptica cap a un qubit dins d’una cambra de buit.
De l’ordinador de control clàssic al qubit físic, passant pels làsers i l’òptica.

Del programa al qubit físic

Un ordinador quàntic real és més que un xip. L’electrònica de control clàssica converteix el circuit en polsos precisos. En l’exemple, els làsers de refredament, rebombeig, control del qubit i lectura formen aquests senyals sobre una taula òptica i els dirigeixen a una cambra de buit protegida. Allà modifiquen i mesuren l’estat del qubit; el resultat torna a l’ordinador clàssic.

Qubit i estats de base

Un bit clàssic és 0 o 1. Un qubit també pot existir en una superposició dels dos estats de base |0⟩ i |1⟩. Amb diversos qubits, els estats de base s’escriuen com una cadena de bits, per exemple |10⟩ per a 2 qubits; en aquest simulador, q0 sempre és el bit més significatiu, el de l’esquerra.

Superposició

Un qubit en superposició conté simultàniament components de diversos estats de base. Es descriuen amb amplituds complexes: el mòdul al quadrat de cada amplitud dona la probabilitat d’obtenir l’estat corresponent en una mesura.

L’esfera de Bloch

L’estat d’un sol qubit es pot visualitzar com una fletxa dins d’una esfera: el pol nord representa |0⟩, el pol sud |1⟩, i tots els punts de l’equador són superposicions amb el mateix pes. La fase determina la direcció de la fletxa al llarg de l’equador. Les portes de rotació rx, ryi rz giren la fletxa al voltant de l’eix corresponent; les portes de fase com S i T la giren al voltant de l’eix Z. Amb qubits entrellaçats, la fletxa s’escurça cap al centre: cada qubit ja no té un estat pur propi i l’entrellaçament es fa visible.

Mesura i shots

measureAll() mesura tots els qubits alhora i acaba el circuit. Com que una sola mesura dona un únic resultat aleatori, conceptualment el circuit es mesura «shots» vegades amb run({ shots }), de manera que la distribució de probabilitat es veu en un histograma. Les probabilitats també es calculen directament a partir del vector d’estat, independentment de l’atzar de les mesures.

Porta de Hadamard

La porta de Hadamard h(q) transforma un qubit d’un estat definit (|0⟩ o |1⟩) en una superposició amb el mateix pes de |0⟩ i |1⟩ , és a dir, aproximadament 50% / 50% en mesurar-lo.

Portes de fase: S i T

Les portes s(q) i t(q) no canvien les probabilitats de mesura d’un qubit individual; només giren la fase de l’amplitud de |1⟩ : S la gira 90° i T, 45°. L’efecte es manifesta en combinar-les amb superposició: entre dues Hadamard, la fase determina com se sumen o s’anul·len les amplituds (interferència). Les variants adjuntes sdg(q) i tdg(q) giren en sentit contrari i desfan S i T. Dues T equivalen a una S i dues S, a una Z.

CNOT i entrellaçament condicional

La porta CNOT cnot(control, target) inverteix el qubit objectiu just quan el qubit de control és en l’estat |1⟩. Si el control era en superposició, pot crear entrellaçament: els dos qubits ja no es poden descriure independentment, com a l’exemple de Bell. Si el control té un estat de base definit, CNOT només fa una inversió condicional de bit sense entrellaçament. Per tant, no totes les CNOT creen entrellaçament automàticament.

CZ: la parenta simètrica de CNOT

La porta CZ cz(a, b) inverteix el signe de l’amplitud just quan tots dos qubits són |1⟩. A diferència de CNOT, no hi ha un control i un objectiu diferenciats: actua simètricament sobre tots dos qubits i es dibuixa amb dos punts connectats. CZ i CNOT es poden convertir l’una en l’altra: una CNOT equival a una CZ amb una Hadamard abans i després sobre el qubit objectiu. CZ és un bloc important d’algorismes com la cerca de Grover.

Estat GHZ: entrellaçament de tres qubits

L’estat GHZ, anomenat així per Greenberger, Horne i Zeilinger, amplia el principi de Bell a tres qubits: una Hadamard i dues CNOT els entrellacen perquè la mesura només doni |000⟩ o |111⟩ , mai cadenes de bits mixtes. Cap qubit no té un estat pur propi; la informació es troba en la correlació compartida.

Algorisme de Deutsch: un petit avantatge quàntic

Amb una sola avaluació d’un oracle desconegut, l’algorisme de Deutsch respon una pregunta que requereix dues avaluacions clàssiques per obtenir certesa: la funció és constant o equilibrada? L’entrada passa per l’oracle en superposició i, gràcies a la interferència, la resposta queda codificada inequívocament al qubit d’entrada. El principi de retorn de fase és important en molts algorismes quàntics.

Cerca de Grover: amplificació d’amplituds

La cerca de Grover troba una entrada marcada en un conjunt no ordenat amb menys consultes que una cerca clàssica. Un oracle marca l’estat buscat invertint-ne la fase, aquí amb una CZ, i l’operador de difusió n’amplifica l’amplitud a costa de les altres. Amb 2 qubits, n’hi ha prou amb una iteració per mesurar la coincidència amb probabilitat del 100%.

Suma reversible: de quantum.add() a un circuit

L’editor de programa anterior converteix quantum.add({ a, b }) en un circuit de portes X, CNOT i CCNOT (Toffoli) que reprodueix la suma clàssica de manera completament reversible: totes les portes es poden desfer perquè no es descarta informació. Una porta CCNOT (ccnot(c1, c2, target)) inverteix el qubit objectiu només quan els dos qubits de control són |1⟩ . Amb aquests blocs es poden reconstruir reversiblement circuits clàssics, inclòs un sumador complet amb transport. Primer, X inicialitza les entrades A i B en estats de base definits, sense superposició. Com que el circuit només passa per estats definits, la mesura final dona un únic resultat amb probabilitat del 100%: la suma clàssica correcta. Per això quantum.add() produeix un resultat determinista malgrat la simulació quàntica, en lloc de diversos estats possibles amb probabilitats inferiors al 100%.

Resta: suma a la inversa

Com que les portes de càlcul del circuit quàntic són invertibles, es pot executar tot el sumador a la inversa i convertir la suma en una resta: quantum.subtract({ a, b }) utilitza les mateixes portes del sumador en ordre invers i calcula a − b. És el principi bàsic de la computació reversible: cap pas destrueix informació i tots es poden desfer. Aquesta versió requereix a ≥ b perquè no hi hagi resultats negatius.

Multiplicació: quantum.multiply()

La multiplicació utilitza els mateixos blocs reversibles que la suma. Seguint el mètode escolar, el factor a se suma en posicions desplaçades segons els bits activats del factor b. Cada suma parcial fa servir el mateix sumador reversible amb propagació de transport; el transport passa al bit següent del producte. Com que el registre de resultat creix amb el producte, els factors es limiten a 3 bits (0–7) perquè factor, producte i qubit de transport càpiguen en els 10 qubits del simulador.

Divisió: quantum.divide()

La divisió també utilitza només blocs reversibles: quantum.divide({ a, b }) fa una divisió llarga amb restes reversibles desplaçades del divisor sobre el registre de residu. El resultat és el quocient i el residu (a = quotient · b + remainder). Com que el dividend, el divisor, el quocient i un qubit de préstec han de cabre en 10 qubits, la divisió és l’operació més restringida: bits(a) + bits(b) + bits(a÷b) + 1 ≤ 10 s’ha de complir i el divisor b ha de ser ≥ 1 (no es pot dividir per zero). Si l’entrada supera el pressupost, l’editor ho indica i no calcula.

Aleatorietat quàntica: quantum.random()

Els algorismes pseudoaleatoris clàssics són deterministes; l’aleatorietat física requereix una font física. La mesura quàntica n’és una: quantum.random({ bits }) posa cada bit en superposició 50/50 amb una Hadamard i la mesura determina quin valor en surt. En maquinari quàntic real, el resultat té aleatorietat física; aquest simulador la imita amb la pseudoaleatorietat del navegador.

Simulador i maquinari quàntic real

Aquest simulador calcula el vector d’estat amb aritmètica clàssica de coma flotant al navegador. És viable perquè només treballa amb circuits petits de fins a 10 qubits. Els ordinadors quàntics reals utilitzen qubits físics i pateixen errors, decoherència i soroll; simular-los clàssicament esdevé més difícil a mesura que augmenten la mida i la complexitat del circuit. Aquesta eina és didàctica, no un processador quàntic real.

Preguntes freqüents

És un ordinador quàntic real?
No. Aquesta eina és un simulador clàssic de vector d’estat que calcula les matemàtiques d’un petit circuit quàntic de fins a 10 qubits amb aritmètica de coma flotant al navegador. El maquinari quàntic real utilitza qubits físics i funciona d’una manera fonamentalment diferent.
Quin qubit és q0 en una cadena de bits com «10»?
q0 sempre és el bit més significatiu, el de l’esquerra. Amb 2 qubits, x(0) crea l’estat |10⟩, no |01⟩.
Què vol dir «shots»?
shots és el nombre de mesures repetides simulades, d’1 a 10.000. Cada mesura selecciona aleatòriament un resultat segons la distribució de probabilitat del vector d’estat. Les probabilitats calculades no depenen de l’atzar i es mostren per separat.
Per què alguns exemples mostren un error?
Aquesta versió admet exactament un circuit amb una única crida a run() després de measureAll(). Els índexs de qubit no vàlids, les portes posteriors a measureAll(), els angles o nombres de mesures no vàlids i els errors de sintaxi es rebutgen amb un missatge entenedor.
Què fan les portes Hadamard, X i CNOT?
X intercanvia |0⟩ i |1⟩. Hadamard transforma un estat de base en una superposició amb el mateix pes. CNOT inverteix l’objectiu només quan el control és |1⟩ i pot crear entrellaçament combinada amb superposició.
Com es crea l’entrellaçament?
Un exemple aplica Hadamard al primer qubit i després una CNOT amb un segon qubit. Ja no es poden descriure independentment i la mesura produeix resultats correlacionats com |00⟩ o |11⟩.