Ich interessiere mich für einen Quantenalgorithmus, der als Eingabe eine n-Bit-Sequenz erhält und als Ausgabe eine neu gemischte (permutierte) Version dieser n-Bit-Sequenz erzeugt.
Wenn die Eingabe z. B. 0,0,1,1 ist (in diesem Fall also n = 4), lauten die möglichen Antworten:
- 0,0,1,1
- 0,1,0,1
- 0,1,1,0
- 1,0,0,1
- 1,0,1,0
- 1,1,0,0
Beachten Sie, dass nur eine Ausgabe generiert werden sollte, die zufällig aus allen möglichen gültigen Ausgaben ausgewählt wird.
Wie kann dies am besten in einen Quantenalgorithmus implementiert werden ?
Eine Lösung hierfür wird bereits als Teil einer der Antworten für Wie erstelle ich einen Quantenalgorithmus, der 2 n-Bit-Sequenzen mit der gleichen Anzahl von 1-Bit erzeugt? . Das Problem bei dieser Lösung ist jedoch, dass dies ungefähr Hilfe-Qubits erfordert, die schnell riesig werden, wenn n groß ist.
Hinweis:
- Bitte geben Sie keinen klassischen Algorithmus an, ohne zu erklären, wie die Schritte des klassischen Algorithmus auf einen universellen Quantencomputer abgebildet werden können.
- Für mich gibt es zwei gute Möglichkeiten, "zufällig aus allen möglichen guten Ergebnissen ausgewählt" zu interpretieren : (1) Jedes mögliche gute Ergebnis hat die gleiche Chance, ausgewählt zu werden. (2) Jeder mögliche gute Output hat eine Chance> 0 gewählt zu werden.
Antworten:
könnte mit ⌈ log n ⌉ zusätzlichen Qubits in dieser Richtung geschehen :⌈logn⌉
Dies ist ein klassischer Algorithmus, aber Sie können ihn natürlich auf einem Quantencomputer ausführen, wie Norbert in einem Kommentar vorgeschlagen hat. (Der Aspekt der Frage, bei dem es darum geht, dass der Algorithmus ein Quantenalgorithmus ist, ist mir immer noch nicht klar. Wenn es also nicht ausreicht, einen klassischen Algorithmus wie den, den ich auf einem Quantencomputer vorgeschlagen habe, auszuführen, wäre dies für die Frage hilfreich geklärt werden.)
Beachten Sie, dass der Algorithmus, da in der Frage eine zufällige Ausgabe angefordert wird, irgendwann Entropie erzeugen muss, vermutlich durch Messungen oder andere nicht einheitliche Operationen an Qubits (wie z. B. deren Initialisierung). Im obigen Algorithmus ist es der erste Schritt, der die Entropie erzeugt: Unabhängig vom Zustand der zusätzlichen Qubits, bevor die Operation in Schritt 1 ausgeführt wird, sollten sie den Zustand nachdem Schritt 1 ausgeführt wurde (mitdas in binär codiert ist, sagen wir mal).
quelle
Hinweis: In dieser Antwort wird davon ausgegangen, dass die Permutation kohärent sein soll , dh, Sie möchten13√(|001⟩+|010⟩+|100⟩) 001 010 100
Ein Trick zum Erzeugen einer Quantenpermutation einer sortierten Eingabe besteht darin, zuerst einen "Permutationszustand" durch Anwenden eines Sortiernetzwerks auf eine Liste von Startwerten in jeweils einheitlicher Überlagerung herzustellen. Das Sortiernetzwerk gibt Qubits aus, die die sortierten Startwerte enthalten, aber auch Qubits, die die Vergleiche des Sortiernetzwerks enthalten. Der Permutationszustand besteht nur aus den Vergleichs-Qubits. Um sie auf Ihre Eingabe anzuwenden, führen Sie die Eingabe einfach in umgekehrter Reihenfolge durch das Sortiernetzwerk. Beachten Sie, dass es hier einige knifflige Details gibt. siehe die Veröffentlichung " Verbesserte Techniken zur Herstellung von Eigenzuständen fermionischer Hamiltonianer ". Sie müssten diese Technik verallgemeinern, um Eingaben mit wiederholten Werten zu bearbeiten, anstatt nur eindeutige Werte.
quelle
Ein Quantencomputer kann klassische Berechnungen durchführen. Der optimale Algorithmus wäre:
quelle