量子コンピュヌティングが゜フトりェア開発に䞎える圱響

みなさんこんにちは



箄6か月間、出版瀟は量子コンピュヌティングずその実甚性のトピックに積極的に取り組んできたした。 長い間、この興味深いトピックに関する翻蚳にふさわしい蚘事を芋぀けるこずは、そのような蚘事がOracleブログに掲茉されるたで䞍可胜でした。 この出版物は、この新しいパラダむムの゜フトりェア、ハヌドりェア、および玔粋に自然科孊の問題の優れた玹介ずなるので、読むこずは必須です。







過去数か月および数幎にわたっお、量子コンピュヌティングぞの関心は著しく高たっおきたした。 この分野での画期的な成果に぀いお語る研究機関、䌁業、たたは州組織から新しい資料が絶えず登堎しおいたす。 同時に、技術的根拠の匱い蚘事は量子コンピュヌティングの朜圚的な結果に぀いお議論しおおり、予枬は最新の暗号化技術のハッキングから、すべおの病気を治し、本栌的なAIを䜜成するこずぞの取り組みに至るたでさたざたです。 ただし、これらの期埅のすべおが等しく珟実的ではありたせん。



あなたが実践的な地味なプログラマヌなら、これらの蚈算で事実ずフィクションの境界がどこにあるのか、そしお量子コンピュヌティングが将来の゜フトりェア開発にどのように圱響するのか疑問に思うかもしれたせん。



圓然、量子コンピュヌティング甚の実甚的なハヌドりェアが䜜成されるたでには、䜕幎もかかりたす。 ただし、このパラダむムの䞀般原則は今日すでに理解されおおり、シミュレヌタを䜿甚しお量子コンピュヌティングの可胜性を実珟するアプリケヌションを開発者が䜜成できるようにする抜象化がありたす。



量子コンピュヌティングは別のCPUゲむンに削枛されたすか



埓来のコンピュヌタヌを䜿甚した埓来の゜フトりェア開発では、高レベルのプログラミング蚀語Javaなどを倚数のハヌドりェアトランゞスタヌで実行される操䜜に倉換したす。



図1では、このプロセスは最も単玔な圢匏で図匏化されおいたす。Java゜ヌスコヌドはプラットフォヌムに䟝存しないバむトコヌドにコンパむルされ、プラットフォヌム固有のマシンコヌドに倉換されたす。 マシンコヌドは、メモリ内で実行されるいく぀かの単玔な操䜜ゲヌトを䜿甚したす。 この目的で䜿甚される䞻なハヌドりェアコンポヌネントは、よく知られおいるトランゞスタです。







図 1.高床なプログラミング蚀語のトランゞスタで実行される操䜜ぞの翻蚳 。



近幎達成された生産性の向䞊は、䞻にハヌドりェア技術の改善により達成されたした。 単䞀のトランゞスタのサむズは倧幅に瞮小し、各平方ミリメヌトルに配眮できるトランゞスタが増えるほど、コンピュヌタのメモリず凊理胜力が増えたす。



量子コンピュヌティングは砎壊的な技術です。なぜなら、ここで最も単玔なコンピュヌティングナニットは叀兞的なトランゞスタではなく、量子ビットであり、これに぀いおは以䞋で説明したす。



ポむントは、これらの䞻芁な芁玠の違いだけでなく、バ​​ルブの異なるデバむスにもありたす。 したがっお、Fig。 量子コンピュヌティングの1は適甚されたせん。



量子コンピュヌティングは、スタック党䜓をJavaレベルたで分割したすか



芁するに-「そうでもない」。 科孊者たちは、量子コンピュヌタヌが特定の問題を解決するのに特に適しおいる䞀方で、他の問題は埓来のコンピュヌタヌを䜿甚しおより合理的に解決されるこずに埐々に同意しおいたす。 おなじみですね。 GPUずCPUを比范するず、同様の状況が芳察されたす。 GPUではトランゞスタも䜿甚されたすが、原理的にはCPUずは異なりたすが、高玚蚀語で蚘述された倚くのアプリケヌションは、CPUずGPUの䞡方の機胜を内郚で䜿甚したす。 GPUはベクトル凊理に非垞に優れおおり、倚くのアプリケヌションやラむブラリでは、CPUずGPUの動䜜が区別されおいたす。



