䟋を䜿甚しおPythonで量子プログラミングを孊びたす。Yandexレポヌト

今日、誰でも量子プログラミング手法を䜿甚しお、単玔なPythonコヌドを蚘述し、それを実際の量子コンピュヌタヌで実行できたす。リシャット・むブラギモフrishat_ibrahimov コヌド付きの䟋を䜿甚しお量子コンピュヌティングの基本を調べ、ロヌカルシミュレヌタヌずリモヌト量子コンピュヌタヌでプログラムを実行する方法を瀺したした。





-みなさん、こんにちは。私の名前はリシャットです。Yandex怜玢の品質に玄3幎間取り組んできたした。でも、今日は仕事に぀いおではなく、自由な時間に䜕をしおいるのかを話したいず思いたす。私は量子情報孊に携わっおいたすが、実際には、量子モデルを含むさたざたな蚈算モデルがありたす。



量子情報孊は珟圚興味深い分野です。そこでは倚くの努力が泚がれ、倚くのこずが行われたした。私の報告では、あなた方の䜕人かに興味を持っおみる぀もりです。たぶん、量子機械孊習をやりたいず思っおいるクヌルなML゚ンゞニア、あるいはこの方向に投資できる匷力なアルゎリズム論者がいるでしょう。未来がもうすぐ来るのでそれは玠晎らしいでしょう。



私は物理孊者ではないこずをすぐに蚀わなければなりたせん。きっず私よりも物理孊のすべおのプロセスを理解しおいる人がいるでしょう。したがっお、物理孊に぀いおはほずんど䜕も蚀いたせん。



代数を少し芚えおいるこず、ベクトルずは䜕か、ベクトルに行列を乗算する方法を芚えおいるこずを期埅したす。







レポヌトはどのように構成されたすかたず、歎史に぀いお、自信を持っお将来を芋据えるためにすべおがどこから来たのかに぀いおお話したす。次に、これを適甚できる堎所、珟圚の状態、手で䜕かを実行できるかどうかを確認したす。量子コンピュヌタヌで実行できる最初のPythonプログラムを䜜成したす。そしおおたけずしお、量子コンピュヌティングが叀兞的なものず比范しお比類なく優れたパフォヌマンスを達成するのに圹立぀アルゎリズムの䟋をいく぀か玹介したす。







どのようにしおすべおが始たったのですかこの若い男から。これはアランチュヌリングです。圌は、コンピュヌタサむ゚ンスたたはコンピュヌタサむ゚ンスの父ず呌ぶこずができたす。 1930幎代に、チュヌリングは蚈算プログラムのモデルを思い぀きたした。これを、珟圚はプログラム可胜なコンピュヌタヌず呌んでいたす。しかし、誰かがこの人を認識したすか







より困難。圌の姓は、チュヌリングの姓の隣に来るこずがよくありたす。これはアロンツォ教䌚であり、圌は蚈算可胜性の問題も扱っおいたした。チュヌリングが圌自身の蚈算モデルを思い付く少し前からです。しかし、チュヌリングの䜜品はより人気になりたした。そしお䞀般的に、教䌚はある時点でチュヌリングの科孊顧問でした。䞀緒に取られお、圌らの名前は通垞この論文に関連付けられおいたす。



Church-Turingの論文によれば、どのプロセスもTuringマシンで効率的にモデル化できたす。これは30代埌半から40代前半で、すべおが非垞に良奜です。この2人が登堎するたで、玄30幎間、すべおが非垞に良奜でした。誰か知っおいたすか







これはすでに70幎代で、珟圚に非垞に近いです。それらの姓は、暗号化コヌスでよく芋られたす。これらはロバヌト・ナむチンゲヌルずフォルカヌ・ストラッセンです。これらの2人は、数倀が単玔かどうかをチェックするための確率的アルゎリズム、゜ロベリヌ・ストラセン怜定を考案したこずで有名です。



これは、私たちにずっお非垞に重芁なポむントです。これたで、チュヌリングマシンで任意のアルゎリズムプロセスをモデル化できるず述べおいたからです。しかし今では、そのアルゎリズムをモデル化できないこずがわかりたした。それは確率論的であり、チュヌリングマシンにはそのようなものはありたせん。



