Aufbau eines Quantencomputers in der Simulation


14

Wenn man einen Quantencomputer in Simulationen von Grund auf neu bauen möchte (wie man im Nand2Tetris-Kurs einen klassischen Computer von Grund auf neu baut ), ist das möglich?

Wenn ja, welche Ansätze wären denkbar?

Was sind die Grenzen einer solchen simulierten Maschine bei einer bestimmten Menge an klassischer Rechenleistung? Wenn wir zum Beispiel Ihren durchschnittlichen Desktop / Laptop auswählen, wo liegt die Grenze? Wenn wir einen Supercomputer (wie Titan) nehmen, welches wäre dann die Grenze?


Antworten:


6

Der erste Teil Ihrer Frage scheint ein Duplikat eines bestehenden QC SE-Posts zu sein: Gibt es Emulatoren für Quantencomputer? .

Ich bin mir nicht ganz sicher, was Sie damit meinen , einen Quantencomputer von Grund auf in Simulationen zu bauen . Ja, Sie können jedoch mit einem durchschnittlichen Laptop / Desktop Software-Simulationen eines Quantencomputers durchführen. Die genaue "Grenze" hängt von den Computerspezifikationen ab.

n2nn4n2n×2n

1Log4(8×1012)2120n


Sie können tatsächlich ein bisschen mehr Qubits simulieren, wenn Sie nur 1 und 2 Qubit-Gatter verwenden, um Ihre große Einheit zu zerlegen und auf einen reinen Zustand zu reagieren. Mit 8 GB RAM können Sie problemlos 25 Qubits mit doppelter Genauigkeit ausführen.
vsoftco

5

Nun, ich arbeite gerade an einem Simulator eines Quantencomputers. Die Grundidee des Quantencomputers sind natürlich Gatter, die durch Matrizen dargestellt werden, die auf Qubits angewendet werden, die durch Vektoren dargestellt werden. Mit Pythons Numpy-Paket ist dies im einfachsten Sinne nicht so schwer zu programmieren.

Von dort aus könnte man natürlich die Schnittstelle erweitern. Man könnte auch überlegen, es zu einem Simulator eines nichtidealen Quantencomputers zu machen, das heißt, Dekohärenzzeiten und Fehlerkorrekturen zu berücksichtigen.

Dann betritt man starkes Neuland. Wie konstruieren Sie den Befehlssatz für einen Quantencomputer? Wer weiß. Du musst es herausfinden. Sie müssen auch Ihre Assembly-Version und sogar Ihre Version der höheren Programmiersprachen herausfinden.

Also, Einschränkungen eines klassischen Computers dabei? Nun, dies ist eine wirklich komplizierte Frage (und es lohnt sich, sie separat zu stellen, imho), aber hier ist eine kurze Zusammenfassung:

  • Wir wissen nicht, ob Quantencomputer tatsächlich besser sind als klassische Computer. die Algorithmen für klassische Computer könnten einfach noch nicht gut genug sein (Quantenüberlegenheit)
  • lassen Sie uns sagen, wie anständig wahrscheinlich scheint, dass Quantencomputer sind besser als klassische Computer. Diese Verbesserung wird stark vom Problem abhängen - Quantencomputer können zum Beispiel eine viel schnellere Verbesserung beim Auffinden von Hauptfaktorisierungen feststellen als beim Abrufen von E-Mails. (Siehe auch dieses P.SE q / a.)
  • Ö(e649(LogN)13(LogLogN)23)Ö((LogN)2(LogLogN)(LogLogLogN))
  • |0|1

4

Ich glaube, diese Antwort beruht hauptsächlich auf einem grundlegenden Missverständnis dessen, was es bedeutet, etwas zu "simulieren".

Im Allgemeinen bedeutet "simulieren" eines komplexen Systems, bestimmte Merkmale eines solchen Systems mit einer Plattform zu reproduzieren, die einfacher zu steuern ist (häufig, aber nicht immer, ein klassischer Computer).

Die Frage, ob man "einen Quantencomputer in einem klassischen Computer simulieren kann", ist daher etwas ungeklärt. Wenn Sie meinen, dass Sie jeden möglichen Aspekt eines "Quantencomputers" replizieren möchten, wird dies niemals passieren, so wie Sie niemals jeden Aspekt eines klassischen Systems simulieren können (es sei denn, Sie verwenden dasselbe identische System) System natürlich).

