見出し画像

プログラマのための量子アルゴリズム入門

数学科を卒業してITエンジニアとして働いているsnuffkinといいます。
よろしくお願いします。

このところ、ますます量子コンピュータに関する話題を目にすることが多くなりました。
それらを読むと、「いずれ量子コンピュータが世の中を変えるかもしれない」と期待しますし、ITエンジニアとして新技術を理解したくなります。

1992年に量子コンピュータで現在のコンピュータよりも高速に解ける問題が発見されて以降、様々な量子コンピュータのアルゴリズムが発見されています。例えば、ある程度の量子ビットが実現すれば、素因数分解離散対数問題を現実的な時間で解くアルゴリズムが発見されていて、これにより多くの公開鍵暗号を解読できることが分かっています。

また、数学的な興味から見ても、次のものは量子コンピュータが実現すれば高速に計算できるようです。

・合同ゼータ関数の決定、ガウス和の計算といった数論アルゴリズム
結び目不変量Persistent Homologyの計算といった幾何学アルゴリズム
線形回帰や、SVMといった機械学習アルゴリズム

このように興味深いアルゴリズムが発見されていますが、ITエンジニアの間では量子コンピュータの具体的な内容はあまり知られていないように感じます。
そこで、私自身が学びつつ、ITエンジニアをメインターゲットとして量子コンピュータを理解するための文章を書いていこうと考えました。それがこの文章です。

この文章は次のことを念頭においています。

・量子コンピュータ全般ではなく、量子アルゴリズムや量子回路の理解を主題にする
  →プログラマはやはり量子アルゴリズムに関する興味が強いのではないかと思います。少なくとも、私はそうです^^
・物理や数学を専門的に学んだ方でなく、ITエンジニアをターゲットにする
  →量子力学や高度な数学はあまり使わず、物理や数学の結果を前提として認めて進めます。また、厳密さより理解しやすさを優先します。ただし、言葉の意味が分かるように、定義すべきものは定義します。
具体的な例を示す
  →抽象的な計算ではなく、具体的な例で理解したいと思います。

題材としては、量子ゲート方式の量子アルゴリズムに絞って進めようと考えています。焦らず、少しずつ、理解を広げられるようにしたいと思います。
   
書きながら変わるとは思いますが、次のような構成を考えています。

目次

・はじめに →この文章です
第1回. 1量子ビットの世界
第2回. 1量子ビットの量子回路
・第3回. 2量子ビットの世界
・第4回. 2量子ビットの量子回路
・第5回. n量子ビットの世界
・第6回. n量子ビットの量子回路
・第7回~. 量子アルゴリズム(何度かに分けて説明します)
・第??回~. 量子プログラミング(何度かに分けて説明します)
付録. 数学に関する補足

この文章を通じて、現在のコンピュータとそれに関する事柄を「古典○○」と呼び、量子コンピュータとそれに関する事柄を「量子○○」と呼びます。例えば、「古典ビット」「量子ビット」等です。これは区別を付けるための単なる呼び名であり、「古典は古臭い」のような意味はありません。

また、次の点も明記しておきます。
・これは作成中のコンテンツです。特に断りなく更新します
・私自身、勉強中の身であるため、いたらない箇所・間違いもあるかと思います。見つけられた方はご連絡いただけると幸いです

参考文献

書きながら増えていくと思いますが、この文章を書くにあたって次の文献を参考にしました。先人の皆さんに大変感謝しています。

量子コンピュータ―超並列計算のからくり
竹内繁樹(2005)  
https://www.amazon.co.jp/dp/4062574691/
量子情報科学入門
石坂智、小川朋宏、河内亮周、木村元、林正人(2012)  
https://www.amazon.co.jp/dp/4320122992/
Quantum Algorithm Zoo
https://math.nist.gov/quantum/zoo/
Quantum Algorithm Zoo(日本語訳)
https://www.qmedia.jp/algorithm-zoo/

よろしければ、サポートお願いいたします! みなさんに、よりよい記事をお届けするために使わせて頂きます。