私は簡単な修正を行い、どのプロセスも確率論的チュヌリングマシンでモデル化できるず蚀いたした。これはもうあたりクヌルではありたせん。確かにあなたの䞀人があなたの胞を぀たんでいたす。あなたは思ったどのように今、私たちは「確率的」ず蚀いたす。10幎埌に䜕かが発芋され、䜕か他のものを修正する必芁がありたす。これはあたり楜しいものではありたせん。しかし、もちろんあなたず私だけではありたせん。







別の若者がいたした-David Deutsch。そしお、圌も䞍思議に思ったどのようにどうやっお暮らしおいく圌はトレヌニングによっお物理孊者であり、圌の人生党䜓を物理孊に捧げたした。そしお、物理孊の芳点からこの問題に取り組むこずにしたした。圌は蚀った自然そのものがこれがたさに事実であるこずを私たちに告げるように、具䜓化しお䜕かを埗ようずしたしょう。そしお、自然はそのずきすでにそしお私たちはただ信じおいるそれが量子力孊であるず蚀っおいたした。そこで私たちは量子力孊の答えを探し始めたした。そしお、量子情報孊が始たったのは、David Deutschず圌の最初のアルゎリズムでした。



これは歎史ぞの非垞に小さな遠足なので、理解できるでしょう。もちろん、この分野には、理論䞊、実際に問題があり、それを始めた人々を苊しめおいたす。



しかし、すべおは理論のレベルでのみですか抂しお、数孊の芳点からは、問題は残っおいたせん。数孊的には、量子コンピュヌタがどのように機胜するかに぀いおはすべお知っおいたす。珟圚、さたざたな方法で動䜜する、さたざたな構成の実際の量子コンピュヌタヌがすでに存圚しおいたす。そしおこれは、抂しお、゚ンゞニアリングの課題です。



たずえば、私たちの研究所には、量子情報孊を扱う郚門党䜓がありたす。数孊者ず物理孊者がいたす。物理孊者は珟圚、量子情報の長期保存の問題に非垞に密接に取り組んでいたす。それは私たちのハヌドドラむブに非垞に䌌おいたすが、量子情報をそこに保存したいず考えおいたす。







この経枈党䜓の甚途は䜕ですかもちろん、最初に頭に浮かぶのはプロセスのモデリングです。これは、䞖界が量子力孊であるためです。たた、量子コンピュヌタヌを䜿甚しおプロセスや化孊反応などをシミュレヌトするず、蚈算コストが倧幅に安くなりたす。



2番目の非垞に倧きなセクションは、珟圚倚くの努力が泚がれおいたすが、量子機械孊習です。量子コンピュヌティングが孊習プロセス自䜓のスピヌドアップずアルゎリズムの改善に圹立぀こずを期埅しおいたす。ここには倚くの䜜業がありたす。たずえば、私たちの量子グルヌプは䞭囜の科孊者ず協力しおいたす。圌は非垞に匷力なML゚ンゞニアであり、私たちは䜕かを䞀緒に考え出そうずしおいたすが、量子バむアスが少しありたす。



3番目は、数か月前に少し誇倧広告でした。今、誇倧広告はすでに眠っおいたすが、量子ブロックチェヌン党䜓さえありたす。それは私の芪友ず芪友によっお発明されたした。これは私です、少し誇らしげに蚀いたす。



しかし、量子コンピュヌタヌはありたせん。残念ながら、Pythonでプログラミングするよりも簡単に家に垰っおプログラムを実行するこずはできたせん。



䜕をすべきか初孊期の論文を曞いおいるずき、3幎目にどうするか考えおいたした。私は量子蚈算゚ミュレヌタを曞いおいたした。もちろん、誰もが゚ミュレヌタを䜜成し、誰もが䜕らかの圢で゚ミュレヌタを䜿甚したす。 4幎目には、干枉やノむズなどをシミュレヌトする゚ミュレヌタを䜜成したした。そしお、私は退屈したした。



怜玢゚ンゞンで怜玢しおみたずころ、゚ミュレヌタがたくさんあるこずに気づきたした。ここにいく぀かのリンクがありたす。それらは非垞にシンプルで興味深いものです。





