ウィーンの中心で

    本社

    Löwengasse 14 / Lokal 2

    オーストリア ウィーン 1030

    フォローはこちら

    OpenQASM 構文の基本

    量子プログラムの書き方を学ぶうえで、OpenQASM の構文を理解することは極めて重要です。OpenQASM は QASM の基盤の上に構築され、C やアセンブリのような古典的な言語から着想を得ているため、量子コンピュータの動作を定義するための構造化された規則の体系を持っています。この章では、OpenQASM の基本的な構文規則の紹介に焦点を当てます。

    ステートメント:プログラムの構成要素

    OpenQASM において、ステートメント とは、実行される特定の動作を指示する命令です。プログラムは本質的にステートメントの集まりであり、各ステートメントはその終わりを示すためにセミコロン(;)で終わらなければなりません。

    ステートメントの整形

    読みやすさを高めるために、一連のステートメントを別々の行に書くことができます:

    statement1;
    statement2;
    statement3;
    

    または同じ行に書くこともできます:

    statement1; statement2; statement3; // Although valid, this is less readable
    

    コードの明確さを高めるために、前者の方法を使用することが推奨されます。

    実験:シンプルな OpenQASM プログラム

    これは複数の OpenQASM ステートメントを示す完全なプログラムであり、各ステートメントはそれぞれ異なる量子操作を実行します。12345678

    // PhotonQ Experiment: A Simple OpenQASM Program [^8]
    OPENQASM 2.0; // Specifies the OpenQASM version [^1]
    include "qelib1.inc"; // Includes the standard library [^2]
    
    // Declaration of quantum and classical registers
    qreg qubits[2];  // Defines a quantum register with two qubits [^3]
    creg ans[2];     // Defines a classical register with two bits [^4]
    
    // Quantum gate application
    h qubits[0];  // Applies a Hadamard gate to the first qubit [^5]
    x qubits[1];  // Applies a Pauli-X gate to the second qubit [^6]
    
    // Measure the qubit and save the result in the classical bit
    measure qubits[0] -> ans[0];   // Measurement command [^7]
    measure qubits[1] -> ans[1];   // Measurement command [^7]
    

    これらのステートメントが実行する動作については、後の章で詳しく説明します。

    空白文字
    では問題にならない

    OpenQASM は、スペース、タブ、改行などのすべての空白文字を重要でないものとして扱います。つまり、量子操作は書式の影響を受けません。

    空白文字の無視

    これらのコード例は、空白文字がプログラムのロジックを変えないことを示しています:

    qreg qubits[2]; h qubits[0]; // Compact but valid
    
    qreg qubits[2];              h qubits[0]; // Spread out, and still valid
    

    識別子
    における命名

    OpenQASM において、識別子 とは、変数、レジスタ、その他の実体に対してユーザーが定義する名前です。有効であるためには、いくつかの単純な規則に従わなければなりません:

    • 小文字で始まること。
    • 英数字とアンダースコア(_)のみを含むこと。
    • 予約語と一致しないこと。

    有効な例:qcq0q_q_0。 無効な例:QCQ0_Q0_q

    OpenQASM は大文字と小文字を区別することに留意してください。例えば、q_aq_A のような識別子は異なる実体を表します。

    このガイドを読み進めるにつれて、これらの構文の基礎は自然に身につき、やがて OpenQASM を駆使して複雑な量子アルゴリズムを表現できるようになるでしょう。

    Footnotes

    1. バージョン文字列のドキュメント

    2. include のドキュメント

    3. 量子レジスタのドキュメント

    4. 古典レジスタのドキュメント

    5. アダマールゲートのドキュメント

    6. Pauli-X ゲートのドキュメント

    7. 測定のドキュメント

    8. 実験:シンプルな OpenQASM プログラム

    Versions-String
    Include

    リンク

    GitHub

    Telegram

    Facebook

    Instagram

    運営者情報

    パートナー

    Kanbon

    Neurons

    Copyright © 2024 Netsnek, Florian Herbert Kleber IT & Werbeagentur Nico Schett. All rights reserved.