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.
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ó».
Aquest codi s’ha generat automàticament a partir del programa anterior i s’ha simulat directament. Pots editar-lo manualment aquí i tornar-lo a executar.
El circuit generat s’ha editat manualment. Per això s’amaga l’agrupació de registres al diagrama; si tornes a executar el programa anterior, se sobreescriuran aquests canvis.
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ó.
Diagrama del circuit
La vista per passos mostra les probabilitats i el vector d’estat just després de la porta seleccionada. Els resultats de les mesures de sota sempre corresponen al circuit complet.
OpenQASM 2.0
OpenQASM 2.0 és un format d’intercanvi de circuits quàntics àmpliament utilitzat que poden llegir eines com Qiskit. Ordre dels bits: aquest simulador llegeix q0 com el bit més significatiu, a l’esquerra; Qiskit llegeix q[0] com el menys significatiu. Per això les cadenes mesurades hi apareixen invertides.
Probabilitats
La probabilitat de mesurar cada cadena de bits possible, calculada a partir del vector d’estat. Sentit de lectura: q0 és el bit esquerre, el més significatiu.
Esferes de Bloch
L’estat de cada qubit es representa amb una fletxa a l’esfera de Bloch: pol nord = |0⟩, pol sud = |1⟩ i equador = superposició amb el mateix pes. Si la fletxa és clarament més curta que el radi de l’esfera, el qubit no té un estat pur propi. Sense soroll, això indica entrellaçament amb altres qubits. El soroll també pot escurçar la fletxa en reduir la coherència. Aquí les esferes amb soroll són una aproximació: es fa la mitjana dels vectors de Bloch de les trajectòries amb soroll. Amb la vista per passos, les fletxes avancen porta a porta només en el cas sense soroll.
Resultats de les mesures
Quantes vegades ha aparegut cada cadena de bits en les mesures simulades. Quan hi ha diversos resultats possibles, les freqüències fluctuen aleatòriament al voltant de les probabilitats calculades.
Vector d’estat
Les amplituds complexes darrere de les probabilitats: el mòdul al quadrat d’una amplitud (real² + imaginària²) dona la probabilitat del seu estat.
| Estat | Part real | Part imaginària |
|---|
Conceptes bàsics: com funciona?
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.