Wie wird eine n-Bit-Eingabe permutiert (neu gemischt)?


13

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 (n2) 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.

1
Die Eingabe ist eine binäre Zeichenfolge der Länge wobei der Bits Einsen sind und die Ausgabe eine der möglichen Permutationen davon ist. Dies kann auf einem klassischen Computer mit 1 Schritt erfolgen. Möchten Sie alle möglichen Ausgaben? nk(nk)1
user1271772

Nein, es sollte nur eine Ausgabe generiert werden, die zufällig aus allen möglichen Ausgaben ausgewählt wird.
JanVdA

Wäre ein klassischer Algorithmus gut genug? (Sie könnten es immer noch auf einem Quantencomputer ausführen.) Oder benötigen Sie etw. Welcher Algorithmus übertrifft den besten klassischen?
Norbert Schuch

1
@JanVdA: Warum nicht einfach eine 1 und eine 0 wählen und die beiden auf einem klassischen Computer tauschen?
user1271772

1
Da Sie die gewünschte Zufallsverteilung nicht angegeben haben, lasse ich diese hier: Dilbert und XKCD ;)
Ali

Antworten:


4

könnte mit log n zusätzlichen Qubits in dieser Richtung geschehen :logn

  1. Transformiere die zusätzlichen Qubits so, dass sie eine Zahl codieren , die gleichmäßig zufällig gewählt wird.k{0,,n1}

  2. Verschieben Sie die Eingangs-Qubits zyklisch mal.k

  3. Lassen Sie die letzte der ursprünglichen Eingangs Qubits als Ausgang und rekursiv auf dem verbleibenden fixiert werden von ihnen.n1

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).

1nk=0n1|kk|
k

Danke für die Antwort. Ich bin an einem tatsächlichen Quantenalgorithmus für das Problem interessiert - wenn Sie den obigen klassischen Algorithmus auf ein Quantenprogramm abbilden könnten, dann wäre das auch in Ordnung, aber ich habe keine Ahnung, wie das geht.
JanVdA

2
Ich denke, die Frage rückt jetzt in den Fokus: Sie suchen nicht wirklich nach einem Algorithmus, sondern nach Code. Was ich beschrieben habe, ist ein Algorithmus, und die verbleibende Aufgabe besteht darin, diesen Algorithmus (oder einen anderen) als Code in einer Sprache oder als Beschreibung einer Quantenschaltung auf niedriger Ebene zu implementieren. Ich schlage vor, Sie überarbeiten die Frage, um dies klarer zu machen. Beachten Sie jedoch, dass Sie jemanden bitten, mühsame und konzeptionell uninteressante Arbeiten für Sie auszuführen. Die Alternative, dies selbst zu lernen, mag entmutigend erscheinen, könnte aber langfristig die bessere Lösung sein.
John Watrous

Ich habe der Frage einen Hinweis hinzugefügt. Ich denke, wir haben das Konzept des Quantenalgorithmus unterschiedlich interpretiert . Für mich ist ein klassischer Algorithmus kein Quantenalgorithmus, sondern könnte auf einen Quantenalgorithmus abgebildet werden .
JanVdA

@JanVdA: Was meinst du mit Quantenalgorithmus? Benötigen Sie beispielsweise mindestens ein Gate? Oder dass es mindestens ein Y- Gatter benötigt? Oder dass es ein anderes bestimmtes Gate-Set erfordert? Welches Gate-Set soll dieser Algorithmus verwenden? HY
user1271772

Ein Quantenalgorithmus ist ein Algorithmus, der (auf Schrittebene) auf ein Programm für einen universellen Quantencomputer abgebildet werden kann. Die Eingabe und Ausgabe der Schritte des Quantenalgorithmus sind Qubits (oder könnten auf eine Reihe von Qubits abgebildet werden). Der letzte Schritt des Quantenalgorithmus = Auslesen (Beobachten) der Werte der Qubits (damit die Qubits auf tatsächliche Bits abgebildet werden). Es gibt keine Einschränkungen für den Gate-Satz. Die Idee ist, dass der gesamte Algorithmus auf einem universellen Quantencomputer ausgeführt werden kann.
JanVdA

3

Hinweis: In dieser Antwort wird davon ausgegangen, dass die Permutation kohärent sein soll , dh, Sie möchten 13(|001+|010+|100)001010100

|001. Wenn Sie aber auch den GHZ-Zustand für den Eingang|ausgeben wollen 010und| 100, das wird nicht funktionieren. Sie können nicht mehrere Eingangszustände an denselben Ausgangszustand senden (ohne Dekohärenz). Solange Sie sagen "Ich kümmere mich nur um sortierte aufsteigende Eingaben wie 0000111, aber nicht um 1110000 oder 0010110; Sie können damit machen, was Sie wollen", ist dies in Ordnung.|31=13(|001+|010+|100)|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.

|nknk

|000114|41|0011|4216


13(|001+|010+|100)|00113(|001|010+i.|100)

1
@JanVdA Richtig, man kann die Phasen verwenden, um die verschiedenen Ausgänge orthogonal zu machen. Meine Lektüre Ihrer Frage war, dass Sie in allen Fällen die gleiche Phase wollten.
Craig Gidney

0

Ein Quantencomputer kann klassische Berechnungen durchführen. Der optimale Algorithmus wäre:

  1. Wählen Sie ein beliebiges Bit (das schnellste, auf das Sie zugreifen können).
  2. Suchen Sie ein Bit mit dem entgegengesetzten Wert (wenn Sie in Schritt 1 eine 0 erhalten haben, suchen Sie eine 1).
  3. Schalten Sie sie um (0 wird 1 und 1 wird 0).

NO(N)nthO(N)


Danke, aber der Algorithmus würde nur 2 Bits schalten (damit er nicht alle Permutationen erzeugt) und es ist immer noch ein klassischer Algorithmus, während ich einen Quantenalgorithmus sehen möchte.
JanVdA
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.