common.title

Overview
Service overview
Terms of service

Privacy policy

Contact

Sign in
Sign up
common.title

blueqatで量子回路のユニタリ行列を確認する

Yuichiro Minato

2021/01/31 06:20

#量子ゲート

はじめに

こんにちは。量子コンピュータってなんかよくわからないよねっていう人多いですよね。しかしツールがどんどん進化して少しずつ誰でも使える環境ができてきてます。

今回はまだちょっと難しいですが、作った量子回路のユニタリ行列と呼ばれる、全体回路の数学的な表現を取れる機能が量子コンピュータソフトウェア開発キットのblueqatにあります。これによってデバッグが楽になります。

早速使ってみましょう。

早速例題

早速sympyを読み込み、やってみます。

from sympy import pi from blueqat import Circuit Circuit().rx(pi / 2)[0].cx[0, 1].run(backend="sympy_unitary")
Matrix([

[   sqrt(2)/2, -sqrt(2)*I/2,            0,            0],

[           0,            0, -sqrt(2)*I/2,    sqrt(2)/2],

[           0,            0,    sqrt(2)/2, -sqrt(2)*I/2],

[-sqrt(2)*I/2,    sqrt(2)/2,            0,            0]])
⎡  √2    -√2⋅ⅈ                 ⎤
⎢  ──    ──────    0       0   ⎥
⎢  2       2                   ⎥
⎢                              ⎥
⎢-√2⋅ⅈ     √2                  ⎥
⎢──────    ──      0       0   ⎥
⎢  2       2                   ⎥
⎢                              ⎥
⎢                -√2⋅ⅈ     √2  ⎥
⎢  0       0     ──────    ──  ⎥
⎢                  2       2   ⎥
⎢                              ⎥
⎢                  √2    -√2⋅ⅈ ⎥
⎢  0       0       ──    ──────⎥
⎣                  2       2   ⎦

できました。行列表現で自分の作った回路が確認できます。素敵ですね。

Circuit().rx(pi / 2)[0].cx[0, 1].run(backend="sympy_unitary")
Matrix([

[   sqrt(2)/2, -sqrt(2)*I/2,            0,            0],

[           0,            0, -sqrt(2)*I/2,    sqrt(2)/2],

[           0,            0,    sqrt(2)/2, -sqrt(2)*I/2],

[-sqrt(2)*I/2,    sqrt(2)/2,            0,            0]])

基本はこんな感じです。

量子フーリエ変換やってみる

N=4の量子フーリエ変換を見てみます。

--H--Rz2--Rz3--Rz4--------------------------
-----*----|----|----H--Rz2--Rz3-------------
----------*----|-------*----|----H--Rz2-----
---------------*------------*-------*----H--

こんな回路です。

from sympy import * from blueqat import Circuit init_printing() Circuit().x[:].h[0].rz(pi/4)[0].cx[1,0].rz(-pi/4)[0].cx[1,0].rz(pi/8)[0].cx[2,0].rz(-pi/8)[0].cx[2,0].rz(pi/16)[0].cx[3,0].rz(-pi/16)[0].cx[3,0].h[1].rz(pi/4)[1].cx[2,1].rz(-pi/4)[1].cx[2,1].rz(pi/8)[1].cx[3,1].rz(-pi/8)[1].cx[3,1].h[2].rz(pi/4)[2].cx[3,2].rz(-pi/4)[2].cx[3,2].h[3].run(backend="sympy_unitary")
⎡   15⋅ⅈ⋅π       15⋅ⅈ⋅π        -5⋅ⅈ⋅π        -5⋅ⅈ⋅π      -11⋅ⅈ⋅π      -11⋅ⅈ⋅π 

⎢   ──────       ──────        ───────       ───────     ────────     ────────

⎢     16           16             16            16          16           16   

⎢  ℯ            ℯ          -ⅈ⋅ℯ          -ⅈ⋅ℯ           ℯ            ℯ        

⎢  ───────      ───────    ────────────  ────────────   ─────────    ─────────

⎢     4            4            4             4             4            4    

⎢                                                                             

⎢  -3⋅ⅈ⋅π       -3⋅ⅈ⋅π        -7⋅ⅈ⋅π        -7⋅ⅈ⋅π        -ⅈ⋅π         -ⅈ⋅π   

