実験できる実用的なコードを提供するだけでなく、本テキストブックは特定の概念を説明するのに役立つ多くのウィジェットも提供します。 ここでは、それらをインデックスとして提供しています。 各セルを実行してウィジェットを操作します。
注意: コードセルの左下隅にある 「Try」 を押すか、IBM Quantum Experience でこのページを表示して、対話機能を有効にする必要があります。
インタラクティブコード
本テキストブックの最も重要なインタラクティブ要素は、コードを変更して実験する機能です。 これは本テキストブックのWebページで直接可能ですが、Jupyterノートブックとして表示して、セルを追加したり、変更を保存したりすることもできます。 インタラクティブなPythonコードでは、ipywidgets を介したウィジェットも使用できます。以降、Qiskit テキストブックが提供するウィジェットの一部を紹介します。
#「try」をクリックしてから「run」をクリックして出力を確認します
print("This is code works!")
ゲートデモ
このウィジェットは、Q-sphereを通して示される、量子ビットに対するいくつかのゲートの効果を示しています。 単一量子ビットゲートで多く使用されています。
from qiskit_textbook.widgets import gate_demo
gate_demo()
バイナリデモンストレーション
このシンプルなウィジェットを使用すると、2進数を操作できます。 原子の計算にあります。
from qiskit_textbook.widgets import binary_widget
binary_widget(nbits=5)
スケーラブルな回路ウィジェット
量子フーリエ変換の章 のような回路を使用する場合、さまざまな量子ビットの数にどのようにスケーリングするかを確認すると便利なことがよくあります。 関数が回路(QuantumCircuit)といくつかの量子ビット(int)を入力として受け取る場合、以下のウィジェットを使用してどのようにスケーリングするかを確認できます。
from qiskit_textbook.widgets import scalable_circuit
from numpy import pi
def qft_rotations(circuit, n):
"""Performs qft on the first n qubits in circuit (without swaps)"""
if n == 0:
return circuit
n -= 1
circuit.h(n)
for qubit in range(n):
circuit.cu1(pi/2**(n-qubit), qubit, n)
# 関数の最後で、次の量子ビットで同じ関数を再度呼び出します(関数の前半でnを1つ減らしました)
qft_rotations(circuit, n)
def swap_qubits(circuit, n):
"""Reverse the order of qubits"""
for qubit in range(n//2):
circuit.swap(qubit, n-qubit-1)
return circuit
def qft(circuit, n):
"""QFT on the first n qubits in circuit"""
qft_rotations(circuit, n)
swap_qubits(circuit, n)
return circuit
scalable_circuit(qft)
ベルンシュタイン-ヴァジラニ ウィジェット
このウィジェットを介して、ベルンシュタイン-ヴァジラニ アルゴリズム のインスタンスから数学を追跡できます。 ボタンを押して、アルゴリズムのさまざまなステップを適用します。 最初の引数は量子ビットの数を設定し、2番目の引数は非表示のバイナリ文字列を設定してからセルを再実行します。 hide_oracle = False
を設定してセルを再実行することにより、オラクルの内容を明らかにすることもできます。
from qiskit_textbook.widgets import bv_widget
bv_widget(2, "11", hide_oracle=True)
ドイチュ-ジョザ ウィジェット
ベルンシュタイン-ヴァジラニ ウィジェットと同様に、ドイチュ-ジョザ ウィジェットを介して、ドイチュ-ジョザ アルゴリズムのインスタンスから数学を追跡できます。 ボタンを押して、アルゴリズムのさまざまなステップを適用します。 「case」は"balanced"または"constant"、「size」は"small"または"large"にすることができます。 ランダムに選択されたオラクルに対してセルを再実行します。 hide_oracle = False
を設定してセルを再実行することにより、オラクルの内容を明らかにすることもできます。
from qiskit_textbook.widgets import dj_widget
dj_widget(size="large", case="balanced", hide_oracle=True)