イノベーション エンジニアブログ


株式会社イノベーションのエンジニアたちの技術系ブログです。ITトレンド・List Finderの開発をベースに、業務外での技術研究などもブログとして発信していってます!


このエントリーをはてなブックマークに追加

Vue.jsを使って量子コンピュータの並列演算を再現してみた ~その2~

はじめに

こんにちは、Yuです。
前回の続きで、量子コンピュータのお話です。

前回はとりあえず形になるものを作って終わりましたが、せっかくなので意味のある計算をしてみたいと思い、機能を追加しました。
詳しい説明は省略しますので、興味のある方はググってください。

やりたかったこと

  • 状態を複素数に拡張

  • フーリエ変換 (正確には「量子離散的フーリエ変換」というらしいです)

作ったもの

実際にできたものがこちらになります。

calculator_2.png

レイアウトは特に変わっていません。手打ちで回路を入力するのが面倒になってきたので、フーリエ変換の回路を追加するボタンを実装しました。

書いたコード

GitHubにあげていますので、興味のある方はどうぞ。

追加したゲートは以下の2つです。

  1. 制御回転ゲート
    制御ビット側に「U」または「D」、標的ビット側に数字(a)を入力します。制御側と標的側の少なくとも片方が0なら変化なし、両方とも1ならその状態に対して exp(2πi/2a) をかけます。 今は1桁の0以上の整数にしか対応していません。

  2. スワップゲート
    一番上のビットに「s」を、それ以外のビットに「|」を入力します。 0010→0100、0101→1010という感じに、ビットの順番を逆転させます。

動かしてみた

「10」をフーリエ変換してみました。

fourier.gif

計算結果があっているかは分かりません。多分あってます。多分。

おわりに

中々それっぽくなったので個人的には満足しています。
次回はさらにゲートを追加し、「位相推定問題」に挑戦する予定です(あくまで予定)。

おわり