#Quantum Development Kit : コンセプト : 量子コンピューティングとは何でしょう? (翻訳)
(既にご存知の方も多いかと思いますが、) 12月11日に Microsoft Quantum Development Kit (QDK) の free preview 版がリリースされました :
この QDK には以下が含まれています :
- Q# 言語とコンパイラ
- Q# 標準ライブラリ
- ローカル量子マシン・シミュレータ
- 量子コンピュータ・トレース・シミュレータ
- Visual Studio 拡張
いずれ動作検証する予定ですが、取り敢えず、量子コンピューティングと QDK の基本コンセプトが説明されている、本家サイトの What is Quantum Computing? を翻訳しておきました。ご参考まで。
本文
◆ 新しいコンピュータ技術の主役の一人 (一つ) は最近2、3年の間に出現して、そして量子コンピューティングは議論の余地はあるかもしれませんが開発者の側に最も偉大なパラダイムシフトを要求する技術です。量子コンピュータは 1980 年代に Richard Feynman と Yuri Manin によって提案されました。量子コンピューティングの背後にある直感は、物理学の最も偉大な困惑の一つとしてしばしば見做されるものに由来します : 単純なシステムでさえモデル化できないことに直面した驚くべき科学の進歩です。量子力学は 1900 年から 1925 年の間に開発されてそしてそれは化学、物性物理学そしてコンピュータチップから LED 証明までの範囲の技術、究極的にはその他の残りすべての土台であり続けています。
しかしこれらの成功にもかかわらず、最も単純なシステムの幾つかでさえ量子力学によるモデル化は人間の能力を越えているように見えました。これは 数十程度の相互作用粒子のシステムのシミュレーションさえ従来のコンピュータが何千年にも渡り提供可能な計算パワー以上を必要とする からです。
◆ 何故量子力学がシミュレートするに困難なのかを理解するためには多くの道があります。多分最も簡単な道は、量子論は、物質は量子レベルでは同じ時間に (状態 (= state) として知られる) 数多くの異なる可能な形状 (= configuration) にあると提示している、と解釈できることを知ることです。古典的な確率論と違い、潜在的に観測可能な、量子状態のこれらの多くの形状は潮だまり (= tidepool) の波のように互いに干渉するかもしれません。これは量子状態の形状を得るために 統計的サンプリングの使用を妨げます。もし量子進化を理解することを望むのであれば、むしろ、量子システムが取れる総ての可能な状態を追跡しなければなりません。
◆ 電子 (群) が $40$ 個の位置のいずれかの場所を取れる電子システムを考えてください。それ故に電子は $2^{40}$ 構成のどれかです (何故ならば各位置は一個の電子を持つかも持たないかもしれないからです)。
従来のコンピュータ・メモリでは電子の量子状態をストアするためにはメモリ 130 Gb を超えて必要になるでしょう (訳注 : in python: (2**40)/((1024**3)*8) =>128.0)。これは相当な量ですが、ある種のコンピュータでは届く範囲内です。もし粒子に $41$ 位置のいずれかの場所を許したのであれば、$2^{41}$ では 2 倍の構成になり今度は量子状態をストアするために 260 Gb メモリ以上を必要とするでしょう。
もし状態を従来のようにストアすることを望むのであれば、位置の数を増やすゲームは無限にはプレイできません、何故ならば世界で最もパワフルなマシンのメモリ容量をすぐに超えるからです。数百の電子でシステムをストアするために必要なメモリは世界の粒子の数を超えます ; このように量子ダイナミクスをシミュレートすることさえ従来のコンピュータでは望みがありません。そしてしかし実際には、そのような (電子) システムは量子力学の法則に従い時間とともに容易に進化します。従来の計算パワーではそれらの進化を工作してシミュレートすることができないことを幸せにも知ることなく。
◆ この観察は量子コンピューティングの近未来のビジョンを持つ人々を単純だが力強い疑問を尋ねることへ導きます : 私たちはこの困難を機会に変えることができるでしょうか? 特に、量子ダイナミクスが起きることをシミュレートすることが困難であるならば、根本的な演算として量子効果を持つハードウェアを構築したら?相互作用粒子のシステムをそれらを自然に統治する同じ法則を正確に活用するシステムを使用してシミュレートできるでしょうか?自然から完全に離れた、しかし量子力学の法則に従うあるいは恩恵を受けるタスクを調査できるでしょうか? これらの疑問は量子コンピューティングの創世へと導かれます。
◆ 量子コンピューティングの基礎的なコアは物質の量子状態に情報をストアしてその情報の上で計算するために量子ゲート演算を使用します、量子干渉を「プログラム」するために利用して学習することによってです。従来のコンピュータ上では困難であると考えられていた問題を解くために干渉のプログラミングの早期の例は素因数分解として知られる問題のために Peter Shor により 1994 年に成されました。素因数分解を解くことはそれと一緒に、RSA と ECDLP を含む、今日の e-コマースのセキュリティの基礎となっている公開キー暗号システムの多くを破る能力をもたらしました。
その時から、高速で効率的な量子コンピュータ・アルゴリズムが困難な古典的なタスクの多くのために開発されてきました : 化学、物理、そして物質科学における物理システムのシミュレーション、順序付けられていないデータベースの検索、線形方程式のシステムの解法、そして機械学習です。
◆ 干渉を利用するための量子プログラムの設計は怖気づくような挑戦に思えるかもしれませんが、そしてその一方で、Microsoft Quantum Development Kit を含む多くのテクニックとツールが量子プログラミングとアルゴリズム開発をよりアクセス可能なものにするために導入されてきました。同時に解法が量子もつれにおいて失われないようにする一方で、計算にとって有用な方法で量子干渉を操作するために使用可能な基本的なストラテジーが一掴みあります。
量子プログラミングは古典的なプログラミングとは異なる技術で、量子アルゴリズム的な考えを理解して表現するために非常に異なるツールを必要とします。実際に、量子プログラミングの技術に取り組む際に量子開発者を助けるための一般的なツールなしでは、量子アルゴリズム的な開発はそれほど簡単ではありません。
◆ 成長するコミュニティを彼らのタスク、問題、そして解法のための量子の革新への扉を開けるツールで強化するために Microsoft Quantum Development Kit を提示します。高レベルなプログラミング言語 Q# は量子情報処理の挑戦に対応するために設計されました ; それは量子コンピュータのプリミティブな演算へコンパイル・ダウンされる量子アルゴリズムを可能にするソフトウェアスタックに統合されています。
プログラミング言語にアプローチする前に、量子コンピューティングの基礎となる基本的な原理をレビューすることは役立つでしょう。私たちは量子コンピューティングの基礎的なルールを量子力学の基礎を詳述するよりも、自明の理として用います。更に、私たちは線形代数 (ベクトル、行列 etc.) の基本的な知識を仮定するでしょう。もし量子コンピューティングの歴史と原理のより深い勉強が望まれるならば、更なる情報を含む リファレンス・セクション を参照してください。