MATLAB を使用した量子計算入門ガイド
MATLAB Support Package for Quantum Computing を使用すると、量子アルゴリズムを構築、シミュレーション、および実行することができます。
| 単一量子ビットゲート | |||
| 量子回路に単一量子ビットゲートを適用します。かっこ () 内の数値は、ゲートが適用される量子ビットのインデックスです。 | |||
| 量子回路オブジェクト | プロット | 行列 | |
|---|---|---|---|
| 構文 | >> qc=quantumCircuit (xGate(1)) |
|
>> getMatrix(qc) |
| 出力 |
|
|
|
| 単一量子ビットゲート | 説明 |
|---|---|
|
xGate = 量子ビット 1 に対する x 軸周りの π 回転 |
|
yGate = 量子ビット 1 に対する y 軸周りの π 回転 |
|
zGate = 量子ビット 1 に対する z 軸周りの π 回転 |
|
sGate = z 軸周りの π/2 正回転 |
|
tGate = z 軸周りの π/4 正回転 |
|
tiGate = z 軸周りの π/4 負回転 |
|
hGate = アダマールゲート |
|
idGate = 恒等ゲート (何もしない) |
回転ゲートは、2 つの引数をとる単一量子ビットゲートです。1 つ目は、ゲートが適用される量子ビットのインデックスで、2 つ目は回転角または位相 (θ、ラジアン単位) です。
パラメーター化された単一量子ビットゲート |
説明 |
|
rxGate = x 軸回転ゲート |
|
ryGate = y 軸回転ゲート |
|
rzGate = z 軸回転ゲート |
|
r1Gate = グローバル位相をもつ z 軸回転ゲート |
1 つのコントロール量子ビットをもつゲート
1 つのコントロール量子ビットをもつゲートを、量子回路に適用します。これらのゲートでは、2 つの引数がかっこ () に入っています。1 つ目はコントロール量子ビットで、2 つ目はターゲット量子ビットです。コントロール量子ビットが |0> の状態にあるとき、ゲートは何もしません。コントロール量子ビットが |1> の状態にあるとき、指定されたゲートはターゲット量子ビットに作用します。 >> cxGate(control,target)
量子ビットインデックス 1: コントロール量子ビット
量子ビットインデックス 2: ターゲット量子ビット
制御回転ゲートは、3 つの引数をとる 2 量子ビットゲートです。1 つ目はコントロール量子ビット、2 つ目はターゲット量子ビット、3 つ目は回転角または位相 (θ、ラジアン単位) です。
2 量子ビットゲート |
説明 |
|
cxGate or cnotGate = 量子ビット 1 が |1> の状態にあるとき、量子ビット 2 に対する x 軸周りの π 回転 |
|
cyGate = 量子ビット 1 が |1> の状態にあるとき、量子ビット 2 に対する y 軸周りの π 回転 |
|
czGate = 量子ビット 1 が |1> の状態にあるとき、量子ビット 2 に対する z 軸周りの π 回転 |
|
chGate = 制御アダマールゲート |
パラメーター化された 2 量子ビットゲート |
説明 |
|
crxGate = 制御 x 軸回転ゲート |
|
cryGate = 制御 y 軸回転ゲート |
|
crzGate = 制御 z 軸回転ゲート |
|
cr1Gate = グローバル位相をもつ制御 z 軸回転ゲート |
特殊なゲート
ゲート |
説明 |
compositeGate (qc, [1,2]) |
内部量子回路から複合ゲートを構築し、CompositeGate オブジェクトを返します。qc は、例に示す内部量子回路です。 |
|
制御された制御 X ゲート (CCNOT または Toffoli ゲート) |
mcxGate(1:3,4,5) |
多重制御 X ゲート 1 つ目の引数は 3 つのコントロール量子ビット (1,2,3)、2 つ目の引数は 1 つのターゲット量子ビット (4)、3 つ目の引数は 1 つの補助量子ビット (5) です。このゲートは、コントロール量子ビットの状態に基づいて単一のターゲット量子ビット上で動作します。補助量子ビットの数が、単純なゲートの数を決めます。 |
|
量子フーリエ変換 (QFT) ゲート |
以下のゲートでは、1 つ目と 2 つ目の引数が量子ビットのインデックス、3 つ目が位相 (θ) です (ただし、swapGate は 2 つの引数のみをとります)。以下のすべてのゲートについて、2 つのターゲット量子ビットを入れ替えても、ゲートの動作は変わりません。
ゲート |
説明 |
|
イジング XX カップリングゲート |
|
イジング YY カップリングゲート |
|
イジング ZZ カップリングゲート |
|
量子ビットの値を入れ替えます。 |
| 量子回路の操作 | ||
操作 |
例 |
出力 |
|
|
|
|
|
|
getMatrix = 量子回路またはゲートの行列表現 |
>> getMatrix(bell) |
|
generateQASM = QASM コードの生成 |
>> generateQASM(bell) |
|
simulate(circuit, inputState), 回路の初期量子状態を指定してシミュレーションを行い、QuantumState オブジェクトを返す |
>> simulate(bell) |
|
unpack = 量子回路内の複合ゲートを展開 |
|
|
シミュレーションされた量子回路の操作 |
||
操作 |
例 |
出力 |
量子ビット 1 (回路プロットの最上位量子ビット) を |1>、量子ビット 2 を |0> に設定した回路の量子状態を初期化 |
S=simulate(bell,"10") |
|
出力の基底状態とその振幅を示す |
|
|
各量子ビットを表す基底など、回路の最終状態を示す |
|
|
とりうる状態と、各状態を測定する確率を示す |
|
states = "00" P= |
| 任意の数のショットを使用して、回路の量子状態をランダムにサンプリング |
|
|
関数 |
説明 |
|
デバイス名、リージョン、結果を格納する S3 バケットパスを指定して、Amazon Braket デバイスに接続 |
|
デバイス名とアカウント認証情報を指定して IBM 量子デバイスに接続 |
|
デバイスに関する追加情報を取得 |
|
回路をデバイス上で実行するタスクを作成 |
|
タスクのステータスをチェック |
|
回路実行の結果を取得 |
|
>> plot(qftGate(1:3))
|
|
| >> サンプルを含む GitHub リポジトリ | ||