⎢  ───────      ───────       ───────       ───────       ─────        ─────  

⎢     16           16            16            16           16           16   

⎢-ℯ            ℯ            -ℯ             ℯ            -ℯ            ℯ       

⎢──────────    ────────     ──────────     ────────     ────────      ──────  

⎢    4            4             4             4            4            4     

⎢                                                                             

⎢  -5⋅ⅈ⋅π       -5⋅ⅈ⋅π         -ⅈ⋅π          -ⅈ⋅π        -7⋅ⅈ⋅π       -7⋅ⅈ⋅π  

⎢  ───────      ───────        ─────         ─────       ───────      ─────── 

⎢     16           16            16            16           16           16   

⎢-ℯ           -ℯ              ℯ             ℯ          -ℯ           -ℯ        

⎢──────────   ──────────      ──────        ──────     ──────────   ──────────

⎢    4            4             4             4            4            4     

⎢                                                                             

⎢   9⋅ⅈ⋅π        9⋅ⅈ⋅π         -3⋅ⅈ⋅π        -3⋅ⅈ⋅π       3⋅ⅈ⋅π        3⋅ⅈ⋅π  

⎢   ─────        ─────         ───────       ───────      ─────        ─────  

⎢     16           16             16            16          16           16   

⎢  ℯ           -ℯ          -ⅈ⋅ℯ           ⅈ⋅ℯ            ℯ           -ℯ       

⎢  ──────      ────────    ────────────   ──────────     ──────      ──────── 

⎢    4            4             4             4            4            4     

⎢                                                                             

⎢  -9⋅ⅈ⋅π       -9⋅ⅈ⋅π          3⋅ⅈ⋅π         3⋅ⅈ⋅π      -3⋅ⅈ⋅π       -3⋅ⅈ⋅π  

⎢  ───────      ───────         ─────         ─────      ───────      ─────── 

⎢     16           16             16            16          16           16   

⎢-ℯ           -ℯ             ⅈ⋅ℯ           ⅈ⋅ℯ          ℯ            ℯ        

⎢──────────   ──────────     ────────      ────────     ────────     ──────── 

⎢    4            4             4             4            4            4     

⎢                                                                             

⎢   5⋅ⅈ⋅π        5⋅ⅈ⋅π          ⅈ⋅π           ⅈ⋅π         7⋅ⅈ⋅π        7⋅ⅈ⋅π  

⎢   ─────        ─────          ───           ───         ─────        ─────  

⎢     16           16            16            16           16           16   

⎢  ℯ           -ℯ              ℯ            -ℯ          -ℯ            ℯ       

⎢  ──────      ────────        ────         ──────      ────────      ──────  

⎢    4            4             4             4            4            4     

⎢                                                                             

⎢   3⋅ⅈ⋅π        3⋅ⅈ⋅π         7⋅ⅈ⋅π         7⋅ⅈ⋅π         ⅈ⋅π          ⅈ⋅π   

⎢   ─────        ─────         ─────         ─────         ───          ───   

⎢     16           16            16            16           16           16   

⎢  ℯ            ℯ            -ℯ            -ℯ            -ℯ           -ℯ      

⎢  ──────       ──────       ────────      ────────      ──────       ──────  

⎢    4            4             4             4            4            4     

⎢                                                                             

⎢  -15⋅ⅈ⋅π      -15⋅ⅈ⋅π         5⋅ⅈ⋅π         5⋅ⅈ⋅π       11⋅ⅈ⋅π       11⋅ⅈ⋅π 

⎢  ────────     ────────        ─────         ─────       ──────       ────── 

⎢     16           16             16            16          16           16   

⎢-ℯ            ℯ             ⅈ⋅ℯ          -ⅈ⋅ℯ           ℯ           -ℯ       

⎢───────────   ─────────     ────────     ──────────     ───────     ─────────

⎢     4            4            4             4             4            4    

⎢                                                                             

⎢   15⋅ⅈ⋅π       15⋅ⅈ⋅π        -5⋅ⅈ⋅π        -5⋅ⅈ⋅π      -11⋅ⅈ⋅π      -11⋅ⅈ⋅π 

⎢   ──────       ──────        ───────       ───────     ────────     ────────

