Command Line Tool¶
量子回路ファイルの実行¶
まず、簡単な使用例を示します。以下のようなファイル(foo.qc)を用意し、
$ cat foo.qc
init 2
h 0
cx 0 1
m
以下のように実行すると、
$ qlazy -qc foo.qc
direction of measurement: z-axis
frq[00] = 49
frq[11] = 51
last state => 00
となります。foo.qcで何をやっているかと言うと、
1行目:量子ビットを2つ用意
2行目:0番目の量子ビットにアダマールゲートを作用
3行目:0番目と1番目の量子ビットに制御NOTゲートを作用
4行目:全量子ビットを測定
実行結果として表示されるのは、この場合、測定結果です。 はじめの行「direction of measurement: z-axis」は、 Z軸方向の測定をしています、ということ表しています。 デフォルトの測定の方向はZ軸方向です。他の大抵のシミュレータと違い、 qlazyでは任意方向の測定もオプション等で簡単に実行できるので、 区別できるように測定方向を一応表示するようにしています。 frq[xx]は、測定の結果、|xx>だった回数を表しています。測定の回数は、 何も指定しなければ、デフォルトで100回です。上の例では、 |00>だった回数は49回、|11>だった回数は51回だったということを表しています。 内部で乱数を発生させることで確率的な測定をシミュレートしていますので、 実行のたびにこの回数は変わります。last stateは、 最後の測定の結果が何だったかを表しています。上の例では|00>でした。 ということを意味しています。
また、制御NOTゲートの後に、
show
を挿入すると、この時点の量子状態を以下のように表示することができます。
c[00] = +0.7071+0.0000*i : 0.5000 |++++++
c[01] = +0.0000+0.0000*i : 0.0000 |
c[10] = +0.0000+0.0000*i : 0.0000 |
c[11] = +0.7071+0.0000*i : 0.5000 |++++++
2量子ビットで実行しているので、量子状態は|00>,|01>,|10>,|11>の重ね合わ せです。各々に対応した係数(複素数)をc[00],c[01],c[10],c[11]と定義し ており、それを表示しています。量子ビットのオーダーは左から右に向かって0 番目,1番目…と定義しています。複素数の右に表示されている実数値 (0.5000とか0.0000)は各々の絶対値の2乗、すなわちその状態が観測される 確率を表しています。一番右に表示されている「++++++」は、その確率の大き さを視覚的にわかりやすくするための、棒グラフです。
対話モードでの実行(量子電卓)¶
対話モードで実行することもできます。
$ qlazy
>> init 2
>> h 0
>> cx 0 1
>> show
c[00] = +0.7071+0.0000*i : 0.5000 |++++++
c[01] = +0.0000+0.0000*i : 0.0000 |
c[10] = +0.0000+0.0000*i : 0.0000 |
c[11] = +0.7071+0.0000*i : 0.5000 |++++++
>> m
direction of measurement: z-axis
frq[00] = 49
frq[11] = 51
last state => 00
>> quit
対話モード中で、helpすると、
>> help
[commands]
* initialize quantum state: %,init
* print quantum state: -,show
* print bloch angles: |,bloch
* echo input string: @,echo
* output quantum gates: >,output
* quit: .,quit
* help: ?,help
[quantum gates]
* 1-qubit gates: x,y,z,xr,xr_dg,h,s,s_dg,t,t_dg,p,rx,ry,rz
* 2-qubit gates: cx,cy,cz,cxr,cxr_dg,ch,cs,cs_dg,cp,crx,cry,crz,sw,rxx,ryy,rzz
* measurement: m,mx,my,mz,mb
* reset: reset
[notes]
* see 'help <item>', for more information
のように、定義されているコマンドや使用可能な量子ゲートのリストを表示できます。 各々の詳細は、helpの後に参照したいコマンドや量子ゲートの記号を入れると表示されます。
>> help x
== X gate ==
[description]
X gate is 1-qubit gate called 'pauli X gate'.
- matrix expression:
| 0 1 |
| 1 0 |
[usage]
>> x <qubit_id>
以上