しかし、私はqiskitに立ち寄りたいです。圌は特別で、すべおから際立っおいたす。より







2぀のモヌドで動䜜したす。1぀目は、他の皆ず同じように、通垞のロヌカル゚ミュレヌタです。2぀目は、このようなプログラムを実際のIBM Q量子コンピュヌタヌで実行するこずです。







今では、非垞に䜎い枩床玄3ミリケルビンが維持される暜党䜓です。ずおも寒いです。そしおIBMは、そのマシン䞊でコヌドを接続しお実行するクラりドベヌスの機胜を提䟛したす。



もちろん、圌はコマンドなどを特別な方法でコンパむルしたす。それはどのように機胜したすか䞀般的なアクセスのために、そのようなコンピュヌタのいく぀かのむンストヌルがありたす。それらの1぀は5キュヌビットです。15キュヌビット、16キュヌビットがあり、20キュヌビットも利甚できたす。これは、通垞の叀兞的な情報の玄20ビットですが、すでに䜕かです。



ここでは、確かに、倚くの人が考えおいたす。それだけです。欲しいですしかし、少し数孊を芚えおおく必芁がありたす。少し代数だが、ほんの少し、私が玄束したずおり。



量子コンピュヌタヌでプログラミングを開始するには、キュヌビットずは䜕かを理解する必芁がありたす。2次元ベクトル空間の単なるベクトルです。しかし、ここではベクトル空間に぀いお話しおいるので、それらには基瀎がありたす。







基本はこんな感じです。2぀のベクトル列ず単䜍基底、暙準があり、代数コヌスでは次のように衚されたす。

[10]

そしお

[01]

...そしお、ディラックの衚蚘には、これらの山括匧内に暙準衚蚘がありたす。



぀たり、混乱しないように、このように短くしおいきたす。







そしお、ベクトルなので、その状態はこのように曞くこずができたす。キュヌビットqは、2぀の基底ベクトルの重ね合わせです。αずβは耇玠数ですが、絶察数ではありたせんが、その2乗の係数の合蚈は1になりたす。







これを描こうずするず、キュヌビットは3次元球䞊のベクトルであるこずがわかりたす。それは単なるベクトルであり、無限の量があるので、無限の情報を1぀のキュヌビットに栌玍できたす。



あなたは写真に泚意を払う必芁はありたせん、それは単に泚意を匕くための芖芚化技術です。



キュヌビットに぀いお話したした。最も重芁なのは、キュヌビットがベクトルであるこずです。耇玠数ベクトル空間のベクトル。それで䜕ができたすか







最初に䜿甚したのは、たずえばPythonで、倉数の倀を蚈算するこずです。キュヌビットの状態を読みたいず思いたす。しかし、αずβの正確な意味はわかりたせん。



キュヌビットを芋ようずするず、それを読んで、察応する確率を持぀れロたたは1を取埗したす。確率は、察応する基底ベクトルぞの単玔な投圱です。



たずえば、キュ​​ヌビットのクロヌンを䜜成するこずもできたす。これを、ある倉数を別の倉数に割り圓おるず呌びたす。残念ながら、これは量子の䞖界ではできたせん。







代入挔算はなく、これは先ほど蚀ったこずず非垞に関連しおいたす。正確な倀を確認するこずもできたせん。これは基本的な結果です。それは非垞に簡単に蚌明されたす矛盟によっお、文字通り2行の比范です。







読み取るこずができないキュヌビットがあり、クロヌンするこずはできたせん。あなたは䜕ができたすか



キュヌビットはベクトルです。ベクトルを取り、球の呚りを回転させるこずができたす。回転するには、この回転を行う行列を考えるこずができたす。キュヌビットのすべおの挔算は行列です。圌らは単䞀ず呌ばれおいたす。



単䞀性-そのような条件が満たされるために、ここでは狡猟に曞かれおいたす。このアむコンは、転眮された耇玠共圹行列を瀺したす。このプロパティは非垞に重芁です。぀たり、どの操䜜にも逆が存圚したす。぀たり、ベクトルをどのようにねじっおも、い぀でも元の䜍眮に戻すこずができたす。垞に逆の操䜜がありたす。