⎢     16           16             16            16          16           16   

⎢ -ℯ           -ℯ           ⅈ⋅ℯ           ⅈ⋅ℯ          -ℯ           -ℯ        

⎢ ─────────    ─────────    ──────────    ──────────   ───────────  ──────────

⎢     4            4            4             4             4            4    

⎢                                                                             

⎢  -3⋅ⅈ⋅π       -3⋅ⅈ⋅π        -7⋅ⅈ⋅π        -7⋅ⅈ⋅π        -ⅈ⋅π         -ⅈ⋅π   

⎢  ───────      ───────       ───────       ───────       ─────        ─────  

⎢     16           16            16            16           16           16   

⎢ ℯ           -ℯ             ℯ            -ℯ             ℯ           -ℯ       

⎢ ────────    ──────────     ────────     ──────────     ──────      ──────── 

⎢    4            4             4             4            4            4     

⎢                                                                             

⎢  -5⋅ⅈ⋅π       -5⋅ⅈ⋅π         -ⅈ⋅π          -ⅈ⋅π        -7⋅ⅈ⋅π       -7⋅ⅈ⋅π  

⎢  ───────      ───────        ─────         ─────       ───────      ─────── 

⎢     16           16            16            16           16           16   

⎢ ℯ            ℯ             -ℯ            -ℯ           ℯ            ℯ        

⎢ ────────     ────────      ────────      ────────     ────────     ──────── 

⎢    4            4             4             4            4            4     

⎢                                                                             

⎢   9⋅ⅈ⋅π        9⋅ⅈ⋅π         -3⋅ⅈ⋅π        -3⋅ⅈ⋅π       3⋅ⅈ⋅π        3⋅ⅈ⋅π  

⎢   ─────        ─────         ───────       ───────      ─────        ─────  

⎢     16           16             16            16          16           16   

⎢ -ℯ            ℯ           ⅈ⋅ℯ          -ⅈ⋅ℯ           -ℯ            ℯ       

⎢ ────────      ──────      ──────────   ────────────   ────────      ──────  

⎢    4            4             4             4            4            4     

⎢                                                                             

⎢  -9⋅ⅈ⋅π       -9⋅ⅈ⋅π          3⋅ⅈ⋅π         3⋅ⅈ⋅π      -3⋅ⅈ⋅π       -3⋅ⅈ⋅π  

⎢  ───────      ───────         ─────         ─────      ───────      ─────── 

⎢     16           16             16            16          16           16   

⎢ ℯ            ℯ            -ⅈ⋅ℯ          -ⅈ⋅ℯ         -ℯ           -ℯ        

⎢ ────────     ────────     ──────────    ──────────   ──────────   ──────────

⎢    4            4             4             4            4            4     

⎢                                                                             

⎢   5⋅ⅈ⋅π        5⋅ⅈ⋅π          ⅈ⋅π           ⅈ⋅π         7⋅ⅈ⋅π        7⋅ⅈ⋅π  

⎢   ─────        ─────          ───           ───         ─────        ─────  

⎢     16           16            16            16           16           16   

⎢ -ℯ            ℯ             -ℯ             ℯ           ℯ           -ℯ       

⎢ ────────      ──────        ──────         ────        ──────      ──────── 

⎢    4            4             4             4            4            4     

⎢                                                                             

⎢   3⋅ⅈ⋅π        3⋅ⅈ⋅π         7⋅ⅈ⋅π         7⋅ⅈ⋅π         ⅈ⋅π          ⅈ⋅π   

⎢   ─────        ─────         ─────         ─────         ───          ───   

⎢     16           16            16            16           16           16   

⎢ -ℯ           -ℯ             ℯ             ℯ             ℯ            ℯ      

⎢ ────────     ────────       ──────        ──────        ────         ────   

⎢    4            4             4             4            4            4     

⎢                                                                             

⎢  -15⋅ⅈ⋅π      -15⋅ⅈ⋅π         5⋅ⅈ⋅π         5⋅ⅈ⋅π       11⋅ⅈ⋅π       11⋅ⅈ⋅π 

⎢  ────────     ────────        ─────         ─────       ──────       ────── 

⎢     16           16             16            16          16           16   