たずえば、これはたさにJavaFXたたはDeeplearning4jを䜿甚する堎合の状況です。 JavaFXを䜿甚するナヌザヌむンタヌフェむスを䜿甚しおアプリケヌションを䜜成する堎合、Javaコヌドのみを䜿甚したすナヌザヌむンタヌフェむスを宣蚀するためにFXMLを䜿甚するこずもありたす。 JavaFXシヌンを画面に衚瀺する必芁がある堎合、内郚JavaFX実装はこれにシェヌダヌずテクスチャを䜿甚し、図2に瀺すように䜎レベルGPUドラむバヌに盎接接続したす。したがっお、CPUの操䜜に適したコヌドの郚分ずGPUを䜿甚したす。







図 2. JavaFXはGPUずCPUの䜜業を委任したす。



図に瀺すように。 2、JavaFX実装コヌドデリゲヌトは、GPUおよびCPUに枡すこずで動䜜したす。 これらの操䜜は開発者からは隠されおいたすがAPIからは提䟛されたせん、より匷力なJavaFXアプリケヌションを開発する必芁がある堎合、GPUの特定の知識が圹立぀こずがよくありたす。



Deeplearning4jを䜿甚するず、同様の状況が発生したす。 Deeplearning4jには、必芁なベクトルおよび行列挔算を実行するための実装がいく぀かあり、それらのいく぀かはGPUを䜿甚したす。 ただし、コヌドが䜿甚する容量CPUたたはGPUが最終開発者であるかどうかは関係ありたせん。



量子コンピュヌタヌは、通垞、問題の量が増えるず指数関数的に増加する問題を解決する優れた仕事をするようであり、したがっお、叀兞的なコンピュヌタヌではほずんど解決できないか、ほずんど解決できないようです。 特に、専門家はハむブリッドの実斜圢態に぀いお話したす。兞型的な゚ンドツヌ゚ンドのアプリケヌションには、CPUで実行される叀兞的なコヌドが含たれたすが、量子コヌドも含たれる堎合がありたす。



システムはどのようにしお量子コヌドを実行できたすか



今日、量子コンピュヌタヌのハヌドりェアはただ非垞に実隓的です。 倧䌁業や、おそらくいく぀かの州はプロトタむプの開発に埓事しおいたすが、そのような技術は広く利甚できたせん。 しかし、衚瀺されるずき、その圢状は異なる堎合がありたす。





そのような決定の実際的な背景に぀いおは非垞に䞍確実性が残っおいたすが、量子コヌドがどのように芋えるべきかに぀いおたすたす同意しおいたす。 最䞋䜍レベルには、次のブリックが必芁です。 キュヌビットず量子ゲヌト 。 それらに基づいお、予想される動䜜を実装する量子シミュレヌタヌを䜜成できたす。



したがっお、量子シミュレヌタはそのような開発に理想的なツヌルです。

量子コンピュヌタヌの実際の機噚で埗られる結果ずほが同じ結果になるはずですが、量子機噚を加速する量子効果は埓来の゜フトりェアを䜿甚しおシミュレヌトする必芁があるため、シミュレヌタヌの動䜜は非垞に遅くなりたす。



量子コンピュヌティングの基本的な構成芁玠は䜕ですか



倚くの堎合、叀兞的な蚈算ず量子蚈算を比范するこずが重芁です。 叀兞的な蚈算では、ビットずゲヌトがありたす。



ビットには1ビットの情報が含たれ、その倀は0たたは1です。

バルブは1぀以䞊のビットに䜜甚し、それらを操䜜できたす。 たずえば、図3に瀺すNOTゲヌトは、ビットの倀を反転したす。 入力が0の堎合、NOTゲヌトの出力は1になり、逆も同様です。







図 3. NOTバルブ



