Artikelformat

Quantencomputing mit Ruby

cat

Wenige wissen, dass man mit der japanischen Programmiersprache Ruby heute schon Quantencomputing betreiben kann.

Wer einen Rubyinterpreter auf seinem Computer installiert hat, kann das folgende Experiment nachvollziehen, das von Erwin Schrödinger inspiriert ist. (Siehe auch meinen Beitrag aus dem Jahr 1997)

In der Quantenwelt sind Zustände ineinander verschränkt. In Ruby geht das auch. Wir erzeugen einen ineinander verschränkten Quantenhash:

q = Hash.new Hash.new

In diesen Hash speichern wir eine Box mit einer Katze:

q[:box][:cat] = 'Miau'

Geht es der Katze gut?

q[:box][:cat]
→ 'Miau'

In unserem Experiment müssen wir den Zerfall eines α-Teilchen mit einer Wahrscheinlichkeit von 0,5 simulieren. Wichtig für das Experiment: wir dürfen keine Kenntnis von dem Ergebnis erhalten, sonst kollabiert die Wellenfunktion. Normalerweise zeigt uns der Rubyinterpreter jedoch jeden Wert an. Wir lösen diese Aufgabe durch eine Konjunktion, die unabhängig vom Zufallswert immer „Falsch“ liefert.

 (rand > 0.5) && false
→ false

Jetzt sollte sich die Katze nach Schrödinger in einem speziellen Zustand der Superposition befinden, weder lebendig, noch tot.

Was sagt eigentlich unser Quantenhash dazu?

q
→ {}

Nanu, eben hat die Katze noch miaut, ist der Hash wirklich leer?

q.empty?
→ true

Haben wir das Ergebnis nicht richtig verstanden? Fragen wir doch mal Herrn Schrödinger nach seiner Katze.

q[:schroedinger][:cat]
→ 'Miau'

Die Katze ist offenbar in einer neuen Wirklichkeit wieder aufgetaucht. Aber wie? War es der Tunneleffekt, oder hat Everett mit seiner „Viele-Welten Theorie“ doch recht?
Mehr dazu demnächst auf diesem Blog.

Ergänzung

Alle die mehr über Programmiersprachen für Quantencomputing wissen wollen empfehle ich das Video-Interview mit Benoît Valiron als Einstieg. Schon weiter fortgeschritten als Ruby ist die Haskell-basierte Sprache Quipper.

Autor: Karsten Meier

Weil ich gerne Probleme löse bin ich Informatiker geworden. Ich berate und Konzeptionieren und entwickle mit fast allem, was einen Prozessor hat.

4 Kommentare

  1. Nothing is strange here. The truth is that in the beginning you’re creating hash having default value set as new hash. So once you write q[:some] = ‘asd’ then q[:other] will also be ‘asd’. In fact be calling q[:some][:thing] = “other” you’re just setting default value to the first Hash.new being {:thing => “other”}. Then the first hash is always empty, but if you call q[:whatever_you_want] then the answer will be the default value {:thing => “other”}.

  2. You will not necessarily need it, but quantum computing will use concepts from higher mathematics, so it will be easier to learn for people with good mathematical background.

Hinterlassen Sie eine Antwort