非物理専攻向けの量子コンピューターのプログラミング


43

私は物理学以外のバックグラウンドから来ており、量子コンピューティング、特にそれらのプログラミング方法を追求することに非常に興味があります。開始方法に関するガイダンスは非常に役立ちます。


古典的なプログラマーは、電子の働きを理解する必要はありません。これはQEDにも当てはまります。
tgm1024

ちなみに、ここでのフォーマットメカニズムは、他のスタック交換サイトと比較してひどく壊れているようです。私は本当の答えを作成しようとして、あきらめなければならなかったので、非常に簡単なコメントに頼りました。ここのリストは引用符内では動作しません。すべてのstackexchangeサイトが同じUIコードを共有すると思っていました。
tgm1024

@ tgm1024正確に何を指しているのですか?ここでは機能しないが、他のサイトでは機能するフォーマットは何ですか?引用符内のリストは、私にとって完全にうまく機能します
glS

回答:


22

Voxxed Days Vienna 2018のような量子コンピューターの紹介から始めることができます-これはプログラミングのバックグラウンドを持っているが、量子力学の予備知識がほとんどまたはまったくない人を対象としています。その後、IBM Quantum ExperienceのガイドまたはMicrosoft Quantum Development Kitのガイドを確認できます。

それに加えて、たとえばYouTubeにはたくさんのビデオがあり、トピックをより深く理解するのに役立ちます。


17

量子プログラマーは必ずしも量子物理学と線形代数について知る必要はないと思います。これらは確かに量子プログラマーの知識を広げるのに役立つものですが、前提条件と見なされるべきではありません。

それでも、新進の量子プログラマーを支援するほとんどのリソースは、線形代数の仮定から始まります。IBMの量子デバイス用のSDKであるQISKitにほとんど焦点を当てていないもの(およびそれらのいくつかは私が作成しました)。

最も簡単なプログラムは、「Hello World」です。量子コンピューターの場合はどうしますか?私の提案は絵文字の重ね合わせです

量子プログラミングで「Hello World」を超えたら、もっと複雑なことをしたいと思うでしょう。多くの場合、人々は簡単なゲームを作ります。それでは、量子コンピューターを使用してみましょう。戦艦を作りました。

QISKitチュートリアルで、量子プログラミングのこれらの例およびさらに多くの例を見つけることができます。おそらく、新しい量子プログラマーが何ができるのか、そしてどのようにそれを行うのかを見るのに最適な場所だと思います。


5

pyQuilは、Pythonのオープンソース量子プログラミングライブラリです。ドキュメントには、プログラミングで学習する量子コンピューティングの実践的な紹介が含まれています。物理学の背景を想定していません。

主なトピックへのリンクは次のとおりです。


5

QCの背後にある理論を理解するために、量子力学を完全に理解する必要はありません。私は数学の理学士/プログラマーであり、このトピックについて読んだり、古いedX QCコースを行ったりしました(残念ながら利用できませんが、他にもあります)。私はQCの要点を理解していると言えると思いますが、量子力学についてはほとんど何も知りません。

重要な部分は、量子コンピューティングが主に線形代数を使用することです。線形代数は、工学/コンピューターサイエンスの学部研究で一般的に教えられる数学に基づいています。これを、無限次元空間を使用する実際の量子力学(または、必要に応じて機能解析)と比較してください。

これらの学部の数学のトピックに慣れている場合は、SusskindのQuantum Mechanics:Theoretical Minimumを参照してください。実際には「実際の」量子力学についてではなく、QCに役立つものがほとんどです。ところで、理論最小本シリーズ全体は、数学を知っている人(コンピューター科学者や工学専攻など)を対象としており、物理学についてもっと知りたいと思っています。また、多くのオンラインコースもあります。たとえば、edXに新しいコースがありますが、私はそれらを何もしなかったので、お勧めできません。


4

Q#pyQuilQISKitなどのさまざまな量子プログラミングフレームワークで量子回路を作成する方法を学びたい場合は、ロスアラモス国立研究所の初心者向けのQuantum Algorithm Implementationsというタイトルのこの論文を強くお勧めします。IBM Q Experienceを使用して、さまざまな量子アルゴリズム、およびそれらのオラクルと特定のサブルーチンを量子回路としてコンパイルおよび実装する方法を理解するための優れたリソースです。前述のプログラミングフレームワークのいずれかでそれらを実装し、進むにつれて核心の詳細を学ぶことをお勧めします。


4

量子コンピューターは、いわゆる量子回路(進化するプログラミング言語)によってプログラムされます。これらは、一連の量子ゲートと、それらが作用する量子ビット(qubit)に関する情報です。

量子ゲートについて本当に知っておく必要があるのは、回転を表すことです(より高次元の空間、いわゆるヒルベルト空間で)。したがって、リバーシブルです。量子コンピューターはリバーシブルロジックでプログラムされています。

|00|01|10|11通常のディラック表記の2キュービットシステムの場合)は、複素数を係数またはいわゆる確率振幅として取得します。基底ベクトルは直交しており、状態のヒルベルト空間にまたがっており、確率振幅はその座標として見ることができます。これは、量子ゲートが回転に影響する様子です。物理学者は、量子ゲートも回転を引き起こす単一のキュービットシステムに対して、多くの場合、別の画像(ブロッホ球)を使用することに気付くでしょう(ただし、場合によっては、より大きな角度またはその画像で完全に省略されています)。

すべての従来のロジックは、リバーシブルロジック(補助ビットが必要な場合があります)で最初に表現することにより、量子コンピューターによって実装できます。古典的なNOTゲートはX量子ゲートに対応しますが、1ビットの可逆ゲートのみがIDとNOTゲートである古典的な場合とは異なり、量子コンピューターには4つの対応するゲート(X、Y、Zブロッホ球、およびアイデンティティ)。さらに、これらのゲートが回転する距離のほんの一部だけ回転する回転を持つことができます。特に興味深いものには、すべての州の平等な重ね合わせを作成するアダマールゲートまたはHゲートなどの特別な名前と略語があります。

残念ながら、初期の量子ソフトウェアエンジニアはおそらく、使用する量子コンピューターハードウェアについて少し知っている必要があります。必然的にエラーが発生します(物理量子コンピューターにはそれ以上のエラーソースがあります)。それに対処する方法があります。量子エラー訂正は、エラーを離散化し、それらの最も可能性の高い離散化を修正して、(理想的には)バインドされたエラーを伴う複雑な計算を実現します。しかし、最適化とは、量子エラー訂正を1つ選択した1つの量子コンピューターが、特定の量子ゲートまたはアルゴリズムで他のコンピューターよりも適切であることを意味します。


量子アルゴリズムを簡単に書く方法を理解できるのは、自己進化した量子AIだけなのかと疑問に思っている人はいますか?
tgm1024
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.