私は物理学以外のバックグラウンドから来ており、量子コンピューティング、特にそれらのプログラミング方法を追求することに非常に興味があります。開始方法に関するガイダンスは非常に役立ちます。
私は物理学以外のバックグラウンドから来ており、量子コンピューティング、特にそれらのプログラミング方法を追求することに非常に興味があります。開始方法に関するガイダンスは非常に役立ちます。
回答:
Voxxed Days Vienna 2018のような量子コンピューターの紹介から始めることができます-これはプログラミングのバックグラウンドを持っているが、量子力学の予備知識がほとんどまたはまったくない人を対象としています。その後、IBM Quantum ExperienceのガイドまたはMicrosoft Quantum Development Kitのガイドを確認できます。
それに加えて、たとえばYouTubeにはたくさんのビデオがあり、トピックをより深く理解するのに役立ちます。
量子プログラマーは必ずしも量子物理学と線形代数について知る必要はないと思います。これらは確かに量子プログラマーの知識を広げるのに役立つものですが、前提条件と見なされるべきではありません。
それでも、新進の量子プログラマーを支援するほとんどのリソースは、線形代数の仮定から始まります。IBMの量子デバイス用のSDKであるQISKitにほとんど焦点を当てていないもの(およびそれらのいくつかは私が作成しました)。
最も簡単なプログラムは、「Hello World」です。量子コンピューターの場合はどうしますか?私の提案は絵文字の重ね合わせです。
量子プログラミングで「Hello World」を超えたら、もっと複雑なことをしたいと思うでしょう。多くの場合、人々は簡単なゲームを作ります。それでは、量子コンピューターを使用してみましょう。戦艦を作りました。
QISKitチュートリアルで、量子プログラミングのこれらの例およびさらに多くの例を見つけることができます。おそらく、新しい量子プログラマーが何ができるのか、そしてどのようにそれを行うのかを見るのに最適な場所だと思います。
pyQuilは、Pythonのオープンソース量子プログラミングライブラリです。ドキュメントには、プログラミングで学習する量子コンピューティングの実践的な紹介が含まれています。物理学の背景を想定していません。
主なトピックへのリンクは次のとおりです。
QCの背後にある理論を理解するために、量子力学を完全に理解する必要はありません。私は数学の理学士/プログラマーであり、このトピックについて読んだり、古いedX QCコースを行ったりしました(残念ながら利用できませんが、他にもあります)。私はQCの要点を理解していると言えると思いますが、量子力学についてはほとんど何も知りません。
重要な部分は、量子コンピューティングが主に線形代数を使用することです。線形代数は、工学/コンピューターサイエンスの学部研究で一般的に教えられる数学に基づいています。これを、無限次元空間を使用する実際の量子力学(または、必要に応じて機能解析)と比較してください。
これらの学部の数学のトピックに慣れている場合は、SusskindのQuantum Mechanics:Theoretical Minimumを参照してください。実際には「実際の」量子力学についてではなく、QCに役立つものがほとんどです。ところで、理論最小本シリーズ全体は、数学を知っている人(コンピューター科学者や工学専攻など)を対象としており、物理学についてもっと知りたいと思っています。また、多くのオンラインコースもあります。たとえば、edXに新しいコースがありますが、私はそれらを何もしなかったので、お勧めできません。
量子コンピューターは、いわゆる量子回路(進化するプログラミング言語)によってプログラムされます。これらは、一連の量子ゲートと、それらが作用する量子ビット(qubit)に関する情報です。
量子ゲートについて本当に知っておく必要があるのは、回転を表すことです(より高次元の空間、いわゆるヒルベルト空間で)。したがって、リバーシブルです。量子コンピューターはリバーシブルロジックでプログラムされています。
通常のディラック表記の2キュービットシステムの場合)は、複素数を係数またはいわゆる確率振幅として取得します。基底ベクトルは直交しており、状態のヒルベルト空間にまたがっており、確率振幅はその座標として見ることができます。これは、量子ゲートが回転に影響する様子です。物理学者は、量子ゲートも回転を引き起こす単一のキュービットシステムに対して、多くの場合、別の画像(ブロッホ球)を使用することに気付くでしょう(ただし、場合によっては、より大きな角度またはその画像で完全に省略されています)。
すべての従来のロジックは、リバーシブルロジック(補助ビットが必要な場合があります)で最初に表現することにより、量子コンピューターによって実装できます。古典的なNOTゲートはX量子ゲートに対応しますが、1ビットの可逆ゲートのみがIDとNOTゲートである古典的な場合とは異なり、量子コンピューターには4つの対応するゲート(X、Y、Zブロッホ球、およびアイデンティティ)。さらに、これらのゲートが回転する距離のほんの一部だけ回転する回転を持つことができます。特に興味深いものには、すべての州の平等な重ね合わせを作成するアダマールゲートまたはHゲートなどの特別な名前と略語があります。
残念ながら、初期の量子ソフトウェアエンジニアはおそらく、使用する量子コンピューターハードウェアについて少し知っている必要があります。必然的にエラーが発生します(物理量子コンピューターにはそれ以上のエラーソースがあります)。それに対処する方法があります。量子エラー訂正は、エラーを離散化し、それらの最も可能性の高い離散化を修正して、(理想的には)バインドされたエラーを伴う複雑な計算を実現します。しかし、最適化とは、量子エラー訂正を1つ選択した1つの量子コンピューターが、特定の量子ゲートまたはアルゴリズムで他のコンピューターよりも適切であることを意味します。