In che modo il calcolo quantico cambierà la programmazione? [chiuso]


33

In cosa differisce la programmazione di un algoritmo quantistico? Come sarebbe un linguaggio simile a C se fosse progettato per i qubit? I tipi cambieranno?


Nota: non sono sicuro che si tratti di una domanda valida. Scusa se non lo è.
MaiaVictor,

4
Io penso che sia. Inoltre, non conosco molto bene le regole di questo sito. E non ho davvero un'ottima risposta a questa domanda, ma conosco questo algoritmo che potrebbe essere utilizzato per fattorizzare gli interi in modo molto più efficiente: arxiv.org/abs/0812.0380
John Davis,

3
Penso che questo argomento sia ancora oggetto di ricerca scientifica, le basi di un ipotetico computer quantistico sono ben note AFAIK, quindi la domanda dovrebbe essere rispondibile da un esperto di dominio (cosa che non sono). Quindi voto per non chiuderlo.
Doc Brown,

Risposte:


17

Quando ho esaminato questo aspetto qualche tempo fa, era chiaro che gli algoritmi quantistici, sebbene non particolarmente veloci, permettevano un parallelismo esponenzialmente massiccio. Quindi brilleranno nei casi che coinvolgono la ricerca in spazi che non sono pratici con l'hardware sequenziale, anche con l'hardware sequenziale massicciamente parallelo.

Una proprietà degli algoritmi quantistici è che devono essere reversibili . Ogni dato algoritmo può essere tradotto in uno che è reversibile, aggiungendo ad esso un numero sufficiente di registrazioni per consentirne l'esecuzione all'indietro.

Un'altra proprietà è che ottenere una risposta da un algoritmo quantistico è un affare incostante, perché ciò che ottieni alla fine di un calcolo sono risposte multiple, ognuna con la sua probabilità. Deve essere eseguito in modo tale che la risposta desiderata abbia un'alta probabilità. Ciò può comportare l'esecuzione dell'algoritmo più volte avanti e indietro.

Dai un'occhiata all'algoritmo di ricerca di Grover .


INSERITO per mostrare l'operazione fondamentale dell'algoritmo di Grover. Supponiamo che ci sia un problema di ricerca. Le possibili risposte sono 0, 1, 2 e 3, ma la risposta giusta è 2. Quindi il computer quantistico viene messo in una sovrapposizione di tutti e quattro gli stati e passa attraverso una sequenza di passaggi per vedere quale è corretto, e inverte la sua ampiezza, come i punti neri e le frecce sottostanti:

inserisci qui la descrizione dell'immagine

Puoi vedere che la freccia 2 è stata invertita all'interno della macchina, ma non c'è modo di dirlo all'esterno, perché all'esterno sono visibili solo le probabilità, che sono ampiezze quadrate e quando sono quadrate sono tutte uguali.

Tuttavia, le ampiezze hanno una media, indicata dalla linea rossa, e si può fare in modo che il computer passi attraverso una sequenza di passaggi che inverte ciascuna ampiezza rispetto alla media . Fatto ciò, le ampiezze e le probabilità passano allo stato 2, la risposta giusta ! Quindi, se si osserva la macchina, lo stato 2 si illumina.

Non è così semplice. Generalmente sono necessari più cicli della macchina, avanti e indietro, invertendo alla fine di ogni ciclo, per massimizzare la probabilità della risposta giusta. Inoltre, bisogna fare attenzione a non farlo più di quel numero di volte, perché può altrettanto facilmente invertirsi.

Allora perché dicono che i computer quantistici sono così veloci ? Perché ogni volta che raddoppiate il numero di qubit, quadrate il parallelismo, ma non quadrate la lunghezza del tempo, quindi alla fine vince.

Non è divertente?


Ero personalmente interessato a come questo potesse essere applicato alla verifica della correttezza del software. Ora testiamo il software lanciando un sacco di input di test su di esso e (per essere eccessivamente semplici) vedendo se colpisce un Assert. In un computer quantistico potrebbe essere possibile eseguirlo in parallelo su un set di input molto più denso e vedere se qualcuno di questi casi colpisce un Assert.

Come se l'input dell'algoritmo fosse 128 byte o 1024 bit, ci sono 2 ^ 1024 o 10 ^ 308 possibili ingressi diversi. Non c'è modo di testare molti input su un computer convenzionale, ma un computer quantistico potrebbe provarli tutti in parallelo.


2
Dai un'occhiata all'algoritmo di ricerca di Grover ... OH DIO! Non ero pronto per quello!
Filippo,

1
@Philip: so che la matematica è piuttosto scoraggiante, ma l'idea chiave è la rotazione sulla media, che ha l'effetto di trasferire la probabilità allo stato di risposta. Quindi corri indietro all'inizio e corri avanti e lo fai di nuovo, un certo numero di volte. Quindi se fai l'osservazione, hai massimizzato la probabilità di vedere lo stato della risposta.
Mike Dunlavey,

