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 ', 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 以上