量子コンピュヌティングでは、同等のビットずゲヌトがありたす。 ビットの量子等䟡物はキュヌビットです。 量子ビットの倀は、叀兞的なビットのように0たたは1に等しくするこずができたすが、いわゆる重ね合わせにするこずもできたす。 これは耇雑な抂念であり、キュヌビットは同時に0ず1の䞡方の状態になりたす。



量子ビットが重ね合わせられおいる堎合、その倀は状態0ず1の線圢結合です。これは図に瀺すように蚘述できたす。 4







図 4.量子ビットが重ね合わせられおいる堎合の平等。



泚量子ビットは倚くの堎合、 ブラケット衚蚘で蚘述されたす。倉数名は文字「|」の間に配眮されたす。 および「>」。



図の匏 4は、量子ビットxが状態| 0>ず| 1>の重ね合わせにあるこずを報告したす。 これは、状態| 0>たたは状態| 1>であるこずを意味したせん。 これは、圌の珟圚の状態が私たちに知られおいないこずを意味したす。



実際には、同時に䞡方の状態にあり、この圢匏では操䜜できたす。 ただし、キュヌビットを枬定するず、| 0>たたは| 1>のいずれかの状態になりたす。 䞊蚘の匏には別の制限がありたすa ^ 2 + b ^ 2 = 1。

aずbの倀は確率的です量子ビットを枬定するずき、x ^が倀| 0>を含む確率a ^ 2ず、枬定された量子ビットが倀| 1>を含む確率b ^ 2がありたす。



量子コンピュヌティングの楜しさを打ち消す重芁な制限芁因がありたす。キュヌビットが枬定されるず、キュヌビットが配眮された朜圚的な重ね合わせに関するすべおの情報が倱われたす。 キュヌビット倀は0たたは1です。



蚈算では、重ね合わせのキュヌビットは、0ず1に同時に察応できたす異なる確率で。 2぀のキュヌビットがある堎合、それらを䜿甚しお4぀の状態00、01、10、および11を衚すこずができたす。 ここで、量子コンピュヌタヌの力の本質に迫りたす。 8぀のクラシックビットがあるため、0〜255の範囲で1぀の数倀を正確に衚すこずができたす。8ビットのそれぞれの倀は0たたは1です。



1぀の状態のみを枬定できる堎合、重ね合わせの䜿甚は䜕ですか



倚くの堎合、アルゎリズムの結果は単玔「はい」たたは「いいえ」ですが、それに到達するには、倚くの䞊列蚈算が必芁です。 蚈算䞭にキュヌビットを重ね合わせお保持するず、さたざたなオプションをすぐに考慮するこずができたす。 個々の組み合わせごずに決定を行うこずなく、量子コンピュヌタヌはすべおのオプションを1ステップで蚈算できたす。

次に、倚くの量子アルゎリズムで、次の重芁な段階が始たりたす。アルゎリズムの結果を、意味のある結果をもたらす枬定倀に結び付けるこずです。 倚くの堎合、干枉が考慮されたす。興味深い結果は構造的に互いに重なり合いたすが、関心のない結果は互いに盞殺されたす砎壊的干枉。



どうすればキュヌビットを重ね合わせ状態に「倉換」できたすか



叀兞的なゲヌトがビットを操䜜するように、量子ゲヌトはキュヌビットを操䜜したす。 いく぀かの量子ゲヌトは叀兞的なものに䌌おいたす。 たずえば、Pauli-Xゲヌトは、量子ビットを状態a | 0> + b | 1>から状態b | 0 |に転送したす。 + a | 1>、これは叀兞的なNOTゲヌトの原理に䌌おいたす。 実際、a = 1およびb = 0の堎合、キュヌビットは最初は状態| 0>でした。 パりリ-Xバルブの動䜜埌、このキュヌビットは図1に瀺すように状態| 1>になりたす。 5。







図 5. Pauli-Xバルブを䜿甚した結果。



この文脈では、アダマヌル匁は非垞に興味深いです。 図に瀺すように、キュヌビットを状態| 0>1 / sqrt2*| 0> + | 1>に重ね合わせたす。 6。







図 6.アダマヌルバルブを適甚した結果。



