BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Q#を使用した量子コンピューティング体験を支援するMicrosoft Quantum Katas

Q#を使用した量子コンピューティング体験を支援するMicrosoft Quantum Katas

原文(投稿日:2018/08/09)へのリンク

Microsoftは、Code KatasのアイデアをベースにしたQuantum Katasという新たなプロジェクトをオープンソース公開した。Q#言語を使った量子コンピューティングへと、より多くの開発者が歩を進めるように支援することが目的だ。Quantum Katasは、学習者にフィードバックを即時に提供しながら、段階的に複雑になるプログラミング課題のセットだ。

現時点で4つの型(Kata)が提供されており、それぞれが量子コンピューティングの特定のトピックをカバーする。

  • シングルキュービットとマルチキュービットのゲートを使用した、基本的な量子コンピューティングゲートによる方法。
  • 重ね合わせで状態を表現する。重ね合わせ(superposition)は量子もつれ(entanglement)とともに量子システムの最も特徴的な性質のひとつで、特定のキュービットにおいて複数の論理状態が同時に存在することを可能にする。
  • 測定値を使用して、量子試験から古典的な情報を抽出する。測定ステップは、キュービットの重ね合わせを解消することによって、量子システムのコヒーレンスを破壊する可能性がある。
  • 古典的な関数とDeutsch-Jozsaアルゴリズムを実装する量子オラクルを記述する。量子アルゴリズムの初期の例のひとつは、決定論的なあらゆる古典的アルゴリズムよりも高速な指数関数である。

Kataは、複雑化するコーディングタスクのセットとして編成されている。各タスクは、テスト駆動プログラミングの方法論に従って、当初は失敗するユニットテストに関連付けられている。開発者は、Kataで提供されている資料や解答例を参照しながら、テストをパスするようにコードを埋める。

Code Katasに含まれる問題は、Microsoftは昨年7月に実施したQ#コーディングコンテストからのものだ。

次に示すのは、キュービットの状態を反転するという簡単なタスクの例と、それよりも少し複雑な、現在の状態に基づいてキュービットの状態を変更するものだ。

    //////////////////////////////////////////////////////////////////
    // Part I. Single-Qubit Gates
    //////////////////////////////////////////////////////////////////

    // Task 1.1. State flip: |0> to |1> and vice versa
    // Input: A qubit in state |ψ> = α |0> + β |1>.
    // Goal:  Change the state of the qubit to α |1> + β |0>.
    // Example: 
    //        If the qubit is in state |0>, change its state to |1>. 
    //        If the qubit is in state |1>, change its state to |0>. 
    // Note that this operation is self-adjoint: applying it for a second time 
    // returns the qubit to the original state.
    operation StateFlip (q : Qubit) : ()
    {
        body
        {
            // The Pauli X gate will change the |0> state to the |1> state and vice versa.
            // Type X(q);
            // Then rebuild the project and rerun the tests - T11_StateFlip_Test should now pass!
            
            // ...
        }
        adjoint self;
    }

    // Task 1.6*. Phase change
    // Inputs: 
    //     1) A qubit in state β|0> + γ|1>.
    //     2) Angle alpha, in radians, represented as Double
    // Goal:  Change the state of the qubit as follows:
    //        If the qubit is in state |0>, don't change its state.
    //        If the qubit is in state |1>, change its state to exp(i*alpha)|1>.
    //        If the qubit is in superposition, change its state according to the effect on basis vectors.
    operation PhaseChange (q : Qubit, alpha : Double) : ()
    {
        body
        {
            // ...
        }
        adjoint auto;
    }

Microsoft Quantum Katasを使用するには、Windows 10、macOS、Linux上で利用可能なQuantum Development Kitをインストールする必要がある。それぞれのKataは、Visual Stdioのソリューションと共に別々のディレクトリに配置されている。macOSとLinuxでは、.NET Core SDK 2.0以降をインストールした上で、Visual Studio Codeまたはコマンドラインを使ってKatasを実行することができる。

 
 

この記事を評価

採用ステージ
スタイル
 
 

この記事に星をつける

おすすめ度
スタイル

BT