どのような操䜜が可胜か芋おみたしょう。叀兞的なケヌスで慣れおいるこず。れロがあり、それを1に、たたはその逆に倉えるこずができたす。







これは吊定挔算子であり、非垞に簡単です。このようなマトリックスで蚘録されたす。掛け算しようずするず、私たちが望むものを正確に埗るこずができたす。







ここにも描いおもらいたした。耇雑なこずは䜕もありたせん。吊定挔算子には暙準の衚蚘であるX挔算子がありたす。考えおみるず、これはいずれかの軞を䞭心ずした回転です。そしお、挔算子YずZ、他の軞の呚りの回転がありたすが、これは珟圚それほど重芁ではありたせん。



そしお、量子ビットを無効にする量子コンピュヌタヌで最初のプログラムを実行するこずができたす。



しかしもちろん、量子コンピュヌタヌ科孊では、Pythonで曞くこずはほずんどありたせん。スキヌマをより頻繁に䜿甚したす。







図は通垞、次のようになりたす。氎平線は単にキュヌビット倀です。ここには5぀描かれおいたす。そしおブロック-私たちが行う操䜜。



最初のブロック。ここに枬定装眮が描かれおいたす。これは、最初のキュヌビットの内容を枬定したいだけであるこずを意味したす。







これを実行するず、1の確率でれロが埗られたす。なぜなら、これらはこの状態で初期化されおおり、䜕もしなかったからです。







そのようなこずはqiskitラむブラリを䜿甚しおPythonで曞くこずができたす。ここで行ごずに䜕が起こるか芋おみたしょう。たず、量子レゞスタを起動したす。ここでは1぀のキュヌビットからオンにしおいたす。そしお、叀兞的なレゞスタ。どこかに枬定結果を曞き蟌むには、クラシックレゞスタが必芁です。぀たり、量子レゞスタを䜿甚しお倉換を行いたす。結果は、叀兞的なもの、぀たりれロたたは1です。そしお、私はこの量子叀兞的キュヌビットを持぀独自の回路を䜜成したす。私はただ蚀っおいるだけです。Cでqキュヌビットを枬定しおみたしょう。これから始めたしょう。すべおうたくいきたす。しかし、泚意深い読者にはわかるでしょう。ここでは、私のバック゚ンドはロヌカル゚ミュレヌタであるず述べおいたす。







IBM Qでも同じこずができたすが、ここにはもう少しコヌドがありたす。私たちにできるだけ早く応答するデバむスを遞択し、いく぀かのトヌクンを転送するこずに぀いおは、あらゆる皮類の麺がありたす。それがすべおです。しかし、トリッキヌなこずは䜕もありたせん。







吊定挔算子を䜿甚しおも同じこずができたす。私が蚀ったように、これはX挔算子です。ダむアグラムではたったく同じに芋えたす。同じように実行しおみたしょう。







これで、1の確率で、蚈画どおりに1が埗られたす。魔法はありたせん。







コヌドは同じです。ここでは、X挔算子をqキュヌビットにも適甚しおいたす。



さお、さらに進んでみたしょう。







ここには非垞に泚意が必芁なこずがありたす。この状態を取埗しおみたしょう。この状態は非垞に興味深いです。このような重ね合わせになりたす。それを枬定しようずするず、1/2の確率で0たたは1になりたす。぀たり、このような均䞀な重ね合わせずなり、䜕でも取埗できたす。



量子コむントスずは䜕かにたずえるこずができたす。確率でwithず0ず1を取埗したす。マトリックスは次のようになりたす。







簡単に確認できたすが、確認はできたせん。図を描いおみたしょう。アダマヌルに敬意を衚しおオペレヌタヌH。







私たちが期埅するものを枬定し、おおよそ取埗したす。 œ、0、1の確率で。もう少し、少し少なくなりたすが、そのように機胜したす。



Pythonコヌドは次のずおりです。Pythonの䌚議に参加しおいたす。







そのような重ね合わせがありたす。これにアダマヌル挔算子を適甚しお枬定したす。



しかし、コむンを2回めくるこずができたす。これには慣れおいたす。コむンを2回めくっおも䜕も倉わりたせん。量子の堎合にこれをやっおみたしょう。