⎢ ℯ           -ℯ            -ⅈ⋅ℯ           ⅈ⋅ℯ          -ℯ            ℯ       

⎢ ─────────   ───────────   ──────────     ────────     ─────────     ─────── 

⎣     4            4            4             4             4            4    



     -7⋅ⅈ⋅π      -7⋅ⅈ⋅π        -ⅈ⋅π        -ⅈ⋅π         ⅈ⋅π         ⅈ⋅π      -

     ───────     ───────       ─────       ─────        ───         ───      ─

        16          16           8           8           8           8        

    ℯ           ℯ          -ⅈ⋅ℯ        -ⅈ⋅ℯ         -ⅈ⋅ℯ        -ⅈ⋅ℯ        ℯ 

    ────────    ────────   ──────────  ──────────   ────────    ────────    ──

       4           4           4           4           4           4          

                                                                              

     -5⋅ⅈ⋅π      -5⋅ⅈ⋅π        ⅈ⋅π         ⅈ⋅π        -ⅈ⋅π        -ⅈ⋅π        

     ───────     ───────       ───         ───        ─────       ─────       

        16          16          8           8           8           8         

   -ℯ           ℯ            -ℯ           ℯ         -ℯ           ℯ          -ℯ

   ──────────   ────────     ──────       ────      ────────     ──────     ──

       4           4           4           4           4           4          

                                                                              

     -3⋅ⅈ⋅π      -3⋅ⅈ⋅π       -ⅈ⋅π        -ⅈ⋅π         ⅈ⋅π         ⅈ⋅π       -

     ───────     ───────      ─────       ─────        ───         ───       ─

        16          16          8           8           8           8         

    ℯ           ℯ           -ℯ          -ℯ            ℯ           ℯ        -ℯ 

    ────────    ────────    ────────    ────────      ────        ────     ───

       4           4           4           4           4           4          

                                                                              

      -ⅈ⋅π        -ⅈ⋅π          ⅈ⋅π         ⅈ⋅π       3⋅ⅈ⋅π       3⋅ⅈ⋅π       

      ─────       ─────         ───         ───       ─────       ─────       

        16          16           8           8          8           8         

    -ℯ           ℯ           ⅈ⋅ℯ        -ⅈ⋅ℯ        -ℯ           ℯ           ℯ

    ────────     ──────      ──────     ────────    ────────     ──────      ─

       4           4           4           4           4           4          

                                                                              

       ⅈ⋅π         ⅈ⋅π         -ⅈ⋅π        -ⅈ⋅π      -3⋅ⅈ⋅π      -3⋅ⅈ⋅π      -

       ───         ───         ─────       ─────     ───────     ───────     ─

        16          16           8           8          8           8         

      ℯ           ℯ         ⅈ⋅ℯ         ⅈ⋅ℯ        -ℯ          -ℯ           ℯ 

      ────        ────      ────────    ────────   ──────────  ──────────   ──

       4           4           4           4           4           4          

                                                                              

      3⋅ⅈ⋅π       3⋅ⅈ⋅π        ⅈ⋅π         ⅈ⋅π        -ⅈ⋅π        -ⅈ⋅π        

      ─────       ─────        ───         ───        ─────       ─────       

        16          16          8           8           8           8         

    -ℯ           ℯ            ℯ          -ℯ          ℯ          -ℯ          -ℯ

    ────────     ──────       ────       ──────      ──────     ────────    ──

       4           4           4           4           4           4          

                                                                              

      5⋅ⅈ⋅π       5⋅ⅈ⋅π       -ⅈ⋅π        -ⅈ⋅π         ⅈ⋅π         ⅈ⋅π       -

      ─────       ─────       ─────       ─────        ───         ───       ─

        16          16          8           8           8           8         

     ℯ           ℯ           ℯ           ℯ           -ℯ          -ℯ        -ℯ 

     ──────      ──────      ──────      ──────      ──────      ──────    ───

       4           4           4           4           4           4          

                                                                              

      7⋅ⅈ⋅π       7⋅ⅈ⋅π         ⅈ⋅π         ⅈ⋅π        -ⅈ⋅π        -ⅈ⋅π       

      ─────       ─────         ───         ───        ─────       ─────      

        16          16           8           8           8           8        

    -ℯ           ℯ          -ⅈ⋅ℯ         ⅈ⋅ℯ        ⅈ⋅ℯ        -ⅈ⋅ℯ          ℯ

    ────────     ──────     ────────     ──────     ────────   ──────────    ─

       4           4           4           4           4           4          

                                                                              

     -7⋅ⅈ⋅π      -7⋅ⅈ⋅π        -ⅈ⋅π        -ⅈ⋅π         ⅈ⋅π         ⅈ⋅π      -

     ───────     ───────       ─────       ─────        ───         ───      ─

        16          16           8           8           8           8        

   -ℯ          -ℯ          -ⅈ⋅ℯ        -ⅈ⋅ℯ         -ⅈ⋅ℯ        -ⅈ⋅ℯ        ℯ 