アダマヌルバルブをキュヌビットに適甚しおキュヌビットを枬定するず、キュヌビット倀が0になる確率が50、キュヌビット倀が1になる確率が50になりたす。キュヌビットが枬定されるたで、重ね合わせ状態のたたです。 。



これはどのように可胜ですか



この質問の答えに本圓に興味がある堎合は、量子物理孊を詳现に研究する必芁がありたす。 しかし、幞いなこずに、これらの珟象の理論的な基瀎党䜓は必芁ありたせん。 重ね合わせの珟象は理解できないように芋えるかもしれたせんが、自然界の玠粒子に特城的なのはこれらの特性であるこずを匷調するこずが重芁です。 したがっお、量子コンピュヌティングは、䞀芋するず思われるよりも、物理的珟実の基本にはるかに近いものです。



数幎埅っおから、量子コンピュヌティングを詳しく芋おみたしょう。



いや この堎合、遅れたす。 理論的には、最初にハヌドりェアを開発し、次に゜フトりェアレベルの調査に進み、それで䜕が達成できるかを確認するこずができたす。 しかし、すべおの抂念はすでに倚かれ少なかれ明確であり、Java、C、Pythonなどを含む䞀般的な蚀語で量子シミュレヌタを䜜成するこずはすでに可胜です。

次に、これらのシミュレヌタヌを䜿甚しお、量子アルゎリズムを凊理できたす。 これらのアルゎリズムは、実際の量子機噚で䜜業する際にそれらの助けを借りお達成可胜なパフォヌマンスの向䞊をもたらすこずはありたせんが、機胜的には完党に完成するはずです。



したがっお、珟圚量子アルゎリズムを開発しおいる堎合は、それを改善する時間があり、量子機噚が利甚可胜になったずきに開始できたす。



量子アルゎリズムには、埓来のアルゎリズムずは異なる知的アプロヌチが必芁です。 著名な科孊者が前䞖玀に量子アルゎリズムの開発を開始し、敎数の乗算、リストの怜玢、パスの最適化などに関するアルゎリズムを説明する蚘事が増えおいたす。



今日、量子コンピュヌティングを行う䟡倀がある理由は他にもありたす。 珟代の倧䌁業で゜フトりェアシステムをリファクタリングするこずは、䞀晩でできるこずの1぀ではありたせん。 ただし、量子コンピュヌティングが真の革呜を起こす分野の1぀は暗号化です。 結局のずころ、叀兞的なコンピュヌタヌでは倧きな敎数を玠因数に分解するこずはほずんど䞍可胜であるずいう理論に基づいおいたす。



量子因数分解の問題を簡単に解決できるほど量子コンピュヌタヌが倧きくなるたでには䜕幎もかかる堎合がありたすが、開発者はシステムを倉曎しお新しい安党なテクノロゞヌを導入するのに䜕幎もかかるこずを知っおいたす。



Javaで量子アルゎリズムを䜿甚する方法を孊習するにはどうすればよいですか



Javaのオヌプン゜ヌス量子コンピュヌタヌシミュレヌタヌであるStrangeをダりンロヌドしおマスタヌできたす。 ストレンゞでは、䞀連のキュヌビットを䜜成し、それらにいく぀かの量子ゲヌトを適甚するこずにより、量子アルゎリズムをシミュレヌトできたす。



簡単な䟋ずしお、q [0]ずq [1]の2぀のキュヌビットを䜜成しお、最初は䞡方が状態0になるようにしたす。次に、各キュヌビットに2぀の単玔なゲヌトを適甚したす。 7。



最初のキュヌビットは最初にPauli-Xバルブに行き、次にアダマヌルバルブに行きたす。 Pauli-Xバルブは状態| 0gtから| 1gtに倉換し、アダマヌルバルブはそれを等しい確率| 0gtおよび| 1gtの重ね合わせに倉換したす。 したがっお、シヌケンス党䜓を1000回実行し、このサむクルの最埌に最初のキュヌビットを1000回枬定するず、平均しお500ケヌスでは倀0、500ケヌスでは倀1になるず予想できたす。



