第9章 量子誤り訂正

現実的な状況で動作する計算機を構成するデバイスは外部からのノイズに絶えずさらされており、様々な理由で100%正確に動作することはなく有限の確率でエラーを起こしてしまう。 起きたエラーが計算の目的と関係ない箇所だったり、エラーが計算する時間に生じる可能性が無視できるほど小さいなら良いが、一般にはエラーが起きた計算の結果が正しいことを保証することは困難である。

こうした状況で意味のある計算を行うためには、エラー訂正が必要となる。エラー訂正とは、\(n\)ビットの情報を表すのに\(n\)ビットより多いビット数で冗長に表現することで、ビットにある程度のエラーが生じてももとの状態を復元できるようにすることである。\(n\)ビットの情報を冗長な表現にうつすことをエンコード(符号化)、冗長な情報を読んで元の情報を復元することをデコード(復号化)と呼ぶ。量子計算機上でエラー訂正を行うことを量子誤り訂正と呼ぶ。また、誤り訂正機能を持ったまま、符号化された状態で計算を行うことを、誤り耐性計算と呼ぶ。 1024ビットの素因数分解のような複雑な計算を量子計算で行うには、量子誤り耐性計算を行うことが必須となる。

誤り訂正技術は、量子計算機が考えられる以前から長く用いられてきた。現代でもスーパーコンピュータのような大規模計算、ノイジーな環境での通信、複数のノードを用いた分散システム、金融やインフラにおける高信頼性の確保などのために広く利用されている。こうした歴史ある誤り訂正の理論を用いれば、量子誤り訂正や量子誤り耐性計算を行うことは可能だろうか?答えはNoである。 量子計算機は量子ビットの持つNo cloning theoremなどの特徴から、従来のエラー訂正で前提となるビットの直接観測などが行えない。このことから、量子計算機において誤り訂正を実現するには、量子計算機専用の誤り訂正理論が必要となる。

本章は次のような構成になっている。まず、「古典エラー訂正」の章では古典計算機におけるエラーの仕組みと程度、そして古典エラー訂正の代表的な手法を概説する。「量子エラー」の章では、量子ビットのデバイスごとに生じるエラーの原因と定式化について説明する。特に、量子ビットの寿命に依存するエラーと、量子操作に際するバックアクションに関するエラーについて解説する。完全な量子誤り訂正への導入となる「Shor Code」の章では、二つのエンタングル状態にビットフリップエラー(意図しないPauli \(X\)操作)が起きるとき、エンタングルメントを破壊せずに量子状態を元に戻す手続きを学ぶ。「スタビライザー符号」の章では、Shor Codeのような量子誤り訂正符号を構成する一般的な枠組みを学ぶ。「トポロジカルスタビライザー符号」の章では、スタビライザー符号の中でも実現に適していると言われている表面符号のような符号を学ぶ。次に、符号上でユニバーサルな量子計算を行うために必要となる「魔法状態の蒸留と注入」を学ぶ。最後に、量子誤り訂正の誤り訂正以外への応用、計算以外の誤り訂正、アニーリングにおける誤り訂正など、近年の発展的な内容の動向について触れる。