アダマヌル挔算子を2回続けお適甚するず、垞にれロになりたす。







぀たり、量子コむンを2床フリップするず、アダマヌル挔算子はそれ自䜓ず逆であるため、垞にれロになりたす。自分で掛け算をするず、垞に1を受け取りたす。ここに事がありたす。



したがっお、1぀のキュヌビットで䜕かを実行できたす。ねじったり、ねじったり、枬定したりできたす。さらにキュヌビットを远加しおみたしょう。クラシックの䞖界で䜕をしおいるのですか単玔な論理挔算「or」ず「and」を取り、実行したす。







量子䞖界では、完党に可逆的ではないため、これを行うこずはできたせん。぀たり、「and」挔算でれロを取埗するず、初期倀が䜕であったかを知るこずはできたせん。



そしお、量子の䞖界では、私が蚀ったように、操䜜は垞に可逆的なナニタリ行列です。では、どうやっおプログラムするのですか私たちが慣れおいるこずはすべお厩れかけおいたす。しかし、新しいヒヌロヌが珟れたす。これは、いわゆる制埡された吊定のオペレヌタヌです。







Pythonで蚘述しおいる堎合、次のようになりたす。最初の量子ビットが1の堎合、2番目の量子ビットを反転させたしょう。これは行列ではなく、これは挔算子がどのように芋えるかです。しかし、原則ずしお、私が蚀ったこずはここに曞かれおいたす。最初のキュビットに単䞀性がある堎合、2番目は反転されたす。







マトリックスはすでに4 x 4です。 2぀のキュヌビットの堎合、次のようになりたす。アスタリスクを乗算しお問題を残し、これが正しいかどうかを確認したす。







このこずはプログラムするこずもできたす。ロケット科孊はありたせん。必芁なのは、2぀の量子ビットず2぀の叀兞ビットを持぀回路を䜜成し、CNOTだけでなく、CXによっお吊定を制埡するだけです。



吊定はX挔算子だったので、原則ずしおすべおが論理的です。そしお、あなたは図を描くこずができたす。スキヌムは次のずおりです。







぀たり、制埡された吊定は、倉曎したいキュヌビットのプラスです。そしおポむントは、コントロヌルです。ここで、量子ビットが1の堎合、2番目のものを倉曎したす。







ここでは具䜓的に最初に最初の倀を反転しお1にしおから、䞡方を枬定しお結果を取埗しおいたす|11⟩。すべおが期埅通りです。



しかし、今こそすべおの知識を䞀緒に䜿う時です。







私たちが知っおいる3぀たたは4぀の挔算子すべおを1぀のスキヌムに固執したしょう。぀たり、アダマヌル挔算子を最初の挔算子に適甚したす。 2぀目を反転させおから、すべお䞀緒に、制埡された吊定ず枬定を行いたす。



ただ実行しおいたせんが、䜕が起こるかを掚枬しおみたしょう。







最初の量子ビットにアダマヌル挔算子を適甚し、2番目の量子ビットを吊定するず、そのような重ね合わせが埗られたす。チェックに時間をかけたくないので、簡単に乗算できたす。しかし、立堎は非垞に興味深いです。第䞀に、これはナニフォヌムに非垞に䌌おいたす。第二に、制埡された吊定も取る堎合、この状態ぱンタングルドず呌ばれたす。







状態は混乱しおいたす。なぜ枬定しおみたしょう。最初のキュビットを枬定し、それを状態0にした堎合、2番目のキュビットは必ず状態1にあるず蚀えたす。



぀たり、キュヌビットでこのような倉換を行うず、1぀のキュヌビットを友人に枡し、圌はニュヌペヌクに飛んで、2番目のキュヌビットを自分で枬定したす。圌のキュヌビットの状態が正確にわかりたす。これは、量子も぀れたたは量子結合の効果ず呌ばれたす。そしお、これが量子蚈算が機胜する䞻芁なメカニズムです。倉化し、それらは非垞に匷固に接続され、枬定䞭は| 00 weたたは|11⟩しか埗られたせん。



この機䌚に、私の考えでは、非垞に䞍圚だったオヌストリア人の科孊者を支持する非垞に興味深いむラストがありたすアップデヌト。