─  ──────────  ──────────  ──────────  ──────────   ────────    ────────    ──

       4           4           4           4           4           4          

                                                                              

     -5⋅ⅈ⋅π      -5⋅ⅈ⋅π        ⅈ⋅π         ⅈ⋅π        -ⅈ⋅π        -ⅈ⋅π        

     ───────     ───────       ───         ───        ─────       ─────       

        16          16          8           8           8           8         

    ℯ          -ℯ            -ℯ           ℯ         -ℯ           ℯ          -ℯ

    ────────   ──────────    ──────       ────      ────────     ──────     ──

       4           4           4           4           4           4          

                                                                              

     -3⋅ⅈ⋅π      -3⋅ⅈ⋅π       -ⅈ⋅π        -ⅈ⋅π         ⅈ⋅π         ⅈ⋅π       -

     ───────     ───────      ─────       ─────        ───         ───       ─

        16          16          8           8           8           8         

   -ℯ          -ℯ           -ℯ          -ℯ            ℯ           ℯ        -ℯ 

   ──────────  ──────────   ────────    ────────      ────        ────     ───

       4           4           4           4           4           4          

                                                                              

      -ⅈ⋅π        -ⅈ⋅π          ⅈ⋅π         ⅈ⋅π       3⋅ⅈ⋅π       3⋅ⅈ⋅π       

      ─────       ─────         ───         ───       ─────       ─────       

        16          16           8           8          8           8         

     ℯ          -ℯ           ⅈ⋅ℯ        -ⅈ⋅ℯ        -ℯ           ℯ           ℯ

     ──────     ────────     ──────     ────────    ────────     ──────      ─

       4           4           4           4           4           4          

                                                                              

       ⅈ⋅π         ⅈ⋅π         -ⅈ⋅π        -ⅈ⋅π      -3⋅ⅈ⋅π      -3⋅ⅈ⋅π      -

       ───         ───         ─────       ─────     ───────     ───────     ─

        16          16           8           8          8           8         

     -ℯ          -ℯ         ⅈ⋅ℯ         ⅈ⋅ℯ        -ℯ          -ℯ           ℯ 

     ──────      ──────     ────────    ────────   ──────────  ──────────   ──

       4           4           4           4           4           4          

                                                                              

      3⋅ⅈ⋅π       3⋅ⅈ⋅π        ⅈ⋅π         ⅈ⋅π        -ⅈ⋅π        -ⅈ⋅π        

      ─────       ─────        ───         ───        ─────       ─────       

        16          16          8           8           8           8         

     ℯ          -ℯ            ℯ          -ℯ          ℯ          -ℯ          -ℯ

     ──────     ────────      ────       ──────      ──────     ────────    ──

       4           4           4           4           4           4          

                                                                              

      5⋅ⅈ⋅π       5⋅ⅈ⋅π       -ⅈ⋅π        -ⅈ⋅π         ⅈ⋅π         ⅈ⋅π       -

      ─────       ─────       ─────       ─────        ───         ───       ─

        16          16          8           8           8           8         

    -ℯ          -ℯ           ℯ           ℯ           -ℯ          -ℯ        -ℯ 

    ────────    ────────     ──────      ──────      ──────      ──────    ───

       4           4           4           4           4           4          

                                                                              

      7⋅ⅈ⋅π       7⋅ⅈ⋅π         ⅈ⋅π         ⅈ⋅π        -ⅈ⋅π        -ⅈ⋅π       

      ─────       ─────         ───         ───        ─────       ─────      

        16          16           8           8           8           8        

     ℯ          -ℯ          -ⅈ⋅ℯ         ⅈ⋅ℯ        ⅈ⋅ℯ        -ⅈ⋅ℯ          ℯ

     ──────     ────────    ────────     ──────     ────────   ──────────    ─

       4           4           4           4           4           4          



