IBM 量子コンポーザー
概要
IBM Quantum® Composerは、ドラッグ&ドロップ操作で量子回路を構築し、量子ハードウェア上で動作させることができるグラフィカルな量子プログラミングツールです。
それは何ができるのか?
量子ビットの状態を可視化する
回路の変更が量子ビットの状態にどのような影響を与えるかを,インタラクティブなq-sphereや,測定確率を示すヒストグラム,あるいは状態ベクトルのシミュレーションで見ることができます.
量子ハードウェア上で動作
実際の量子ハードウェアで回路を実行し、デバイスノイズの影響を理解する。
コードの自動生成
手作業でコードを書く代わりに、コンポーザーで作成した回路と同じ動作をする OpenQASM または Python コードを自動的に生成します。
インターフェースのツアー
IBM Quantum Composerは、量子プロセッシング・ユニット(QPU)上で量子回路の構築、可視化、実行を可能にするカスタマイズ可能なツール群を持っている。 各ウィンドウの "More options"(その他のオプション)メニューを使用して、追加のツールやアクションにアクセスします。
-
オペレーションカタログ - 量子回路の構成要素です。 これらのゲートやその他の操作をグラフィカルな回路エディタにドラッグ・アンド・ドロップする。 異なるタイプのゲートが色別にまとめられている。 例えば、古典的ゲートは紺色、位相ゲートは水色、非ユニタリー演算は灰色である。
利用可能なゲートとオペレーションについて知るには、オペレーションを右クリックして「情報」を選択し、その定義を読む。
-
コードエディタ - 回路の OpenQASM またはQiskitコードを表示できるコードエディタを開いたり閉じたりするには、[表示]メニューを使用します。 OpenQASM。Qiskitのコードは読み取り専用です。
-
グラフィカル・サーキット・エディター - ここで回路を構築します。 量子レジスタを構成する水平の量子ビット「ワイヤ」にゲートやその他の操作をドラッグする。
ワイヤからゲートを削除するには、ゲートを選択し、ゴミ箱アイコンをクリックします。
編集をサポートしているゲートのパラメータと設定を編集するには、グラフィカル・エディター上でゲートを選択し、Editをクリックします。
-
ツールバー - 操作の取り消しややり直し、ゲートアライメントの変更、検査モードへの切り替えなど、頻繁に使用するツールにアクセスできます。 インスペクト・モードでは、回路計算が進むにつれて、量子ビットの状態がステップ・バイ・ステップで表示される。 詳しくは、 回路をステップ・バイ・ステップで点検するをご覧ください。
-
位相ディスク - 複素数平面上の量子ビット状態ベクトルの位相は、図の中心から灰色のディスク(中心点を中心に反時計回りに回転する)の端まで伸びる線によって与えられる。
表示] メニューを使用して、フェーズディスクを表示または非表示にします。
-
ビジュアライゼーション - ビジュアライゼーションは、回路を作りながら、その回路を特徴づける。 これらは、"Run circuit "設定で指定されたQPUとは異なる、シングルショットのステートベクトル・シミュレータを使用する。 ビジュアライゼーションは、あなたが追加した測定操作を無視することに注意してください。 サインインして Run circuitをクリックすると、指定したバックエンドから結果を得ることができます。
詳しくはビジュアライゼーションセクションをご覧ください。
量子回路の構築、編集、および検証
後で回路を操作し続けたい場合は、現在のComposerセッションを終了する前に、必ず回路ファイルをダウンロードし、ローカルに保存してください。 右上の "Save file "リンクを使うか、ファイルメニューから "Save file "を選ぶ。 回路を再び扱う準備ができたら、Fileメニューから "Upload.qasm file "を選択し、ローカルドライブにある回路ファイルに移動し、Openをクリックします。
1. IBM Quantum Composer を開く
- (オプション) IBM Quantumにサインインしていない場合は、右上の Sign inを選択します。 次に、サインインするか、 IBM Cloud アカウントを作成します。
サインインしていない場合は、最大4量子ビットのシミュレーション結果が自動的に表示されます。 量子コンピュータ上で回路を実行したい場合、または4量子ビット以上の回路を視覚化したい場合は、サインインする必要があります。
-
ラーニングページのナビゲーションにあるリンクをクリックして、 IBM Quantum Composer を開きます。 ワークスペースには無題の空の回路が表示される。 新しい回路を作成するか、.qasmファイルをアップロードして、すでに作成した回路で作業を続けることができます。
-
Untitled circuit(無題の回路)の文字をクリックし、回路の名前を入力します。 チェックマークをクリックして名前を保存します。
-
(オプション)ワークスペースをカスタマイズします:
- デフォルトのテーマからモノクロのテーマに変更するには、 「表示」 メニューを使用します。 また、ワークスペースに含めるパネルを選択し、パネルの右隅にあるメニューを使用して、さらにカスタマイズするためのオプションにアクセスすることもできます。 位相ディスクの表示/非表示、回路上の量子ビットのアライメントの選択、およびワークスペースをデフォルトにリセットするオプションは、同様にViewメニューにあります。
- フッターの右下隅で、ワークスペースのテーマをダークとライトに切り替える。
回路を構築するには、 操作をドラッグ・アンド・ドロップするか、 OpenQASM コードをコード・エディターに入力します。
2. ドラッグ&ドロップで回路を構築する
運用カタログ
オペレーションカタログから量子および古典レジスタにオペレーションをドラッグ&ドロップします。 検索アイコンをクリックし、検索バーに用語を入力すると、すぐに手術を見つけることができます。
オペレーションパネルの右上にあるアイコンをクリックして、オペレーションカタログを折りたたんだり展開したりします。 その横にあるアイコンをクリックすると、カタログのグリッド表示とリスト表示を切り替えることができます。
操作アイコンを右クリックして「情報」を選択すると、QASM参照とともに操作の定義が表示されます。
元に戻したりやり直したりするには、ツールバーのカーブした矢印を使います。
位置合わせ
回路上の任意の場所に操作を配置するには、フリーフォームアライメントを選択します。 回路をよりコンパクトに表示するには、左アライメントを選択します。 操作の実行順序を確認するには、レイヤーアライメントを選択する。レイヤーアライメントを選択すると、左揃えが適用され、左から右、上から下への実行順序を示す列の区切り線が追加される。
一度回路上に配置した操作は、ドラッグ&ドロップで新しい位置に移動させることができます。
コピーアンドペースト
操作をクリックし、コンテクストメニューのアイコンを使ってコピー&ペーストする。
複数の操作を選択
複数のオペレーションを選択してコピー&ペーストしたり、新しい場所にドラッグしたり、オペレーション・カタログに表示され、1つのゲートとして機能するカスタム・ユニット・オペレーションにグループ化することができます。
複数の操作を選択するには、カーソルを1つの操作のすぐ外側に置き、選択する範囲をクリックしてドラッグします。 Shiftキーを押しながら個々の操作をクリックすると、その操作を選択または選択解除できます。 破線は選択中の操作の輪郭を示し、実際に選択範囲に含まれる各操作は青で輪郭を示す。
例えば以下の画像では、 q1 のハダマードゲートとCXゲートが選択されている。 q0 のハダマードゲートは選択されていない。
コンテクストメニューからコピーを選択し、グループをコピーする。
操作グループを貼り付けるには、回路内で右クリックし、「貼り付け」を選択する。
グループ機能を使用してカスタム操作を構築する
複数の操作をグループ化してカスタム操作として保存するには、まず上記のように操作を選択し、コンテキストメニューからグループ化を選択します。 カスタム操作に名前を付けるか、デフォルトの名前を受け入れるかを尋ねられます。 OKをクリックすると、カスタム・オペレーションは、回路内でもオペレーション・カタログでも、1つのボックスで表されるようになる。
これで、新しい操作を回路全体にドラッグ&ドロップできるようになります。 操作はこの回路に保存されるが、他の回路の操作カタログには表示されないことに注意。
また、 OpenQASM コードエディターで直接カスタム操作を構築することもできます。詳しくは、 OpenQASM カスタム操作を作成するをご覧ください。
カスタムまたは事前定義された操作のグループ化を解除する
カスタムまたは事前定義されたオペレーション内のゲートのグループ化を解除するには、コンポーザー上でオペレーションをクリックし、コンテキストメニューから[Ungroup(グループ化解除)]を選択します。 これで、別々の作業を個別に動かすことができる。 操作のグループ化を解除すると、元のグループ内の各要素は独立して実行されるため、グループ化されていたときとは異なる順序で実行される可能性がある。
操作の定義を展開する
カスタム・オペレーションや定義済みオペレーションを構成するオペレーションをグループ化せずに表示するには、コンテキスト・メニューから「 Expand definition(定義の拡張) 」をクリックし、定義ゲートを表示します。 アイコンをもう一度クリックすると、定義が折りたたまれます。
カスタム操作の名前変更または削除
カスタム操作の名前を変更または削除するには、操作カタログで操作を右クリックし、[名前の変更]または[削除]を選択します。 オペレーション・カタログからカスタム・オペレーションを削除すると、回路上のそのインスタンスもすべて削除されます。
回路自体からカスタム・オペレーションを削除しても、オペレーション・カタログから削除されることはありません。カタログからカスタム・オペレーションを削除するには、右クリックして[削除]を選択します。
レジスタの追加または削除
量子レジスタや古典レジスタを追加または削除するには、Edit → Manage registersをクリックします。 回路内の量子ビットやビットの数を増減したり、レジスタの名前を変更したりすることができます。 Okをクリックして変更を適用する。 また、レジスタ名(例: q[0] )をクリックし、コンテキストメニューのオプションを使用して、レジスタや量子ビットを素早く追加または削除することもできます。
条件を追加する
ゲートに条件を追加するには、 if 操作をゲートにドラッグし、自動的に開く操作の編集パネルでパラメータを設定します。 また、ゲートをダブルクリックして操作パネルの編集にアクセスし、条件パラメーターを設定することもできる。
制御修飾子を追加する
制御修飾子は、元の動作が制御量子ビットの状態に依存するゲートを生成する。 詳細については、操作カタログでコントロール修飾記号を右クリックし、「情報」をクリックしてください。
コントロールモディファイアをゲートにドラッグすると、ゲートにコントロールが追加されます。 制御量子ビットに点が現れ、その点と標的量子ビットを線で結ぶ。 どの量子ビットをコントロールまたはターゲットにするかを編集するには、ゲートをクリックし、Edit operationアイコンを選択(またはゲートをダブルクリック)してEdit operationパネルを開き、パラメータを指定します。 Editオペレーションパネルから、qubit名の横にあるxをクリックすることで、qubitからコントロールを削除することもできます。
回路全体で位相ディスクを用いて可視化する
回路内の任意のポイントですべての量子ビットの状態を視覚化するには、オペレーションカタログからフェーズディスクアイコンをドラッグして回路内の任意の場所に配置します。 バリア演算の列と位相ディスクの列が追加される(1量子ビットにつき1つのバリア演算と位相ディスク)。 各フェーズディスクにカーソルを合わせると、回路内のそのポイントにおける量子ビットの状態を読み取ることができます。 位相ディスクを追加しても回路は変わらない。
位相ディスクの可視化についてさらに詳しく読む。
回路イメージをエクスポートする
回路の画像をエクスポートするには、File → Export circuit imageを選択します。 エクスポートオプションウィンドウが開き、テーマ(ライト、ダーク、黒地に白、白地に黒)、フォーマット(.svgまたは.png)、ラインラップを適用するかどうかを選択できます。 オプションを選択したら、エクスポートをクリックします。
3. OpenQASM のコードで回路を構築する
IBM Quantum Composer は現在、 OpenQASM 2.0 をサポートしている。
- コードエディターを開くには、表示 → パネル → コードエディターをクリックします。
- ゲートやその他の操作に関する OpenQASM 参照は、 コンポーザーの操作用語集を参照のこと。
- 独自のカスタム操作を定義できます。 OpenQASM のカスタム操作の作成を参照してください。
- コードのサンプル行を含む、 OpenQASM 言語の使用に関する詳細は、 OpenQASM 入門ガイドを参照するか、オリジナルの研究論文『 Open Quantum Assembly Language 』をお読みください。 この論文に掲載された OpenQASM 。 OpenQASM の文法は論文の付録 Aにある。
| 記述 | 説明 | 例 |
|---|---|---|
OPENQASM 2.0; | OpenQASM 形式のファイルを示す( [a] を参照) | OPENQASM 2.0; |
qreg [namesize]; | 量子ビットの名前付きレジスタの宣言 | QREG [Q5]; |
[クレッグ・ネームサイズ] | ビットの名前付きレジスタを宣言する | creg [c5]; |
ファイル名」を含む; | 別のソースファイルを開いて解析する | 含む “qelib1.inc”; |
ゲート名(params) qargs | ユニタリーゲートの宣言 | (論文本文参照) |
opaque name(params) qargs; | 不透明なゲートを宣言する | (論文本文参照) |
// コメント・テキスト | テキスト行をコメントする | // おっと! |
U(theta,phi,lambda) qubit|qreg; | 内蔵1量子ビットゲートを適用( [b] 参照 | U( pi/2,2*pi/3,0) [q] 0; |
CX qubit|qreg,qubit|qreg; | 内蔵CNOTゲートを適用 | CX q [0], [q] 1; |
qubit|qreg->bit|cregを測定する; | ベースで測定を行う | メジャー q -> c; |
リセット量子ビット|qreg; | の量子ビットを用意する。 | [q] 0をリセットする; |
gatename(params) qargs; | ユーザー定義のユニタリー・ゲートを適用する | crz( pi/2 ) [q1], [q0]; |
if(creg==int) qop; | 量子演算の条件付き適用 | if( c==5 ) CX [q0], [q1]; |
barrier qargs; | このソースラインをまたぐ変換を防ぐ | バリアq [0], [q] 1; |
[a] これは、ファイルのコメント行でない最初の行として表示されなければならない。
[b] パラメータtheta, phi, lambdaはパラメータ式で与えられる。詳細は論文5ページと 付録Aを参照。
OpenQASM でカスタム操作を作成する
コードエディターで新しいユニタリーオペレーションを定義することができる(例として下図を参照)。 操作は、組み込み操作と同様に、 name(params) qargs; 。 パラメータがない場合、括弧はオプションである。
カスタム・オペレーションを定義するには、 OpenQASM のコード・エディターに次の形式で入力します: gatename(params) qargs;. 操作リストで +Addをクリックすると、カスタム操作の名前を入力するプロンプトが表示されます。
カスタム・オペレーションを定義したら、グラフィカル・エディター上にドラッグし、編集アイコンを使ってパラメーターを微調整します。
カスタム操作の例 | |
|---|---|
| カスタム・オペレーションに含まれるゲート: | ![]() |
| 新しい操作のコード: | ![]() |
| グラフィカルエディターでの新しい操作: | ![]() |
4. 回路を段階的に点検する
インスペクト・モードでは、作成した回路の内部構造をミステリーから解き放ちます。 回路のシミュレーションを一度に1層ずつステップ実行するので、計算の進展に伴う量子ビットの状態を見ることができる。
-
View メニューで、使用するビジュアライゼーションのパネルを選択します。
-
ツールバーの Inspect トグルをクリックする。 インスペクト・モードを一度オンにすると、再びオフにするまで、それ以上操作を追加できないことに注意してください。
-
Freeformアライメントをオンにして回路を構築した場合、Inspectモードでは自動的にLeftアライメントがオンになることに注意してください。
-
回路のコンポーネントのビジュアライゼーションをステップ・バイ・ステップで進めるには、"進む "ボタンと "巻き戻す "ボタンを使用します。

-
一部の操作のみを検査するには、検査したい操作をクリックすると、その操作の上に色の付いたオーバーレイが表示され、Inspectモードで実行したときにその操作が含まれることを示します。 操作の選択を解除するには、もう一度クリックするとオーバーレイが消える。
-
ビジュアライゼーションの解釈の詳細については、 ビジュアライゼーションのトピックを参照してください。
-
Inspectモードを終了して回路の編集に戻るには、ツールバーのInspectトグルをクリックします。
シミュレーターは、 シードに基づいて結果を生成することで、ランダム性を作り出す。 シードは、擬似乱数を生成するアルゴリズムに導入される初期値である。 Editメニューから "Visualizations seed "を選択すれば、シード番号を見ることができる。 ボックス内の値を変更することで、自分でシードを設定することもできます。
回路を実行し、結果を表示する
QPUで量子回路を実行し、結果を表示するには、以下の手順に従ってください。
ジョブ設定を選択してください
右上の回路を実行をクリックします。 開いたウィンドウで、利用可能なQPUを選択します。 また、プラン(オープン、フレックス、プレミアムプランなど)に関連するインスタンスを選択することもできます。 選択したインスタンスは、利用可能なQPUに影響します。 QPUの表にある「詳細を見る」リンクをクリックすると、各QPUの詳細情報が表示されます。
次に、バックエンドが実行する回路のショット数(実行回数)を設定します。
このパネルでは、オプションでジョブに名前をつけたり、タグを追加したりすることもできる。 これはサーキットの名前を変更するものではない。 Composer "タグは、Composerジョブによってワークロード・テーブルを簡単にフィルタリングできます。 このタグは削除できる。
回路を実行すると、実行設定でQPUを指定しない限り、自動的に最もビジーでないQPUに送られる。 同じ回路を再度実行した場合、QPU選択ウィンドウのデフォルトは前回選択したものになります。
「(QPU名)で実行」をクリック
IBM Quantum PlatformのWorkloadsページが開きますので、右上の "View jobs "ボタンをクリックして、ジョブの進捗状況を確認することができます。
「結果の表示」
ジョブが完了すると、 IBM Quantum PlatformのWorkloadsテーブルに詳細が更新されます。
ジョブ結果ページには、ランの詳細、オリジナル回路とトランスパイルサーキットの図、結果のヒストグラム、オリジナル回路とトランスパイルサーキットの両方を OpenQASM または Qiskit で表示するための OpenQASM と Qiskit タブが表示されます。
各ダイアグラムの右上にあるメニューをクリックし、ダウンロードの形式(PNG、PDF、またはSVG。) OpenQASM、Composerで直接回路を開くことができます。
視覚化
IBM Quantum Composerのライブ・ビジュアライゼーションは、量子回路が量子ビットの集合体の状態にどのような影響を与えるかを、さまざまな角度から見ることができる。 ライブ・ビジュアライゼーションの各タイプについては、以下で詳しく説明します。
ライブ・ビジュアライゼーションは、シングルショットのステートベクトル・シミュレーターによるもので、複数ショットが可能なラン設定で指定されたQPUとは異なる。 シミュレーターは、 シードに基づいて結果を生成することで、ランダム性を作り出す。 シードは、擬似乱数を生成するアルゴリズムに導入される初期値である。 Editメニューから "Visualizations seed "を選択すれば、シード番号を見ることができる。 ボックス内の値を変更することで、自分でシードを設定することもできます。
可視化を表示する
ライブビジュアライゼーションは、Composerワークスペースの下部にあるウィンドウに表示されます(各クビットワイヤーの端に表示されるフェーズディスクを除く)。 ワークスペースの下部に表示される状態ベクトル、確率、q-sphereの可視化の組み合わせを自由に選択できる。 表示] メニューでビジュアライゼーションを選択または選択解除します。
可視化データをダウンロード
ビジュアライゼーション・ウィンドウの "More options" メニューをクリックして、Composer ワークスペースの下部にあるビジュアライゼーションのいずれかをダウンロードします。 ビジュアライゼーションは、SVG、PNG、または基礎データのCSVとしてダウンロードできます。 また、測定確率と状態ベクトルヒストグラムの可視化画像をPDFでダウンロードすることもできます。
位相ディスク
単一量子ビットの状態は次のように表すことができる
ここで、 は量子ビットが の状態にある確率、 は量子位相である。 は古典的な確率論的ビットに強く類似している。 の場合、qubitは の状態にあり、 の場合、qubitは の状態にあり、 の場合、qubitは50/50の混合状態にある。 古典的なビットとは異なり、この混合物は量子位相を持つことができるため、これを重ね合わせと呼ぶ。 この状態を視覚化したのがフェーズディスクである。
IBM 量子コンポーザーの各量子ビットの終端にある位相ディスクは、計算終了時の各量子ビットの局所状態を示す。 フェイズディスクの構成要素を以下に記す。
量子ビットが** 状態**にある確率
量子ビットが 状態にある確率は青い円盤の塗りつぶしで表されている。
量子位相
量子ビット状態の量子位相は、図の中心から灰色の円盤(中心点を中心に反時計回りに回転する)の端まで伸びる線によって与えられる。
例:2つの異なる量子ビットの位相ディスク
位相ディスクの可視化の2つの例。 最初の例は 、2番目は相対位相がゼロでない 。
ブロッホ球とのつながり
ブロッホ球のすべての情報を含む位相ディスクは、量子ビットの2次元表現である。 ブロッホ球表現に変換する: と 。
N量子ビット状態:最大15量子ビット
N量子ビットの量子状態は次のような形になる
ここで、 は、量子ビットが の状態にある確率で、 の状態に対する量子位相は です。 は、量子ビットが基底状態にない確率です。 。ここで、N量子ビットの量子状態には、 確率と 位相があることがわかります。 N量子ビットの位相ディスクは、 確率と 位相しか含まないため、位相ディスクはこの状態を表現できない。これは、ほとんどの状態がもつれ合い、独立した単一量子ビット量子状態に分離できないためである。 この可視化には完全な情報が含まれていないことを表現するために、位相ディスクの成分として純度の低下を導入する。
量子ビット状態の純度の低下
位相ディスク上の黒い円の半径は、量子ビット状態の相対純度を表しており、量子ビット が 量子ビット状態 にある場合、これは次式で与えられる。 。単一量子ビットの相対純度は の範囲にあり、値が1である場合は、その量子ビットが他のどの量子ビットとももつれ合っていないことを示す。 対照的に、 の純度が低下していることは、その量子ビットが完全混合状態に残されており、残りの の量子ビット、さらには環境に対してもある程度のエンタングルメントを有していることを示している。
確率ビュー
8量子ビット限界
このビューは、量子状態の確率を棒グラフとして視覚化する。 横軸は計算基底状態を示す。 縦軸は確率をパーセンテージで表している。 この見解では、量子の位相は表現されておらず、したがって不完全な表現である。 しかし、それぞれの量子ビットを測定し、その値をそれぞれの古典ビットに格納すれば、結果を予測するのに役立つ。
次のような量子回路とその確率の見方を考えてみよう:
この回路は2つの量子ビットを の状態に置く。計算基底状態は 、および である。各計算状態の確率は1/4である。
Q-sphereビュー
5量子ビット限界
q-sphereは、1つ以上の量子ビットのシステムの状態を、各計算基底状態を球面上の点に関連付けることで表現する。 各ポイントにノードが見える。 各ノードの半径はその基底状態の確率( )に比例し、ノードの色は量子位相( )を示す。
ノードは、すべてのゼロを含む基底状態(例えば、 )が北極に、すべての1を含む基底状態(例えば、 )が南極になるように、q-球面上に配置される。 ゼロ(または1)の数が同じ基底状態は、q-球の共有緯度上にある(例えば、 )。q-sphereの北極から始まり、南へ進むにつれて、各緯度にはより多くの1を持つ基底状態が存在する。基底状態の緯度は、ゼロ状態からのハミング距離によって決まる。 q-sphereは、コンパクトな表現で量子状態に関する完全な情報を含んでいる。
次の量子回路と、その回路が作り出す状態を表すq-sphereを考えてみよう:

