Entwicklung von Quantenalgorithmen
Quantencomputer sind bereits realisiert. Für die Programmierung sind spezielle Befehle nötig. Dieser kleine Beitrag kann nur einige Aspekte zeigen.
Ein Quantencomputer arbeitet anders als konventionelle Rechner auf Halbleiterbasis.
Halbleiterrechner haben als kleinste logische Einheiten Gates, realisiert durch logische Transistoren.
Ein Quantenrechner erzeugt und erfasst Quantenzustände. Diese gemessenen physikalischen Ergebnisse können die konventionellen Berechnungen unter Umständen in den Schatten stellen.
Ein Quantencomputer realisiert Qubits. Ein single Quantenstatus kann als eine Funktion ψ beschrieben werden,
wobei φ die Quantenphase ist.
Fachleute sprechen beim Quantenalgorithmen Programmieren (QC) vom Schaltkreisbilden (circuit building).
Es existiert eine eigene Hochsprache für QC, openQuantumAssembler. Mit rund 30 Funktionen können Qubits verknüpft werden (Circuit building).
Beispiel: Erzeugung Q-Circuit mit Programmzeilen für den Bell Status zweier maximaler verschränkter Qubits:
# openQASM 2.0
# include „q_library“
1 #qreg q[2];
2 #creg c[2];
3 #h q[ʘ];
4 #cx q[ʘ] , q1 [ʘ];
5 #measure q[ʘ] → c[ʘ];
Der Befehl „h“ bedeutet „H Gate“ und erzeugt das Quantengatter zweier Qubits.
Das Hadamard Gatter aus Zeile 3 überführt q0 und q1 in überlagerte Zustände.
Das CNOT Gate aus Zeile 4 erzeugt eine universelle Menge von Quantengattern.
Der Befehlt measure aus Zeile 5 liest das Ergebnis und schreibt es in das konventionelle Register c.
Der Bellstatus in diesem Beispiel ist eine Wahrscheinlichkeit von 100% für Status 11. Die Ausführung des Programms erfolgte auf einem in Santiago realisierten Quantencomputer.
Quantenrechner können von einem konventionellen Rechner aus (Desktop oder Notebook) betrieben werden. Einerseits muss natürlich ein Kontakt dazu bestehen, andererseits ist für sinnvolle Nutzen bisherige Programmiersprache um zusätzliche Funktionen (Quantenalgorithmen) zu erweitern. Quantenalgorithmen oder Quantenassembler sind die Befehle, die der Quantencomputer sofort versteht.
Anwendung Quantenprogrammierung wäre zum Beispiel künstliche Intelligenz um geeignete Aktien für Akquise (Investition) zu finden.
Beispiel, ein vorprogrammiertes big data AI Finanzprogramm an einem Quantencomputer auszuführen:
#from quantumkit import runtime
#input = load input („finance_input_parameters.file“)
#quantum runtime = quantumkit runtime („API“)
#result = quantum runtime („finance“ input)
„quantumkit“ ist notwendige Erweiterung des Befehlsatzes.
API ist die Schnittstellenvereinbarung zum Quantenrechner.
In der zweiten Programmzeilen sind die Rohdaten (big data) die in die Qubits eingelesen werden sollen.
Die Maxime für das Programm lautet „Finde unter allen deutschen Aktien, diejenige, bei der sich ein Investment am ehesten lohnt“. Das Ergebnis würde Sie vielleicht überraschen...
Datenfile ist eine Excel Tablette mit Aktien und deren Daten wie Rendite, Dividende, KBV, KGV, Eigenkapitalquote, Analystenranking usw...
Hier ist ein einfaches Beispiel für Shor’s Algorithmus, der zur Faktorisierung einer Zahl verwendet wird. Shor’s Algorithmus nutzt die Quantenmechanik, um große Zahlen effizient in ihre Primfaktoren zu zerlegen. Hier ist ein vereinfachtes Beispiel, wie der Algorithmus funktioniert12:
Beispiel: Faktorisierung der Zahl 15
Wähle eine Zahl ( N ) zum Faktorisieren:
( N = 15 )
Wähle eine zufällige Zahl ( a ) kleiner als ( N ):
( a = 7 )
Berechne den größten gemeinsamen Teiler (ggT) von ( a ) und ( N ):
( \text{ggT}(7, 15) = 1 ) (Wenn der ggT nicht 1 ist, haben wir bereits einen Faktor gefunden)
Finde die Periode ( r ) der Funktion ( f(x) = a^x \mod N ):
Hier ist ein einfaches Programm für einen Quantencomputer, das mit der Python-API Qiskit von IBM geschrieben wurde. Dieses Programm erstellt ein einfaches Quanten-Gatter, das ein Qubit in den Zustand der Superposition versetzt und dann misst12.
# Importiere die notwendigen Pakete aus Qiskit
from qiskit import QuantumCircuit, Aer, execute
# Erstelle ein Quanten-Schaltkreis mit einem Qubit und einem klassischen Bit
qc = QuantumCircuit(1, 1)
# Füge ein Hadamard-Gatter hinzu, um das Qubit in Superposition zu versetzen
qc.h(0)
# Messe das Qubit und speichere das Ergebnis im klassischen Bit
qc.measure(0, 0)
# Verwende den QASM-Simulator, um den Schaltkreis auszuführen
simulator =
Aer.get_backend('qasm_simulator') result = execute(qc, simulator, shots=1024).result()
# Zeige die Ergebnisse an
counts = result.get_counts(qc)
print("Messungsergebnisse:", counts)
Dieses Programm führt die folgenden Schritte…
Quantencomputing ist eine schnell wachsende Technologie, die mit Hilfe der Quantenmechanik Probleme löst , die selbst mit herkömmlichen Supercomputern nicht zu lösen sind.
In gewisser Weise ist quantum computation ein „neues Denken für eine neue Zeit“.
Gerechnet wird in diesem Automaten nicht mehr mit „Null und Eins“ wie es einst Leibniz vorgeschlagen hatte, sondern es werden Quanten Zustände erzeugt und gemessen. Beispielsweise mit Photonen.
In eigenen threads in diesem blog werde ich gesonderte auf bisherige Realisierungen von Quantencomputer eingehen, dazu gesondert auf die Begriffe
„gaussian boson sampling“ und „hafnian formula“.