Auf der anderen Seite, werden Sie sicherlich können viele Aspekte eines komplexen Gerät wie ein „Quantencomputer“ simulieren. Beispielsweise könnte man die Entwicklung eines Zustands innerhalb einer Quantenschaltung simulieren wollen. In der Tat kann dies außerordentlich einfach zu tun sein! Wenn Sie beispielsweise Python auf Ihrem Computer installiert haben, führen Sie einfach Folgendes aus

import numpy as np
identity_2d = np.diag([1, 1])
pauliX_gate = np.array([[0, 1], [1, 0]])
hadamard_gate = np.array([[1, 1], [1, -1]]) / np.sqrt(2)

cnot_gate = np.kron(identity_2d, pauliX_gate)
H1_gate = np.kron(hadamard_gate, identity_2d)

awesome_entangling_gate = np.dot(cnot_gate, H1_gate)

initial_state = np.array([1, 0, 0, 0])
final_state = np.dot(awesome_entangling_gate, initial_state)
print(final_state)

Glückwunsch, Sie haben gerade die Entwicklung eines trennbaren Zwei-Qubit-Zustands in einen Bell-Zustand "simuliert"!

Wenn Sie jedoch versuchen, dasselbe mit beispielsweise 40 Qubits und einem nichttrivialen Gate zu tun, werden Sie es nicht einfach schaffen. Der naive Grund ist, dass man sogar nur den Zustand einesn-qubit (nicht spärlich) Zustand, den Sie ~ angeben müssen2nkomplexe Zahlen, und diese beginnen sehr schnell viel Speicher in Anspruch zu nehmen. Ich sage hier "naiv", weil es in vielen Fällen Tricks geben kann, mit denen Sie dieses Problem umgehen können(1). Aus diesem Grund arbeiten viele Menschen daran, clevere Tricks zu finden, um Quantenschaltungen (und andere Arten von Quantensystemen) mit klassischen Computern zu simulieren, und warum dies alles andere als trivial ist(2).

Andere Antworten haben bereits verschiedene Aspekte dieser Härte angesprochen, und die Antworten auf diese andere Frage erwähnen bereits viele verfügbare Plattformen, um verschiedene Aspekte von Quantenalgorithmen zu simulieren / emulieren, so dass ich hier nicht hingehen werde.


(1) Ein interessantes Beispiel hierfür ist das Problem der Simulation einer Bosonenabtastvorrichtung (dies ist kein Quantenalgorithmus im Sinne eines Zustands, der sich durch eine Reihe von Gattern entwickelt, aber es ist dennoch ein Beispiel für eine nichttriviale Quantenvorrichtung). BosonSampling ist ein Probenahmeproblem , bei dem man sich mit dem Problem der Probenahme befasstAufgrund einer bestimmten Wahrscheinlichkeitsverteilung hat sich gezeigt, dass dies (unter wahrscheinlichen Annahmen) mit einem klassischen Gerät nicht effizient möglich ist. Obwohl sich nie gezeigt hat, dass dies ein grundlegender Aspekt dieser Härte ist, bestand ein mit der Simulation eines Bosonen-Probenahmegeräts verbundenes sicher nicht triviales Problem darin, eine exponentiell große Anzahl von Wahrscheinlichkeiten zu berechnen, aus denen eine Probe entnommen werden sollte. Es wurde jedoch kürzlich gezeigt, dass man tatsächlich nicht die gesamte Menge von Wahrscheinlichkeiten berechnen muss, um daraus eine Stichprobe zu erstellen ( 1705.00686 und 1706.01260)). Dies ist im Prinzip nicht weit davon entfernt, die Entwicklung vieler Qubits in einer Quantenschaltung zu simulieren, ohne den gesamten Zustand des Systems an einem bestimmten Punkt speichern zu müssen. In Bezug auf direktere Quantenschaltungen sind Beispiele für den jüngsten Durchbruch bei den Simulationsfähigkeiten 1704.01127 und 1710.05867 (auch ein neuerer, noch nicht veröffentlichter, ist 1802.06952 ).

(2) Tatsächlich wurde gezeigt (oder vielmehr, dass starke Beweise für die Tatsache erbracht wurden), dass es nicht möglich ist, die meisten Quantenschaltungen effizient zu simulieren, siehe 1504.07999 .

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.