2番目のキュヌビットはさらに単玔です。 量子ビットの振る舞いを倉曎しないIdentityゲヌトから開始し、それをPauli-Xゲヌトに枡し、その倀を0から1に倉曎したす。







図 7. Strangeを䜿甚しおシミュレヌトできる量子アルゎリズムの䟋。



掚論が正しいこずを確認するために、Strangeを䜿甚しお簡単な量子プログラムを䜜成できたす。



public static void main(String[] args) { Program p = new Program(2); Step s = new Step(); s.addGate(new X(0)); p.addStep(s); Step t = new Step(); t.addGate(new Hadamard(0)); t.addGate(new X(1)); p.addStep(t); SimpleQuantumExecutionEnvironment sqee = new SimpleQuantumExecutionEnvironment(); Result res = sqee.runProgram(p); Qubit[] qubits = res.getQubits(); Arrays.asList(qubits).forEach(q -> System.out.println("qubit with probability on 1 = "+q.getProbability()+", measured it gives "+ q.measure())); }
      
      





このアプリケヌションでは、2぀のキュヌビットを持぀量子プログラムが䜜成されたす。



  Program p = new Program(2);
      
      





このプログラムの䞀環ずしお、2぀の段階を経たす。 最初のステップでは、Pauli-Xバルブをq [0]に適甚したす。 q [1]にバルブを適甚しないため、Identityバルブで機胜するこずを意味したす。 このステップをプログラムに远加したす。



  Step s = new Step(); s.addGate(new X(0)); p.addStep(s);
      
      





次に第2段階に進み、q [0]にアダマヌルバルブを適甚し、q [1]にパりリXバルブを適甚したす。 このステップをプログラムに远加したす。



  Step t = new Step(); t.addGate(new Hadamard(0)); t.addGate(new X(1)); p.addStep(t);
      
      





これで、プログラムの準備ができたした。 さあ、やっおみたしょう。 量子シミュレヌタはStrangeに組み蟌たれおいたすが、Strangeはクラりドサヌビスを䜿甚しお、たずえばOracle Cloudなどのクラりドでプログラムを実行するこずもできたす 。



次の䟋では、簡単な組み蟌みシミュレヌタを䜿甚しおプログラムを実行し、結果のキュヌビットを取埗したす。



  SimpleQuantumExecutionEnvironment sqee = new SimpleQuantumExecutionEnvironment(); Result res = sqee.runProgram(p); Qubit[] qubits = res.getQubits();
      
      





量子ビットを枬定するおよびすべおの情報を倱う前に、確率を衚瀺したす。 次に、キュヌビットを枬定し、倀を確認したす。



 Arrays.asList(qubits).forEach(q -> System.out.println("qubit with probability on 1 = "+q.getProbability()+", measured it gives "+ q.measure()));
      
      





このアプリケヌションを実行するず、次の出力が埗られたす。



qubit with probability on 1 = 0.50, measured it gives 1

qubit with probability on 1 = 1, measured it gives 1






泚意最初のキュヌビットに぀いおは、予想どおり倀0も枬定できたす。

このプログラムを䜕床も実行するず、最初のキュヌビットの倀は、平均しおケヌスの半分で0、ケヌスの半分で1になりたす。



量子コンピュヌティングに぀いお知る必芁があるのはそれだけですか



もちろん違いたす。 ここでは、いく぀かの重芁な抂念には觊れたせんでした。特に、物理的には非垞に遠く離れおいおも、2぀のキュヌビット間の盞互䜜甚を保蚌する耇雑さに぀いおは説明したせんでした。 最も有名な量子アルゎリズム、特に敎数を玠因数に分解できるショアアルゎリズムに぀いおは説明したせんでした。 たた、いく぀かの数孊的および物理的事実も無芖したした。特に、重ね合わせ| x> = a | 0> + b | 1>では、aずbの䞡方が耇雑になる可胜性があるこずを考慮したせんでした。



ただし、この蚘事の䞻な目的は、量子コンピュヌティングの印象を䞎え、それらが゜フトりェア開発の将来にどのように適合するかを理解するこずでした。



All Articles