Vedi, non è poi così male quando lo dici così. Immagino di non avere familiarità con la notazione che stanno usando o con i circuiti quantistici. Anche la pagina sugli algoritmi quantistici è intimidatoria. Credo che Qubit sia il punto di partenza. (Wikipedia semplice ha una pagina sui computer Quantum , ma potrebbe usare un po 'di lavoro)
Philip

@Philip: supponi di avere una tabella di 1024 voci, quindi ci vogliono 10 bit per indicizzarla. Hai un registro a 10 (qu) bit e ha 1024 stati possibili. OK, quindi crei un universo in cui il registro è 0, un altro in cui è 1, fino a 1024 universi paralleli. Quindi le "istruzioni" quantistiche operano su tutte queste in parallelo. Ogni universo ha un "vettore di ampiezza", la cui grandezza è la sua probabilità, ma ha anche una direzione e quelli vengono manipolati. Poiché la raccolta di 1024 vettori ha un vettore medio diverso da zero, la rotazione ne aumenta uno, il resto più piccolo.
Mike Dunlavey,

Sono un fisico riformato e ho votato in negativo questa risposta perché è fuorviante. 1) gli algoritmi quantistici spesso sono particolarmente (asintoticamente) veloci - l'algoritmo di ricerca di Grover gira in O (sqrt (n)) mentre il meglio che un computer classico può fare è O (n). Se i computer quantistici non fossero asintoticamente più veloci non sarebbero molto interessanti. L'hardware potrebbe essere lento in questo momento, ma non è colpa degli algoritmi!
Benjamin Hodgson,

7

Come sarebbe un linguaggio simile a C se fosse progettato per i qubit? I tipi cambieranno?

Sarebbe così drasticamente diverso da essere incomprensibile come C.

Il problema principale (a quanto ho capito) è che l'informatica quantistica non funziona in un modo imperativo "fai questo, poi quello, poi quest'altra cosa". Cercare di forzare la capacità di C di farlo nel "processore" del computer quantistico sarà se non impossibile, selvaggiamente inefficiente.

Gli algoritmi di programmazione per i computer quantistici (di nuovo, come ho capito io) tendono ad essere più vicini alla mappa / alla riduzione dello stile di programmazione funzionale, poiché il calcolo quantistico consente a tutti i candidati nella parte "riduci" di esistere contemporaneamente e "cadere" dal computer quando osservato.

Si noti che esistono alcuni algoritmi per computer quantistici, anche se i dispositivi non esistono per eseguirli. L'algoritmo di Simon per esempio.


ELI5 per un algoritmo quantistico sarebbe fantastico.
MaiaVictor,

3

Al fine di rendere il più efficace possibile l'uso di un computer quantistico, è necessario essere in grado di gestire input e output che sono stati di un registro quantistico, per i quali non esiste davvero un analogo classico. Parlando di alcuni anni di esperienza nel campo dell'informazione quantistica, devo avvertirti che nessuno ha davvero una buona intuizione per questo oltre la matematica astratta delle algebre C *, e mi hanno detto che anche questa intuizione risulta essere inadeguata se inizi a pensare alla teoria della relatività.

La classe di problemi risolvibili in modo efficiente su un computer quantistico è nota come BQP, per il polinomio quantico limitato. Questa è la versione quantistica di BPP e puoi trovare maggiori informazioni in questo documento: http://www.scottaaronson.com/papers/bqpph.pdf

Mi è stato detto proprio ieri sera da un ricercatore di algoritmi quantistici che esiste un problema molto importante che è BQP-completo: risolvere un sistema lineare di equazioni N. Classicamente, questo è risolvibile in passaggi O (N) con eliminazione gaussiana. L'algoritmo Harrow-Hassidim-Lloyd ( http://arxiv.org/abs/0811.3171 ) lo risolve in polylog (N), a condizione che tu sia disposto ad accettare una risposta che ha la soluzione codificata come stato quantico. Se si desidera sfruttare appieno un computer quantistico, è quindi necessario disporre di un tipo corrispondente allo stato di un registro quantico.

Anche se sono un po 'al di fuori della mia particolare esperienza in questo momento, rischierei di pensare che si sarebbe in grado di programmare un computer quantistico purché si avesse accesso a un tipo corrispondente agli stati magici. Questo è un concetto difficile, tuttavia, che richiede alcuni studi sull'argomento.

Essere avvertiti che siamo molto a lungo dall'avere un linguaggio di programmazione quantistica, perché siamo in una fase molto primitiva della ricerca sull'informatica quantistica. Chiedere un C quantico in questo momento sarebbe come andare ad Alan Turing e chiedergli di progettare Python. Non abbiamo ancora ottenuto la versione quantistica del tubo a vuoto!

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.