自律分散コンピューティングの世界での基本的な問題として匿名リーダー選挙問題というものがあります.多くの分散アルゴリズムでは処理の方法やデータへのアクセス許可を記述したTokenをあるコンピュータが振り出して,次々にリレーしていきます.一通りの処理が終わるまでは振り出し元は一つでないと不都合が起きるのでどれか決めておかなくてはなりません.振り出し元をリーダーといいますが,リーダーをどうやって決めるかが問題です.もちろんコンピュータに名前がついていれば何の問題もありませんが,どれも対等だと困ります.じゃんけんすればいいわけですが,あいこがでる可能性があります.古典コンピューティングでは有限時間内に確定的に決まらないことが知られています.
一方,量子ではERATO今井量子計算機構プロジェクトで一緒に仕事をしていた谷さんが有限時間内に 確定的に決まるアルゴリズムを見つけました.(S. Tani, H. Kobayashi, and K. Matsumoto, STACS2005; Lecture Notes in Computer Science 3404 (Springer, Berlin, 2005), p. 581.) アルゴリズムを眺めているうちに,どうも2者の量子リーダー選挙なら実装できそうな気がしてきました. アルゴリズムで必要なCNOTゲートなどを線形光学素子で構成するのですが,面白いことに, 普通なら失敗として捨てなければならない事象もリーダーを決めるのには役立つことがわかりました. これまで線形光学素子を使った量子演算では失敗する確率が必ずあったのですが,このプロトコルでは確定的に実現できるのです!
最初のバージョンは偏光qubitで考えたのでエンタングルした光子対が2つ必要だったのですが,現精華大の王さんのアイディアで光子数qubit(真空が|0>、1光子状態が|1>)を使えばエンタングルしていない光子対1つで実装できることがわかりました.実験は連携大学院で筑波大から来ていた大久保君(現日立)が担当し、装置のセッティングが不完全でエラーが出る場合でも(実験ではこれが当たり前ですが) 通信量の観点から古典アルゴリズムを凌駕することを実証しました.
量子計算のプロセスは重ねあわせ状態の入力に対して量子並列計算を行う部分と,その結果から必要な状態(答え)を選び出す部分からなります.答えを選び出す過程でよく使われるのが量子フーリエ変換です. 代表的な例がShorの素因数分解アルゴリズムで前半部分で axmodN の計算を行い,後半部の量子フーリエ変換で答えの状態を取り出します. そのため量子フーリエ変換は直後に測定を伴うことが多いです.
測定を伴う量子フーリエ変換は図のように一般に使われている光通信用部品で構成できることを見出して, 実際1024qubitsの量子フーリエ変換をやってみたのがこの実験です. ある量子ビットへの演算(位相回転の大きさ)をそれ以前の測定結果から決めるというFeed forwardが使われています. 入力がシリアル(1qubitごと)ということと,同じ測定を繰り返してビット値を決めることで エラー率が減らせるというのがこの実験のミソです.実際 1%くらいはエラーが出るのですが,10回繰り返し測定することで10-4台の誤り率になります.光子が検出されないときや,測定誤りがあっても気にせず繰り返し演算すればよいということもわかりました. また、素子の不完全性や設定精度(位相回転のなどによるエラーは数ビット後には影響しなくなるというのもこの研究で確かめられたことです.