Blog

Kreislauf des Monats Dezember 2021: Erstellung anspruchsvoller Oracle

18
Dezember
,
2021

Orakel sind ein sehr wichtiger Bestandteil von Quantencomputer-Algorithmen. Ein Orakel ist im Wesentlichen eine "Blackbox"-Funktion, die als Eingabe für einen anderen Algorithmus verwendet wird. Bei einer Grover-Suche beispielsweise ermittelt das Orakel, welche Werte mit der Suche übereinstimmen und welche Werte nicht mit der Suche übereinstimmen.

Die Erstellung eines einfachen Orakels ist relativ einfach. Betrachten Sie zum Beispiel das Orakel, das Teil des Grover-Schaltkreises unten ist, Teil des Qiskit-Lehrbuchs

Die Aufgabe dieses speziellen Orakels ist es, die Zustände |101> und |110> so zu markieren, dass sie durch den nächsten Teil der Schaltung verstärkt werden.

Aber was passiert, wenn man ein anspruchsvolleres Orakel schreiben will? Nehmen wir zum Beispiel an, dass Sie drei Quantenvariablen haben, a, b und c. Jede Variable ist kein einzelnes Qubit, sondern ein Register, das sich aus mehreren Qubits zusammensetzt. Nehmen wir an, dass a 2 Qubits breit ist, b ebenfalls 2 Qubits breit ist und c ist 3 Qubits breit. Unser Orakel ist so konzipiert, dass es Kombinationen von a, b und c so dass (unter Verwendung der Python-Notation):

 a+ b +(c & 15) % 8 ^ 3 & a ^ 10 == 4

Dieses Orakel ist etwas komplexer und könnte je nach den Präferenzen des Benutzers etwa so aussehen:

Sie können die übergeordnete Funktionalität und dann einige Details in den einzelnen Blöcken sehen.

Es würde lange dauern, ein solches Orakel zu erstellen.

Es sei denn, Sie verwenden die Classiq-Plattform. Hier ist der Code, der dieses Orakel auf Classiq erstellt:

{
  "qubit_count": 40,
  "max_depth": 1000,
  "logic_flow": [
    {
      "function": "Arithmetic",
      "function_params": {
        "expression": "(a + b + (c & 15)) % 8 ^ 3 & a ^ 10 == 4",
        "definitions": {"a": {"size": 2}, "b": {"size":2}, "c": {"size":3}},
        "method": "pebble",
        "qubit_count": 30
    },
    "add_as_single_gate": false
  ]
}

Zusätzlich zu den offensichtlichen Freiheitsgraden beim Schreiben eines anderen arithmetischen Ausdrucks oder beim Ändern der Breite der einzelnen Variablen könnte man die gewünschte Anzahl der Qubits, die Methode zur Erstellung des Orakels und viele weitere Parameter festlegen.

So sieht der vollständige Schaltkreis aus. Bewegen Sie den Mauszeiger über die farbigen Blöcke unten und klicken Sie auf die "+"-Zeichen auf den Blöcken unten, um die Schaltung nach Herzenslust zu erweitern und weiter auszubauen

Classiq-Logo


Komplexes Orakel, erstellt am 17. Dezember 2021 mit der Classiq-Plattform zur Entwicklung von Quantenalgorithmen

Es gab einen Fehler im Skript

Orakel sind ein sehr wichtiger Bestandteil von Quantencomputer-Algorithmen. Ein Orakel ist im Wesentlichen eine "Blackbox"-Funktion, die als Eingabe für einen anderen Algorithmus verwendet wird. Bei einer Grover-Suche beispielsweise ermittelt das Orakel, welche Werte mit der Suche übereinstimmen und welche Werte nicht mit der Suche übereinstimmen.

Die Erstellung eines einfachen Orakels ist relativ einfach. Betrachten Sie zum Beispiel das Orakel, das Teil des Grover-Schaltkreises unten ist, Teil des Qiskit-Lehrbuchs

Die Aufgabe dieses speziellen Orakels ist es, die Zustände |101> und |110> so zu markieren, dass sie durch den nächsten Teil der Schaltung verstärkt werden.

Aber was passiert, wenn man ein anspruchsvolleres Orakel schreiben will? Nehmen wir zum Beispiel an, dass Sie drei Quantenvariablen haben, a, b und c. Jede Variable ist kein einzelnes Qubit, sondern ein Register, das sich aus mehreren Qubits zusammensetzt. Nehmen wir an, dass a 2 Qubits breit ist, b ebenfalls 2 Qubits breit ist und c ist 3 Qubits breit. Unser Orakel ist so konzipiert, dass es Kombinationen von a, b und c so dass (unter Verwendung der Python-Notation):

 a+ b +(c & 15) % 8 ^ 3 & a ^ 10 == 4

Dieses Orakel ist etwas komplexer und könnte je nach den Präferenzen des Benutzers etwa so aussehen:

Sie können die übergeordnete Funktionalität und dann einige Details in den einzelnen Blöcken sehen.

Es würde lange dauern, ein solches Orakel zu erstellen.

Es sei denn, Sie verwenden die Classiq-Plattform. Hier ist der Code, der dieses Orakel auf Classiq erstellt:

{
  "qubit_count": 40,
  "max_depth": 1000,
  "logic_flow": [
    {
      "function": "Arithmetic",
      "function_params": {
        "expression": "(a + b + (c & 15)) % 8 ^ 3 & a ^ 10 == 4",
        "definitions": {"a": {"size": 2}, "b": {"size":2}, "c": {"size":3}},
        "method": "pebble",
        "qubit_count": 30
    },
    "add_as_single_gate": false
  ]
}

Zusätzlich zu den offensichtlichen Freiheitsgraden beim Schreiben eines anderen arithmetischen Ausdrucks oder beim Ändern der Breite der einzelnen Variablen könnte man die gewünschte Anzahl der Qubits, die Methode zur Erstellung des Orakels und viele weitere Parameter festlegen.

So sieht der vollständige Schaltkreis aus. Bewegen Sie den Mauszeiger über die farbigen Blöcke unten und klicken Sie auf die "+"-Zeichen auf den Blöcken unten, um die Schaltung nach Herzenslust zu erweitern und weiter auszubauen

Classiq-Logo


Komplexes Orakel, erstellt am 17. Dezember 2021 mit der Classiq-Plattform zur Entwicklung von Quantenalgorithmen

Es gab einen Fehler im Skript

Über "Der Podcast des Qubit-Typen"

Der Podcast wird von The Qubit Guy (Yuval Boger, unser Chief Marketing Officer) moderiert. In ihm diskutieren Vordenker der Quanteninformatik über geschäftliche und technische Fragen, die das Ökosystem der Quanteninformatik betreffen. Unsere Gäste geben interessante Einblicke in Quantencomputer-Software und -Algorithmen, Quantencomputer-Hardware, Schlüsselanwendungen für Quantencomputer, Marktstudien der Quantenindustrie und vieles mehr.

Wenn Sie einen Gast für den Podcast vorschlagen möchten, kontaktieren Sie uns bitte .

Erstellen Sie Quantensoftware ohne Grenzen 

Kontakt