ⅈ⋅π      -ⅈ⋅π             ⎤

────     ─────            ⎥

 4         4              ⎥

        ℯ                 ⎥

────    ──────   1/4   1/4⎥

4         4               ⎥

                          ⎥

ⅈ⋅π       ⅈ⋅π             ⎥

───       ───             ⎥

 4         4              ⎥

         ℯ                ⎥

────     ────    -1/4  1/4⎥

4         4               ⎥

                          ⎥

ⅈ⋅π      -ⅈ⋅π             ⎥

────     ─────            ⎥

 4         4              ⎥

       -ℯ                 ⎥

─────  ────────  1/4   1/4⎥

4         4               ⎥

                          ⎥

ⅈ⋅π       ⅈ⋅π             ⎥

───       ───             ⎥

 4         4              ⎥

        -ℯ                ⎥

───     ──────   -1/4  1/4⎥

4         4               ⎥

                          ⎥

ⅈ⋅π      -ⅈ⋅π             ⎥

────     ─────            ⎥

 4         4              ⎥

        ℯ                 ⎥

────    ──────   1/4   1/4⎥

4         4               ⎥

                          ⎥

ⅈ⋅π       ⅈ⋅π             ⎥

───       ───             ⎥

 4         4              ⎥

         ℯ                ⎥

────     ────    -1/4  1/4⎥

4         4               ⎥

                          ⎥

ⅈ⋅π      -ⅈ⋅π             ⎥

────     ─────            ⎥

 4         4              ⎥

       -ℯ                 ⎥

─────  ────────  1/4   1/4⎥

4         4               ⎥

                          ⎥

ⅈ⋅π       ⅈ⋅π             ⎥

───       ───             ⎥

 4         4              ⎥

        -ℯ                ⎥

───     ──────   -1/4  1/4⎥

4         4               ⎥

                          ⎥

ⅈ⋅π      -ⅈ⋅π             ⎥

────     ─────            ⎥

 4         4              ⎥

        ℯ                 ⎥

────    ──────   1/4   1/4⎥

4         4               ⎥

                          ⎥

ⅈ⋅π       ⅈ⋅π             ⎥

───       ───             ⎥

 4         4              ⎥

         ℯ                ⎥

────     ────    -1/4  1/4⎥

4         4               ⎥

                          ⎥

ⅈ⋅π      -ⅈ⋅π             ⎥

────     ─────            ⎥

 4         4              ⎥

       -ℯ                 ⎥

─────  ────────  1/4   1/4⎥

4         4               ⎥

                          ⎥

ⅈ⋅π       ⅈ⋅π             ⎥

───       ───             ⎥

 4         4              ⎥

        -ℯ                ⎥

───     ──────   -1/4  1/4⎥

4         4               ⎥

                          ⎥

ⅈ⋅π      -ⅈ⋅π             ⎥

────     ─────            ⎥

 4         4              ⎥

        ℯ                 ⎥

────    ──────   1/4   1/4⎥

4         4               ⎥

                          ⎥

ⅈ⋅π       ⅈ⋅π             ⎥

───       ───             ⎥

 4         4              ⎥

         ℯ                ⎥

────     ────    -1/4  1/4⎥

4         4               ⎥

                          ⎥

ⅈ⋅π      -ⅈ⋅π             ⎥

────     ─────            ⎥

 4         4              ⎥

       -ℯ                 ⎥

─────  ────────  1/4   1/4⎥

4         4               ⎥

                          ⎥

ⅈ⋅π       ⅈ⋅π             ⎥

───       ───             ⎥

 4         4              ⎥

        -ℯ                ⎥

───     ──────   -1/4  1/4⎥

4         4               ⎦output

でました!

unitary.png

中は大変なことになってたんですね。。。勉強になりました!みなさんもつかってみてくださいませ。以上です。

© 2024, blueqat Inc. All rights reserved