common.title

Docs
Quantum Circuit
TYTAN CLOUD

QUANTUM GAMING


autoQAOA
Desktop RAG

Overview
Terms of service

Privacy policy

Contact
Research

Sign in
Sign up
common.title

Juliaでネットワーク形式で量子回路を描画する。初心者編。。。

Yuichiro Minato

2020/12/15 13:39

#Julia

今後は大きな量子回路をJuliaで描画したいです!今回はネットワークグラフ形式で書いてみます。

Juliaでグラフ描画

こちらを使います。

https://github.com/JuliaGraphs/GraphPlot.jl

ツール読み込み

まずはこの辺りを読み込みます。

import Pkg; Pkg.add(["LightGraphs", "GraphPlot", "Colors"])
using LightGraphs, GraphPlot, Colors

手作業

今回はまだJulia製の量子コンピュータシミュレータがないので、手作業で実装していきます。今回は量子機械学習で利用されるQCBM回路を書いてみます。

g = Graph()

#5量子ビット、RX,RZをかけた後にループ状にCXをかける回路を想定する。全部でベクトル5つ、RX,RZのゲートを5つずつ合計10。CXを5つですが、コントロールビットとターゲットビットで合計10、あとは測定で5。全部で30ノード。

add_vertices!(g, 30)

次に、ラベルを設定します。手作業で申し訳ない。。。

q = "q"
rx = "RX"
rz = "RZ"
c = "C"
x = "X"
m = ""

ノードにラベルとグループを割り当て、同一グループには同じ色を割り当てます。

nodelabel = [q,q,q,q,q, rx,rx,rx,rx,rx, rz,rz,rz,rz,rz, c,c,c,c,c, x,x,x,x,x, m,m,m,m,m]
nodegroup = [1,1,1,1,1, 2,2,2,2,2, 3,3,3,3,3, 4,4,4,4,4, 4,4,4,4,4, 5,5,5,5,5]
nodecolor = [colorant"lightseagreen", colorant"orange", colorant"skyblue", colorant"yellow", colorant"purple"]
nodefillc = nodecolor[nodegroup]

本当は自動でやりたいのですが、量子回路の量子ビットやゲート同士をつなぎます。今回はエッジで手作業で繋ぎました。。。

add_edge!(g, 1, 6)
add_edge!(g, 2, 7)
add_edge!(g, 3, 8)
add_edge!(g, 4, 9)
add_edge!(g, 5, 10)

add_edge!(g, 6, 11)
add_edge!(g, 7, 12)
add_edge!(g, 8, 13)
add_edge!(g, 9, 14)
add_edge!(g, 10, 15)

add_edge!(g, 11, 16)
add_edge!(g, 12, 21)
add_edge!(g, 16, 21)

add_edge!(g, 21, 17)
add_edge!(g, 13, 22)
add_edge!(g, 17, 22)

add_edge!(g, 22, 18)
add_edge!(g, 14, 23)
add_edge!(g, 18, 23)

add_edge!(g, 23, 19)
add_edge!(g, 15, 24)
add_edge!(g, 19, 24)

add_edge!(g, 24, 20)
add_edge!(g, 16, 25)
add_edge!(g, 20, 25)

add_edge!(g, 25, 26)
add_edge!(g, 17, 27)
add_edge!(g, 18, 28)
add_edge!(g, 19, 29)
add_edge!(g, 20, 30)

そして、最後に書き出しです。これで完了です!

gplot(g, layout=spectral_layout, nodelabel=nodelabel, nodefillc=nodefillc)

できました!

量子ビットqからRX,RZと1量子ビットゲートがかかり、そこからループ状のCXに入って、紫の測定に行きますが、ちょっとわかりにくいかもしれませんね、、、ノード間の距離を一定にするとか工夫が必要そうです。今回はJuliaを使って量子回路の描画の目処が立ったので、今後ツール化して行きたいと思います。以上です!

© 2025, blueqat Inc. All rights reserved