q-sphereを選択し、押したままドラッグして回転させることができる。 q-sphereをデフォルトの向きに戻すには、q-sphereの右上にある巻き戻し矢印ボタンを選択する。
q-球は、たとえ単一量子ビットであっても、ブロッホ球と同じではないことを強調することが重要である。 実際、 位相ディスクのように、ブロッホ球は量子状態を局所的に見ることができる。 量子回路を適用した際に、量子ビットのレジスタ(多量子ビット状態)がどのように振る舞うかを理解しようとする場合、 全体的な視野に立ち、量子状態を全体的に見る方がより洞察的である。 q-sphereは量子状態を視覚的に表現するものであり、したがってこのグローバルな視点を提供する。 従って、少数の量子ビットで量子アプリケーションやアルゴリズムを探求する場合、q-sphereは主要な可視化手法となるはずだ。
状態ベクトル表示
6量子ビット限界
、量子振幅と呼ぶのが一般的である。 このビューは、量子振幅を棒グラフとして視覚化します。 横軸は計算基底状態を示す。 縦軸は、各計算基底状態に関連する振幅( )の大きさを示す。 各バーの色は量子位相( )を表す。
次の量子回路とその状態ベクトル図を考えてみよう:
回路は2つの量子ビットを の状態にする。計算基底状態は 、 、 、 。振幅の大きさは 、基底状態に対する量子位相は と は 、 は 。
コンポーザー操作用語集
このページでは、量子回路内の量子ビットを操作するために使用できる、さまざまな古典演算と量子演算を定義しています。 量子演算には、ハダマードゲートのような量子ゲートと、測定演算のような量子ゲートではない演算がある。
以下の各項目には、各オペレーションの詳細と OpenQASM。 詳しくは、 OpenQASM コードで回路を構築する のトピックを参照してください。
以下の各ゲートエントリーのq-球のイメージは、ゲートが最初の等しい重ね合わせ状態 、ゲートをサポートするために必要な量子ビットの数 。 この視覚化の詳細については、 q-sphere トピックを参照してください。
IBM Quantum Composerで使用するカスタム操作を定義できます。 手順については、「 OpenQASM でカスタム操作を作成する 」のトピックを参照してください。
明るいテーマと暗いテーマでは、ゲートの色が微妙に異なる。 ライトテーマの色はここに示されている。
以下の量子演算をクリックすると、その定義が表示されます。
古典的な門
NOTゲート
パウリXゲートとしても知られるNOTゲートは、 の状態を に反転させる。 NOTゲートは、角度 のRX、または'HZH'と等価である。
Composer リファレンス | OpenQASM 参照 | Q-sphere | q-圏表現に関する注意 |
|---|---|---|---|
![]() | x q[0]; | ![]() | q-sphere表現は、ゲートが最初の等しい重ね合わせ状態( )で動作した後の状態を示している。 はゲートをサポートするのに必要な量子ビットの数である。 |
CNOTゲート
CX(controlled-x)ゲートとしても知られるcontrolled-NOTゲートは、一対の量子ビットに作用し、一方が「コントロール」、もう一方が「ターゲット」として働く。 このゲートは、制御量子ビットが状態 にあるときは常に、ターゲットに対してNOTを実行する。制御量子ビットが重ね合わせ状態にある場合、このゲートはもつれを引き起こす。
すべてのユニタリー回路は、単一量子ビットゲートとCNOTゲートに分解できる。 2量子ビットのCNOTゲートは、1量子ビットのゲートよりも実際のハードウェア上で実行するのに多くの時間がかかるため、回路コストはCNOTゲートの数で測られることがある。
Composer リファレンス | OpenQASM 参照 | Q-sphere | q-圏表現に関する注意 |
|---|---|---|---|
cx q[0], q[1]; | ![]() | q-sphere表現は、ゲートが最初の等しい重ね合わせ状態( )で動作した後の状態を示している。 はゲートをサポートするのに必要な量子ビットの数である。 |
トッフォリ門
トフォリ・ゲートは、ダブル制御NOTゲート(CCX)としても知られ、2つの制御量子ビットと1つのターゲットを持つ。 両方のコントロールが の状態のときのみ、ターゲットに NOT を適用する。
ハダマードゲートを持つトフォリゲートは、量子コンピューティングのための普遍的なゲートセットである。
Composer リファレンス | OpenQASM 参照 | Q-sphere | q-圏表現に関する注意 |
|---|---|---|---|
![]() | ccx q[0], q[1], q[2]; | ![]() | q-sphere表現は、ゲートが最初の等しい重ね合わせ状態( )で動作した後の状態を示している。 はゲートをサポートするのに必要な量子ビットの数である。 |
スワップゲート
SWAPゲートは2つの量子ビットの状態を入れ替える。
Composer リファレンス | OpenQASM 参照 | Q-sphere | q-圏表現に関する注意 |
|---|---|---|---|
![]() | swap q[0], q[1]; | ![]() | q-sphere表現は、ゲートが最初の等しい重ね合わせ状態( )で動作した後の状態を示している。 はゲートをサポートするのに必要な量子ビットの数である。 |
アイデンティティ・ゲート
アイデンティティ・ゲート(IdまたはIゲートと呼ばれることもある)は、実際にはゲートの不在である。 これは、ゲートタイムの1単位時間、量子ビットに何も印加されないことを保証する。
Composer リファレンス | QASMリファレンス |
|---|---|
![]() | id q[0]; |
フェーズゲート
Tゲート
Tゲートは角度 のRZと等価である。フォールトトレラント量子コンピュータは、すべての量子プログラムをTゲートとその逆ゲート、およびクリフォードゲートだけにコンパイルする。
Composer リファレンス | OpenQASM 参照 | Q-sphere | q-圏表現に関する注意 |
|---|---|---|---|
t q[0]; | ![]() | q-sphere表現は、ゲートが最初の等しい重ね合わせ状態( )で動作した後の状態を示している。 はゲートをサポートするのに必要な量子ビットの数である。 |
Sゲート
Sゲートは、 の状態に の位相を適用する。 これは、角度 についてはRZと等価である。S=P( )であることに注意。
Composer リファレンス | OpenQASM 参照 | Q-sphere | q-圏表現に関する注意 |
|---|---|---|---|
s q[0]; | ![]() | q-sphere表現は、ゲートが最初の等しい重ね合わせ状態( )で動作した後の状態を示している。 はゲートをサポートするのに必要な量子ビットの数である。 |
Zゲート
パウリZゲートは、 状態のアイデンティティとして働き、 状態の符号を -1 乗算する。 そのため、 と の状態が反転する。 ベースでは、 / ベースのNOTゲートと同じ役割を果たす。
Composer リファレンス | OpenQASM 参照 | Q-sphere | q-圏表現に関する注意 |
|---|---|---|---|
z q[0]; | ![]() | q-sphere表現は、ゲートが最初の等しい重ね合わせ状態( )で動作した後の状態を示している。 はゲートをサポートするのに必要な量子ビットの数である。 |
ゲート
TdgまたはTダガーゲートとも呼ばれる。
Tゲートの逆。
Composer リファレンス | OpenQASM 参照 | Q-sphere | q-圏表現に関する注意 |
|---|---|---|---|
tdg q[0]; | ![]() | q-sphere表現は、ゲートが最初の等しい重ね合わせ状態( )で動作した後の状態を示している。 はゲートをサポートするのに必要な量子ビットの数である。 |
ゲート
SdgまたはSダガーゲートとも呼ばれる。
Sゲートの逆。
Composer リファレンス | OpenQASM 参照 | Q-sphere | q-圏表現に関する注意 |
|---|---|---|---|
sdg q[0]; | ![]() | q-sphere表現は、ゲートが最初の等しい重ね合わせ状態( )で動作した後の状態を示している。 はゲートをサポートするのに必要な量子ビットの数である。 |
フェーズゲート
位相ゲート(以前は U1 ゲートと呼ばれていた)は、 の位相を の状態に適用する。 のある値については、他のゲートと同等である。 例えば、P( )=Z、P( / )=S、P( )=T。 の大域的位相までは、RZ( )と等価である。
Composer リファレンス | OpenQASM 参照 | Q-sphere | q-圏表現に関する注意 |
|---|---|---|---|
p(theta) q[0]; | ![]() | q-sphere表現は、ゲートが最初の等しい重ね合わせ状態( )で動作した後の状態を示している。 はゲートをサポートするのに必要な量子ビットの数である。 |
IBM クォンタムコンポーザーでは、 theta のデフォルト値は です。
RZゲート
RZゲートは 。ブロッホ球上では、このゲートは量子ビットの状態をz軸の周りに与えられた角度だけ回転させることに対応します。
Composer リファレンス | OpenQASM 参照 | Q-sphere | q-圏表現に関する注意 |
|---|---|---|---|
![]() | rz(angle) q[0]; | ![]() | q-sphere表現は、ゲートが最初の等しい重ね合わせ状態( )で動作した後の状態を示している。 はゲートをサポートするのに必要な量子ビットの数である。 |
IBM Quantum Composer では、 angle のデフォルト値は です。したがって、これはq-sphereの可視化で使用される角度である。
非単一の演算子および修飾子
リセット操作
リセット操作は、操作前の状態に関係なく、量子ビットを状態 に戻す。 可逆的な操作ではない。
Composer リファレンス | OpenQASM 参照 |
|---|---|
reset q[0]; |
寸法
z基底または計算基底としても知られる標準基底での測定。 ゲートと組み合わせることで、あらゆる種類の測定に使用できる。 可逆的な操作ではない。
Composer リファレンス | OpenQASM 参照 |
|---|---|
measure q[0]; |
コントロール修飾子
制御修飾子は、元の動作が制御量子ビットの状態に依存するゲートを生成する。 制御が の状態にあるとき、ターゲット量子ビットは指定されたユニタリー進化を遂げる。 一方、コントロールが 状態の場合は、操作は行われない。 制御が重ね合わせ状態にある場合、結果として生じる動作は線形性から導かれる。
コントロールモディファイアをゲートにドラッグすると、ゲートにコントロールが追加されます。 ゲートの上下に、制御するターゲットとなり得る量子ビットワイヤー上に点が表示されます。1つ以上の点をクリックして、ターゲットを1つ以上の量子ビットに割り当てます。 ゲートを右クリックしてコントロールをアサインすることもできます。
コントロールを削除するには、ゲートを右クリックし、コントロールを削除するオプションを選択します。
Composer リファレンス | OpenQASM 参照 |
|---|---|
c |
バリアオペレーション
量子プログラムをより効率的にするために、コンパイラーはゲートを組み合わせようとする。 バリアは、このような組み合わせができないようにコンパイラに指示するものである。 さらに、ビジュアライゼーションにも役立つ。
Composer リファレンス | OpenQASM 参照 |
|---|---|
![]() | barrier q; |
ハダマールゲート
Hゲート
H(ハダマード)ゲートは、 と の状態を、それぞれ と に回転させる。 重ね合わせるのに便利です。 古典コンピュータ上のユニバーサル・ゲート・セットにハダマード・ゲートを加えれば、量子コンピュータ上のユニバーサル・ゲート・セットになる。
Composer リファレンス | OpenQASM 参照 | Q-sphere | q-圏表現に関する注意 |
|---|---|---|---|
h q[0]; | ![]() | q-sphere表現は、ゲートが最初の等しい重ね合わせ状態( )で動作した後の状態を示している。 はゲートをサポートするのに必要な量子ビットの数である。 |
量子ゲート
ゲート
平方根NOTゲートとしても知られている。
このゲートはXの平方根、 を実装している。このゲートを2回連続で適用すると、標準的なPauli-Xゲート(NOTゲート)になる。 ハダマードゲートと同様、 は、量子ビットが の状態にある場合、等しい重ね合わせ状態を作り出すが、相対的な位相は異なる。 ハードウエアによっては、 または X90 パルスで実装できるネイティブ・ゲートである。
Composer リファレンス | OpenQASM 参照 | Q-sphere | q-圏表現に関する注意 |
|---|---|---|---|
![]() | sx q[0]; | ![]() | q-sphere表現は、ゲートが最初の等しい重ね合わせ状態( )で動作した後の状態を示している。 はゲートをサポートするのに必要な量子ビットの数である。 |
ゲート
SXdgまたはスクエアルートNOTダガーゲートとしても知られている。
これは、 ゲートの逆バージョンである。 NOTゲートはそれ自身の逆ゲートであるため、これを2回連続で適用すると、パウリ-Xゲート(NOTゲート)が生成される。 ゲートと同様に、このゲートを使って等しい重ね合わせ状態を作ることができ、 X90 パルスを使っていくつかのハードウエアにネイティブに実装されている。
Composer リファレンス | OpenQASM 参照 | Q-sphere | q-圏表現に関する注意 |
|---|---|---|---|
![]() | sxdg q[0]; | ![]() | q-sphere表現は、ゲートが最初の等しい重ね合わせ状態( )で動作した後の状態を示している。 はゲートをサポートするのに必要な量子ビットの数である。 |
Yゲート
パウリYゲートは、角度 に対するRyと等価である。これはXとZをグローバルな位相係数まで適用することと等価である。
Composer リファレンス | OpenQASM 参照 | Q-sphere | q-圏表現に関する注意 |
|---|---|---|---|
y q[0]; | ![]() | q-sphere表現は、ゲートが最初の等しい重ね合わせ状態( )で動作した後の状態を示している。 はゲートをサポートするのに必要な量子ビットの数である。 |
RXゲート
RXゲートは 。ブロッホ球上では、このゲートは量子ビットの状態をx軸の周りに与えられた角度だけ回転させることに対応します。
Composer リファレンス | OpenQASM 参照 | Q-sphere | q-圏表現に関する注意 |
|---|---|---|---|
rx(angle) q[0]; | ![]() | q-sphere表現は、ゲートが最初の等しい重ね合わせ状態( )で動作した後の状態を示している。 はゲートをサポートするのに必要な量子ビットの数である。 |
IBM Quantum Composer では、 angle のデフォルト値は です。したがって、これはq-sphereの可視化で使用される角度である。
RYゲート
RYゲートは 。ブロッホ球において、このゲートは量子ビットの状態をy軸の周りに与えられた角度だけ回転させることに対応し、複素振幅を導入しません。
Composer リファレンス | OpenQASM 参照 | Q-sphere | q-圏表現に関する注意 |
|---|---|---|---|
ry(angle) q[0]; | ![]() | q-sphere表現は、ゲートが最初の等しい重ね合わせ状態( )で動作した後の状態を示している。 はゲートをサポートするのに必要な量子ビットの数である。 |
IBM Quantum Composer では、 angle のデフォルト値は です。したがって、これは以下のq-sphereの可視化で使われる角度である。
RXXゲート
RXX ゲートは を実装している。イオントラップ・システムのネイティブ・ゲートであるMølmer-Sørensenゲートは、RXXゲートの和として表すことができます。
Composer リファレンス | OpenQASM 参照 | Q-sphere | q-圏表現に関する注意 |
|---|---|---|---|
rxx(angle) q[0], q[1]; | ![]() | q-sphere表現は、ゲートが最初の等しい重ね合わせ状態( )で動作した後の状態を示している。 はゲートをサポートするのに必要な量子ビットの数である。 |
IBM クォンタムコンポーザーでは、 angle のデフォルト値は です。
RZZゲート
RZZゲートは、ラジアン単位で表される角度という1つのパラメーターを必要とする。 このゲートは対称的で、作用する2つの量子ビットを入れ替えても何も変わらない。
Composer リファレンス | OpenQASM 参照 | Q-sphere | q-圏表現に関する注意 |
|---|---|---|---|
rzz(angle) q[0], q[1]; | ![]() | q-sphere表現は、ゲートが最初の等しい重ね合わせ状態( )で動作した後の状態を示している。 はゲートをサポートするのに必要な量子ビットの数である。 |
IBM クォンタムコンポーザーでは、 angle のデフォルト値は です。
Uゲート
(以前は U3 ゲートと呼ばれていた) 3つのパラメータにより、任意の単一量子ビットゲートを構築することができる。 持続時間はゲート時間の1単位。
Composer リファレンス | OpenQASM 参照 | Q-sphere | q-圏表現に関する注意 |
|---|---|---|---|
u(theta, phi, lam) q[0]; | ![]() | q-sphere表現は、ゲートが最初の等しい重ね合わせ状態( )で動作した後の状態を示している。 はゲートをサポートするのに必要な量子ビットの数である。 |
IBM クォンタムコンポーザーでは、 angle のデフォルト値は です。
RCCXゲート
簡略化されたトッフォリ門は、マルゴルス門とも呼ばれる。
簡易トフォリゲートは、相対位相までのトフォリゲートを実装している。 この実装では、次のように3つのCXゲートが必要である。 https://arxiv.org/abs/quant-ph/0312225. 簡略トフォリはトフォリと等価ではないが、トフォリ・ゲートが再び計算されない場所で使用できることに注意。
Composer リファレンス | OpenQASM 参照 | Q-sphere | q-圏表現に関する注意 |
|---|---|---|---|
![]() | rccx a, b, c; | ![]() | q-sphere表現は、ゲートが最初の等しい重ね合わせ状態( )で動作した後の状態を示している。 はゲートをサポートするのに必要な量子ビットの数である。 |
RC3X ゲート
簡略化された3制御トフォリゲート。
簡易トフォリゲートは、相対位相までのトフォリゲートを実装している。 簡略トフォリはトフォリと等価ではないが、トフォリ・ゲートが再び計算されない場所で使用できることに注意。
Composer リファレンス | OpenQASM 参照 | Q-sphere | q-圏表現に関する注意 |
|---|---|---|---|
![]() | rc3x a, b, c, d; | ![]() | q-sphere表現は、ゲートが最初の等しい重ね合わせ状態( )で動作した後の状態を示している。 はゲートをサポートするのに必要な量子ビットの数である。 |


































