-
HINTERGRUND DER ERFINDUNG
-
Die vorliegende Erfindung betrifft allgemein Quantenschaltungen und insbesondere ein Simulieren von Quantenschaltungen.
-
Quantenschaltungen machen direkten Gebrauch von quantenmechanischen Phänomenen wie beispielsweise Überlagerung und Freigabe, um Informationen zu verarbeiten. Zum Beispiel kann eine Quantenschaltung Quantengatter aufweisen, die logische Funktionen auf verschiedene Eingaben anwenden. Im Gegensatz zu digitalen Logikschaltungen, die auf konkrete Zustände (z.B. 0 und 1) für jedes Schaltungselement beschränkt sind, können Quantenschaltungen mehrere Zustände gleichzeitig (per Überlagerung) darstellen und verarbeiten. Infolgedessen kann Quantendatenverarbeitung einige Probleme viel schneller als herkömmliche Datenverarbeitung lösen und auch Probleme lösen, die derzeit für herkömmliche Datenverarbeitung zu komplex sind.
-
Ungeachtet der vielversprechenden Quantendatenverarbeitung sind Quantenschaltung schwierig aufzubauen, kostspielig und leiden unter verschiedenen Problemen, wie beispielsweise Skalierung und Quanten-Dekohärenz. Demzufolge besteht ein Bedarf, ein Simulieren von relativ großen Quantenschaltungen unter Verwendung von handelsüblichen Computern zu ermöglichen. Ferner besteht auch ein Bedarf an einem Vergleich der tatsächlichen Ausgaben einer Quanten-Datenverarbeitungseinheit mit dem idealen Verhalten, das durch Simulation für eine umgesetzte Quantenschaltung vorhergesagt wird, um die Genauigkeit zu bewerten, mit der eine Quanteneinheit eine gewünschte Quantenschaltung ausführen kann.
-
KURZDARSTELLUNG DER ERFINDUNG
-
In einem Aspekt der hierin offenbarten Ausführungsformen enthält ein Verfahren, ausgeführt durch einen oder mehrere Prozessoren, zum Simulieren einer Quantenschaltung, die eine Mehrzahl von Quantengattern aufweist, ein Empfangen einer digitalen Beschreibung der Quantenschaltung, ein Partitionieren der digitalen Beschreibung der Quantenschaltung in eine Mehrzahl von Quantenteilschaltungen, wobei jede Quantenteilschaltung der Mehrzahl von Quantenteilschaltungen ein oder mehrere Quantengatter aufweist, ein Bestimmen von Teilschaltungsabhängigkeiten für die Mehrzahl von Quantenteilschaltungen, ein Simulieren der Mehrzahl von Quantenteilschaltungen gemäß den Teilschaltungsabhängigkeiten, um Simulationsergebnisse für jede Quantenteilschaltung der Mehrzahl von Quantenteilschaltungen zu erzeugen, wobei eine erste und eine zweite Quantenteilschaltung der Mehrzahl von Quantenteilschaltungen jeweils ein oder mehrere Gatter enthalten, die auf ein gemeinsames Qubit angewendet werden, und wobei die erste und die zweite Quantenteilschaltung unabhängig voneinander unter Verwendung eines verschränkten Tensorindex simuliert werden. Ein entsprechendes Computerprogrammprodukt wird hierin ebenfalls offenbart.
-
In einem Aspekt der hierin offenbarten Ausführungsformen enthält ein Verfahren, ausgeführt durch einen oder mehrere Prozessoren, zum Simulieren einer Quantenschaltung, die eine Mehrzahl von Quantengattern aufweist, ein Empfangen einer digitalen Beschreibung der Quantenschaltung, die eine Mehrzahl von Stufen aufweist, ein Erstellen einer Teilschaltung für jedes Anfangsstufen-Qubit, um eine Mehrzahl von Teilschaltungen zu erzeugen, ein wiederholtes Hinzufügen von verbundenen, nicht brückebildenden Gattern von einer oder mehreren anschließenden Stufen der Mehrzahl von Stufen zu der Mehrzahl von Teilschaltungen, bis keine weiteren verbundenen, nicht brückebildenden Gatter mehr verfügbar sind, ein Auswählen eines brückebildenden Gatters, das mit zwei oder mehreren Teilschaltungen der Mehrzahl von Teilschaltungen verbunden ist, ein Bestimmen, ob die zwei oder die mehreren Teilschaltungen verschränkt werden sollen, und ein Hinzufügen des brückebildenden Gatters nur zu einer der zwei oder der mehreren Teilschaltungen in Reaktion auf ein Bestimmen, dass die zwei oder die mehreren Teilschaltungen verschränkt werden sollen. Ein entsprechendes Computerprogrammprodukt wird hierin ebenfalls offenbart.
-
In einem Aspekt der hierin offenbarten Ausführungsformen enthält ein Verfahren, ausgeführt durch einen oder mehrere Prozessoren, zum Simulieren einer Quantenschaltung, die eine Mehrzahl von Quantengattern aufweist, ein Empfangen einer digitalen Beschreibung einer Gruppe von Quantenteilschaltungen, die Quantengatter und entsprechende Qubits aufweisen, ein Zuweisen eines unterschiedlichen Tensorindex zu jedem Qubit und zu einem Ausgang jedes nicht diagonalen unitären Gatters, ein Verbreiten einer Tensor-Indexvariablen von einem Eingang zu einem Ausgang jedes diagonal unitären Gatters, und ein Ausführen jeder Quantenteilschaltung unter Verwendung der zugewiesenen Tensorindizes. Ein entsprechendes Computerprogrammprodukt wird hierin ebenfalls offenbart.
-
Figurenliste
-
- 1 ist eine Veranschaulichung und zugehörige Gleichungen, die ein Beispiel von Quantenzuständen gemäß mindestens einer Ausführungsform der vorliegenden Erfindung darstellen ;
- 2 ist eine Gruppe von Gleichungen, die ein Beispiel von Basisvektoren darstellen, die einem Qubit gemäß mindestens einer Ausführungsform der vorliegenden Erfindung entsprechen;
- 3 ist eine Gruppe von Gleichungen, die zwei Beispiele einer Tensordarstellung eines Quantensystems gemäß mindestens einer Ausführungsform der vorliegenden Erfindung darstellen;
- 4A ist eine Gruppe von schematischen Symbolen, und 4B ist eine entsprechende Gruppe von Tensortabellen, die verschiedene Beispiele von Quantengattern gemäß mindestens einer Ausführungsform der vorliegenden Erfindung darstellen;
- 5 ist ein Ausführungsplan, der einer großen Quantenschaltung entspricht, von der üblicherweise angenommen wird, dass es unmöglich ist, sie auf derzeit verfügbaren Datenverarbeitungssystemen zu simulieren;
- 6 ist eine schematische Darstellung und entsprechende logische Beschreibung auf Textgrundlage einer Quantenschaltung, die hierin als ein Verarbeitungsbeispiel gemäß mindestens einer Ausführungsform der vorliegenden Erfindung verwendet wird;
- 7 ist ein Ablaufplan, der ein Beispiel eines Simulationsverfahrens für eine Quantenschaltung gemäß mindestens einer Ausführungsform der vorliegenden Erfindung darstellt;
- 8A bis 8C sind Abbildungen mit Text, die Tensorgleichungen und Ressourcenkosten darstellen, die einem Simulieren von verschiedenen Quantengattern zugehörig sind, die in 4 und 5 dargestellt werden;
- 9A bis 9E sind schematische und Gleichungs-Darstellungen, die die Auswirkung eines Partitionierens auf die Datenverarbeitungsressourcen darstellen, die zum Simulieren eines bestimmten Beispiels einer Quantenschaltung gemäß mindestens einer Ausführungsform der vorliegenden Erfindung benötigt werden;
- 10 ist ein Ablaufplan, der ein Beispiel eines Partitionierungsverfahrens für eine Quantenschaltung gemäß mindestens einer Ausführungsform der vorliegenden Erfindung darstellt;
- 11A ist ein Ablaufplan, der ein Beispiel eines Ausführungsverfahrens für eine Quantenschaltung gemäß mindestens einer Ausführungsform der vorliegenden Erfindung darstellt;
- 11B ist ein Ablaufplan, der weitere Details des Ausführungsverfahrens für eine Quantenschaltung darstellt, das in 11A dargestellt wird;
- 12A bis 12C sind schematische Darstellungen, die ein Beispiel einer Optimierung vor einer Partitionierung eines bestimmten Beispiels einer Quantenschaltung darstellen;
- 13A bis 13D sind schematische Darstellungen, die vier Beispiele für eine Partitionierung und Ausführung eines bestimmten Beispiels einer Quantenschaltung darstellen;
- 14 ist eine Schaltungspartitionierung, die Teilschaltungen der großen Quantenschaltung entsprechend 5 darstellt, die eine Simulation auf derzeit verfügbaren Datenverarbeitungssystemen ermöglicht;
- 15 ist ein Blockschaubild, das ein Beispiel einer Datenverarbeitungsvorrichtung darstellt, die zum Ausführen von einem oder mehreren der hierin offenbarten Verfahren geeignet ist.
-
AUSFÜHRLICHE BESCHREIBUNG
-
Die folgenden Begriffe, Definitionen und Konzepte, die aus öffentlich verfügbaren Quellen wie zum Beispiel Wikipedia sowie den praktischen Kenntnissen der Erfinder zusammengetragen wurden, können für das Verständnis der vorliegenden Erfindung hilfreich sein - insbesondere für diejenigen, die über keine Erfahrung auf dem Gebiet des Simulierens von Quantenschaltungen verfügen.
-
Quantenüberlagerung: Die Nettoreaktion (z.B. im einem Schaltungselement), die durch zwei oder mehrere Impulse gleichzeitig verursacht wird, ist die Summe der Reaktionen, die durch jeden Impuls einzeln verursacht worden wären. Im Fall eines Quantensystems ist die Reaktion ein Quantenzustand, der eine lineare Überlagerung von diskreten Zuständen sein kann. Eine Überlagerung ermöglicht dadurch, dass Quantenschaltungen gleichzeitig mehrere Zustände oder Resultate darstellen können (z.B. eine statistische Mischung von 0 und 1).
-
Quantensystem: Ein System, das Quanteneffekte wie Überlagerung und Verschränkung aufweist.
-
Quantenzustände: Die Zustände (Möglichkeiten), die (gleichzeitig) in einem Quantensystem vorhanden oder verfügbar sind.
-
Qubit: Eine Einheit eines Quantenspeichers, die eine statistische Mischung aus einem 0-Zustand und einem 1-Zustand gleichzeitig darstellen kann.
-
Quantenzusammenbruch: Die Handlung eines Messens des Zustands eines quantenmechanischen Systems, der verursacht, dass das System sich zu einem gemessenen Einzelzustand entwickelt. In einem realen quantenmechanischen System wird durch die Handlung des Messens im Wesentlichen ein einzelner verwirklichter Wert aus einer statistischen Mischung von Werten ausgewählt. In einer simulierten Quantenschaltung können Messungen jedoch vorgenommen werden, ohne die zugrunde liegenden Zustandsinformationen zu zerstören.
-
Verschränkung: Ein vorhandener Effekt zwischen zwei Quantensystemen, deren quantenmechanische Zustände voneinander unabhängig sind. Zum Beispiel gibt ein Messen des Zustands von einem von zwei verschränkten Qubits Informationen über den Zustand des anderen verschränkten Qubits an, da ihre Zustände statistisch in Beziehung gesetzt sind.
-
Quantendaten: Informationen, die als ein oder mehrere Quantenzustände dargestellt sind (z.B. mit einem Quantenschaltungselement wie beispielsweise einem Qubit).
-
Quantengatter: Ein Element einer Quantenschaltung, die zum Ausführen einer logischen oder mathematischen Funktion an Quantendaten verwendet wird. Beispiele für Quantengatter werden in den 4 und 5 gezeigt.
-
Tensor: Ein k-dimensionales Array von realen oder komplexen Werten, wobei k der Rang oder die Ordnung des Tensors ist. Eine Matrix ist ein Tensor zweiter Ordnung, und ein Vektor ist ein Tensor erster Ordnung. Tensoren können zum Darstellen von Quantenzuständen in einer Quantensimulation verwendet werden.
-
Tensornetzwerk: Eine gerichtete grafische Darstellung, die einer Gruppe von miteinander zusammenhängenden Tensorgleichungen entspricht. Ein Tensornetzwerk kann verwendet werden, um eine Quantenschaltung darzustellen, wobei die Knoten in der grafischen Darstellung Tensoren sind, die Quantenschaltungselemente (z.B. Quantengatter) darstellen, und die Flanken der grafischen Darstellung können Indizierungsvariablen für die Tensoren angeben.
-
Tensorkontraktion: Ein mathematisch strikter Prozess eines Zusammenführens einer Reihe von zwei oder mehreren miteinander zusammenhängenden Tensoren zu einem einzigen Tensor. Eine Tensorkontraktion kann unter Umständen die Größe des sich ergebenden Tensors multiplikativ vergrößern, was von der Beziehung der Indizierungsvariablen der zusammengeführten Tensoren abhängt. Wenn eine Quantenschaltung als ein Tensornetzwerk dargestellt wird, führt die Tensorkontraktion zwei oder mehrere Knoten zusammen, die durch eine oder mehrere Flanken zu einem einzigen Knoten verbunden sind.
-
Wie hierin verwendet, sind die Begriffe „simulieren“ und „ausführen“ (z.B. eine Quantenteilschaltung) im Wesentlichen dadurch synonym, dass (im Gegensatz zu vielen Simulationen, die reine Näherungswerte von etwas Realem sind) die hierin offenbarten Simulationsverfahren für eine Quantenschaltung reale, rechnerisch gültige Ergebnisse erzielen. Wie hierin verwendet, bezieht sich der Ausdruck „Indexvariable“ oder dergleichen auf jeden Typ von Arbeitsspeicheradressierung oder -indizierung (wie diejenigen, die dem Fachmann bekannt sind), der zu einem Zugriff auf die gewünschten Daten und/oder den gewünschten Arbeitsspeicher-Speicherort führt.
-
Mindestens einige der hierin offenbarten Ausführungsformen erkennen, dass Quantenschaltungen unter Verwendung von weniger Arbeitsspeicher als herkömmlicherweise angenommen simuliert werden können. Zum Beispiel können mindestens einige der hierin offenbarten Ausführungsformen den Arbeitsspeicher, der zum Darstellen und Simulieren von Quantenschaltungen erforderlich ist, die N Qubits aus 2N komplexen Werten aufweisen, auf einen Bruchteil dieser Menge verringern.
-
Insbesondere erkennen mindestens einige der hierin offenbarten Ausführungsformen, dass eine Quantenschaltung in Teilschaltungen partitioniert werden kann, indem Quantenschaltungselemente in zwei oder mehrere der Teilschaltungen verschränkt werden. Mindestens einige der hierin offenbarten Ausführungsformen erkennen des Weiteren, dass die Simulationsergebnisse von einigen Teilschaltungen in Anteilen berechnet werden können, und dadurch der Arbeitsspeicher, der zum Simulieren der gesamten Quantenschaltung erforderlich ist, im Gegensatz zu herkömmlichen Annahmen signifikant verringert werden kann. Eine der erfinderischen Erkenntnisse der vorliegenden Erfindung besteht darin, dass diese aufteilenden Operationen während der Simulation einer Quantenschaltung ausgeführt werden können, sobald ein Punkt in der Simulation erreicht ist, an dem alle übrigen Quantengatter, die auf ein Qubit angewendet werden, diagonal unitäre Gatter sind. Unter solchen Umständen kann ein iteratives Konstrukt, wie beispielsweise eine For-Schleife, eingeführt werden, um eine Wiederholung über die 0/1-Werte des Qubits auszuführen, und anschließende Tensoroperationen, an denen dieses Qubit beteiligt ist, können in Anteilen unter Verwendung der halben Menge von Arbeitsspeicher als ohne die Verwendung einer Tensoraufteilung ausgeführt werden.
-
Es ist anzumerken, dass Verweise in der gesamten Patentschrift auf Funktionen, Erkenntnisse, Vorteile oder ähnliche Ausdrucksweise hierin nicht implizieren, dass alle Funktionen und Vorteile, die mit den hierin offenbarten Ausführungsformen verwirklicht werden können, in jeder einzelnen Ausführungsform der Erfindung vorhanden sein sollen oder vorhanden sind. Stattdessen soll eine Ausdrucksweise, die auf die Funktionen und Vorteile verweist, so zu verstehen sein, dass eine bestimmte Funktion, ein bestimmter Vorteil oder ein Merkmal, die in Verbindung mit einer Ausführungsform beschrieben werden, in mindestens einer Ausführungsform der vorliegenden Erfindung enthalten sind. Somit können sich die Erörterung von Funktionen, Vorteilen und ähnliche Ausdrucksweise in dieser gesamten Patentschrift auf dieselbe Ausführungsform beziehen, dies ist aber nicht notwendigerweise der Fall.
-
Ferner können die beschriebenen Funktionen, Erkenntnisse, Vorteile und Merkmale der Erfindung auf jede geeignete Art und Weise in einer oder mehreren Ausführungsformen kombiniert werden. Der Fachmann des relevanten Gebiets wird erkennen, dass die Erfindung ohne eine oder mehrere der spezifischen Funktionen oder Vorteile einer bestimmten Ausführungsform ausgeübt werden kann. In anderen Beispielen können zusätzliche Funktionen und Vorteile in bestimmten Ausführungsformen erkannt werden, die möglicherweise nicht in allen Ausführungsformen der Erfindung vorhanden sind. Diese Merkmale und Vorteile werden aus den folgenden Zeichnungen, der Beschreibung und den Ansprüchen im Anhang umfassender offenkundig oder können durch Ausübung der hierin im Folgenden dargelegten Erfindung in Erfahrung gebracht werden.
-
1 ist eine Veranschaulichung und zugehörige Gleichungen, die ein Beispiel von Quantenzuständen gemäß mindestens einer Ausführungsform der vorliegenden Erfindung darstellen . Teilchen wie zum Beispiel Elektronen, die an andere Teilchen wie beispielsweise Atome gebunden sind, sind auf diskrete (d.h. quantisierte) Schwingungsenergiepegel beschränkt, auf die als Quantenzustände verwiesen wird. In Dirac-Schreibweise (auch als Bra-Ket-Schreibweise bekannt) werden diese Zustände mit |0〉, |1〉, |2〉, |3〉 usw. bezeichnet, wobei 10) dem niedrigsten Energiepegel entspricht, der als der Grundzustand bekannt ist.
-
Quantencomputer bearbeiten die Zustände von Quantensystemen, um Berechnungen auszuführen und Probleme zu lösen. Typischerweise werden nur die beiden niedrigsten Energiezustände verwendet, was zu einer Berechnungs- und Speichereinheit führt, die als Qubit bekannt ist. Da eine Bearbeitung und ein Zugriff auf einzelne Elektronen problematisch ist, werden Qubits von Quantencomputern typischerweise als supraleitfähige Oszillatoren verkörpert. Zu Beispielen zählen Transmon-Qubits, die Halbleitereinheiten sind, die Kondensatoren mit supraleitenden Josephson-Übergangsvorrichtungen kombinieren, die effektiv als nicht lineare Induktoren arbeiten und eine Schwingkreisresonanz ermöglichen.
-
Wie in Gleichung 110 gezeigt, können die primären Schwingungszustände eines Quantensystems als Basisvektoren in einem n-dimensionalen Vektorraum darstellt werden. Ein willkürlicher Quantenzustand eines Quantensystems kann dann als eine lineare Kombination (d.h. Überlagerung) dieser Basisvektoren mit einem komplexen skalaren Multiplikator αi für jede Grunddimension in dem Vektorraum dargestellt werden. Gleichung 120 zeigt, dass beim Ausführen einer Messung das Quantensystem auf einen der primären Schwingungszustände zusammenbricht, in dem die Wahrscheinlichkeit proportional zum Quadrat der Größe des skalaren Multiplikators αi ist (auch bekannt als komplexe Amplitude oder einfach nur Amplitude) für diesen Schwingungszustand direkt vor der Messung.
-
Wie in Gleichung 130 gezeigt, unterliegt die zeitliche Entwicklung eines bestimmten Quantenzustands der Schrödinger-Gleichung. Der Begriff H(t) ist als Hamilton-Funktion bekannt und entspricht der Gesamtenergie in dem System. Sie kann durch eine Matrix dargestellt werden, die eine lineare Transformation des skalaren Multiplikators αi definiert. Wie in Gleichung 140 gezeigt, haben Lösungen für die Schrödinger-Gleichung die Form |ψ(t)〉 = U(t) |ψ(0)〉 wobei U(t) als eine unitäre Matrix dargestellt werden kann, die auch eine lineare Transformation der skalaren Multiplikatoren αi definiert. Während Hamilton-Matrizen den gesamten Energien von Quantensystemen entsprechen, entsprechen die unitären Matrizen, die in Lösungen der Schrödinger-Gleichung auftreten, jedoch den zeitlichen Entwicklungen von Quantensystemen.
-
Gleichung 150 zeigt, dass unitäre Matrizen die Eigenschaft haben, dass ihre Umkehrungen gleich den Umsetzungen ihrer komplexen Konjugate sind. Diese Eigenschaft spiegelt die Tatsache wider, dass die zeitlichen Entwicklungen von Quantensystemen umkehrbar sind, bis Messungen vorgenommen werden (d.h. jede ausgeführte Aktion kann durch umgekehrte Aktionen rückgängig gemacht werden). Messungen sind nicht umkehrbare Aktionen, die nicht unitäre Transformationen verursachen.
-
2 ist eine Gruppe von Gleichungen, die ein Beispiel von Basisvektoren darstellen, die einem Qubit gemäß mindestens einer Ausführungsform der vorliegenden Erfindung entsprechen. Wie in 2 gezeigt, können die wichtigsten Quantenzustände eines Qubits, nämlich 10) und |1〉, jeweils durch einen Basisvektor der Länge 2 dargestellt werden, der binäre Einträge aufweist, die angeben, dass sich das System ausschließlich in dem einen oder dem anderen wichtigen Quantenzustand befindet. Wie in Gleichung 210 gezeigt, kann jeder Quantenzustand (d.h. |ψ〉) eines Qubits als eine lineare Kombination der Grundzustände |0〉 und 11) dargestellt werden, (d.h. durch die skalaren Multiplikatoren dieser Grundzustände). In der dargestellten Gleichung sind die skalaren Multiplikatoren (d.h. Amplituden) für die Grundzustände |0〉 und |1〉 jeweils die griechischen Buchstaben Alpha (α) und Beta (β). Infolgedessen ist die Wahrscheinlichkeit, dass ein gemessenes Qubit auf einen Zustand 10) zusammenbricht, gleich |α|2, und die Wahrscheinlichkeit, dass ein gemessenes Qubit auf einen Zustand |1〉 zusammenbricht, gleich |β|2.
-
3 ist eine Gruppe von Gleichungen, die zwei Beispiele einer Tensordarstellung eines Quantensystems gemäß mindestens einer Ausführungsform der vorliegenden Erfindung darstellen. Anstelle der üblicheren Dirac-Schreibweise kann ein Quantensystem, das n Qubits aufweist, als ein n-dimensionales Array dargestellt werden (d.h. ein Tensor), wie durch Markov und Shi eingeführt. Insbesondere kann ein Tensor 310, der hierin mit dem griechischen Buchstaben Psi (ψ) mit n indizierenden Tiefstellungen (i1 ...in ) zum Darstellen des Quantenzustands von n Qubits verwendet werden, wobei die Wahrscheinlichkeit, einen zusammengebrochenen oder gemessenen Wert zu beobachten, durch die komplexe skalare Amplitude ψ bestimmt wird, die dem Grundzustand 320 zugehörig ist, der als | i1 ... in〉 dargestellt ist. Jede indizierende Tiefstellung (i1 ... in ) des Grundzustands 320 ist ein Binärwert, wenn das Quantensystem zusammengebrochen ist oder gemessen wird.
-
Die Beziehung zwischen der Tensordarstellung eines Quantenzustands und der Dirac-Darstellung wird in Gleichung 330 gezeigt. Der Quantenzustand in der Dirac-Darstellung ist eine lineare Kombination der Grundzustände |0···0〉, ..., |1···1〉, wobei die Werte des entsprechenden Quantenzustandstensors die komplexen skalaren Multiplikatoren sind, die diese lineare Kombination definieren. Die Tensorwerte in Gleichung 330 spielen somit dieselbe Rolle wie die griechischen Buchstaben Alpha (α) und Beta (β) in Gleichung 210.
-
Eine vollständige Tensorgleichung für ein anderes beispielhaftes Quantensystem (d.h. eine Quantenschaltung) wird in Gleichung 340 gezeigt. In dem dargestellten Beispiel wird ein Zwei-Qubit-Gatter auf Qubits k und m, k < m, in einer Quantenschaltung angewendet, die n Qubits aufweist, die sich anfänglich im Quantenzustand ψ befinden. Gleichung 340 drückt den Wert des Tensors für den sich daraus ergebenen Quantenzustand ψ' in Form des anfänglichen Quantenzustands ψ und des Tensors u aus, der der unitären linearen Transformation entspricht, die durch das Zwei-Qubit-Gatter definiert wurde. Die entsprechende Gleichung in Dirac-Schreibweise wäre bedeutend komplexer, da für sie erforderlich ist, den 4-dimensionalen Gatter-Tensor u in eine 2n mal 2n dimensionale Matrix auszudehnen, wobei jeder der 16 Werte u, repliziert mit 2(n-4) , in den korrekten Kombinationen von Zeilen und Spalten dieser Matrix repliziert wird. Sofern nicht k = m-1 ist, wäre die entsprechende Gleichung in Dirac-Schreibweise ziemlich chaotisch, wogegen sie unter Verwendung der Tensorschreibweise einfach ausgedrückt werden kann.
-
4A ist eine Gruppe von schematischen Symbolen und 4B ist eine entsprechende Gruppe von Tensortabellen, die verschiedene Beispiele von Quantengattern gemäß mindestens einer Ausführungsform der vorliegenden Erfindung darstellen. Die dargestellten Quantengatter enthalten Pauli-Gatter 410, Überlagerungsgatter 420, ein gesteuertes NOT-Gatter 430, ein gesteuertes Z-Gatter 440 und Nicht-Clifford-Gatter 450. Die dargestellten Quantengatter sind nicht erschöpfende Beispiele für Gatter, die in Quantenberechnungssystemen verwendet werden können.
-
Die Pauli-Gatter 410 entsprechen der Pauli-Gleichung, von der das Zusammenwirken des Spins eines Teilchens mit einem externen elektromagnetischen Feld berücksichtigt wird. Die Überlagerungsgatter 420 enthalten ein Hadamard-Gatter 420A und jeweils S- und S†-Gatter 420B und 420C. Das Hadamard-Gatter 420A ordnet die wichtigsten (exklusiven) Grundzustände |0) und 11) zu Zuständen zu, die auf halbem Weg zwischen |0) und 11) liegen, nämlich jeweils (10) + |1〉)/√2 und (10) - |1〉)/√2, was zu einer gleichen Wahrscheinlichkeit für die Grundzustände 10) und 11) führt. Die jeweiligen S- und S†-Gatter 420B und 420C werden manchmal verwendet, um 90°-Phasendrehungen zu Überlagerungen hinzuzufügen.
-
Gesteuerte Gatter wirken auf zwei oder mehrere Qubits, wobei ein oder mehrere Qubits als eine Steuerung für eine bestimmte Operation wirken. Mit dem gesteuerten Z- (CZ) Gatter 440 bestimmt eines der Qubits, ob eine Pauli-Z-Operation auf das andere Qubit angewendet wird. Die Aktion eines CZ-Gatters ist vollkommen symmetrisch in dem Sinn, dass die Ergebnisse unabhängig davon, welches Qubit die Steuerung ist, dieselben sind. Mit dem gesteuerten NOT- (CNOT) Gatter 430 bestimmt eines der Qubits, ob eine Pauli-X-Operation auf das andere Qubit angewendet wird, wodurch verursacht wird, dass das andere Qubit in den NOT-Zustand versetzt (umgekehrt) wird. Das CNOT-Gatter 430 und das CZ-Gatter 440 können beide verwendet werden, um Qubits zu verschränken oder die Verschränkung aufzuheben. Das klassische Gegenstück zu einem CNOT-Gatter ist ein reversibles XOR-Gatter.
-
Nicht-Clifford-Gatter werden zum Annähern von willkürlichen unitären Transformationen verwendet. Die dargestellten Nicht-Clifford-Gatter T und T† , jeweils 450A und 450B, fügen 45°-Phasendrehungen hinzu. Während die Clifford-Gatter 410 bis 440 nur eine Verwirklichung von finiten Anzahlen von verschiedenen unitären Transformationen zulassen, erweitert das Hinzufügen von T- und T†-Gattern diese Gruppe auf Unendlich, wodurch jede unitäre Transformation durch geeignete Kombinationen dieser Gatter auf beliebige Genauigkeit angenähert werden kann. Universal-Quantendatenverarbeitung greift auf diese Fähigkeit zurück.
-
Fachleuten auf dem Gebiet der Quantendatenverarbeitung wird klar sein, dass Z-, S-, S†-, CZ-, T- und T†-Gatter diagonal unitäre Gatter sind, was bedeutet, dass ihre Dirac-Matrixdarstellungen diagonal sind, wobei die nicht-diagonalen Angaben Null sind. Die Tensordarstellungen von diagonal unitären Gattern müssen andererseits nur diese diagonalen Angaben wiedergeben, wie in 4B gezeigt.
-
5 ist ein Ausführungsplan 500, der einer großen Quantenschaltung entspricht, von der üblicherweise angenommen wird, dass es unmöglich ist, sie auf derzeit verfügbaren Datenverarbeitungssystemen zu simulieren. Wie dargestellt, enthält der Ausführungsplan 500 eine Anzahl von Kacheln 510 mit Gattersymbolen 520, die darin enthalten sind. Jede Kachel 510 entspricht einer Stufe oder einem Zeitschritt, und die Gattersymbole 520 geben die Funktion (Transformation) an, die an einem oder mehreren Qubits während der angegebenen Stufe bzw. des Zeitschritts ausgeführt wurde. In der dargestellten Ausführungsform wird der Ausführungsplan 500 Zeile für Zeile von oben nach unten und Kachel für Kachel von links nach rechts innerhalb jeder Zeile ausgeführt. Dem Fachmann wird klar sein, dass jede Kachel einem 7x7-Array von Qubits entspricht, und dass 249 Arbeitsspeicherwerte erforderlich sind, um alle möglichen Zustände von 49 Qubits darzustellen. Wenn daher zwei 8-Byte-Gleitkommawerte zum Speichern von (komplexen) Qubit-Zustandsinformationen verwendet werden, sind 253 Bytes (8 Petabyte) Arbeitsspeicher erforderlich, um eine Simulation des dargestellten Ausführungsplans unter Verwendung von herkömmlichen Simulationstechniken zu garantieren.
-
6 ist eine schematische Darstellung und eine entsprechende Beschreibung auf Textgrundlage einer Quantenschaltung 650, die hierin als ein Verarbeitungsbeispiel gemäß mindestens einer Ausführungsform der vorliegenden Erfindung verwendet wird. Die in der Quantenschaltung 650 angegebenen Quantengatter enthalten ein Hadamard-Gatter 660, ein X-Pauli-Gatter 670A, ein Y-Pauli-Gatter 670B, ein Z-Pauli-Gatter 670C und ein CNOT-Gatter 680. Die dargestellte Beschreibung auf Textgrundlage entspricht der OpenQASM-Spezifikation und gibt an, welche Gatter spezifische Qubits bedienen. Für die angegebenen Funktionen und Gatter wird angenommen, dass sie sich in einer Phasen-/Zeitschritt-Reihenfolge befinden. Demzufolge ist die dargestellte Beschreibung auf Textgrundlage äußerst kompakt.
-
7 ist ein Ablaufplan, der ein Beispiel eines Simulationsverfahrens für eine Quantenschaltung 700 gemäß mindestens einer Ausführungsform der vorliegenden Erfindung darstellt. Wie dargestellt, enthält das Simulationsverfahren für eine Quantenschaltung 700 ein Empfangen (710) einer digitalen Beschreibung einer Quantenschaltung, ein Ausführen (720) von Optimierungen vor einer Partitionierung, ein Partitionieren (730) der Quantenschaltung in Teilschaltungen, ein Bestimmen (740) einer Ausführungsreihenfolge und ein Ausführen (750) der Quantenschaltung. Das Simulationsverfahren für eine Quantenschaltung 700 kann durch einen Computer ausgeführt werden, wie beispielsweise einen Computer 1500, der in 15 dargestellt ist, und ermöglicht die Simulation von Quantenschaltungen auf einem oder mehreren herkömmlichen Computern und zugehörigen Speichereinheiten.
-
Das Empfangen (710) einer digitalen Beschreibung einer Quantenschaltung kann ein Empfangen einer auf Text beruhenden oder binären Beschreibung der Quantenschaltung enthalten. Die Beschreibung kann die in der Schaltung enthaltenen Quantengatter und die Abhängigkeiten zwischen Gattern angeben. In einer Ausführungsform entspricht die digitale Beschreibung der OpenQASM-Spezifikation.
-
Das Ausführen (720) von Optimierungen vor einer Partitionierung kann ein Ausführen von Gatterersetzungen (z.B. Schaltungsumschreibung) enthalten, die die Ressourcen verringern, die zum Ausführen der Quantenschaltung erforderlich sind. Die Schaltungsumschreibungen können auch ein Ausführen von Gatterersetzungen in Endstufen einer Quantenschaltung enthalten, die nicht diagonal unitäre Gatter durch Ketten von diagonal unitären Gattern ersetzen, die von dem Ende einer Schaltung für einige Qubits nach innen führen. Derartige Schaltungsumschreibungen ermöglichen, dass eine Tensoraufteilung früher in einer Schaltung ausgeführt werden kann, um Arbeitsspeicheranforderungen noch weiter als ohne derartige Umschreibungen zu verringern. Schaltungsumschreibungen können auch Gatterersetzungen enthalten, die Multi-Qubit-Gatter auf spätere Stufen einer Schaltung verschieben. Derartige Schaltungsumschreibungen können das Ansteigen von Arbeitsspeicheranforderungen auf einen späteren Zeitpunkt in einer Schaltung aufschieben und können die Möglichkeit für eine zusätzliche Tensoraufteilung verbessern, die angewendet werden soll, um die Arbeitsspeicheranforderungen noch weiter zu verringern, die zum Simulieren von Quantenschaltungen benötigt werden.
-
Das Partitionieren (730) der Quantenschaltung in Teilschaltungen kann ein Schätzen der Ressourcenkosten für eine Anzahl von möglichen Partitionen (heuristisch oder erschöpfend) und ein Auswählen der Partitionierung mit den geringsten Ressourcenkosten enthalten. In einigen Ausführungsformen wird das Schätzen und Auswählen rekursiv ausgeführt. In bestimmen Ausführungsformen wird jedes Eingangs-Qubit einer separaten Teilschaltung zugewiesen, und die Teilschaltungen stehen in Wettstreit miteinander, um Gatter von nachfolgenden Stufen in Anspruch zu nehmen, mit denen sie verbunden sind. In einigen Ausführungsformen wird eine grafische Darstellung einer Gatterabhängigkeit verwendet, um (zumindest anfänglich) die Quantenschaltung in Einzel-Qubit- und Mehrfach-Qubit-Teilschaltungen zu partitionieren.
-
Das Bestimmen (740) einer Ausführungsreihenfolge kann ein Verwenden von Abhängigkeitsinformationen enthalten, um eine Ausführungsreihenfolge für die Teilschaltungen zu bestimmen. In einigen Ausführungsformen wird die Ausführungsreihenfolge durch ein Erstellen eines Ausführungsplans, ähnlich wie in 5, und ein Vergleichen der Stufe oder des Zeitschritts des ersten Gatters in jeder der Teilschaltungen bestimmt.
-
Das Ausführen (750) der Quantenschaltung kann ein Ausführen jeder Teilschaltung gemäß der Ausführungsreihenfolge enthalten. In einigen Ausführungsformen werden mehrere Prozessoren verwendet, und jeder verfügbare Prozessor fordert eine nächste, nicht ausgeführte Teilschaltung von einem Ausführungs-Controller an. In anderen Ausführungsformen wird ein Prozess für jede Teilschaltung erzeugt, und die Prioritätsebene der Prozesse wird in umgekehrter Ausführungsreihenfolge zugewiesen, sodass Teilschaltungen einer früheren Stufe eine höhere Prioritätsebene zugewiesen wird. In einigen Ausführungsformen werden Simulationen von Teilschaltungen auf eine parallele verteilte Weise über mehrere Prozessoren ausgeführt, zum Beispiel unter Verwendung von Hochleistungs-Datenverarbeitungstechniken. In einigen Ausführungsformen werden Simulationsberechnungen auf Grafikverarbeitungseinheiten ausgeführt.
-
8A bis 8C sind Abbildungen mit Text, die Tensorgleichungen und Ressourcenkosten darstellen, die einem Simulieren von verschiedenen Quantengattern zugehörig sind, die in 4 und 5 dargestellt werden. Wie gezeigt, hängen die Ressourcenkosten, die einem Aktualisieren von Qubits gemäß den dargestellten Tensorgleichungen zugehörig sind, von der bestimmten Funktion sowie von der Anzahl von Qubits ab, die zum Beibehalten von Zustandsinformationen in einem Quantensystem verwendet werden. Zum Beispiel sind für ein Hadamard-Gatter, das auf zwei Qubits in einem Quantensystem von n Qubits angewendet wird, 2(+1) komplexe Multiplikationen, 2 komplexe Additionen und 2(+4) Byte Arbeitsspeicher erforderlich. Im Gegensatz dazu ist für ein gesteuertes Z-Gatter dieselbe Anzahl von Bytes von Arbeitsspeicher erforderlich, aber es erfordert nur die halbe Anzahl von komplexen Multiplikationen und null komplexe Additionen. Dieselbe Eigenschaft gilt für alle diagonal unitären Gatter, einschließlich Z-, S-, S†-, CZ-, T- und T†-Gatter. Weitere Verringerungen der Anzahl von Operationen pro Gatter lassen sich durch ein Umsetzen von speziellem Code für jedes Gatter erzielen, um die Tatsache auszunutzen, dass eine Multiplikation mit null oder mit eins vermieden werden kann, und dass eine Multiplikation mit -1 nur eine Vorzeichenänderung ist. In ähnlicher Weise erfordert eine Multiplikation einer komplexen Zahl mit einem rein realen oder rein imaginären Koeffizienten nur zwei Gleitkomma-Multiplikationen statt der üblichen vier Multiplikationen und zwei Additionen. In einigen Ausführungsformen nutzt die vorliegende Erfindung eine Kenntnis von Ressourcenkosten, um Optionen in dem Simulationsprozess der Quantenschaltung zu vergleichen.
-
9A bis 9E sind schematische und grafische Darstellungen von Gleichungen, die die Auswirkung eines Partitionierens auf die Datenverarbeitungsressourcen darstellen, die zum Simulieren eines bestimmten Beispiels einer Quantenschaltung gemäß mindestens einer Ausführungsform der vorliegenden Erfindung benötigt werden.
-
9A stellt eine abschnittsweise Aufteilung einer Schaltung dar, die ein herkömmliches Verfahren zum Simulieren von Quantenschaltungen wiedergibt, in denen eine Datenstruktur, die den Quantenzustand aller Qubits in der Schaltung enthält, erstmals erstellt und initialisiert wird, und diese Datenstruktur wird anschließend durch Simulieren der Auswirkungen jedes Gatters aktualisiert, das in Eingang-zu-Ausgang-Reihenfolge ausgeführt wird. Dieses herkömmliche Verfahren entspricht einer Schaltungspartitionierung, in der die anfänglichen Zustände der Qubits zusammen in einer Teilschaltung platziert werden, und die Gatter zusammen in einer zweiten Teilschaltung wie veranschaulicht platziert werden. Die in
9A dargestellten Gleichungen geben die Berechnungen wieder, die unter Verwendung dieses Ansatzes ausgeführt werden. Ein anfänglicher Zustandstensor ϕ wird erstmalig erstellt und initialisiert, wobei die Initialisierung den Kronecker-Delta-Tensor verwendet,
der derjenige Tensor ist, der dem Dirac-Quantengrundzustand |0〉 entspricht:
-
Anschließend wird ein Endzustandstensor ψ aus dem anfänglichen Zustandstensor ϕ durch Anwenden der in 8 gezeigten Gleichungen in Eingang-zu-Ausgang-Reihenfolge berechnet.
-
9B stellt ein etwas komplexeres Format einer im Stand der Technik bekannten Schaltungspartitionierung dar, in der die Qubits q[0] und q[1] unabhängig voneinander in dem Ausmaß simuliert werden, das möglich ist, bis ein Multi-Qubit-Gatter auftritt, das auf beide Qubits angewendet werden muss. Der herkömmliche Ansatz in einer derartigen Situation besteht dann darin, die Ergebnisse der unabhängigen Simulationen von q[0] und q[1] zu kombinieren und die übrigen Gatter schließlich auf den sich daraus ergebenden kombinierten Zustand anzuwenden, um den endgültigen Quantenzustand zu erhalten. Die in 9B dargestellten Gleichungen entsprechen genau diesem Simulationsansatz.
-
9C, 9D und 9E veranschaulichen eine erfinderische Erkenntnis der vorliegenden Erfindung, die darin besteht, dass durch ein Verwenden von Tensordarstellungen von Quantengattern die Gesetze der Algebra es ermöglichen, Gruppen von Gattern willkürlich in Teilschaltungen zu partitionieren, jede Teilschaltung zu simulieren und ihre Ergebnisse zu kombinieren, um mathematisch identische Berechnungen von endgültigen Schaltungs-Quantenzuständen zu erzeugen. 9C und 9D veranschaulichen zwei Partitionierungen, in denen die Auswirkungen von Gattern auf die Qubits q[0] und q[1] zuerst unabhängig voneinander simuliert werden, und ihre Ergebnisse anschließend kombiniert werden. In 9C wird die Simulation des CNOT-Gatters - das auf beide Qubits angewendet wird und das sie dadurch verschränkt - der obersten Teilschaltung zugewiesen, die der Simulation von Qubit q[0] entspricht, während in 9D das CNOT-Gatter der untersten Teilschaltung zugewiesen wird.
-
Bisher bestand das herkömmliche Wissen auf dem Gebiet der Quantenschaltungs-Simulation darin, dass, sobald Qubits nach der Anwendung eines Multi-Qubit-Gatters verschränkt werden, die verschränkten Qubits zusammen simuliert werden müssen. Anders ausgedrückt besagt herkömmliches Wissen, dass zwei Teilschaltungen nicht unabhängig voneinander simuliert werden können, wenn diese Teilschaltungen Gatter enthalten, die auf dasselbe Qubit angewendet werden, insbesondere, wenn sich diese beiden Teilschaltungen zeitlich in ihren Ausführungsplänen überlappen (d.h. wenn die beiden Teilschaltungen sich überlappende Ausführungsstufen haben), was bedeutet, dass alle Gatter in einer Teilschaltung allen Gattern in der anderen Teilschaltung nicht genau vorausgehen oder genau auf diese folgen, sondern dass sich die Abfolge der Gatter der beiden Teilschaltungen stattdessen in der Schaltung als Ganzem überlappt. Dennoch veranschaulichen 9C und 9D das Gegenteil - die in 9C und 9D gezeigten Gleichungen erzeugen mathematisch identische Ergebnisse in Bezug aufeinander und in Bezug auf die in 9A und 9B gezeigten Gleichungen, trotz der offensichtlichen Missachtung des herkömmlichen Wissens.
-
Die dadurch ermöglichte Erkenntnis, dass es möglich ist, Simulationen auf diese Weise auszuführen, ist das Konzept eines verschränkten Index, wie in 9D veranschaulicht. Ein verschränkter Index ist ein Tensorindex (z.B. eine Variable), der von Gattertensoren in zwei verschiedenen Teilschaltungen gemeinsam genutzt wird. In 9D sind b und c verschränkte Indices. In 9C sind e und f verschränkte Indices. Diese verschränkten Indices stellen die mathematische Buchführung bereit, die benötigt wird, um zu ermöglichen, dass Teilschaltungen, die Gatter enthalten, die auf dasselbe Qubit angewendet werden, unabhängig voneinander simuliert werden können und ihre Ergebnisse in mathematisch korrekter Weise kombiniert werden können.
-
Grundsätzlich können Gatter in einer Quantenschaltung unter Verwendung dieser Erkenntnis willkürlich partitioniert werden, wie in 9E veranschaulicht wird. In bevorzugten Ausführungsformen der vorliegenden Erfindung werden Teilschaltungen jedoch mit dem Ziel erstellt, Nettoverringerungen der Ressourcenkosten für die gesamten Simulationen zu erzielen.
-
10 ist ein Ablaufplan, der ein Beispiel eines Partitionierungsverfahrens für eine Quantenschaltung 1000 gemäß mindestens einer Ausführungsform der vorliegenden Erfindung darstellt. Wie dargestellt, enthält das Partitionierungsverfahren für die Quantenschaltung 1000 ein Erstellen (1010) einer Teilschaltung für jedes anfängliche Stufen-Qubit, ein Hinzufügen (1020) von Gattern anschließender Stufen zu Teilschaltungen, ein Bestimmen (1030), ob alle Gatter zugewiesen worden sind, ein Bestimmen (1040) einer Ausführungsreihenfolge, ein Auswählen (1050) eines brückebildenden Gatters, ein Bestimmen (1060), ob die überbrückten Teilschaltungen verschränkt werden sollen, und ein Schließen (1070) der überbrückten Teilschaltungen oder ein Hinzufügen des brückebildenden Gatters zu einer der verschränkten Teilschaltungen. Das Partitionierungsverfahren für die Quantenschaltung 1000 ist ein Beispiel für mindestens die Partitionierungsoperation 730, die in 7 gezeigt ist, und kann durch einen Computer ausgeführt werden, wie zum Beispiel einen in 15 dargestellten Computer 1500. Das Partitionierungsverfahren für die Quantenschaltung 1000 ermöglicht ein Partitionieren einer Quantenschaltung auf eine Weise, auf die die Ressourcen verringert oder minimiert werden können, die zum Simulieren der Quantenschaltung unter Verwendung eines herkömmlichen Computers und des dazugehörigen Speichers erforderlich sind.
-
Das Erstellen (1010) einer Teilschaltung für jedes anfängliche Stufen-Qubit kann ein Bestimmen der Anzahl von Qubits (zumindest anfänglich) enthalten, die für eine Quantenschaltung erforderlich sind, und ein Initialisieren einer Datenstruktur zum Definieren einer Teilschaltung für jedes der Qubits, die für die Quantenschaltung erforderlich sind. Das Hinzufügen (1020) von anschließenden Stufengattern zu Teilschaltungen kann ein Hinzufügen von nicht zugewiesenen nächsten Stufengattern, für die nur eine Eingabe von derzeit der Teilschaltung zugewiesenen Qubits erforderlich ist, zu jeder Teilschaltung enthalten. Dieser Hinzufügungsschritt kann auch ein Bestimmen enthalten, ob alle übrigen nicht zugewiesenen Gatter für ein Qubit, das einer Teilschaltung zugewiesen ist, diagonal unitäre Gatter sind, und falls dies der Fall ist, ein Schließen dieser Teilschaltung, ein Erstellen einer neuen Teilschaltung mit denselben zugewiesenen Qubits wie die der geschlossenen Teilschaltung, und ein Kennzeichnen dieser neuen Teilschaltung als zum Zweck eines Aufteilens des bzw. der zugewiesenen Qubits erstellt, für die alle übrigen nicht zugewiesenen Gatter diagonal unitäre Gatter sind. Das Schließen einer Teilschaltung kann ein Kennzeichnen der Teilschaltung als vollständig enthalten, um das Hinzufügen weiterer Gatter zu der Teilschaltung zu verhindern.
-
Das Bestimmen (1030), ob alle Gatter zugewiesen worden sind, kann ein Bestimmen enthalten, ob eine Anzahl nicht zugewiesener Gatter oder ein anderer Indikator angibt, dass alle Gatter einer Teilschaltung zugewiesen worden sind. Das Bestimmen (1040) einer Ausführungsreihenfolge kann ein Ausführen der bestimmenden Operation 740 enthalten, die in Verbindung mit 7 beschrieben wurde.
-
Das Auswählen (1050) eines brückebildenden Gatters kann ein Auswählen eines nicht zugewiesenen nächsten Stufengatters enthalten, das eine Eingabe von mindestens einem Qubit erfordert, das derzeit einer Teilschaltung zugewiesen ist, sowie von einem oder mehreren Qubits, die der Teilschaltung derzeit nicht zugewiesen sind. Mit anderen Worten ist ein brückebildendes Gatter ein Gatter, das eine Eingabe von mehreren Teilschaltungen wie derzeit erstellt erfordert.
-
Das Bestimmen (1060), ob die überbrückten Teilschaltungen verschränkt werden sollen, kann ein Schätzen der Ressourcenkosten von alternativen Szenarios enthalten, in denen eine Entscheidung getroffen wird, die überbrückten Teilschaltungen zu verschränken bzw. nicht zu verschränken, wobei die jeder Entscheidung zugehörigen Ressourcenkosten verglichen werden und anschließend die Alternative mit den niedrigsten Kosten gewählt wird.
-
Das Schließen (1070) der überbrückten Teilschaltungen kann ein Kennzeichnen der Teilschaltungen als vollständig enthalten, um das Hinzufügen weiterer Gatter zu den überbrückten Teilschaltungen zu verhindern. Das Zuweisen (1070) des brückebildenden Gatters zu einer neuen Teilschaltung kann ein Erstellen einer neuen Teilschaltung, ein Zuweisen der Qubits der überbrückten Teilschaltungen, die für diese neue Teilschaltung geschlossen wurden, und ein anschließendes Zuweisen des brückebildenden Gatters zu dieser neuen Teilschaltung enthalten.
-
Das Hinzufügen (1080) des brückebildenden Gatters zu einer der verschränkten Teilschaltungen kann ein Hinzufügen des brückebildenden Gatters zu einer Liste von Gattern enthalten, die in der Teilschaltung enthalten sind. Dieser Hinzufügungsschritt kann auch ein erstes Ersetzen des brückebildenden Gatters durch eine entsprechende Kombination von Gattern enthalten, in denen das neue brückebildende Gatter diagonal unitär wird. Ein Beispiel dafür ist die Ersetzung eines CNOT-Gatters durch eine Kombination aus einem CZ-Gatter und Hadamard-Gattern, wie in 12B veranschaulicht, um das in 12A gezeigte CNOT-Gatter mit dieser entsprechenden Gatterkombination zu ersetzen, wie in 12D gezeigt. Wenn ein derartiger Austausch vorgenommen wird, wird das neue brückebildende Gatter einer der überbrückten Teilschaltungen zugewiesen, und alle Einzel-Qubit-Gatter, die in dieser Umschreibung eingeführt worden sein könnten, werden Teilschaltungen gemäß den Qubits zugewiesen, die diesen Teilschaltungen zugewiesen sind. Zum Beispiel werden in dem speziellen Fall eines Ersetzens eines CNOT-Gatters durch ein CZ-Gatter die Hadamard-Gatter, die eingeführt wurden, der Teilschaltung zugewiesen, der das entsprechende Qubit zugewiesen ist, um die Regeln für ein Hinzufügen von anschließenden Stufengattern zu Teilschaltungen einzuhalten, die oben im Zusammenhang mit Schritt 1020 beschrieben wurden. Das CZ-Gatter kann andererseits irgendeinem der verschränkten Teilschaltungen zugewiesen werden.
-
11A ist ein Ablaufplan, der ein Beispiel eines Ausführungsverfahrens für eine Quantenschaltung 1100 gemäß mindestens einer Ausführungsform der vorliegenden Erfindung darstellt. Wie dargestellt, enthält das Ausführungsverfahren für die Quantenschaltung 1100 ein Empfangen (1110) einer geordneten Gruppe von Quantenteilschaltungen, ein Zuweisen (1120) von verschiedenen Indexvariablen, ein Verbreiten (1130) der Indexvariablen, ein Ausführen (1140) jeder Quantenteilschaltung. Das Ausführungsverfahren für die Quantenschaltung 1100 ermöglicht eine Ausführung einer Quantenschaltung, die in Teilschaltungen partitioniert ist. Das Ausführungsverfahren für die Quantenschaltung 1100 kann durch einen Computer ausgeführt werden, wie beispielsweise einen Computer 1500, der in 15 dargestellt ist.
-
Das Empfangen (1100) einer geordneten Gruppe von Quantenteilschaltungen kann ein Empfangen einer geordneten Liste von Zeigern auf ein Objekt oder eine Datenstruktur enthalten, das bzw. die jede Quantenteilschaltung einschließlich der darin enthaltenden Gatter definiert. In einer Ausführungsform ist die Definition für jede Quantenteilschaltung im Wesentlichen ein Teilschaltungsausführungsplan ähnlich dem in 5 gezeigten Ausführungsplan. Das Zuweisen (1120) von verschiedenen Indexvariablen kann ein Zuweisen einer verschiedenen Indexvariablen zu einer Anfangsstufe jedes Qubits und zu dem Ausgang jedes nicht diagonal unitären Gatters enthalten.
-
Das Verbreiten (1130) der Indexvariablen kann ein wiederholtes Verbreiten von Eingabe zu Ausgang der Indexvariablen für jedes diagonal unitäre Gatter sein. Das Ausführen (1140) jeder Quantenteilschaltung kann ein Ausführen jeder Quantenteilschaltung und ein Kombinieren der generierten Ergebnisse in der angegebenen Reihenfolge enthalten.
-
11B ist ein Ablaufplan, der eine mögliche Ausführungsform der Ausführungsoperation 1140 darstellt, die in 11A dargestellt wird. Wie dargestellt, kann eine Ausführungsform des Ausführens (1140) von Teilschaltungen und des Kombinierens von Ergebnissen ein Erstellen (1150) von Produkten von Tensoren und ein Ausführen (1160) von Summierungen enthalten.
-
Das Erstellen (1150) von Produkten von Tensoren kann ein Identifizieren der Gatter, die zu Teilschaltungen gehören, zusammen mit den Indexvariablen, die diesen Gattern in Schritt 1120 und 1130 zugewiesen worden sind, ein Zuweisen dieser Indexvariablen als tiefgestellte Zeichen zu den entsprechenden Tensoren für die Gatter in Teilschaltungen, und ein Zusammenstellen der Tensoren für Teilschaltungen in Produkten enthalten, die in Eingang-zu-Ausgang-Reihenfolge angeordnet sind. Das Erstellen (1150) von Produkten von Tensoren auch kann ein Zusammenstellen von Tensoren, die den Simulationsergebnissen von Teilschaltungen entsprechen, in Produkte von Tensoren gemäß Ausführungsreihenfolgen enthalten, die durch die bestimmende Operation 740 erreicht wurden, die in Verbindung mit 7 beschrieben wird, und/oder die bestimmende Operation 1040, die in Verbindung mit 10 beschrieben wird.
-
Das Ausführen (1160) von Summierungen kann ein Berechnen von Produkten von Tensoren für Teilschaltungen in der Eingang-zu-Ausgang-Reihenfolge, die in der oben beschriebenen erstellenden Operation 1150 bestimmt wurde, und das Ausführen von Summierungen über Indexvariablen enthalten, die sich in diesen Teilschaltungen befinden, wie sie in der bestimmten Eingang-zu-Ausgang-Reihenfolge vorliegen. Das Ausführen (1160) von Summierungen über Indexvariablen, die sich in einer Schaltung als Ganzem befinden, kann ein Ausführen von Summierungen über derartige Indexvariablen enthalten, wenn Produkte von Tensoren berechnet werden, die in der oben beschriebenen erstellenden Operation 1150 bestimmt wurden, um Simulationsergebnisse von Teilschaltungen zu kombinieren. In Fällen, in denen keine Gatter übrig sind, die in einer Schaltung für ein Qubit zu simulieren sind, oder in denen alle übrigen Gatter für dieses Qubit diagonal unitäre Gatter sind, kann diesem Kombinieren von Simulationsergebnissen von Teilschaltungen die Einführung von For-Schleifen vorausgehen, die über die möglichen Werte von einem oder mehreren derartigen Qubits eine Schleife bilden. Anschließende Tensorprodukte und ihre Summierungen können dann für Anteile von betreffenden Tensoren berechnet werden, um die Arbeitsspeicheranforderungen von anschließenden Berechnungen zu verringern.
-
12A bis 12C sind schematische Darstellungen, die ein Beispiel einer Optimierung eines bestimmten Beispiels einer Quantenschaltung darstellen. In einigen Ausführungsformen können Gatterersetzungen (auch als Schaltungsumschreibung bekannt) an verschiedenen Punkten in den hierin offenbarten Verfahren ausgeführt werden. Zum Beispiel kann eine Schaltungsumschreibung, wie die in 12B gezeigte Umschreibung, in Verbindung mit Schritt 720 des in 7 gezeigten Verfahrens 700 oder beim Ausführen von Schritt 1080 des in 10 gezeigten Verfahrens 1000 ausgeführt werden. Insbesondere können ein Ersetzen eines brückebildenden CNOT-Gatters durch eine entsprechende Konfiguration eines CZ-Gatters und Hadamard-Gattern die Anzahl von verschränkten Indizes verringern, die eingeführt werden, wenn die entsprechenden Teilschaltungen verschränkt sind, was wiederum die Auswirkung hat, dass die Menge an Arbeitsspeicher verringert wird, die zum Simulieren der sich daraus ergebenden verschränkten Teilschaltungen erforderlich ist.
-
Unter erneuter Bezugnahme auf Schritt 1140 von 11A und deren mögliche Ausführungsformen, wie in 11B veranschaulicht, wird dem Fachmann klar sein, dass in mindestens einer Ausführungsform der vorliegenden Erfindung Teilschaltungen effizient in Eingang-zu-Ausgang-Reihenfolge simuliert werden können, beginnend mit den anfänglichen Teilschaltungen, die aus den Anfangszuständen der einzelnen Qubits erstellt wurden. Bei einem derartigen Ansatz würden anschließende Teilschaltungen erst simuliert, wenn die vorhergehenden Teilschaltungen, von denen sie als Eingabe abhängen, simuliert worden sind. Die Simulationsergebnisse für jede Teilschaltung können n-dimensionalen Tensoren entsprechen, die in einem Computer-Arbeitsspeicher als n-dimensionale Arrays dargestellt werden können. Dem Fachmann wird klar sein, dass andere Datenstrukturen, wie zum Beispiel lineare Arrays, die entsprechende Darstellungen bereitstellen, ebenfalls verwendet werden können.
-
In einer Ausführungsform können die in diesen Datenstrukturen gespeicherten Werte komplexe Gleitkommazahlen mit doppelter Präzision sein, die jeweils 16 Byte an Speicher erfordern. Der Speicherbedarf eines n-dimensionalen Tensors/Arrays würde also 2(n+4) Byte erfordern, um alle 2n Werte in dem Tensor/Array zu speichern.
-
Die anfänglichen Teilschaltungen, die aus den Anfangszuständen der einzelnen Qubits erstellt wurden, können eindimensionale Tensoren/Arrays sein, die mit einem Wert von eins in der Null-Position und einem Wert von null in der Eins-Position initialisiert werden. Diese Initialisierung entspricht dem Kronecker-Delta-Tensor,
der wiederum dem Quantengrundzustand |0〉 entspricht:
-
Für anschließende Teilschaltungen, die von nur einer vorhergehenden Eingabe-Teilschaltung abhängen, können die Simulationsergebnis-Arrays unter Verwendung der Simulationsergebnisse der vorhergehenden Eingangs-Teilschaltung initialisiert werden. Im Allgemeinen, wenn der Tensor/das Array des Simulationsergebnisses einer vorhergehenden Eingangs-Teilschaltung eine Dimension n hat, und wenn s neue Qubits für ein Aufteilen für die entsprechende anschließende Teilschaltung identifiziert worden sind, die in der Simulation der vorhergehenden Eingangs-Teilschaltung nicht bereits aufgeteilt worden sind, kann die Simulation dieser anschließenden Teilschaltung ein Einführen von For-Schleifen für eine Schleifenbildung über die möglichen Werte der s neuen Qubits, die zum Aufteilen (sofern erforderlich) identifiziert wurden, ein Erstellen eines n-s-dimensionalen Tensors/Arrays (oder einer anderen geeigneten Datenstruktur zum Aufnehmen der Simulationsergebnisse für die anschließende Teilschaltung) und danach ein Initialisieren dieses n-s-dimensionalen Tensors/Arrays umfassen, indem entsprechende Werte aus den Simulationsergebnissen für die vorhergehende Eingangs-Teilschaltung für den Anteil kopiert werden, der durch die Werte der For-Schleifenvariablen (sofern vorhanden) identifiziert wird. Simulationsberechnungen für die betreffende aktuelle anschließende Teilschaltung können dann innerhalb dieser For-Schleifen stattfinden, ebenso wie die Simulationsberechnungen aller nachgeordneten Teilschaltungen, die noch nicht simuliert worden sind, da diese aufteilenden For-Schleifen ebenso auf diese nachgeordneten Teilschaltungen anwendbar sind.
-
Für anschließende Teilschaltungen, die von zwei vorhergehenden Eingangs-Teilschaltungen abhängen, wird die anfängliche Anzahl von Dimensionen für die Simulationsergebnisse einer derartigen anschließenden Teilschaltung durch n+m-g-s angegeben, wobei n und m jeweils die Anzahl von Dimensionen in den Simulationsergebnissen der vorhergehenden zwei Eingangs-Teilschaltungen sind, g die Anzahl von verschränkten Indizes ist, die von diesen beiden Teilschaltungen gemeinsam genutzt werden, die auf dieser Stufe der Verarbeitung aufsummiert werden können, und s die Anzahl von neuen Qubits ist, die für ein Aufteilen dieser anschließenden Teilschaltung identifiziert werden, die noch nicht in den Simulationen von einer der vorhergehenden Eingangs-Teilschaltungen aufgeteilt worden sind. Die Simulation dieser anschließenden Teilschaltung kann ein Einführen von For-Schleifen für eine Schleifenbildung über die möglichen Werte der s neuen Qubits, die für ein Aufteilen (sofern vorhanden) identifiziert wurden, ein Erstellen eines n+m-g-s-dimensionalen Arrays oder einer anderen geeigneten Datenstruktur zum Aufnehmen der Simulationsergebnisse für die anschließende Teilschaltung, und danach ein Initialisieren dieses n+m-g-s-dimensionalen Arrays durch ein Ausführen einer Tensormultiplikation der Simulationsergebnisse der zwei vorhergehenden Eingangs-Teilschaltungen für die Anteile, die durch die Werte der For-Schleifenvariablen (sofern vorhanden) und ein Aufsummieren der verschränkten Indizes (sofern vorhanden) identifiziert werden, umfassen, die von diesen beiden Teilschaltungen gemeinsam genutzt werden, die auf dieser Stufe der Verarbeitung aufsummiert werden können
-
Wenn die Simulationsergebnisse von vorhergehenden Eingangs-Teilschaltungen auf diese Weise zum Initialisieren der Simulation einer anschließenden Teilschaltung kombiniert werden, sind die gemeinsam genutzten verschränkten Indizes, die aufsummiert werden können, diejenigen, für die die Simulationsergebnisse von allen Teilschaltungen, die ursprünglich verschränkt waren, um die verschränkten Indizes zu erstellen, die ihren Weg entweder direkt oder indirekt in diese abschließende kombinierende Operation finden, und diese Indizes erscheinen nicht als Ausgangs-Indizes für irgendeine dieser vorhergehenden Eingangs-Teilschaltungen. Der erste Teil dieser Anforderung gibt das Algebra-Distributivgesetz wieder: zum Aufsummieren einer Indexvariablen müssen alle Ausdrücke, die diese Indexvariable als tiefgestelltes Zeichen enthalten, in der Summierung erscheinen. Der zweite Teil dieser Anforderung gibt die Bedingungen wieder, unter denen eine Indexvariable für eine Quantenschaltung summiert werden kann: die Variable muss bis zum aktuellen Punkt der Simulation vollständig in der Schaltung liegen, sie darf keinem Ausgang zugehörig sein. Für gewöhnlich, wenn eine Schaltung Mehrfach-Qubit-Gatter für nur zwei Qubits enthält, wird der erste Teil der obigen Anforderungen erfüllt, wenn die Simulationsergebnisse von zwei kombinierten Teilschaltungen einen gemeinsamen verschränkten Index gemeinsam nutzen. Wenn eine Schaltung jedoch drei Qubit-Gatter oder mehr enthält, muss diese erste Bedingung ausdrücklich geprüft werden.
-
Der Fall, in dem die Simulationsergebnisse von mehr als zwei vorhergehenden Eingangs-Teilschaltungen als Eingabe in eine anschließende Teilschaltung kombiniert werden müssen, kann nur eintreten, wenn der im Ablaufplan 1000 veranschaulichte Prozess für Quantenschaltungen angewendet wird, die Mehrfach-Qubit-Gatter für drei oder mehr Qubits enthalten. Die Simulationsschritte für diese Fälle können derselben Struktur folgen wie in dem oben erläuterten Fall mit zwei Teilschaltungen, einschließlich der oben genannten Bedingungen zum Entscheiden, welche gemeinsam genutzten Verschränkungsindizes aufsummiert werden sollen. Im Allgemeinen kann es rechnerisch von Vorteil sein, diese Ergebnisse durch wiederholte Anwendung des oben beschriebenen Verfahrens mit zwei Eingängen paarweise zu kombinieren. Als Faustregel gilt, dass das in jedem Schritt zu kombinierende Ergebnispaar das Paar sein sollte, das als Ergebnis dieses Schritts zu dem Tensor/Array mit der niedrigsten Dimension führt. Diese Faustregel hilft dabei, die Gesamtanzahl von Gleitkomma-Operationen zu verringern, die ausgeführt werden müssen, um die kombinierten Simulationsergebnisse zu berechnen. Dasselbe Verfahren kann am Ende der Simulation verwendet werden, um Simulationsergebnisse der endgültigen Teilschaltungen zu kombinieren, wenn zwei oder mehr Teilschaltungen übrig sind.
-
Sobald der Tensor/das Array zum Aufnehmen der Simulationsergebnisse einer Teilschaltung initialisiert worden ist, können die endgültigen Simulationsergebnisse für diese Teilschaltung durch Anwenden von Gattern auf den Tensor/das Array in Eingang-zu-Ausgang-Reihenfolge berechnet werden. Für Gatteranwendungen, die nicht zu der Einführung von verschränkten Indizes führen, haben die Gleichungen, die diese Berechnungen definieren, die in 3 bis 5 veranschaulichten Formen, wobei ψ den Wert des Tensors/Arrays des Simulationsergebnisses darstellt, bevor ein Gatter angewendet wird, und ψ' den Wert darstellt, nachdem ein Gatter angewendet worden ist. Die Gleichungen, die in 3 bis 5 gezeigt werden, dienen nur zur Veranschaulichung, und dem Fachmann wird klar sein, dass entsprechende Gleichungen auf offensichtliche Weise für andere, nicht aufgelistete Typen von Quantengattern problemlos erstellt werden können.
-
Gatteranwendungen, die zu der Erstellung von verschränkten Indizes führen, erfordern eine unterschiedliche Bearbeitung dadurch, dass derartige Gatteranwendungen typischerweise die Anzahl von Dimensionen in Tensoren/Arrays der Simulationsergebnisse erhöhen, und dass sich daraus die Notwendigkeit ergibt, dass verfolgt werden muss, welche Dimensionen jetzt den Qubits entsprechen, die einer Teilschaltung zugewiesen sind, im Vergleich dazu, welche Dimensionen verschränkten Indizes entsprechen.
-
Wenn eine Entscheidung getroffen wird, Teilschaltungen im Schritt 1060 in dem in 10 dargestellten Prozess zu verschränken, und anschließend ein brückebildendes Mehrfach-Qubit-Gatter in Schritt 1080 einer der Teilschaltungen zugewiesen wird, muss der Tensor/das Array der Simulationsergebnisse für die Teilschaltung, der das Mehrfach-Qubit-Gatter zugewiesen ist, während der Simulation vergrößert werden, wenn dieses Mehrfach-Qubit-Gatter simuliert wird. Eine Extra-Dimension muss hinzugefügt werden, wenn das Mehrfach-Qubit-Gatter ein diagonal unitäres Zwei-Qubit-Gatter ist, und zwei Extra-Dimensionen müssen in dem Fall eines nicht diagonal unitären Zwei-Qubit-Gatters hinzugefügt werden. Dimensionen müssen in dem Fall von drei oder mehreren Qubit-Gattern entsprechend erhöht werden. Diese Extra-Dimensionen entsprechen verschränkten Indizes.
-
Zum Beispiel werden die Quantenschaltung und die Teilschaltungen betrachtet, die in 13A dargestellt sind. Diese Teilschaltungen können unter Verwendung des in 10 dargestellten Prozesses auf folgende Weise erhalten werden. Nach einem Erstellen von Teilschaltungen für die Qubits q[0] und q[1] in Schritt 1010 kann das H-Gatter links oben in Schritt 1020 der Teilschaltung für q[0] zugewiesen werden, und anschließend lässt sich beobachten, dass alle übrigen Gatter für das Qubit q[0] diagonal unitär sind. Letzteres ermöglicht, dass die Teilschaltung links oben für q[0] geschlossen wird und eine neue Teilschaltung für das Qubit q[0] mit einem Vermerk gestartet wird, dass das Qubit q[0] jetzt aufgeteilt werden kann. In Schritt 1020 können X und H links unten ebenfalls der Teilschaltung für das Qubit q[1] zugewiesen werden. In Schritt 1020 können aktuellen Teilschaltungen wegen des brückebildenden CZ-Gatters keine weiteren Gatter mehr hinzugefügt werden, daher kann der Prozess mit Schritt 1050 fortfahren, um das CZ-Gatter auszuwählen. In Schritt 1060 kann eine Entscheidung getroffen werden, die Teilschaltungen für q[0] und q[1] zu verschränken, und in Schritt 1080 kann das CZ-Gatter der aktuellen Teilschaltung für q[0] zugewiesen werden. Der Prozess kann dann wieder zu Schritt 1020 zurückkehren, wo das Z-Gatter oben links der aktuellen Teilschaltung für q[0] zugewiesen werden kann, und die H- und Y-Gatter unten links können der Teilschaltung für q[1] zugewiesen werden, was zu der Konfiguration von Teilschaltungen führt, die in 13A dargestellt sind.
-
Unter weiterer Fortsetzung mit Schritt
1150 und
1160 in
11B, die eine Ausführungsform des Ausführungsschritts
1140 in
11A darstellt, kann die Simulation der Teilschaltung links oben mit einem Initialisieren des Tensors/Arrays, der bzw. das die Simulationsergebnisse für die Teilschaltung oben links enthält, auf den Kronecker-Delta-Tensor fortfahren, und anschließend das H-Gatter zum Aktualisieren der Simulationsergebnisse anwenden:
-
Die Simulation der Teilschaltung oben rechts kann dann ein Einführen einer aufteilenden For-Schleife für das Qubit
q[0] und ein Initialisieren des Tensors/Arrays für die Teilschaltung oben rechts umfassen, sodass sie einem Anteil entspricht von
-
Da das CZ-Gatter beim Verschränken mit der untersten Teilschaltung der Teilschaltung oben rechts zugeordnet wurde, kann ein neuer Tensor/ein neues Array mit einer zusätzlichen Dimension zugeordnet werden, um den verschränkten Index e in dem Prozess zum Simulieren des CZ-Gatters aufzunehmen:
-
Die Simulation des Z-Gatters kann dann wie üblich ausgeführt werden, um diesen neuen Tensor/das neue Array zu aktualisieren:
-
In dem Fall von Teilschaltungen, denen kein Mehrfach-Qubit-Gatter zugewiesen wird, wenn eine Verschränkungsentscheidung getroffen wird, hängt der bzw. hängen die Punkte, an dem bzw. denen Tensoren/Arrays der Simulationsergebnisse vergrößert werden müssen, von der Anzahl von verschränkten Indizes ab, die eingeführt werden und davon, welche von ihnen (sofern zutreffend) sich strikt in einer Teilschaltung und/oder in der Schaltung als einem Ganzem befinden. Jeder verschränkte Index, der sich in einer Teilschaltung befindet, der beim Verschränken kein Mehrfach-Qubit-Gatter zugewiesen wurde, fügt eine Extra-Dimension zu dem Tensor/Array der Simulationsergebnisse für diese Teilschaltung hinzu. Ein verschränkter Index, der sich nicht in einer Teilschaltung befindet, der beim Verschränken kein Mehrfach-Qubit-Gatter zugewiesen wurde, der sich aber in der Schaltung als Ganzem befindet, fügt eine Extra-Dimension zu dem Tensor/Array der Simulationsergebnisse von einer nachgeordneten Teilschaltung hinzu. Der Grund dafür ist, dass alle Indizes, die sich in einer Schaltung befinden, an irgendeinem Punkt in der Simulation aufsummiert werden müssen.
-
Der Zweck eines Einführens von verschränkten Indizes besteht darin, diese Summierungen auf spätere Stufen der Simulation zu verschieben, indem die Dimensionen der Tensoren/Arrays der Simulationsergebnisse vergrößert werden, um die notwendige rechnerische Buchführung auszuführen, damit diese Technik funktioniert, und die Summierungen dann auszuführen, wenn die Simulationsergebnisse von Teilschaltungen kombiniert werden, die verschränkte Indizes gemeinsam nutzen. Es ist daher wichtig, die verschränkten Indizes über eine gesamte Schaltung im Auge zu behalten, um sie richtig zu bearbeiten. Die genauen Punkte, an denen derartige Dimensionsvergrößerungen auftreten, hängen davon ab, ob das beteiligte Mehrfach-Qubit-Gatter diagonal unitär oder nicht diagonal ist.
-
Zum Beispiel können im Fall der in
13A dargestellten untersten Teilschaltung die Simulationsergebnisse auf den Kronecker-Delta-Tensor initialisiert werden, und anschließend können das X-Gatter und das erste H-Gatter wie üblich angewendet werden:
-
Das CZ-Gatter wird dieser Teilschaltung nicht zugewiesen, sodass die Indexvariable e der verschränkte Index wird, der für die Auswirkung des CZ-Gatters auf diese Teilschaltung verantwortlich ist. Eine Aufsummierung von e kann nicht ausgeführt werden, wenn das zweite H-Gatter angewendet wird, da e ein verschränkter Index ist. Stattdessen kann ein neuer Tensor/ein neues Array mit einer zusätzlichen Dimension zugeordnet werden, um den verschränkten Index e in den Prozess zum Simulieren des zweiten H-Gatters aufzunehmen:
-
Die Simulation des Y-Gatters kann dann wie üblich ausgeführt werden, um diesen neuen Tensor/das neue Array zu aktualisieren:
-
Es ist anzumerken, dass für H-Gatter normalerweise Summierungen erforderlich sind, da sie nicht diagonale Gatter sind. Diese Summierung wird letztendlich gemäß den Regeln zum Aufsummieren von verschränkten Indizes ausgeführt, wenn die Simulationsergebnisse von Teilschaltungen kombiniert werden. Die Einführung von verschränkten Indizes ist ein Mechanismus zum Aufschieben dieser Summierungen bis zu späteren Stufen der Simulation.
-
Der verschränkte Index e kann schließlich summiert werden, wenn die Ergebnisse der Teilschaltungen oben rechts und der untersten Teilschaltungen kombiniert werden. Da die Teilschaltung oben rechts in Anteilen simuliert wird, würde der kombinierende Schritt für die endgültigen Simulationsergebnisse
ψbg der Schaltung in der aufteilenden For-Schleife für den Tensor rechts oben ausgeführt:
-
13B veranschaulicht eine alternative Gruppe von Teilschaltungen für dieselbe Schaltung, die in
13A dargestellt ist, wobei das CZ-Gatter in Schritt
1080 in
10 der untersten Teilschaltung statt der Teilschaltung oben rechts zugewiesen wird. In diesem Fall ist jetzt
b der verschränkte Index. In der Simulation der untersten Teilschaltung können der ursprüngliche Tensor/das ursprüngliche Array der Simulationsergebnisse initialisiert werden, um eindimensional zu sein und können anschließend vergrößert werden, um zweidimensional zu sein, wenn das CZ-Gatter angewendet wird.
-
In der Simulation der Teilschaltung oben rechts können der Tensor/das Array der Simulationsergebnisse wie vorher initialisiert werden, um ein Anteil der Ergebnisse der Teilschaltung links oben zu sein, aber diesmal wird die Dimensionalität nicht vergrößert, wenn das Z-Gatter simuliert wird, da der verschränkte Index
b bereits ein Index der Simulationsergebnisse ist und
Z ein diagonal unitäres Gatter ist, sodass keine Aufsummierung von
b ausgeführt werden muss, wenn es angewendet wird. Infolgedessen befindet sich
b nicht in der Teilschaltung, sondern ist ein Ausgangs-Index:
-
Es ist anzumerken, wenn die vorgenannten Teilschaltungen Teil einer größeren Schaltung wären, in der ein nicht diagonales Gatter schließlich auf das Qubit q[0] in einer anschließenden Teilschaltung angewendet würde, dass die Dimensionalität des Tensors/Arrays der Simulationsergebnisse für die Teilschaltung oben rechts sich immer noch nicht geändert hätte, aber auch q[0] würde nicht als Teil der Simulation der Teilschaltung oben rechts aufgeteilt. Stattdessen wäre die Vergrößerung der Dimensionalität eines Tensors/Arrays der Simulationsergebnisse zum Aufnehmen der verschränkten Indexvariablen b während der Simulation der anschließenden Teilschaltung aufgetreten, die das nicht diagonale Gatter enthielt, das auf das Qubit q[0] angewendet wird, da b an diesem Punkt zu einem internen Index der Schaltung als einem Ganzem würde und er daher aufsummiert werden müsste.
-
Wie bei den in
13A dargestellten Teilschaltungen würden die Simulationsergebnisse für die in
13B oben rechts und die untersten dargestellten Tensoren in der aufteilenden For-Schleife für den obersten Tensor kombiniert, dieses Mal jedoch, da
b sich nicht in der Schaltung als einem Ganzem befindet, würde
b nicht aufsummiert, wenn die Ergebnisse kombiniert werden:
-
Wie vorher erwähnt, führen nicht diagonal unitäre Zwei-Qubit-Gatter zu zwei verschränkten Indizes, wenn eine Entscheidung getroffen wird, zwei Teilschaltungen zu verschränken, die durch ein derartiges Gatter überbrückt werden. Die in
13C gezeigte Schaltung und die Teilschaltungen sind ein Beispiel dafür. Diese Teilschaltungen können erhalten werden, indem gewählt wird, die obersten und untersten Teilschaltungen in Schritt
1060 von
10 zu verschränken und anschließend in Schritt
1080 das CNOT-Gatter der obersten Teilschaltung zuzuweisen, ohne eine Schaltungsumschreibung auszuführen, um das CNOTdurch ein CZ-Gatter und H-Gatter zu ersetzen. Durch ein Zuweisen des CNOT-Gatters zu der obersten Teilschaltung werden e und f zu verschränkten Indizes. Wenn die oberste Teilschaltung simuliert wird, kann ein anfänglicher eindimensionaler Tensor/ein anfängliches eindimensionales Array zum Aufnehmen der Simulationsergebnisse erstellt werden, und ein dreidimensionaler Tensor/ein dreidimensionales Array kann anschließend beim Simulieren des
CNOT erstellt werden:
-
Wenn die unterste Schaltung simuliert wird, kann ein anfänglicher eindimensionaler Tensor/ein anfängliches eindimensionales Array zum Aufnehmen der Simulationsergebnisse erstellt werden, und ein dreidimensionaler Tensor/ein dreidimensionales Array kann anschließend beim Simulieren des nicht-diagonalen Y-Gatters erstellt werden:
-
Die verschränkten Indizes können anschließend aufsummiert werden, wenn die Ergebnisse kombiniert werden, da sie sich beide in der Schaltung als einem Ganzem befinden:
-
In dem Fall, in dem das CNOT-Gatter in Schritt
1080 von
10 stattdessen der untersten Teilschaltung zugewiesen wird, werden
b und
c die verschränkten Indizes, wie in
13D gezeigt. Wenn die oberste Teilschaltung simuliert wird, kann ein anfänglicher eindimensionaler Tensor/ein anfängliches eindimensionales Array zum Aufnehmen der Simulationsergebnisse erstellt werden, und nur ein zweidimensionaler Tensor/ein zweidimensionales Array kann beim Simulieren des Z-Gatters erstellt werden. In diesem Fall ist
b bereits ein verschränkter Index, und die Simulation des Z-Gatters führt
c in die Indexvariablen des Tensors/Arrays der Simulationsergebnisse ein.
-
Wenn die unterste Teilschaltung simuliert wird, kann ein anfänglicher eindimensionaler Tensor/ein anfängliches eindimensionales Array zum Aufnehmen der Simulationsergebnisse erstellt werden, und ein dreidimensionaler Tensor/ein dreidimensionales Array kann anschließend beim Simulieren des
CNOT erstellt werden:
-
Da
c ein Ausgangs-Index ist und sich nicht in der Schaltung befindet, wird eine Aufsummierung nur für
b , aber nicht für
c vorgenommen, wenn die Simulationsergebnisse der obersten und untersten Teilschaltungen kombiniert werden:
-
Es ist anzumerken, dass nach einem Einführen von aufteilenden For-Schleifen anschließende Simulationsschritte in diesen For-Schleifen ausgeführt werden müssen, einschließlich den aufteilenden For-Schleifen für Teilschaltungen, die simuliert werden, nachdem dieser Punkt erreicht ist. Somit sollten alle Teilschaltungen, die ohne ein Aufteilen simuliert werden, vor der Einführung von aufteilenden Schleifen in der Ausführung simuliert werden, um eine redundante erneute Berechnung dieser Simulationsergebnisse zu vermeiden. Es ist anzumerken, dass die Einführung einer Aufteilung strikt optional ist, vorausgesetzt, dass ausreichender Arbeitsspeicher verfügbar ist, um die sich daraus ergebenden Simulationsergebnisse aufzunehmen. Es ist möglich, auszusuchen und auszuwählen, welche Simulationsergebnisse tatsächlich von denjenigen aufgeteilt werden, die aufgeteilt werden können. Der Fachmann wird auch die Möglichkeit erkennen, vollständige Simulationsergebnisse einiger Teilschaltungen in einem sekundären Speicher zu speichern und anschließend Anteile dieser Simulationsergebnisse in aufteilenden Schleifen abzurufen. Diese vollständigen Simulationsergebnisse können ihrerseits in Anteilen berechnet werden, sofern möglich, und in einen sekundären Speicher geschrieben werden, ohne die vollständigen Simulationsergebnisse im Hauptarbeitsspeicher realisieren zu müssen.
-
Der Fachmann wird desgleichen erkennen, dass aufteilende Schleifen nur benötigt werden, wenn der Zweck der Berechnung in einem Berechnen aller Amplituden in dem endgültigen Quantenzustand einer Schaltung besteht. Wenn stattdessen nur die Amplitude eines gemessenen Resultats berechnet werden soll, können die For-Schleifen stattdessen durch eingerichtete Werte für diese Qubits ersetzt werden, wie durch die gemessenen Resultate vorgegeben. Die aufteilenden Operationen würden immer noch ausgeführt, jetzt jedoch unter Verwendung der gemessenen Werte der entsprechenden Qubits. Wenn Amplituden für eine Gruppe von Messungen berechnet werden müssen, könnten die Simulationsergebnisse von Teilschaltungen, die nicht aufgeteilt werden können, aus Effizienzgründen zuerst berechnet werden, und eine Schleife könnte dann eingerichtet werden, um sich für jedes gemessene Resultat zu wiederholen und die Werte der aufgeteilten Qubits gemäß jeder Wiederholung einzurichten. Mit diesem Simulationsansatz besteht kein Bedarf mehr an einem Verschachteln von For-Schleifen, was eine größere Freiheit bezüglich der Simulationsreihenfolge der übrigen Teilschaltungen bieten kann.
-
14 stellt eine Partitionierung der großen Quantenschaltung in Teilschaltungen entsprechend 5 dar, die ermöglicht, dass die Quantenschaltung auf derzeit verfügbaren Datenverarbeitungssystemen simuliert werden kann. 5 stellt eine Quantenschaltung dar, die zu einer Klasse von willkürlich generierten Quantenschaltungen gehört, die insbesondere von Boixo et al. so entwickelt wurden, dass es anscheinend unmöglich ist, sie auf bestehenden herkömmlichen Computern zu simulieren. Wie in ihrem Dokument 2016 „State-of-the-art supercomputers cannot simulate universal random circuits with depth 25 in a 2D lattice of approximately 7 x 7 qubits with any known algorithm and significant fidelity“ (Supercomputer nach dem Stand der Technik können keine Universal-Zufallsschaltungen mit Tiefe 25 in einem 2D-Gitter von ungefähr 7 x 7 Qubits mit irgendeinem bekannten Algorithmus und signifikanter Genauigkeit simulieren) beansprucht, besteht die Begründung für diese Aussage darin, dass eine derartige Simulation unter Verwendung bekannter Techniken 8 Petabyte an Hauptarbeitsspeicher erfordern würde, nur um Quantenzustandsinformationen zu speichern, und kein vorhandener Supercomputer so viel Arbeitsspeicher besäße. Durch ein Partitionieren der 7 x 7-Qubit-Schaltung mit Tiefe 27, die in 5 dargestellt ist, und ihr Simulieren unter Verwendung der vorliegenden Erfindung war es möglich, die Schaltung nur mit 4,5 Terabyte zu simulieren, um die Tensoren/Arrays der Simulationsergebnisse zu speichern.
-
14 stellt die verwendete Partitionierung dar. Die Gatter in 5, die zu den Anteilen der entsprechenden Kacheln in 12 gehören, die die Zahl „1“ mit weißem Hintergrund enthalten, gehören zu einer Teilschaltung, auf die als die oberste Teilschaltung verwiesen wird. Die Gatter in 5, die zu den Anteilen der entsprechenden Kacheln in 12 gehören, die die Zahl „2“ mit hellgrauem Hintergrund enthalten, gehören zu einer anderen Teilschaltung, auf die als die unterste Teilschaltung verwiesen wird. Die Gatter in 5, die zu den Anteilen der entsprechenden Kacheln in 12 gehören, die die Zahl „3“ mit dunkelgrauem Hintergrund enthalten, oder den Buchstaben „S“ in weiß auf schwarzem Hintergrund enthalten, gehören zu einer dritten Teilschaltung, auf die als die „linke“ Teilschaltung verwiesen wird. Die oberste und die unterste Teilschaltung werden verschränkt, wobei die brückebildenden Gatter die CZ-Gatter sind, die die dritte und die vierte Reihe der beiden Kacheln rechts außen in der obersten Kachelreihe überspannen, die in 5 dargestellt sind. Diese CZ-Gatter können entweder der obersten oder der untersten Teilschaltung zugewiesen werden, ohne die Fähigkeit zu beeinträchtigen, die Schaltung zu simulieren. In der ausgeführten Simulation wurden diese CZ-Gatter der untersten Teilschaltung willkürlich zugewiesen. Für die Kombination der obersten und der untersten Teilschaltung waren 0,5 Terabyte zum Speichern ihrer Simulationsergebnisse erforderlich, wobei für die linke Teilschaltung 4 Terabyte erforderlich waren. Nach dem Berechnen der Simulationsergebnisse für die oberste und die unterste Teilschaltung wurden aufteilende Schleifen eingerichtet, um die Werte der durch den Buchstaben „S“ identifizierten und hellgrün gefärbten Qubits sowie die übrigen Qubits aufzuteilen, die den untersten der 7 x 7 Kacheln entsprechen. Berechnungen der Anteile wurden auf vier Racks eines Computers Blue Gene Q von IBM ausgeführt, der 64 Terabyte verfügbaren Hauptarbeitsspeicher bereitstellte. Verschiedene Bereiche der Schleifen wurden auf sechs verschiedenen Gruppen von vier Racks ausgeführt, um die gesamte Berechnung mit einem Faktor sechs zu beschleunigen.
-
Ein Anteil einer zufälligen 8 x 7-Qubit-Quantenschaltung einer Tiefe von 23 (nicht dargestellt) wurde ebenfalls simuliert. Diese 56-Qubit-Schaltung wurde auf eine sehr ähnliche Art partitioniert. In diesem Fall waren zum Speichern der Simulationsergebnisse für die drei erstellten Teilschaltungen nur 3 Terabyte Hauptspeicher erforderlich. Im Vergleich dazu wäre für Simulationsverfahren nach dem Stand der Technik 1 Exabyte zum Speichern und Betreiben auf dem gesamten Quantenzustand im Hauptarbeitsspeicher erforderlich gewesen. Diese Beispiele dienen zum Veranschaulichen des enormen Vorteils der vorliegenden Erfindung für die Quantensimulation.
-
Auf Grundlage der vorgenannten Darstellung sollte für den Fachmann offenkundig sein, wie die anfänglichen und abschließenden Größen der Simulationsergebnisse jeder Teilschaltung und die abschließenden Simulationsergebnisse in Bezug auf Anzahl von Dimensionen und Byte-Anzahl für jeden der vorgenannten Anwendungsfälle sowie weitere mögliche Anwendungsfälle der Erfindung zu berechnen sind. Dem Fachmann sollte des Weiteren klar sein, wie die Anzahl von Gleitkomma-Operationen geschätzt wird, die zum Simulieren jeder Teilschaltung und zum Kombinieren der Endergebnisse von jedem der vorgenannten Anwendungsfälle, für die die Erfindung ausgeübt werden kann, sowie für andere mögliche Anwendungsfälle der Erfindung benötigt werden. Der Fachmann wird erkennen, dass eine Vielfalt von Optimierungstechniken nach dem Stand der Technik in Verbindung mit dem Prozess verwendet werden kann, der in 10 veranschaulicht wird, um zum Beispiel Schaltungspartitionierungen zu finden, die die Anzahl von Gleitkomma-Operationen für jeden der vorgenannten Anwendungsfälle sowie für andere mögliche Anwendungsfälle der Erfindung abhängig von einem Grenzwert für den maximal verfügbaren Arbeitsspeicher auf einem Bereitstellungs-Zielsystem minimieren. Zu Beispielen zählen Tiefensuche, Breitensuche, iterative Tiefensuche, Dijkstra-Algorithmus und A*-Suche.
-
Der Fachmann wird erkennen, dass ein Umsetzen des Prozesses, der in 10 als ein rekursiver Tiefenoptimierungsprozess dargestellt wird, ein Einführen einer Schleife an jedem Entscheidungspunkt in diesem Prozess umfassen kann, der in 10 dargestellt wird, um eine Schleife über alle möglichen Entscheidungswahlmöglichkeiten zu bilden, anschließend in diesen Schleifen den in 10 dargestellten Prozess von diesen Punkten in dem weiteren Prozess für jede mögliche Wahl rekursiv aufzurufen, und am Ende der Schleifen die Wahlmöglichkeiten zurückzugeben, die eine gewünschte Maßnahme zu Ressourcenkosten optimieren. Diese Entscheidungspunkte können Schritt 1050 zum Auswählen eines zuweisbaren brückebildenden Gatters, Schritt 1060 zum Auswählen, ob Teilschaltungen zu verschränken sind, Schritt 1080 zum Zuweisen eines brückebildenden Gatters zu einer Teilschaltung und Schritt 1040 zum Bestimmen einer Teilschaltungs-Ausführungsreihenfolge enthalten. Einige Entscheidungen an diesen Punkten können stattdessen durch Anwenden von Faustregeln getroffen werden, während andere Entscheidungen als Teil der Tiefensuche enthalten sein können. Gewünschte Maßnahmen zu Ressourcenkosten, die minimiert werden sollen, können die Anforderungen für maximalen Arbeitsspeicher, die Gesamtanzahl von Gleitkomma-Operationen zum Berechnen aller Amplituden oder die Gesamtanzahl von Gleitkomma-Operationen zum Berechnen einer einzelnen Amplitude enthalten. Außerdem können Bedingungstests eingeführt werden, um Wahlmöglichkeiten auszuschließen, wenn gewünschte Bedingungen verletzt werden. Zu gewünschten Bedingungen kann gehören, dass die Anforderungen an den gesamten Arbeitsspeicher für eine Simulation innerhalb eines angegebenen Grenzwerts bleiben. Sie können auch einen Grenzwert für die Gesamtlaufzeit enthalten, die der Tiefenprozess selbst in Anspruch nimmt. Der Tiefenprozess kann umgesetzt werden, um die aktuell beste Gruppe von Wahlmöglichkeiten zu erfassen, die bisher gemäß einer gewünschten Maßnahme zu Ressourcenkosten gefunden wurden, sodass, wenn der Tiefenprozess abgeschlossen wird, bevor eine vollständige Suche ausgeführt wurde, wie beispielsweise in dem Fall, in dem ein Laufzeitgrenzwert vorgegeben ist, immer noch der Nutzen aus dem Ausführen des Tiefenprozesses gezogen werden kann.
-
Der Fachmann wird erkennen, dass der soeben beschriebene Tiefensucheprozess effektiv einen Baum von möglichen Abfolgen von Entscheidungswahlmöglichkeiten zusammen mit Schaltungspartitionierungen generiert, die dadurch hervorgerufen werden. Eine Breitensuche untersucht diesen Baum jeweils eine Ebene nach der anderen. Der Fachmann wird erkennen, dass die Breitensuche als eine iterative Tiefensuche umgesetzt werden kann, wobei für die Anzahl von getroffenen Entscheidungen ein Grenzwert vorgegeben wird, und Verzweigungen des Suchbaums aufgegeben werden, sobald dieser Grenzwert überschritten wird. Die Motivation für eine Breitensuche besteht darin, dass Suchkosten dazu neigen, mit der Suchtiefe exponentiell anzusteigen, sodass, wenn eine vernünftige Lösung für ein Optimierungsproblem in einer geringen Suchtiefe gefunden werden kann, diese Lösung angemessen sein könnte. Falls nicht, kann die Suche durch Erhöhen des Tiefengrenzwerts und ein erneutes Ausführen der Suche vertieft werden.
-
In dem Kontext der vorliegenden Erfindung kann ein Grenzwert außerdem nicht nur hinsichtlich der Tiefe der Suche angegeben werden, sondern alternativ auch hinsichtlich der Anzahl, wie oft die Verschränkungswahl in Schritt 1010 in 10 gewählt werden kann. Wenn die Wahl zum Verschränken in Schritt 1060 niemals getroffen wurde und stattdessen immer mit Schritt 1070 fortgefahren werden sollte, würde die Anzahl, wie oft Schritt 1070 ausgeführt würde, niemals größer als die Anzahl von Qubits sein. Der Grund dafür ist, dass Schritt 1070 die Wirkung hat, Gruppen von Qubits zusammen als ein Nebenprodukt eines Zusammenkombinierens der Ergebnisse der Teilschaltungen zu kombinieren, und die Anzahl derartiger gruppierender Operationen nicht größer sein darf als die Anzahl von gruppierten Qubits. Jedes Mal, wenn die Wahl zum Verschränken von Teilschaltungen in Schritt 1060 getroffen wird, verbreitert sich der effektive Suchbaum an diesem Punkt und wächst um mindestens eine weitere Ebene tiefer. Ein Einstellen eines sich wiederholt steigernden Grenzwerts für die Anzahl, wie oft die Wahl zum Verschränken getroffen werden kann, kann dadurch die Anzahl von Suchen einschränken, die für eine vorgegebene Einstellung des Grenzwerts ausgeführt werden (was der einer Breitensuche zugrunde liegende Zweck ist), während gleichzeitig eine Suchoptimierung über eine Gruppe von vollständig partitionierten Schaltungen ausgeführt wird. Im Gegensatz dazu würde ein einfaches Begrenzen der Tiefe der Suche verursachen, dass Verzweigungen in dem Suchbaum vorzeitig beendet würden, bevor eine Schaltung vollständig in Teilschaltungen partitioniert ist, wodurch ein großer Teil des Aufwands zum Generieren und Untersuchen von Nicht-Lösungen in dem Suchbaum verschwendet wird.
-
Eine Variation einer Breitensuche, die ebenfalls zur Verwendung mit der vorliegenden Erfindung geeignet sein kann, ist der Dijkstra-Algorithmus. In Anbetracht einer beliebigen Abfolge von Auswahlen, die an den verschiedenen Entscheidungspunkten in dem Prozess getroffen werden, der in 10 dargestellt ist, können die Maßnahmen in Bezug auf die Kosten der Ressourcen geschätzt werden, die durch den sich daraus ergebenden Simulationsprozess bis zu dem entsprechenden Punkt in der tatsächlichen Simulation in Anspruch genommen würden. Zu Beispielen zählen die kumulative Anzahl von bisherigen Gleitkomma-Operationen und die bisherigen maximalen Arbeitsspeicher-Anforderungen. Der Fachmann wird erkennen, dass der Dijkstra-Algorithmus umgesetzt werden kann, indem Datenstrukturen in eine Datenstruktur mit Prioritätswarteschlange gestellt werden, die Abfolgen von Entscheidungsauswahlen zusammen mit Maßnahmen in Bezug auf die Kosten der Ressourcen bis zu den entsprechenden Punkten in der sich daraus ergebenden Simulation encodiert. Der Dijkstra-Algorithmus kann anschließend fortgesetzt werden, indem die Abfolge mit den geringsten Kosten einer Entscheidungsauswahl aus der Prioritätswarteschlange ausgewählt wird, die Ressourcenkosten geschätzt werden, die einem Annehmen jeder der möglichen nächsten Entscheidungsauswahlen zugehörig sind, und die sich daraus ergebende Entscheidungsauswahl des nächsten Schritts und zugehörige Ressourcenkosten in die Prioritätswarteschlange gestellt werden und Wiederholungen ausgeführt werden. Der Dijkstra-Algorithmus kann für den in 10 dargestellten Prozess initialisiert werden, indem eine anfänglich leere Abfolge von Entscheidungsauswahlen zusammen mit den Ressourcenkosten zum Ausführen der Schritte 1010 und 1020 in die Prioritätswarteschlange gestellt wird, die Vorstufen des ersten Entscheidungspunkts sind, der Schritt 1050 entspricht. Vom Konzept her arbeitet der Dijkstra-Algorithmus daher durch ein Identifizieren der Abfolge mit den geringsten Kosten für bisher erhaltene Entscheidungen und ein anschließendes Beobachten, wohin diese Abfolge von Entscheidungen als Nächstes führt, sobald die Resultate des nächsten Entscheidungspunkts integriert sind.
-
Der Fachmann wird erkennen, dass eine weitere Variation des Dijkstra-Algorithmus die A*-Suche ist. Die A*-Suche modifiziert den Dijkstra-Algorithmus durch ein Kombinieren der Kosten, die sich aus Abfolgen von Entscheidungswahlen mit Schätzungen mit unterer Grenze ergeben, wie sich diese Kosten erhöhen, wenn optimale Abfolgen von Entscheidungsauswahlen ab diesen Punkten getroffen würden. Vom Konzept her arbeitet die A*-Suche durch ein Identifizieren der Abfolge von Entscheidungen mit der Schätzung der geringsten Gesamtkosten (im Gegensatz zu Kosten bis zum aktuellen Punkt in der Suche) und ein anschließendes Beobachten, wohin diese Abfolge von Entscheidungen als Nächstes führt, sobald die Resultate des nächsten Entscheidungspunkts integriert sind. In dem Kontext der vorliegenden Erfindung kann eine untere Grenze für die Anzahl von übrigen Gleitkomma-Operationen erhalten werden, indem die Kosten eines Anwendens aller übrigen Gatter berechnet werden, vorausgesetzt, dass die vorhandenen Tensoren sich nicht vergrößern. In dem Fall eines Mehrfach-Qubit-Gatters, das Teilschaltungen überbrückt, kann die Größe der kleinsten überbrückten Teilschaltung verwendet werden, um eine untere Grenze für die Kosten eines Anwendens dieses Mehrfach-Qubit-Gatters zu berechnen. Eine untere Grenze für die Erhöhung von Arbeitsspeicher-Anforderungen kann in der Voraussetzung bestehen, dass keine weiteren Erhöhungen von Arbeitsspeicher-Anforderungen stattfinden.
-
15 ist ein Blockschaubild, das ein Beispiel einer Datenverarbeitungsvorrichtung (z.B. Computer 1500) darstellt, die zum Ausführen von einer oder mehreren der hierin offenbarten Verfahren geeignet ist. Es sollte klar sein, dass 15 nur eine Veranschaulichung einer Ausführungsform bereitstellt und keine Einschränkungen hinsichtlich der Umgebungen impliziert, in denen verschiedene Ausführungsformen umgesetzt werden können. An der dargestellten Umgebung können viele Modifizierungen vorgenommen werden.
-
Wie dargestellt, enthält der Computer 1500 eine Datenübertragungsstruktur 1502, die Datenübertragungen zwischen einem oder mehreren Computerprozessoren 1505 bereitstellt, einen Arbeitsspeicher 1506, einen permanenten Speicher 1508, eine Datenübertragungseinheit 1512 und eine oder mehrere Eingangs-/Ausgangs- (E/A) Schnittstellen 1515. Die Datenübertragungsstruktur 1502 kann mit jeder Architektur umgesetzt werden, die für ein Übergeben von Daten und/oder ein Steuern von Informationen zwischen Prozessoren (wie Mikroprozessoren, Datenübertragungs- und Netzwerkprozessoren usw.), Systemarbeitsspeicher, Peripherie-Einheiten und allen anderen Hardware-Komponenten in einem System ausgelegt ist. Zum Beispiel kann die Datenübertragungsstruktur 1502 mit einem oder mehreren Bussen umgesetzt werden.
-
Der Arbeitsspeicher 1506 und der permanente Speicher 1508 sind durch einen Computer lesbare Speichermedien. In der dargestellten Ausführungsform enthält der Arbeitsspeicher 1506 einen Direktzugriffsspeicher (RAM) 1516 und einen Cache-Speicher 1518. Im Allgemeinen kann der Arbeitsspeicher 1506 jedes geeignete flüchtige oder nicht flüchtige durch einen Computer lesbare Speichermedium enthalten.
-
Ein oder mehrere Programme können im permanenten Speicher 1508 zur Ausführung durch einen oder mehrere der jeweiligen Computerprozessoren 1505 über einen oder mehrere Arbeitsspeicher des Arbeitsspeichers 1506 gespeichert werden. Der permanente Speicher 1508 kann eine Magnetfestplatte, ein Solid-State-Drive, eine Halbleiter-Speichereinheit, ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM), ein Flash-Speicher oder jedes andere durch einen Computer lesbare Speichermedium sein, das fähig ist, Programmanweisungen oder digitale Informationen zu speichern.
-
Die von dem permanenten Speicher 1508 verwendeten Medien können auch entfernbar sein. Zum Beispiel kann eine entfernbare Festplatte für den permanenten Speicher 1508 verwendet werden. Weitere Beispiele umfassen optische und magnetische Platten, USB-Sticks und Smart-Cards, die für einen Datentransfer auf ein anderes durch einen Computer lesbares Speichermedium, das ebenfalls Teil des permanenten Speichers 1508 ist, in ein Laufwerk eingesetzt werden.
-
Die Datenübertragungseinheit 1512 stellt in diesen Beispielen Datenübertragungen mit anderen Datenverarbeitungssystemen oder -einheiten bereit. In diesen Beispielen enthält die Datenübertragungseinheit 1512 eine oder mehrere Netzwerk-Schnittstellenkarten. Die Datenübertragungseinheit 1512 kann Datenübertragungen durch die Verwendung von physischen und/oder drahtlosen Kommunikationsverbindungen bereitstellen.
-
Die E/A-Schnittstelle(n) 1515 ermöglicht bzw. ermöglichen die Eingabe und Ausgabe von Daten mit anderen Einheiten, die mit dem Computer 1500 verbunden sein können. Zum Beispiel kann die E/A-Schnittstelle 1515 eine Verbindung zu externen Einheiten 1520 bereitstellen, wie zum Beispiel einer Tastatur, einem Tastenfeld, einem Berührungsbildschirm und/oder einer anderen geeigneten Eingabeeinheit. Die externen Einheiten können auch tragbare, durch einen Computer lesbare Speichermedien enthalten, wie zum Beispiel USB-Sticks, tragbare optische oder Magnetplatten und Speicherkarten.
-
Die zum Ausüben von Ausführungsformen der vorliegenden Erfindung verwendete Software und verwendeten Daten können auf derartigen durch einen tragbaren Computer lesbaren Speichermedien gespeichert werden und können auf den permanenten Speicher 1508 über die E/A-Schnittstelle(n) 1515 geladen werden. Die E/A-Schnittstelle(n) 1515 können auch mit einer Anzeige 1522 verbunden sein. Die Anzeige 1522 stellt einen Mechanismus zu Anzeigen von Daten für einen Benutzer bereit und kann zum Beispiel ein Computermonitor sein.
-
Einem Fachmann wird klar sein, dass die oben offenbarten Ausführungsformen für eine Vielfalt von Umgebungen und Anwendungen angepasst werden können. Des Weiteren werden die hierin beschriebenen Programme auf Grundlage der Anwendung identifiziert, für die sie in einer bestimmten Ausführungsform der Erfindung umgesetzt werden. Es sollte jedoch klar sein, dass jede bestimmte Programm-Nomenklatur hierin aus rein praktischen Gründen verwendet wird, und die Erfindung somit nicht allein auf die Verwendung in einer bestimmten identifizierten Anwendung und/oder durch eine derartige Nomenklatur umgesetzt eingeschränkt sein soll.
-
Die hierin offenbarten Ausführungsformen können ein System, ein Verfahren und/oder ein Computerprogrammprodukt enthalten. Das Computerprogrammprodukt kann ein durch einen Computer lesbares Speichermedium (oder -medien) enthalten, auf dem durch einen Computer lesbare Programminstruktionen gespeichert sind, um einen Prozessor dazu zu veranlassen, die hierin offenbarten Verfahren auszuführen.
-
Bei dem durch einen Computer lesbaren Speichermedium kann es sich um eine physische Einheit handeln, die Instruktionen zur Verwendung durch eine Einheit zur Ausführung von Instruktionen beibehalten und speichern kann. Das durch einen Computer lesbare Speichermedium kann zum Beispiel eine elektronische Speichereinheit, eine magnetische Speichereinheit, eine optische Speichereinheit, eine elektromagnetische Speichereinheit, eine Halbleiter-Speichereinheit oder jede geeignete Kombination aus dem Vorgenannten sein, es ist aber nicht darauf beschränkt. Zu einer nicht erschöpfenden Liste spezifischerer Beispiele des durch einen Computer lesbaren Speichermediums gehören die Folgenden: eine tragbare Computerdiskette, eine Festplatte, ein Direktzugriffsspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM bzw. Flash-Speicher), ein statischer Direktzugriffsspeicher (SRAM), ein tragbarer CD-ROM, eine DVD, ein Speicher-Stick, eine Diskette, eine mechanisch codierte Einheit wie zum Beispiel Lochkarten oder erhabene Strukturen in einer Rille, auf denen Instruktionen gespeichert sind, und jede geeignete Kombination des Vorgenannten. Ein durch einen Computer lesbares Speichermedium soll, wie hierin verwendet, nicht als flüchtige Signale an sich aufgefasst werden, wie zum Beispiel Funkwellen oder andere sich frei ausbreitende elektromagnetische Wellen, elektromagnetische Wellen, die sich durch einen Wellenleiter oder andere Übertragungsmedien ausbreiten (z.B. durch ein Glasfaserkabel geleitete Lichtimpulse) oder durch einen Draht übertragene elektrische Signale.
-
Hierin beschriebene durch einen Computer lesbare Programminstruktionen können von einem durch einen Computer lesbaren Speichermedium auf jeweilige Datenverarbeitungs-/Verarbeitungseinheiten oder über ein Netzwerk wie zum Beispiel das Internet, ein lokales Netzwerk, ein Weitverkehrsnetzwerk und/oder ein drahtloses Netzwerk auf einen externen Computer oder eine externe Speichereinheit heruntergeladen werden. Das Netzwerk kann Kupferübertragungskabel, Lichtwellenübertragungsleiter, drahtlose Übertragung, Leitwegrechner, Firewalls, Vermittlungseinheiten, Gateway-Computer und/oder Edge-Server aufweisen. Eine Netzwerkadapterkarte oder Netzwerkschnittstelle in jeder Datenverarbeitungs-/Verarbeitungseinheit empfängt durch einen Computer lesbare Programminstruktionen aus dem Netzwerk und leitet die durch einen Computer lesbaren Programminstruktionen zur Speicherung in einem durch einen Computer lesbaren Speichermedium innerhalb der entsprechenden Datenverarbeitungs-/Verarbeitungseinheit weiter.
-
Bei durch einen Computer lesbaren Programmanweisungen zum Ausführen von Arbeitsschritten der vorliegenden Erfindung kann es sich um Assembler-Anweisungen, ISA-Anweisungen (Instruction-Set-Architecture), Maschinenanweisungen, maschinenabhängige Anweisungen, Mikrocode, Firmware-Anweisungen, zustandssetzende Daten oder entweder Quellcode oder Objektcode handeln, die in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen geschrieben sind, darunter objektorientierte Programmiersprachen wie Smalltalk, C++ o.ä. sowie herkömmliche prozedurale Programmiersprachen wie die Programmiersprache „C“ oder ähnliche Programmiersprachen. Die durch einen Computer lesbaren Programminstruktionen können vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Software-Paket, teilweise auf dem Computer des Benutzers und teilweise auf einem entfernt angeordneten Computer oder vollständig auf dem entfernt angeordneten Computer oder Server ausgeführt werden. In dem letzteren Szenario kann der entfernt angeordnete Computer mit dem Computer des Benutzers durch jeden Typ von Netzwerk verbunden werden, darunter ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetzwerk (WAN), oder die Verbindung kann mit einem externen Computer hergestellt werden (zum Beispiel über das Internet unter Verwendung eines Internet-Dienstanbieters). In einigen Ausführungsformen können elektronische Schaltungen, darunter zum Beispiel programmierbare Logikschaltungen, feldprogrammierbare Gatter-Anordnungen (FPGA, field programmable gate arrays) oder programmierbare Logikanordnungen (PLA, programmable logic arrays) die computerlesbaren Programminstruktionen ausführen, indem sie Zustandsinformationen der computerlesbaren Programminstruktionen nutzen, um die elektronischen Schaltungen zu personalisieren, um Aspekte der vorliegenden Erfindung durchzuführen.
-
Aspekte der vorliegenden Erfindung werden hierin unter Bezugnahme auf Veranschaulichungen von Ablaufplänen und/oder Blockschaubildern von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es sollte klar sein, dass jeder Block der Ablaufplanveranschaulichungen und/oder der Blockschaubilder und Kombinationen von Blöcken in den Ablaufplanveranschaulichungen und/oder den Blockschaubildern mittels durch einen Computer lesbare Programminstruktionen umgesetzt werden können.
-
Diese durch einen Computer lesbaren Programminstruktionen können einem Prozessor eines Universalcomputers, eines Spezialcomputers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, sodass die über den Prozessor des Computers bzw. eine andere programmierbare Datenverarbeitungsvorrichtung ausgeführten Instruktionen ein Mittel zur Umsetzung der in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaubilder angegebenen Funktionen/Schritte erzeugen. Diese durch einen Computer lesbaren Programminstruktionen können auch auf einem durch einen Computer lesbaren Speichermedium gespeichert sein, das einen Computer, eine programmierbare Datenverarbeitungsvorrichtung und/oder andere Einheiten so steuern kann, dass sie auf eine bestimmte Art funktionieren, sodass das durch einen Computer lesbare Speichermedium, auf dem Instruktionen gespeichert sind, ein Herstellungsprodukt aufweist, darunter Instruktionen, die Aspekte der/des in dem Block bzw. den Blöcken des Ablaufplans und/oder der Blockschaubilder angegebenen Funktion/Schritts umsetzen.
-
Die durch einen Computer lesbaren Programminstruktionen können auch auf einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder eine andere Einheit geladen werden, um das Ausführen einer Reihe von Arbeitsschritten auf dem Computer bzw. der anderen programmierbaren Vorrichtung oder anderen Einheit zu verursachen, um einen durch einen Computer umgesetzten Prozess zu erzeugen, sodass die auf dem Computer, einer anderen programmierbaren Vorrichtung oder einer anderen Einheit ausgeführten Instruktionen die in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaubilder angegebenen Funktionen/Schritte umsetzen.
-
Die Ablaufpläne und Blockschaubilder in den Figuren veranschaulichen die Architektur, die Funktionalität und den Betrieb möglicher Ausführungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. In diesem Zusammenhang kann jeder Block in den Ablaufplänen oder den Blockschaubildern ein Modul, ein Segment oder einen Teil von Instruktionen darstellen, die eine oder mehrere ausführbare Instruktionen zum Umsetzen der bestimmten logischen Funktion(en) aufweisen. In einigen alternativen Umsetzungen können die in dem Block angegebenen Funktionen in einer anderen Reihenfolge als in den Figuren gezeigt auftreten. Zum Beispiel können zwei nacheinander gezeigte Blöcke tatsächlich im Wesentlichen parallel ausgeführt werden, oder die Blöcke können manchmal in der umgekehrten Reihenfolge ausgeführt werden, was von der beteiligten Funktionalität abhängt. Es ist ferner anzumerken, dass jeder Block der Blockschaubilder und/oder der Ablaufplandarstellungen sowie Kombinationen von Blöcken in den Blockschaubildern und/oder der Ablaufplandarstellung durch spezielle auf Hardware beruhende Systeme umgesetzt werden können, welche die angegebenen Funktionen oder Handlungen durchführen oder Kombinationen aus Spezial-Hardware und Computerinstruktionen ausführen.
-
Es ist anzumerken, dass diese Beschreibung die Erfindung keinesfalls einschränken soll. Die dargestellten Ausführungsformen sollen vielmehr einige der Alternativen, Modifizierungen und Entsprechungen abdecken, die in dem Erfindungsgedanken und Schutzumfang der Erfindung enthalten sind, wie in den Ansprüchen im Anhang definiert. Ferner werden in der ausführlichen Beschreibung der offenbarten Ausführungsformen zahlreiche spezifische Details dargelegt, um ein umfassendes Verständnis der beanspruchten Erfindung zu ermöglichen. Ein Fachmann wird jedoch verstehen, dass verschiedene Ausführungsformen ohne derartige spezifische Details ausgeübt werden können.
-
Obwohl die Funktionen und Elemente der hierin offenbarten Ausführungsformen in bestimmten Kombinationen beschrieben werden, kann jede Funktion oder jedes Element alleine, ohne die anderen Funktionen und Elemente der Ausführungsformen, oder in verschiedenen Kombinationen mit oder ohne andere hierin offenbarte Funktionen und Elemente verwendet werden.
-
Diese schriftliche Beschreibung verwendet Beispiele des offenbarten Erfindungsgegenstands, um es jedem Fachmann zu ermöglichen, selbigen auszuüben, einschließlich einem Erstellen und Verwenden beliebiger Einheiten oder Systeme und einem Ausführen aller integrierten Verfahren. Der patentierbare Schutzumfang des Erfindungsgegenstands wird durch die Ansprüche definiert und kann weitere Beispiele enthalten, die dem Fachmann in den Sinn kommen. Derartige weitere Beispiele sollen unter den Schutzumfang der Ansprüche fallen.