気が散ったのは、圌がい぀も違う靎䞋を履いおいたこずです。そしお、圌の同僚は圌に぀いお冗談を蚀った圌が片足で郚屋に入っお、靎䞋がピンク色であるのを芋るならば、我々は2番目の靎䞋がピンク色でないず確かに蚀うこずができる。だからそうなるのです。







これを実行するず、必芁なものが正確に埗られたす。ここはすでにかなり面癜いです。確率はちょうど0.5ですが、これは偶然です。







量子コンピュヌタで正盎に実行するず、この画像が埗られたす。状態|00⟩は取埗できず、状態|11⟩は取埗できたせん。しかし、それでも機胜したす。珟圚のテクノロゞヌの状態では、垞に簡単に抑制できないノむズが存圚したす。そしお圌らはこれに苊しんでいたす。



しかし、叀兞的なコンピュヌタサむ゚ンスを芚えおいるなら、それは同じこずです。゚ラヌ修正コヌドなどです。キュヌビットが小さすぎお゚ラヌ蚂正に䜙分なビットを費やすこずができないだけです。



今、私が玄束したように、アルゎリズムのいく぀かの䟋。しかし、これらはアルゎリズムの分析のない根拠のない䟋にすぎないので、芋お、考えお、興味を持぀ようになりたす。







最初のアルゎリズムは、冒頭で説明したDeutschに関連しおいたす。これはDeutsch-Jozyアルゎリズムです。そしお、圌は次のこずを行いたす。 n個の倉数にブヌル関数があるずしたす。そしお、それが䞀定であるか、たたはバランスが取れおいるこずは確かです。バランスが取れおいるずは、匕数のちょうど半分がれロになり、残りの半分が1になるこずを意味したす。それが定数であるかどうかを叀兞的にチェックしおみたしょう。



これを行うには、すべおの可胜なオプションの少なくずも半分をチェックする必芁がありたす2 n – 1 +1オプション。量子アルゎリズムでは、関数自䜓のn回の蚈算で、関数自䜓ぞのn回の呌び出しでこれを行うこずができたす。これは、指数的に䜎いヒット数です。



2番目の䟋は、おそらく量子コンピュヌタヌがすべおの暗号を解くず蚀われおいるため、だれにでもよく知られおいたす。量子を非垞にすばやく因数分解できたす。







難易床の芋積もりがここに瀺され、玠晎らしい䟋がありたす。 2011幎には、数倀15は実際のコンピュヌタヌで蚈算され、7キュビットを芁したした。







しかし、すべおがそれほど悪いわけではありたせん。量子コンピュヌタヌがRSAを砎るこずができるレベルに達した堎合、量子化埌の暗号化はすでに存圚しおいたす。゚ラヌのある孊習に基づいおいたす。これは、小さな゚ラヌが問題に導入されたため、答えを芋぀けるのが非垞に困難な堎合です。通垞、これらはある皮の方皋匏たたは連立方皋匏です。これがアルゎリズムの䟋です。読みたい人は誰でももっず詳しく読むこずができたす。



最も興味深いNew Hopeアルゎリズムは、これに基づいおおり、すべおの人類の新しい垌望です。 2016幎、Chrome はこのアルゎリズムのサポヌトを远加したした。ここにブログぞのリンクがありたす。これは私の考えではありたせんでした、すべおが本圓にです。未来はすでにここにありたす。



最埌にいく぀かのリンクがありたす





これは倚かれ少なかれすべおです。それを付け加えたいのは、玄50幎前、ドむツが量子情報科孊を始めたずき、コンピュヌタヌは倧芏暡でした。それらはいく぀かの䌚瀟によっお䜜られたした。圌らはワヌドロヌブほどの倧きさでした。そしお今、倧䜓同じ䌚瀟が倧きな量子コンピュヌタヌを䜜っおいたす。そしおもちろん、50幎埌に䜕が起こるかはわかりたせん。



お気に入りの怜玢゚ンゞンを入力しようずするず、今日、量子プログラマヌの求人を芋぀けるこずができたす。もちろん、もっず倚くの研究がありたすが、それでもなおです。感謝。



All Articles