ToolDingo

Simulatore di computer quantistico

Scrivi un piccolo circuito quantistico in JavaScript, simulare direttamente nel tuo browser, e vedere il diagramma del circuito, probabilità, e vettor di stato. O descrivere un calcolo ad alto livello (ad esempio: Un'aggiunta) e guardarlo trasformarsi automaticamente in un vero circuito quantistico reversibile.

Modello di rumore

I veri computer quantistici non calcolano perfettamente: I qubit sono estremamente sensibili e perdono parte delle loro informazioni (decoherenza) attraverso ogni interazione indesiderata con l'ambiente calore, campi elettromagnetici, Qubit vicini. Le operazioni di gate non sono mai perfettamente precise. e anche la lettura finale può andare male. Questo simulatore computa idealmente per impostazione predefinita; Qui è possibile abilitare modelli di errore tipici e osservare il loro effetto direttamente nei risultati.

Si applica a tutte le simulazioni di questa pagina per le correnti ad alto livello e per i circuiti scritti a mano.
%
Per ogni porta e qubit coinvolto, o per bit di lettura per il modello di lettura. Scegli un valore per lo scenario che vuoi esplorare.

Codice del programma

Descrivere un calcolo con quantum.add, quantum.subtract, quantum.multiply, quantum.divide o quantum.random. Ctrl+Enter inizia la simulazione. Documentazione completa tramite il pulsante Documentazione.

Documentation

Descrivere un calcolo nell'editore un vero circuito quantistico viene generato automaticamente da esso e simulato. Maggiore di 4000 caratteri. Ctrl+Enter Inizia la simulazione.

FormulaDescriptionLimits
quantum.add({ a, b })Aggiungi due numeriRisultato max. 4 bit (0-15)
quantum.subtract({ a, b })Subtractiona ≥ b, max. 4 bit
quantum.multiply({ a, b })MultiplicationFattori 0–7 (3 bit)
quantum.divide({ a, b })Divisione (contingente + resto)b ≥ 1; molto stretto: bits(a)+bits(b)+bits(a÷b) +1 ≤ 10
quantum.random({ bits })Numero casuale quantistico realebit 1-10

Scegli un esempio

Codice del circuito

Massimo 4000 caratteri. Metodi QuantumCircuit disponibili: x, y, z, h, s, sdg, t, tdg, rx, ry, rz, cnot, cz, ccnot (alias: toffoli), swap, measureAll, run. Ctrl+Enter avvia la simulazione.

Scegli un esempio

Fondamenti: Come funziona?

Configurazione schematica del computer quantistico: un computer di controllo dirige diversi raggi laser attraverso una tavola ottica verso un qubit all'interno di una camera a vuoto.
Dal classico computer di controllo, attraverso laser e ottica, al qubit fisico.

Da programma a qbit fisico

Un vero computer quantistico è più di un chip. L'elettronica di controllo classica traduce il circuito in impulsi precisi. Nell'esempio mostrato, raffreddamento, di ripompa, qubit, e laser di lettura formano questi segnali su una tavola ottica e li dirigono in una camera a vuoto protetta. Qui si mutano e misurano il qubit. il risultato della misura viene quindi riportato al classico computer.

Stato di base del Qubit &

Un bit classico è 0 o 1. Un qubit può inoltre esistere in una sovrapposizione dei due stati di base |0⟩ and |1⟩. Con vari qbit, tutti gli stati di base sono scritti come una stringa di bit, per esempio. |10⟩ per 2 qubits – dove q0 in questo simulatore è sempre il bit più significativo (sinistra).

Superposition

Un qubit in sovrapposizione porta contemporaneamente componenti di diversi stati di base. Queste componenti sono descritte come amplitudini complessi; la grandezza quadrata di un'ampiezza dà la probabilità di ottenere lo stato corrispondente in una misurazione.

La sfera Bloch

Lo stato di un singolo qubit può essere visualizzato come una freccia in una sfera: il polo nord rappresenta |0⟩, il polo sud |1⟩- E ' un' operazione . e tutti i punti dell'equatore sono superposizioni uguali la fase determina la direzione lungo l'equatore in cui punta la freccia. Le porte di rotazione rx, ry, e rz ruotare la freccia attorno al rispettivo asse, Porte di fase come S e T ruotano intorno all'asse Z. con i qubit intrecciati, la freccia si contrae verso il centro della sfera: il qubit individuale non ha più uno stato puro di sé Così l'intreccio diventa letteralmente visibile.

Misurazioni degli spari &

measureAll() misura tutti i qubit in una volta e termina il circuito. Poiché una singola misurazione produce solo un risultato casuale, il circuito è misurato concettualmente "spari" volte con run({ shots })- E ' un' operazione . Così la distribuzione di probabilità appare come istogramma. Le probabilità esatte sono inoltre calcolate direttamente dal vettore di stato, indipendentemente dalla casualità dei colpi.

Porta di Hadamard

La porta di Hadamard h(q) prende un Qbit da uno stato definito (|0⟩ or |1⟩) in una sovrapposizione anch'essa ponderata di |0⟩ and |1⟩ – in modo da intorno al 50% / 50% quando misurato.

Porte di fase: S e T

Le porte s(q) and t(q) non modificano le probabilità di misurazione di un singolo qubit; che ruotano solo la fase del |1⟩ amplitudine S per 90°, T per 45°. Essi mostrano solo il loro effetto in combinazione con la sovrapposizione: tra due porte di Hadamard, la fase decide come le amplitudini si combinano o si annullano (interferenza). Le varianti del pugnale sdg(q) and tdg(q) ruotare esattamente in senso opposto e annullare S e T. La regola è: due T fanno un S, Due S fanno una Z.

Raffreddamento condizionale di CNOT &

La porta della CNOT cnot(control, target) gira il Qbit di destinazione esattamente quando il Qbit di controllo è in stato |1⟩- Non è vero . Se il qubit di controllo è in superposizione in anticipo, Questo può creare intrecciamenti i due qubit non possono più essere descritti in modo indipendente, Come nell'esempio dello stato di Bell. Se invece il qubit di controllo è in uno stato di base definito, Il CNOT effettua solo un flip di bit condizionato senza intreccio. Quindi non ogni CNOT crea automaticamente intreccio.

CZ: il parente simmetrico di CNOT

La porta CZ cz(a, b) Inverti il segno di ampiezza esattamente quando entrambi i qbits sono |1⟩- Non è vero . A differenza del CNOT, Non c'è controllo e non c'è qubit di destinazione il cancello agisce identicamente su entrambi i qubit, Questo è il motivo per cui è disegnato come due punti collegati nel diagramma. CZ e CNOT possono essere convertiti tra loro: un CNOT è una CZ il cui qubit obiettivo è passato attraverso un cancello Hadamard prima e dopo. CZ è un blocco centrale di costruzione di molti algoritmi, Come la ricerca di Grover.

Stato GHZ: impiccio come trio

Lo Stato GHZ (nominato in onore di Greenberger, Horne, e Zeilinger) estende il principio dello stato Bell a tre qubit: Un cancello Hadamard più due CNOT intreccio tutti e tre in modo che la misura solo rendere |000⟩ or |111⟩ Non mi sono mai mescolato. Nessun qubit ha più uno stato di sé. le informazioni si trovano esclusivamente nella correlazione condivisa.

Algoritmo di Deutsch: il più piccolo vantaggio quantistico

L'algoritmo tedesco risponde: con una sola valutazione di un oráculo sconosciuto, una domanda per la quale un computer classico ha bisogno di due valutazioni: la funzione è costante o equilibrata? Il trucco è inviare l'input attraverso l'oracolo in sovrapposizione grazie all'interferenza, la risposta successivamente è unambiguamente codificata nel qubit di input. Il principio che lo sta dietro (il retrocesso di fase) è al centro di quasi tutti gli algoritmi quantistici.

Ricerca in Grover: amplificazione delle ampiezze

La ricerca Grover trova un'entrata segnata in un insieme non ordinato con significativamente meno queries di quelle richieste in classico. Un oráculo segna lo stato ricercato con un passaggio di fase (qui attraverso un cancello CZ), L'operatore di diffusione amplifica l'ampiezza segnata a scapito di tutti gli altri. Con due qubit, una singola iterazione è sufficiente per misurare il colpo con probabilità del 100%.

Aggiunta reversibile: da quantum.add() a un circuito

L'editor di codice di programma sopra tradotto quantum.add({ a, b }) in un circuito di X, CNOT, e porte CCNOT (Toffoli) che riproducono l'aggiunta classica in modo puramente reversibile: Ogni cancello può essere disattivato esattamente, perché nessuna informazione viene scartata. Portata CCNOT (ccnot(c1, c2, target)) gira il qbit bersaglio solo quando entrambi i qbit di controllo sono |1⟩ che è sufficiente come blocco di costruzione per ricostruire in modo inversibile qualsiasi circuito classico, inclusa una serpente piena con carico. Le entrate A e B vengono inizialmente inizializzate come stati di base definiti (senza superposizione) utilizzando i cancelli X. Perché l'intero circuito quindi passa solo attraverso stati definiti invece di superposizioni, la misurazione alla fine dà esattamente un risultato con probabilità del 100% la somma classicamente corretta. Ecco perché quantum.add() produce un risultato deterministico nonostante la simulazione quantistica, invece di diversi stati possibili con probabilità inferiori al 100%.

Sostituzione: aggiunta inversa

Perché ogni cancello di un circuito quantistico è esattamente invertibile, il circuito completo adder può essere eseguito all'indietro e l'addizione diventa una sottrazione: quantum.subtract({ a, b }) utilizza esattamente le porte dell'addre in ordine inverso e quindi calcola a − b. Questo non è un trucco ma il principio di base del calcolo reversibile: nessun passo di calcolo distrugge le informazioni, Ogni passo può essere rovesciato. In questa versione, a ≥ b è richiesta in modo da non verificarsi risultati negativi.

Moltiplicazioni: quantum.multiply()

La moltiplicazione qui emerge esattamente dagli stessi blocchi di costruzione reversibili come l'addizione: seguendo il metodo del libro scolastico, fattore a viene aggiunto più volte in posizioni spostate corrispondente ai set di bit del fattore b. Ogni aggiunta parziale è la stessa agghiacciante adonda riversibile; il carry scorre ogni volta nel prossimo prodotto. Poiché il registro dei risultati aumenta con il prodotto, i fattori sono limitati a 3 bit (07) qui solo allora fare fattore, Il prodotto e il qubit portati insieme si inseriscono nei 10 qubit del simulator.

Divisione: quantum.divide()

Division utilizza anche solo blocchi di costruzione reversibili: quantum.divide({ a, b }) esegue una lunga divisione costruita da spostati, sottrazioni reversibili del divisore dal registro restante; Il risultato è il quotiente and il resto (a = quotient · b + remainderPerché dividendo, divisore, rapporto and un qubit di prestito deve essere inserito tutti insieme nei 10 qubit, la divisione è l'operazione più fortemente limitata: bits(a) + bits(b) + bits(a÷b) + 1 ≤ 10 deve tenere, e il divisore b deve essere ≥ 1 (nessuna divisione per zero). Se un contributo non corrisponde al bilancio, l'editore lo riporta invece che il computer.

Aleatorietà vera: quantum.random()

I computer classici non possono generare una vera casualità i loro "numeri casuali" provengono da algoritmi deterministici (pseudo-casuale). Un computer quantistico può: quantum.random({ bits }) mette ogni bit in una superposizione 50/50 utilizzando un cancello Hadamard, e solo la misura decide fondamentalmente imprevedibile che valore viene fuori. Su hardware quantistico reale questo è fisicamente vero casualità; Questo simulatore lo imita con la pseudo-randomità del tuo browser.

Simulatore vs. hardware quantistico reale

Questo simulatore calcola lo stato esattamente utilizzando l'aritmetica classica dei punti galleggianti nel tuo browser Questo funziona solo perché qui vengono considerati esclusivamente circuiti molto piccoli con fino a 10 qubit. I veri computer quantistici usano qubit fisici. sono inclini all'errore (decoherenza, rumore), E il loro vantaggio si mostra solo con circuiti molto più grandi che non possono più essere simulati in pratica. Questo strumento è uno strumento di apprendimento, Non un vero processore quantistico.

Domande frequenti

E' un vero computer quantistico?
No. Questo strumento è un classico simulatore a vettore di stato che calcola esattamente la matematica di un piccolo circuito quantistico (fino a 10 qubit) usando l'aritmetica in virgola mobile nel browser. Il vero hardware quantistico utilizza qubit fisici e funziona in modo completamente diverso.
Che cosa q0 è q0 in una stringa di bit come "10"?
q0 è sempre il bit più significativo (a sinistra). Con due qubit, x(0) crea quindi lo stato. ♬ non 01 .
Cosa significa "sparare"?
Scatti è il numero di misurazioni ripetute simulate (110,000). Ogni colpo disegna casualmente un risultato di misurazione in base alla distribuzione esatta di probabilità del vettore di stato. Le esatte probabilità non dipendono dall'incidente e sono mostrate separatamente.
Perché alcuni esempi mostrano un messaggio di errore?
Il campo di applicazione del MVP consente esattamente un circuito con esattamente una corsa ((() chiamata dopo misuraAll(). Indici di qubit non validi, porte dopo misuraTutto il angoli o conteggi di colpi non validi, e gli errori di sintassi nel codice vengono respinti con un messaggio di errore comprensibile.
Cosa fanno le porte Hadamard, X e CNOT?
X cambia. Hadamard trasforma uno stato di base in una sovrapposizione uguale peso. Il CNOT fa girare il bersaglio solo quando il controllo è di ∙1 e può creare intreccio quando viene combinato con la superposizione.
Come si crea il problema?
Un esempio applica Hadamard al primo qubit e poi CNOT al secondo. I qubit non possono più essere descritti in modo indipendente. e la misura produce risultati correlati come ∙ 00 o ∙ 11 .